Python - 自动添加小部件

标签 python user-interface widget tkinter

所以我目前正在尝试在 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()

非常感谢您的帮助。 谢谢

最佳答案

您正在将方法 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()

关于Python - 自动添加小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15734953/

相关文章:

oop - 我该如何从外部在flutter中从外部调用需要上下文的函数

python - Ruby/Python 中是否有 OpenSource BASIC 解释器?

python - 如何从 pandas 数据帧的列中提取最后一个单词

python - beautifulSoup html csv

Android:关于大小/分辨率独立应用程序的问题?

ios - 如何在 iOS 中创建自定义(自行设计)的 uialertview

java - 哪个是最好的 java gui 测试工具?

仅限小部件的应用程序 : Default Activity not found

python - 从列表中提取关键字然后使用 `and`

Android Gallery Widget onScrollStateChanged