Цвет окна по умолчанию Tkinter и шестнадцатеричные цветовые коды


Я хотел бы знать цвет окна по умолчанию в Tkinter, когда вы просто создаете окно:

root = Tk()

Если он есть, можно установить виджеты одного цвета или использовать шестнадцатеричный цветовой код? (используя rgb)

Цветовой код, который я нашел для "нормального" окна:

R = 240, G = 240, B = 237

Спасибо.

3 6

3 ответа:

Не знаю точно, что вы ищете, но сработает ли это?

import Tkinter

mycolor = '#%02x%02x%02x' % (64, 204, 208)  # set your favourite rgb color
mycolor2 = '#40E0D0'  # or use hex if you prefer 
root = Tkinter.Tk()
root.configure(bg=mycolor)
Tkinter.Button(root, text="Press me!", bg=mycolor, fg='black',
               activebackground='black', activeforeground=mycolor2).pack()
root.mainloop()

Если вы просто хотите найти текущее значение окна и установить виджеты для его использования, cget может быть то, что вы хотите:

import Tkinter

root = Tkinter.Tk()
defaultbg = root.cget('bg')
Tkinter.Button(root,text="Press me!", bg=defaultbg).pack()
root.mainloop()

Если вы хотите установить цвет фона по умолчанию для новых виджетов, вы можете использовать метод tk_setPalette(self, *args, **kw):

root.tk_setPalette(background='#40E0D0', foreground='black',
               activeBackground='black', activeForeground=mycolor2)
Tkinter.Button(root, text="Press me!").pack()

Тогда ваши виджеты будут иметь этот цвет фона по умолчанию, без необходимости устанавливать его в параметрах виджета. Есть много полезной информации, предоставленной с встроенные справочные функции import Tkinter; help(Tkinter.Tk)

Ответ Рудивонстадена привел меня к решению проблемы, хотя по какой-то причине root.cget("bg") не удается, потому что "bg" - неизвестное цветовое имя.

Однако знание того, что виджет имеет словарь, содержащий его свойства, означает, что root["bg"] возвращает цвет фона виджета.

Таким образом, если вы создаете окно с именем myWindow, не переопределяя цвет фона по умолчанию вашей системы, то myWindow["bg"] - это цвет фона по умолчанию для окна, который можно использовать при создании бескаркасные текстовые поля в этом окне.

Some_widget(bg=some_widget._корень().cget ('bg'))