You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中使用Flet无法实现Page.title对齐的问题

解决Flet中页面标题居中的问题

Flet的page.title是由操作系统的窗口管理器负责渲染的,框架本身没有提供直接设置标题对齐的API——因为窗口标题的样式、对齐逻辑属于系统级控制,不同操作系统(Windows/macOS/Linux)的窗口行为差异很大,Flet并没有暴露这部分的自定义权限。你用的page.horizontal_alignment只负责页面主体内容的对齐,和窗口标题完全无关。

想要实现标题居中,唯一可行的方案是隐藏默认窗口标题栏,自定义一个标题栏组件,这样就能完全控制标题的对齐方式。以下是具体实现代码:

import flet as ft

def main(page: ft.Page):
    # 隐藏默认窗口标题栏
    page.window_title_bar_hidden = True
    # 可选:保留系统的最小化、最大化、关闭按钮
    page.window_title_bar_buttons_hidden = False
    
    # 实现窗口拖动功能(自定义标题栏需要手动添加这个逻辑)
    def drag_window(e: ft.DragUpdateEvent):
        page.window.top += e.delta_y
        page.window.left += e.delta_x
        page.update()
    
    # 自定义居中标题栏
    custom_title_bar = ft.Container(
        content=ft.Text(
            "我的居中标题",
            text_align=ft.TextAlign.CENTER,
            size=16,
            weight=ft.FontWeight.BOLD
        ),
        padding=ft.padding.symmetric(horizontal=20, vertical=10),
        bgcolor=ft.colors.SURFACE_VARIANT,
        height=40,
        on_pan_update=drag_window  # 拖动标题栏可移动窗口
    )
    
    # 组装页面结构
    page.add(
        custom_title_bar,
        ft.Container(
            content=ft.Text("页面主体内容"),
            alignment=ft.alignment.center,
            expand=True
        )
    )

if __name__ == "__main__":
    ft.app(target=main)

关键说明:

  • page.window_title_bar_hidden = True:隐藏系统默认标题栏,让自定义标题栏顶到窗口顶部。
  • 拖动逻辑:自定义标题栏需要手动实现窗口拖动,通过on_pan_update事件监听鼠标拖动,调整窗口的top和left属性。
  • 样式自定义:你可以根据需求修改自定义标题栏的背景色、字体大小、边距等,完全不受系统限制。

这种方案的优势是跨平台样式统一,标题的对齐、样式完全由你掌控;唯一需要注意的是,如果你保留了系统窗口按钮(最小化/最大化/关闭),部分系统可能需要调整自定义标题栏的右侧边距,避免按钮被遮挡。

内容的提问来源于stack exchange,提问作者andreluigo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 02:57:09