是否可以更改tkinter弹出框的输入?

时间:2016-12-06 21:12:41

标签: python tkinter

我在使用按下按钮时会出现一个弹出框。该框包含一个下拉菜单,您可以在其中选择一些输入。如果选择了颜色选项,我想要显示另一个下拉菜单。如果选择了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()

0 个答案:

没有答案