首页 > 解决方案 > 使用 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

标签: pythontkinter

解决方案


确实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函数,因此我可以将带有参数的函数分配给按钮的命令。


推荐阅读