如何解决Python FMX GUI应用Label组件字体大小设置无效问题
DelphiFMX for Python Label字体大小设置不生效的解决方法
问题分析
你的代码中通过TextSettings.Font.Size设置字体大小未生效,核心原因是DelphiFMX的Label组件里,TextSettings.Font默认未指定字体家族,导致系统 fallback 到默认小字体,或者属性变更未触发组件样式更新。
解决方法
方法一:直接设置Label的顶层Font属性(推荐)
直接操作Label的Font属性,该方式会自动同步到TextSettings,且能触发组件样式更新:
from delphifmx import * class HelloForm(Form): def __init__(self, owner): self.Caption = 'Hello World' self.Width = 1000 self.Height = 500 self.Position = "ScreenCenter" self.myLabel = Label(self) self.myLabel.Parent = self self.myLabel.Text = "Hello World!" self.myLabel.Align = "Client" # 替换原TextSettings.Font.Size设置为以下内容 self.myLabel.Font.Size = 50 self.myLabel.Font.Name = "Arial" # 指定字体家族确保生效 self.myLabel.TextSettings.HorzAlign = "Center"
方法二:修复TextSettings.Font的设置逻辑
如果需要保留TextSettings的设置方式,必须指定字体家族,并手动触发组件刷新:
from delphifmx import * class HelloForm(Form): def __init__(self, owner): self.Caption = 'Hello World' self.Width = 1000 self.Height = 500 self.Position = "ScreenCenter" self.myLabel = Label(self) self.myLabel.Parent = self self.myLabel.Text = "Hello World!" self.myLabel.Align = "Client" # 先指定字体家族,再设置大小 self.myLabel.TextSettings.Font.Name = "Arial" self.myLabel.TextSettings.Font.Size = 50 self.myLabel.TextSettings.HorzAlign = "Center" # 手动刷新组件确保设置生效 self.myLabel.Invalidate()
内容的提问来源于stack exchange,提问作者Shaun Roselt
相关产品推荐
相关产品推荐

