2016-04-04 9 views
0

ユーザがOptionMenuリストから1つのオプションを選択した場合、そのオプションは無効になります。OptionMenuで単一のオプションを無効にするにはどうすればよいですか?

例:ユーザーが「a」を選択すると「a」オプションが無効になり、ユーザーはbまたはcのみを選択できます。私は以下のコードを試してみましたが、エラーを返します。私はmenubuttonは欲しくない。 OptionMenuは私の目的を果たしますが、menubuttonは役に立ちません。

import tkinter as tk 
from tkinter import * 

class Disable_state(Frame): 
    def __init__(self, parent): 
     Frame.__init__(self, parent) 
     self.parent = parent 
     va = StringVar() 
     NAMES = { 'a' : 0, 'b' : 1, 'c' : 2 } 
     op = list(NAMES.keys()) 
     self.menu = OptionMenu(self.parent, va, *op,command = lambda op: self.disable_option(op)) 
     self.menu.grid(column=0, row=0) 
    def disable_option(self,op): 
     self.menu.config(op, state = "disabled") 


if __name__ =="__main__": 
    root= Tk() 
    o = Disable_state(root) 
    root.mainloop() 

エラーが

self.menu.config(op, state = "disabled") 
    File "C:\Python34\lib\tkinter\__init__.py", line 1319, in configure 
    return self._configure('configure', cnf, kw) 
    File "C:\Python34\lib\tkinter\__init__.py", line 1303, in _configure 
    cnf = _cnfmerge((cnf, kw)) 
    File "C:\Python34\lib\tkinter\__init__.py", line 105, in _cnfmerge 
    cnf.update(c) 
ValueError: dictionary update sequence element #0 has length 1; 2 is required  

答えて

5

サブウィジェットmenuアクセスすることが可能であるように思われ、エントリが

self.menu['menu'].entryconfigure(op, state = "disabled") 

を無効にすることができ entryconfigureメソッドを使用しています
関連する問題