2016-11-07 5 views
1

私はtkinterアプリケーションを構築しており、Comboboxを含むttkウィジェットを使用しています。何らかのアクションを実行するには、comboboxのステータスを取得する必要があります。しかし、私は状態を取得しようとすると、それは私に奇妙な何かを与える。Comboboxの状態を取得するには

これはprint(self.combobox["state"], DISABLED)コマンドからの出力です:

DISABLEDTkinterから変数である
(<index object at 0x1f72c30>, 'disabled') 

また、self.combobox.state()を使用して状態を取得しようとしましたが、出力は同じです。

注:comboboxの状態は、self.combobox["state"] = NORMALself.combobox["state"] = DISABLEDを使用して変更できます(状態を変更するとcomboboxは白/灰色です)。

+0

'self.combobox [ '状態を']の答えのための – furas

答えて

1

dir()を使用して、どのメソッドとプロパティにオブジェクトがあるかを確認できます。あなたは

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

をチェックすると

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

結果

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

あなたはあなたが得るstring(メソッドやプロパティ)

を見ることができますTrue

テストのための最小限の作業例:str()はあまりにも

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

EDIT動作します。

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

感謝をSTRING'。私は 'self.combobox.instate([DISABLED、])'が 'True'か' False'を返すことも発見しました。引数はここで状態のリストでなければならないことに注意してください。 – Fejs

関連する問題