2012-06-19 65 views
1

我有如下所示的代碼簡單的片段中的兩個OptionMenu部件:一個回調函數上連接兩個OptionMenu部件的Tkinter

variable = StringVar(win1)        
    variable.set(number(number2)) 
    type = OptionMenu(win1, variable, "None", "Clear", "Dark", "Heavy",) 
    type.grid(row=i, column=3, sticky="nsew", padx=1, pady=1) 


    variableunit = StringVar(win1) 
    variableunit.set(unit) 
    unit = OptionMenu(win1, variableunit, "colour", "shade") 
    unit.grid(row=i, column=5, sticky="nsew", padx=1, pady=1) 

我試圖痕跡,迄今沒有奏效。我想在第一個菜單中選擇「Heavy」時連接,第二個菜單始終爲「color」。對於其餘的選擇,第二個菜單必須始終是「陰影」的默認值,但可以更改。

我將不勝感激任何人都可以幫助我。我已經用變量和痕跡查看了effbot站點,但我仍然陷入困境。

+0

你在第一個菜單中的「Heavy」中選擇「Load」時的含義是什麼?什麼是「負載」? – Junuxx

回答

1

這並不完全清楚你想要什麼,但我認爲這應該做到這一點。

當在第一個菜單中選擇「Heavy」時,在第二個菜單中選擇「color」,並且該菜單被禁用(不能選擇其他任何東西)。如果在第一個菜單中選擇了其他內容,則第二個菜單將變爲「mm」並再次啓用。

from Tkinter import * 

class app: 
    def __init__(self, root): 
     win1 = Frame(root) 
     win1.grid(row=0,column=0) 

     self.variable = StringVar(win1)        
     self.variable.set(42) 
     self.type = OptionMenu(win1, self.variable, 
          "None", "Clear", "Dark", "Heavy", 
          command = self.varMenu) 
     self.type.grid(row=1, column=3, sticky="nsew", padx=1, pady=1) 


     self.variableunit = StringVar(win1) 
     self.variableunit.set('mm') 
     self.unit = OptionMenu(win1, 
          self.variableunit, "mm", "colour", "shade") 
     self.unit.grid(row=1, column=5, sticky="nsew", padx=1, pady=1) 

    def varMenu(self, selection): 
     if selection == "Heavy": 
      self.variableunit.set("colour") 
      self.unit.config(state = DISABLED) 
     else: 
      self.variableunit.set("mm") 
      self.unit.config(state = NORMAL) 

root = Tk() 
a = app(root) 
root.mainloop() 
+0

這項工作除了單位不變,「顏色」是停留在「毫米」,並變得殘疾。 – user2063

+0

@ user2063:你確定嗎?你直接複製我的代碼嗎?它完全改變爲'顏色'。 – Junuxx

+0

我沒有直接複製它,但我已經知道了,但是再次出現錯字...!謝謝! – user2063

相關問題