【问题标题】:entry.get() shell/idle output issueentry.get() shell/idle 输出问题
【发布时间】:2021-09-30 20:55:38
【问题描述】:

好的,我正在尝试按照本网站的指南使用 tkinter 学习一些 GUI:https://realpython.com/python-gui-tkinter/#building-your-first-python-gui-application-with-tkinter 根据我运行代码的方式,它使用 IDLE verse shell 运行。

在 Idle 中发生的事情是它在输入任何内容之前很久就调用 name。这就是输出为 "" 的原因。在 shell 中,我可以在“john doe”条目中输入一些内容,当我进入“名称”时,它可以输出一些内容。


import tkinter as tk

window = tk.Tk()
label = tk.Label(text = "Name")
entry = tk.Entry()

label.pack()
entry.pack()

name = entry.get()
name

【问题讨论】:

  • 您需要执行.get() 以响应某些指示用户已完成输入数据的事件 - 按钮的command= 函数是典型的地方。
  • 这个问题非常广泛;请参阅How to Ask。您的程序在 shell 中工作的原因是 shell 立即运行每一行,并打印任何返回值的对象。正常运行时应该使用print(name)查看输出。

标签: python tkinter python-idle


【解决方案1】:

通常您会创建一个按钮来启动.get 并启动窗口的主循环,如下所示:

import tkinter as tk

def print_entry(widget):
    name = widget.get()
    print(name)

window = tk.Tk()
label = tk.Label(text = "Name")
entry = tk.Entry()
button = tk.Button(text = "Get Entry",
                   command = lambda e = entry: print_entry(e))

label.pack()
entry.pack()
button.pack()

window.mainloop()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-09
    • 1970-01-01
    • 2018-05-22
    • 2014-04-30
    • 2022-11-16
    相关资源
    最近更新 更多