Python 2.7:通过Ttk主题化“常用对话框”tkinter界面?
在Windows上使用Python 2.7(32位)时,我们正在尝试Python 2.7对主题化Tkinter(ttk
)的支持,来制作简单的图形用户界面(GUI),结果让我们非常惊喜!不过,有一个地方似乎不太理想,就是操作系统特有的常用对话框的样式。
具体来说,MessageBox
和ColorChooser
这两个常用对话框的按钮看起来像是Windows 95时代那种方方的、很“丑”的样子,而不是在XP、Vista和Windows 7上通常会看到的那种圆角和渐变的主题按钮。(我在这三个平台上测试,结果都是一样的,没有主题效果)。
需要注意的是,文件对话框(askopenfilename
、askopenfilenames
、asksaveasfilename
、askdirectory
)的样式都是正确的,有主题效果。
import tkMessageBox as messagebox
messagebox.showinfo()
import tkColorChooser as colorchooser
color = colorchooser.askcolor( parent=root, title='Customize colors' )
有没有人知道怎么才能让Tkinter的MessageBox
和ColorChooser
这两个常用对话框与操作系统的主题兼容(至少在Windows XP或更高版本上)?
2 个回答
想要让对话框看起来更好看,可以使用 pyinstaller
把你的脚本编译成一个可执行文件。我在 这里 详细解释了这个过程。
简单来说,使用 pyinstaller
编译后,你的对话框会跟当前操作系统的风格一致,但不能使用自定义的样式。
你的观察基本上是对的。我确实看到了你提到的在 messagebox
和 colorchooser
中的情况。不过,我的文件对话框里的按钮看起来都是圆润的,没问题。
我建议你自己做一个消息框,可以使用 TopLevel
这个组件,然后根据你的需要来设计它,并设置不同按钮的功能(这确实比直接用消息框要复杂一些,但如果你真的想要新的样式按钮,这样做是可行的)。
不过,我觉得你可能无法简单地解决 colorchooser
的问题。
我曾一度以为 Python 3.1 可能修复了这个问题,但可惜我试过了,结果并不是这样。如果你需要用户选择颜色,那按钮可能就得看起来不太好看了。