我现在有一些非常简单的代码,因为我遇到了问题。
root = Tk()
label1 = Label(root, text ="Enter String:")
userInputString = Entry(root)
label1.pack()
userInputString.pack()
submit = Button(root,text = "Submit", command = root.destroy)
submit.pack(side =BOTTOM)
root.mainloop()
print(userInputString)
当我运行代码时,除了
之外,一切都按照我的预期运行print(userInputString)
对于输入asdf,条目打印将返回类似0.9355325
的内容但它永远不会是相同的值,背靠背总是随机的。
我在Windows 7机器上使用python 3.5和Eclipse Neon。
最终目标是在弹出的框中接受来自用户的字符串,然后能够将该值用作字符串。例如,它可能是需要修改或打开的文件路径。
条目不是我应该使用的正确小部件吗?这里的代码有什么固有的错误吗?我是python的新手,并且没有很多强大的编程经验,所以我甚至不确定这是否设置为接收字符串。
如果有人有任何想法,请提前致谢。
答案 0 :(得分:1)
您的print语句有两个问题。首先,您打印小部件,而不是小部件中的文本。 print(widget)打印str(widget),它是小部件的tk路径名。 '。'代表根窗口。后面的整数是tkinter指定为窗口小部件名称的数字。在当前的3.6中,它将是' entry', so you would see ".
条目"。
其次,您在销毁窗口小部件后尝试打印窗口小部件文本。在root.destroy之后, python tkinter包装器仍然存在,但它包装的 tk 小部件已经消失。以下适用于3.6,Win10。
import tkinter as tk
root = tk.Tk()
label = tk.Label(root, text="Enter String:")
entry = tk.Entry(root)
def print_entry(event=None):
print(entry.get())
entry.bind('<Key-Return>', print_entry)
entry.focus_set()
submit = tk.Button(root, text="Submit", command=print_entry)
label.pack()
entry.pack()
submit.pack()
root.mainloop()
奖金1:我将焦点设置在输入框中,这样就可以开始输入内容而无需选中框或点击它。
奖金2:我将密钥绑定到提交功能,这样就可以不使用鼠标提交。请注意,该命令需要一个&#39;事件&#39;参数,但必须默认为“无”才能将其与按钮一起使用。
我经常使用的NMT Reference相当完整且大部分都是正确的。