一个半月前,我开始学习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]
只要用户希望输入文本,就会调用此方法,然后它将调用另一个函数,以将输入内容与已知的命令进行比较,以继续进行游戏。
但是,当我尝试将input()替换为entry_widget.get()时,它无法识别entry_widget。 因此我导入了包含GUI脚本的文件,这是一个循环导入错误。
我试图将输入存储为字符串变量,但是程序不会停止并等待用户输入,因此在程序开始运行的那一刻它就卡住了,不知道如何处理空值(假设input()停止了程序并等待用户输入?)
有解决方案吗?还是更好的方法呢?
谢谢。
答案 0 :(得分:0)
import tkinter as tk
要创建条目小部件,请执行以下操作:entry = tk.Entry(root)
有了这些,您可以随时获取文本:text = entry.get()
要让程序等待,您需要创建一个tkinter变量:wait_var = tk.IntVar()
,然后创建一个按钮,该按钮在按下时会更改变量的值:button = tk.Button(root, text="Enter", command=lambda: wait_var.set(1))
现在,您可以告诉tkinter等到变量更改: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()