[英]Python TKinter: How do I achieve the same effect as input() in the GUI?
一个半月前我开始学习python。 所以请原谅我缺乏一切。
我正在制作一个基于文本的冒险游戏。 游戏已编写并可以在终端中播放。 我现在正在添加一个 GUI 作为事后的想法。
在一个文件中,我有:
class Parser():
def __init__(self):
self.commands = CommandWords()
def get_command(self):
# Initialise word1 and word2 to <None>
word1 = None
word2 = None
input_line = input( "> " )
tokens = input_line.strip().split( " " )
if len( tokens ) > 0:
word1 = tokens[0]
if len( tokens ) > 1:
word2 = tokens[1]
每当用户需要输入文本时都会调用它,然后它会调用另一个函数来将输入与已知命令进行比较以推动游戏。
但是,当我尝试用 entry_widget.get() 替换 input() 时,它无法识别 entry_widget。 所以我导入了包含 GUI 脚本的文件,这是一个循环导入错误。
我试图将输入存储为字符串变量,但程序不会停止并等待用户输入,因此当程序开始运行时它卡住了,不知道如何处理空变量。 (假设 input() 停止程序并等待用户输入?)
任何解决方案? 或者更好的方法来做到这一点?
谢谢。
import tkinter as tk
创建一个 Entry 小部件: entry = tk.Entry(root)
完成后,您可以随时获取文本: text = entry.get()
要让程序等待,您需要创建一个wait_var = tk.IntVar()
变量: wait_var = tk.IntVar()
然后创建一个在按下时更改变量值的button = tk.Button(root, text="Enter", command=lambda: wait_var.set(1))
: button = tk.Button(root, text="Enter", command=lambda: wait_var.set(1))
现在你可以告诉button.wait_variable(wait_var)
等待变量改变: button.wait_variable(wait_var)
简单的例子:
import tkinter as tk
def callback():
print(entry.get())
wait_var.set(1)
root = tk.Tk()
wait_var = tk.IntVar()
entry = tk.Entry(root)
button = tk.Button(root, text="Enter", command=callback)
entry.pack()
button.pack()
print("Waiting for button press...")
button.wait_variable(wait_var)
print("Button pressed!")
root.mainloop()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.