2017-06-07 61 views
0

當我更改1個選項菜單的值時,所有我的選項菜單窗口小部件都一起更新。爲什麼我更改一個菜單的值時,我的所有tkinter選項都會更新?

這是我用什麼來讓所有的菜單(self.var被初始化爲self.var = StringVar(master)):

def makeMenu(self, name, items, r, c): 

    self.var.set(items[0]) 
    name = OptionMenu(self, self.var, *items) 
    name.grid(row = r, column = c , padx = self.pad_x, pady = self.pad_y) 
    name.config(width = self.menu_width) 
    name.menu = Menu(name, tearoff = self.tear_off) 

    for i in range(len(items)): 
     name.menu.add_command(label = items[i]) 

    return name 

當我嘗試做一個新的菜單並更改項目,其他所有的菜單項目改爲新的。

即當我這樣做:

self.layout_menu = self.makeMenu("layout_menu", self.layout_sections, 
           self.layout_menu_row, self.layout_menu_col) 
+0

我可以看到代碼的休息嗎? – Stiffy2000

+0

這是一個很多的代碼。哈哈你介意指定嗎?所以我有一個Tk()窗口的類。如上所示初始化「var」。我的班級中有這些參數的makeMenu函數。我的createWidgets函數,沒有參數,調用makeMenu使用self.layout_menu = self.makeMenu(「layout_menu」,self.layout_sections,self.row_count,self.col_count)使默認菜單。所以我想要做的是當用戶點擊一個列表框中的項目時,這些菜單會更新相應的值。當我嘗試用值更新一個值時,所有菜單都會使用該值 –

+1

@E進行更新。 Oregel:當Stiffy2000要求查看更多代碼時,我相信他指的是[最小,完整和可驗證示例](https://stackoverflow.com/help/mcve)。我們需要能夠測試代碼來查看整體問題。 –

回答

0

我真的不認爲你需要StringVar(master),你只需要StringVar()

+0

這個工程!謝謝! –

+0

發生了什麼事是它爲我的所有菜單創建了一個var [0],這意味着它們基本上都是由一個變量控制的,所以每當一個菜單發生變化時,其他變化也是如此。 –

相關問題