python - 使用 tkinter,.get() 方法似乎不适用于我的代码
问题描述
我正在尝试设置一个带有按钮和标签等的 tkinter 窗口。我添加的按钮是为了调用一个函数,但它不能正常工作。
该函数包含行 x=entry1.get() 但它表示 entry1 未定义(尽管它在程序的前面已定义)。我很困惑,因为我在 youtube 频道上看到了这项工作。
这不是所有的代码(我已经完成了根的工作)
def game():
x=entry1.get()
label=Label(root,textvariable=x)
label.grid(row=5,column=2)
def mainwindow():
root=Tk()
root.title("Typing Game")
root.geometry("1920x1080")
entry1=Entry(root)
entry1.grid(row=2,column=4)
button=Button(root,text="Hit this button when done",command=game)
button.grid(row=1,column=4)
root.mainloop()
mainwindow()
X 应该最终成为他们用户输入的文本,但它只是说在尝试执行“x = entry1.get()”行时没有定义entry1
解决方案
确实entry1
在那一点上没有定义。(稍后在下面的代码中定义)。所以你需要以不同的方式实现它。那将是一种方式:
from tkinter import *
from functools import partial
def game(entry, label):
label['text'] = entry.get()
def mainwindow():
root = Tk()
root.title("Typing Game")
root.geometry("1920x1080")
entry1 = Entry(root)
entry1.grid(row=2, column=4)
label = Label(root)
label.grid(row=5, column=2)
func = partial(game, entry1, label)
button = Button(root, text="Hit this button when done", command=func)
button.grid(row=1, column=4)
root.mainloop()
mainwindow()
所以我在函数中创建了标签(没有值)mainwindow()
。在game(entry, label)
函数中,我只是设置标签的值。请注意,我将game
函数更改为接受 2 个参数,因此我们摆脱了not defined at tha point
错误。另外,我使用了该partial
函数,因此我可以将带有参数的函数分配给按钮的命令。
推荐阅读
- terraform - Terraform:参数 Origin DomainName 未引用有效的 S3 存储桶
- r - 如果电子邮件和唯一 ID 重复,则更改新数据框
- flutter - 使用授权的 Flutter HTTP 调用失败但在邮递员中有效
- flutter - StatefulWidget 不刷新 ListView
- android - android-edittext键盘不显示
- azure - Kusto 查询语言:通过评估表达式设置汇总的列名
- flutter - 如何在 Flutter 中隐藏浮动操作按钮
- jenkins - 如何在管道中使用来自 jenkins 的 mongodb-document-upload 插件
- web-scraping - 网络抓取隐藏内容
- java - 在没有 Spring 的情况下读取和映射属性文件