2016-04-04 26 views
0

Kullanıcı, OptionMenu listesinden bir seçenek seçerse, bu seçenek devre dışı bırakılmalıdır.OptionMenu'da tek bir seçeneği nasıl devre dışı bırakırım?

Örnek: kullanıcı "a" yı seçerse, "a" seçeneği devre dışı bırakılmalı ve kullanıcı yalnızca b veya c öğesini seçebilir. Aşağıdaki kodu denedim, ancak gösterilen şekilde hatayı döndürür. menubutton'u istemiyorum. OptionMenu amacına hizmet edecek, ancak menubutton değil.

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() 

hata

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  

cevap

5

Bir subwidget menu erişmek mümkün görünmektedir ve bir giriş

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

devre dışı bırakılabilir entryconfigure yöntemi kullanılarak olduğu
İlgili konular