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

2024-10-01 19:28:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个弹出框出现时,使用按下一个按钮。该框包含一个下拉菜单,您可以在其中选择一些输入。如果选择了“颜色”选项,我希望显示另一个下拉菜单。如果选择了坐标,我希望出现一个条目。这可能吗?我的代码当前如下所示,但无法按预期工作:

编辑:下面是可运行的代码。我目前正在尝试在构造函数中更改box,但我不认为这是一种方法。我想要的是,当顶部的下拉列表从颜色更改为x或y时,第二个下拉列表将成为一个输入框,以便用户可以在其中键入内容。你知道吗

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()

Tags: selfgetif颜色topokrootpack

热门问题