2017-08-22 28 views
0

tkinter OptionsMenuを無効にする方法が見つからない、または見つからない。私は私のGUIで3つのoptionsmenu年代を持っていると、ボタンがtkinterを無効にする方法OptionMenu

self.menu = OptionMenu(self, var, *items) 
btn = Button(self, text="disable", command = self.disable) 
btn,pack() 

self.disable(self): 
    //Disable menu here... 

をクリックされたときにそれらを無効にしたいだけのオプションメニューのための機能に建て呼び出し、それを無効にする方法はありますか?または、メニューのすべてのオプションを無効にする必要がありますか?

私はmenu.pack()を別のTopleve()ウィンドウに使用しましたが、メインTkウィンドウのgrid()システムから始めました。これはmenu.grid(row=0,column=0)で使用されています

EDIT: だから、私は、コンストラクタメソッドによって、複数のOptionMenus生成されていることを言及するのを忘れてしまいました。これは私がやってみましたし、うまくいかなかったものです:

makeMenu(): 
    menu = OptionMenu(self, var, *items) 
    ....//whole bunch of menu settings 
    return menu 

menu1 = makeMenu() 
all_menus.append(menu) 

私が作成した後、それを追加しなければならなかったので、今これは動作しませんでした理由があります。なぜ設定が引き継がれないのか分かりませんが、私がしなければならないことはこれです: makeMenu(): menu = OptionMenu(self、var、* items) .... //全部の束メニュー設定 リターンメニュー

makeMenu(): 
    menu = OptionMenu(self, var, *items) 
    ....//whole bunch of menu settings 
    all_menus.append(menu) 

makeMenu() 

そして、この変更で、私は後でメニューを無効にするには、これを使用することができます。他のウィジェットと同様

for menu in all_menus: 
    menu.config(state=DISABLED) 
+0

親ウィジェットからすべてのユーザー入力ウィジェット(ボタン、エントリ..)を無効にするにはどうすればいいですか?](https://stackoverflow.com/questions/22382746/how-do-i-disable-すべてのユーザー入力ウィジェット - ボタン - 親からのエントリ) –

+0

閉じる。しかしこれはOptionMenuとは少し異なります。私はその質問を自分の入力項目に使用しました。できます!しかし、残念なことにOptionMenuではそれがありません。しかし頭をありがとう! –

+0

私はそれをテストし、それはOptionMenusで動作します。確かに光学的な手掛かりはありませんが、無効になっているOptionMenuをクリックすると何も起こりません。 –

答えて

2

は、あなたがする状態を設定するconfigureメソッドを使用します「無効」:

self.menu.configure(state="disabled") 

上記はtkinterとttk OptionMenuウィジェットの両方で機能します。

+0

これは動作します!ありがとうございます! –

関連する問題