繁体   English   中英

Python TKinter:如何在 GUI 中实现与 input() 相同的效果?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM