【问题标题】:With tkinter, the .get() method doesn't seem to work with my code使用 tkinter,.get() 方法似乎不适用于我的代码
【发布时间】:2019-04-06 15:39:30
【问题描述】:

我正在尝试设置一个带有按钮和标签等的 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 应该最终成为他们用户输入的文本,但它只是说 entry1 在尝试执行“x=entry1.get()”行时没有定义

【问题讨论】:

  • 请发布工作代码示例,以便我们重现您的错误。您发布的这段代码应该在第 3 行出现错误,说明名称“游戏”未定义。
  • def game(): x=entry1.get() label=Lab​​el(root,textvariable=x) label.grid(row=5,column=2) def mainwindow(): root=Tk () root.title("打字游戏") root.geometry("1920x1080") entry1=Entry(root) entry1.grid(row=2,column=4) button=Button(root,text="点击这个按钮时完成",command=game) button.grid(row=1,column=4) root.mainloop() mainwindow()
  • 我已经更新了帖子代码
  • 您在函数mainwindow() 内部定义entry1,并且该变量将在函数结束时被垃圾回收。因此,当函数game() 尝试调用该变量时,它不再存在。
  • 那么我在哪里定义 entry1?

标签: python tkinter


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    • 2016-12-14
    • 1970-01-01
    • 2021-11-13
    • 2014-06-04
    • 1970-01-01
    相关资源
    最近更新 更多