【问题标题】:Python - Auto add widgetsPython - 自动添加小部件
【发布时间】:2013-03-31 21:50:49
【问题描述】:

所以我目前正在尝试在 GUI 上创建一个按钮,让用户生成一个新的输入字段。 我不知道该怎么做。我猜它需要一个 lambda 函数,但除此之外,我不知道。

这是我到目前为止的基本代码:

from tkinter import *

class prac:

    def autoAddWidget(self,frame,x,y):
        self.entryField = Entry(frame,text="Entry Field")
        self.entryField.grid(row=x, column=y)
        #lambda function? 

    def __init__(self, master):
        frame = Frame(master, width=60, height=50)
        frame.pack()

        x=1
        self.addWidgetButton = Button(frame, text="Add new widget", command=self.autoAddWidget(frame, x,0))
        self.addWidgetButton.grid(row=0, column=0)
        x+=1


root = Tk()
app = prac(root)
root.mainloop()

不胜感激。 谢谢

【问题讨论】:

    标签: python user-interface widget tkinter


    【解决方案1】:

    您从方法 self.autoAddWidget(frame, x,0) 而不是方法本身传递给 command 参数结果。您必须在那里传递对可调用对象的引用,该对象将在事件发生时调用。下次提问前请查看documentation

    好的,我修复了代码,现在它可以工作了:

    from tkinter import *
    
    class Prac:
    
        def autoAddWidget(self):
            self.entryField = Entry(self.frame,text="Entry Field")
            self.entryField.grid(row=self.x, column=0)
            self.x+=1
    
        def __init__(self, master):
            self.frame = Frame(master, width=60, height=50)
            self.frame.pack()
    
            self.x=1
            self.addWidgetButton = Button(self.frame, text="Add new widget", command=self.autoAddWidget)
            self.addWidgetButton.grid(row=0, column=0)
    
    
    root = Tk()
    app = Prac(root)
    root.mainloop()
    

    【讨论】:

    • 非常感谢!卡在这个上面很久了。另外,不仅感谢解决方案,还感谢文档。
    猜你喜欢
    • 1970-01-01
    • 2012-04-14
    • 2012-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多