所以我对这一点还是很陌生的(我的代码应该让这一点变得显而易见),我正在用tkinter开发一个GUI。 我正在尝试有一个选项菜单,显示键从一个dict和点击一个键我想看到值。 我想修改那个dict,并希望能够更新所说的选项菜单。在
到目前为止,还不错。现在我已经可以让这个“工作”了,但是当我更新菜单(更改或不更改之后),我会看到菜单本身的影子。在
我设计了一个小测试程序:
import tkinter as tk
from tkinter import ttk
class MyApp():
def __init__(self,master):
self.master = master
self.myDict = {'Key1':1, 'Key2': 2, 'Key3':3}
self.valueVar = tk.StringVar()
self.valueVar.set("0.00")
self.RCS = tk.Label(master, textvariable=self.valueVar).grid(row=5, column=3)
updateButton = tk.Button(text= "Update List", command = self.update)
updateButton.grid(row=4,column=4)
changeButton = tk.Button(text= "Change list", command = self.changeDict)
changeButton.grid(row=5,column=4)
self.keyVar = tk.StringVar(master)
self.om = ttk.OptionMenu(self.master, self.keyVar, "Select Key ", *self.myDict, command = self.setKey )
self.om.configure(width=20)
self.om.grid(row=4, column=3)
def setKey(self,Surface):
self.valueVar.set(self.myDict[Surface])
def update(self):
menu = self.om["menu"]
menu.delete(0,"end")
menu.destroy
menu = ttk.OptionMenu(self.master, self.keyVar, "Select Key", *self.myDict, command = self.setKey )
menu.grid(row=4, column=3)
def changeDict(self):
self.myDict = {'Key4':4, 'Key5': 5, 'Key6':6}
root = tk.Tk()
app = MyApp(root)
root.mainloop()
我需要改变什么?为什么? 我通常用Matlab。我想它显示了。在
非常感谢!在
据我所知,这个小程序,你认为它用dict键显示一个选项菜单,然后当你按下“change dict”然后更新时,它应该将选项菜单切换到另一组项目?在这个案例中,你调用了错误的widget。唯一的问题是更新功能,该功能应更改为:
我认为你想让它做什么就做什么。正如您所知,optionmenu小部件实际上是一个按钮和一个菜单小部件的组合。所以当你做菜单=自我.om[“menu”],您实际上是在获取optionmenu小部件的menu对象,然后销毁它。然后用optionmenu替换该变量,并在不破坏原始optionmenu的同时丢失原始菜单(自我.om). 这就是为什么你有阴影。不过,还有一些其他注意事项:
希望这有帮助!在
相关问题 更多 >
编程相关推荐