2016-11-07 1 views
1

abrufen Ich baue tkinter App und ich verwende einige ttk Widgets, einschließlich Combobox. Ich muss den Status combobox erhalten, um etwas zu tun. Wenn ich jedoch versuche, einen Zustand zu bekommen, gibt es mir etwas Seltsames.Wie Combobox Zustand

Dies wird von print(self.combobox["state"], DISABLED) Befehl:

(<index object at 0x1f72c30>, 'disabled') 

wo DISABLED aus Tkinter variabel ist.

Ich habe auch versucht, Zustand mit self.combobox.state(), aber die Ausgabe ist die gleiche.

Hinweis: Ich kann Zustand combobox ändern self.combobox["state"] = NORMAL und self.combobox["state"] = DISABLED mit (kann ich sehen, dass combobox ist weiß/grau, wenn ich den Zustand ändern).

+0

'self.combobox [ 'state'] string' – furas

Antwort

1

Sie können dir() verwenden, um zu sehen, welche Methoden und Eigenschaften Objekt hat.

print(dir(self.combobox['state'])) 

Ergebnis

['__class__', '__cmp__', '__delattr__', '__doc__', '__format__', 
'__getattribute__', '__hash__', '__init__', '__new__', '__reduce__', 
'__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', 
'__subclasshook__', '__unicode__', 'string', 'typename'] 

Sie können string (Methode oder Eigenschaft)

sehen Wenn Sie

überprüfen
print(self.combobox['state'].string == tk.NORMAL) 

Sie erhalten True

str() funktioniert auch

print(str(self.combobox['state']) == tk.NORMAL) 

EDIT: minimale Arbeitsbeispiel für den Test:.

try: 
    # Python 2 
    import Tkinter as tk 
    import ttk 
except: 
    # Python 3 
    import tkinter as tk 
    import tkinter.ttk as ttk 

root = tk.Tk() 

c = ttk.Combobox(root) 
c.pack() 

print(c['state'], c['state'] == tk.NORMAL) 

print('normal:', c['state'].string == tk.NORMAL, str(c['state']) == tk.NORMAL) 
print('disabled:', c['state'].string == tk.DISABLED, str(c['state']) == tk.DISABLED) 

c['state'] = tk.DISABLED 

print('normal:', c['state'].string == tk.NORMAL, str(c['state']) == tk.NORMAL) 
print('disabled:', c['state'].string == tk.DISABLED, str(c['state']) == tk.DISABLED) 

root.mainloop() 
+0

Danke für die Antwort. Ich habe auch festgestellt, dass 'self.cobobox.instate ([DISABLED,])' '' True' oder 'False' zurückgibt. Beachten Sie, dass das Argument hier eine Liste von Zuständen sein muss. – Fejs