2014-07-07 58 views
7

基本上,我想基於另一個組合框的值禁用某個組合框。 我找不到這個問題的答案,也許是因爲這對於Combobox來說是非常罕見的。如何禁用Tkinter中的Combobox?

我有一個代碼,或多或少地遵循...

self.cBox1Var=tki.StringVar() 
    self.cBox1=ttk.Combobox(self.mframe, width=16, textvariable=self.cBox1Var, state='readonly',values=['Text entry','Combo box','Check button']) 
    self.cBox1.grid(row=0,column=1,sticky=tki.W) 
    self.cBox1Var.set('Text entry') 
    self.cBox1Var.bind("<<ComboboxSelected>>", lambda event, count=count: self.EnableDisableParamFields(event, count)) 

    self.cBox2Var=tki.StringVar() 
    self.cBox2=ttk.Combobox(self.mframe, width=16, textvariable=self.cBox2Var, state='readonly',values=['String','Integer','Float']) 
    self.cBox2.grid(row=0,column=2,sticky=tki.W) 
    self.cBox2Var.set('String') 

...

def EnableDisableParamFields(self, event, count): 
    if self.cBox1Var.get()=='Combo box': #disable 'Entry format combo box' 
     #disable "self.cBox2" 
    else: 
     #enable "self.cBox2" 

在此先感謝

編輯!!!!

經過堅持,找到了答案,而且很簡單。 對於那些誰可能有興趣,該解決方案可以在這裏找到:http://www.tcl.tk/man/tcl8.5/TkCmd/ttk_combobox.htm

「狀態=‘已禁用’,‘只讀’或‘正常’的」

+1

BWT:你甚至可以使用'.grid_forget()隱藏小部件 - – furas

回答

3

你想用的state='disabled'Combobox選項。

有如下用於state三個選項:

  • state='normal'其是全功能Combobox
  • state='readonly'這是Combobox的值,但不能更改(直接)。
  • state='disabled'這是Combobox不能與之交互的地方。