【问题标题】:What is returned by .get() on an empty Tkinter Entry Widget.get() 在空的 Tkinter 条目小部件上返回什么
【发布时间】:2021-07-08 15:25:53
【问题描述】:

我正在尝试在运行代码之前检查是否正确输入了必要的值。为此,我想检查用户是否确实在两个条目小部件中输入了一些内容:

import tkinter as tk
from tkinter import ttk

root = tk.Tk()

entry1_val = None
entry2_val = None
def submit_cmd():
    global entry1_val, entry2_val
    entry1_val = entry1.get()
    entry2_val = entry2.get()

label1 = ttk.Label(root, text='Entry 1:')
label1.grid(row=0, column=0)
label2 = ttk.Label(root, text='Entry 2:')
label2.grid(row=1, column=0)
entry1 = ttk.Entry(root)
entry1.grid(row=0, column=1)
entry2 = ttk.Entry(root)
entry2.grid(row=1, column=1)

submit = ttk.Button(root, text='Submit', command=submit_cmd)
submit.grid(row=2, column=1)

# pseudocode for what I want to check
"""
if(entry1_val == something or entry2_val == something):
    print("Didn't enter both values")

"""
root.mainloop()

我之前通过一个简单的 if 语句来执行此操作,该语句检查 entry1_valentry2_val 是否已从 None 对象更新。像这样:

if(entry1_val != None and entry2_val != None):
    print('Both values good')
elif(entry2_val == None):
    print("Didn't enter 1st value")

但是,由于submit_cmd 会同时更新entry1_valentry2_val,即使用户仅在其中一个条目小部件中输入了值,这两个值也会从None 更新。

我想知道两件事:

  • 在空条目小部件上调用 .get() 时返回的内容
  • 有没有更好的方法来检查输入小部件中是否正确输入了某些内容?

【问题讨论】:

  • '' 一个空白字符串。当然,你可以追踪它。可以参考这个stackoverflow.com/questions/68251222/…
  • 谢谢@Sujay,我以为我已经尝试过了,但显然我没有正确尝试,我现在觉得有点傻。空白字符串非常适合我尝试做的事情。
  • 下次小贴士:尝试使用:print(repr(entry1_val))

标签: python tkinter


【解决方案1】:

如果您没有在 tk.Entry 中输入任何内容,默认情况下它将包含 ''..

示例:

import tkinter as tk
root = tk.Tk()
entry = tk.Entry(root)
entry.pack()
print(repr(entry.get()))
root.mainloop()

输出: '' 这是因为您没有在条目中输入任何内容..

【讨论】:

  • 使用print(repr(entry.get())) 代替print(entry.get())。它将更清楚地显示变量中的内容。
  • 没问题。我发现repr 函数在调试程序时非常有用
  • 哈哈,我根本不使用repr!无论如何,祝你有美好的一天。
猜你喜欢
  • 2019-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多