更改tkSimpleDialog的背景颜色

2 投票
2 回答
1722 浏览
提问于 2025-04-17 09:59

我想把 tkSimpleDialog 的背景颜色改成和我系统默认的背景颜色一样:

GTK:

GTK

tk:

tk

我尝试在我能想到的地方都加上 config(bg='#CCC9C1'),但是只成功改变了对话框的一部分背景颜色。

请问可以在 tkSimpleDialog 中改变背景颜色吗?


代码示例:

from Tkinter import *
import tkSimpleDialog

class MyDialog(tkSimpleDialog.Dialog):

    def body(self, master):

        Label(master, text="First:").grid(row=0)
        Label(master, text="Second:").grid(row=1)

        self.e1 = Entry(master)
        self.e2 = Entry(master)

        self.e1.grid(row=0, column=1)
        self.e2.grid(row=1, column=1)
        return self.e1 # initial focus

    def apply(self):
        first = int(self.e1.get())
        second = int(self.e2.get())
        print first, second # or something

root = Tk()
root.withdraw()

d = MyDialog(root)

2 个回答

1

看起来你可能只需要使用 tkinter.ttk库,这是Tk的一个主题版本,具体可以参考 这个回答。希望这对你有帮助。

这是Python 2.x的参考资料,目前是2.7版本:http://docs.python.org/library/ttk.html

4

找到了方法。正如提到的,root.config(...) 只会改变主窗口的外观(就是我们通常会隐藏的那个侧边窗口)。对于全局设置,我们建议使用 Tk 数据库文件(也就是叫 optionDB 的文件),这个文件的格式和 .Xdefaults(X 资源数据库)文件是一样的。然后我们可以在脚本中这样使用它:

root = Tk()
root.option_readfile('optionDB')

更棒的是,虽然不太推荐,但我们可以直接在脚本中设置“全局”设置:

root = Tk()
root.option_add('*background', '#CCC9C1')
root.option_add('*Entry*background', '#FFFFFF')

可用的关键词有:

*font
*Label*font
*background
*Entry*background
*foreground
*Listbox*foreground

撰写回答