2012-07-05 168 views
4

我想知道在Tkinter的默認窗口的顏色,當你只需要創建一個窗口:默認窗口顏色的Tkinter和十六進制顏色代碼

root = Tk() 

如果有一個,有可能小部件設置爲相同的顏色還是使用十六進制顏色代碼? (使用RGB)

顏色代碼我已經找到了 '正常' 的窗口是:

R = 240,G = 240,B = 237

感謝。

回答

27

不確定你在找什麼,但會工作嗎?

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() 

然後你的部件將在默認情況下此背景色,而無需將其設置在WID獲取參數。有具備內嵌幫助功能import Tkinter; help(Tkinter.Tk)

+0

這是完美的謝謝!什麼是'cget'就是爲了正確地學習它。 – user2063 2012-07-05 12:01:12

+2

'cget'返回一個小部件資源的值。要獲得可能的資源列表,請使用'keys'。因此'root.keys'顯示了21個資源鍵中的'bg','menu'和其他許多東西。要獲取該鍵的當前值,可以使用'cget':'root.cget('bg')'。它應該在任何窗口小部件上工作,所以如果你定義按鈕「btn」,那麼'btn.keys()'返回你用'btn.cget(key)'檢查的35個資源。 – rudivonstaden 2012-07-05 14:14:58

+0

感謝您的解釋,這是有道理的。 – user2063 2012-07-05 14:17:35

1

rudivonstaden的答案使我一個解決問題的辦法了很多有用的信息,但出於某種原因root.cget("bg")失敗,因爲"bg"是一個未知的顏色名稱。

但是,知道小部件包含其屬性的字典意味着root["bg"]返回小部件的背景顏色。

因此,如果您在不覆蓋系統的默認背景色的情況下創建名爲myWindow的窗口,則myWindow["bg"]是窗口的默認背景色,可在該窗口中創建無框文本字段時使用。

-1

some_widget(BG = some_widget._root()。cget( 'BG'))