相关文章推荐
私奔的火车  ·  Python日常学习 - RioTian ...·  1 周前    · 
星星上的毛豆  ·  Python ...·  4 天前    · 
有腹肌的熊猫  ·  Python ...·  4 天前    · 
不羁的风衣  ·  删除Python launcher - ...·  4 天前    · 
无邪的铁板烧  ·  Android ...·  1 月前    · 
暴走的火锅  ·  SELECT INTO·  1 年前    · 
温柔的长颈鹿  ·  PdfView.SelectionChang ...·  1 年前    · 

在我的Mac上使用基于Tkinter ttk的GUI时,我注意到背景颜色和Notebook小部件存在问题.将ttk.Frame添加为ttk.Notebook选项卡时,框架的显示背景与笔记本选项卡的“插入”背景不匹配.

如何使ttk.Frame与周围的背景颜色相匹配,而无需对非Mac用户看起来很奇怪的值进行硬编码?

我读了一些建议自定义样式的SO答案,但是在这种情况下如何查询父窗口小部件的背景颜色还不清楚.据我所知,他们都是一样的!

>>> ttk.Style().lookup("TFrame", "background")

'systemWindowBody'

>>> ttk.Style().lookup("Notebook", "background")

'systemWindowBody'

>>> ttk.Style().lookup("Notebook.client", "background")

'systemWindowBody'

>>> ttk.Style().lookup("Notebook.tab", "background")

'systemWindowBody'

以上屏幕截图的示例代码:

import Tkinter

import ttk

class GUI(object):

def __init__(self,root):

self.root = root

self.root.title(u"Frame Mismatch Example")

self.mainframe = ttk.Frame(self.root, padding=(6, 6, 12, 12))

self.mainframe.grid(sticky='nwse')

self.notebook = ttk.Notebook(self.mainframe)

self.tab1 = ttk.Frame(self.notebook)

ttk.Button(self.tab1, text='Exit', command=self.root.destroy).pack(padx=100, pady=100)

self.notebook.add(self.tab1, text="Tab 1")

self.notebook.pack()

def main():

root = Tkinter.Tk()

root.columnconfigure(0, weight=1)

root.rowconfigure(0, weight=1)

makeGUI = GUI(root)

root.mainloop()

if __name__ == '__main__':

main()

重要细节:这与Python 2.7.8,Tcl / Tk 8.5.15(由Tk.eval(‘info patchlevel’)报告)一起提供.

最佳答案 我遇到了’systemWindowBody’问题,只是使用sys.platform检查操作系统,并仅为OSX硬编码颜色.

如果您有大量小部件,则可以使用OSX的特定主题. (这是我发现的一个很好的tkinter主题答案:Change color of “tab header” in ttk.Notebook)

我知道这可能不太理想,但它至少会确保你不会搞砸其他平台上的外观.

在我的Mac上使用基于Tkinter ttk的GUI时,我注意到背景颜色和Notebook小部件存在问题.将ttk.Frame添加为ttk.Notebook选项卡时,框架的显示背景与笔记本选项卡的“插入”背景不匹配.如何使ttk.Frame与周围的背景颜色相匹配,而无需对非Mac用户看起来很奇怪的值进行硬编码?我读了一些建议自定义样式的SO答案,但是在这种情况下如何查询父窗口小部件的背景颜色还不清...
最近转战 Python ,在使用thinter控件时遇到一些问题,都说 Python 好学好用,刚一接触就碰到一些难题,在用TreeView显示表格数据时,没办法做到单个单元格 设置 字体 颜色 等,度娘百般搜索,官方文档,大概知道要用Style指定控件风格,于是又开始折腾style,碰到好多奇怪的事儿。现一一列出,希望有 Python 大神给给预解惑,先谢谢! 下面是官方文档与度娘来的东东,显示结果如图片: ![Style风格测试](https://img-blog.csdnimg.cn/202106232111036.
ttk bootstrap Tkinter TTK 的现代主题的集合,这些主题使用标准的跨平台主题(“蛤”,“ alt”,“经典”,“默认”)构建。 这些主题 的大多数都是从发布的开源引导主题改编和/或启发而来的。 pip install ttk bootstrap 您可以通过在 python 解释器 执行以下代码,在现场演示 查看以下示例 >> from ttk bootstrap import Demo >> Demo () from ttk bootstrap import BootStyle , ttk style = BootStyle () style . theme_use ( 'flatly' ) root = style . master # create widget with primary colors ttk . Label ( root , text
同一控件, ttk 的样式会覆盖tk的样式。 tk 有,而 ttk 没有的样式属性,按tk的方法 设置 ,如‘sticky’在 ttk 就没有。 自定义的 ttk 样式有2部分组成,用’.'连接起来,如’myname.TRadiobutton‘,第一部分自己可以取名,第二部分固定。对于第二部分的固定值,参看文档 style = ttk .Style() style.configure('myname.TRadiobutton', background='yellow') r1= ttk .Radiobutton.
def __init__(self,master): self.notebook = ttk .Notebook(master) self. frame 1 = tk. Frame (master) self. frame 2 root.title('NoteBook') #用PhotoImage()实例化一个图像对象,参数是文件地址,可惜这能用gif图片 photo = PhotoImage(file = 'timg.gif') the_Label = Label(root,text = '这是一只睡觉的小猫,\n王晓明看傻了!', 插入以下代码 : .CodeMirror pre {font-family: Consolas; font-size: 12pt;} * {font-family: Consolas;} div.output_area pre {fon... frame = ttk . Frame (root, width=200, height=200) frame .configure(style='My.T Frame ') # 设置 Frame 的样式 style = ttk .Style() style.configure('My.T Frame ', background='red') # 设置 Frame 背景 颜色 frame .pack() root.mainloop() 在这个示例 ,我们首先导入 Tkinter 库并创建了一个Tk对象作为根窗口。然后,我们使用 ttk 模块 Frame 类创建了一个 Frame 对象,并 设置 了其宽度和高度。接下来,我们使用`configure()`方法为 Frame 设置 了一个自定义样式('My.T Frame '),然后使用 ttk .Style类的`configure()`方法 设置 了该样式的 背景 颜色 为红色。最后,我们通过`pack()`方法将 Frame 放置在根窗口 。 你可以根据需要修改示例代码 背景 颜色 和其他属性来实现你所需的效果。希望对你有帮助!