2014-07-07 15 views
7

Fondamentalmente, voglio disabilitare un certo Combobox, in base al valore di un'altra casella combinata. Non sono riuscito a trovare una risposta a questa domanda, forse perché è molto raro farlo a un Combobox.Come disabilitare un Combobox in Tkinter?

Ho un codice più o meno come seguire ...

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" 

Grazie in anticipo

EDIT !!!!

Dopo la persistenza, ha trovato la risposta ed è piuttosto semplice. Per coloro che potrebbero essere interessati, la soluzione può essere trovato qui: http://www.tcl.tk/man/tcl8.5/TkCmd/ttk_combobox.htm

"stato = 'disabilitato', 'sola lettura' o 'normale'"

+1

BWT: puoi anche nascondere il widget con '.grid_forget()' – furas

risposta

3

Si desidera utilizzare l'opzione Combobox di state='disabled'.

ci sono tre opzioni per state come segue:

  • state='normal' che è il completamente funzionale Combobox.
  • state='readonly' che è il Combobox con un valore, ma non può essere modificato (direttamente).
  • state='disabled' che è il punto in cui non è possibile interagire con Combobox.
Problemi correlati