我在使用按下按钮时会出现一个弹出框。该框包含一个下拉菜单,您可以在其中选择一些输入。如果选择了颜色选项,我想要显示另一个下拉菜单。如果选择了coord,我想要一个条目出现。这可能吗?我的代码目前如下,但它没有按预期工作:
编辑:下面是可运行的代码。我目前正在尝试在构造函数中更改框,但我认为这不是这样做的方法。我想要的是当顶部下拉列表从颜色更改为x或y时,第二个下拉列表变为一个Entry框,以便用户可以输入。
import Tkinter as tk
class NewInputPopup:
def __init__(self, parent, types, valueExpected=False):
self.valueExpected = valueExpected
self.parent = parent
top = self.top = tk.Toplevel(parent)
self.typeVar = tk.StringVar(top)
self.typeVar.set(types[0])
option = tk.OptionMenu(top, self.typeVar, *types)
option.pack()
tk.Label(top, text="Value").pack()
self.e = tk.Entry(top)
self.choice = tk.OptionMenu(top, self.typeVar, *['blue', 'red', 'yellow', 'green'])
# Part that needs to change
if valueExpected:
if self.typeVar.get() == 'color':
self.e.pack_forget()
self.choice.pack()
else:
self.choice.pack_forget()
self.e.pack(padx=5)
top.bind("<Return>", self.ok)
b = tk.Button(top, text="OK", command=self.ok)
b.pack(pady=5)
def ok(self, event=None):
if self.valueExpected:
self.parent.createNewParameter(self.typeVar.get(), self.e.get())
else:
self.parent.createNewParameter(self.typeVar.get())
self.top.destroy()
root = tk.Tk()
c = tk.Canvas(root, width=200, height=200)
c.pack()
PARAM_TYPES = ['color', 'x', 'y']
NewInputPopup(root, PARAM_TYPES, True)
root.mainloop()