【问题标题】:Forcing an input in python在python中强制输入
【发布时间】:2021-07-05 17:32:51
【问题描述】:

我正在尝试在现有的 python 项目上创建一个图形界面(使用 tkinter),该项目在命令行中运行良好。 命令行使用函数Input() 从键盘获取参数,但现在我想用我的图形界面来连接这些东西。然后,当我按下按钮(在我的界面上)时,我想将界面中的选定值输入到 Input() 方法,但我不知道该怎么做,即使有可能。我尝试使用sys.stdin,但它不起作用。 如果有人有任何想法,请告诉我, 谢谢你:)

【问题讨论】:

  • 尝试从终端获取输入并在界面中使用它。有多种方法可以在 GUI 中输入文本,但很复杂。
  • 你的代码应该是一个接受参数的函数。您可以从 input() 或 GUI 中获取该参数的值。但最后你应该把它传递给你的函数,比如foo(val)foo 没有变化,只有 val 来自变化。
  • 感谢您的回复,@PeterNielsen,我可以使用哪种功能来做到这一点(从终端获取输入)?
  • 我会给出答案的。
  • @deceze 一开始我想这样做,但我需要Input() 的阻塞状态才能获得来自玩家的信息。当信息来自 GUI 时,如何从Input() 停止这种阻塞状态?

标签: python input forcing


【解决方案1】:

嗯,我认为这对我想做的事情不起作用?

这是我的想法的一个例子,让我再解释一下: 我的游戏线程中有一个Input() 函数,我想用两种不同的方式填充它:

-直接用终端

-通过使用提交按钮在我的界面中:此按钮调用一个函数,我想在其中用 GUI 上的选定值填充 Input()

我的代码有一个例子:

import tkinter as tk
from tkinter import ttk

def submitEvent():
    print('Submit is pushed')
    # --> fill the Input() with the value of the combobox ( listeCombo.get() )

def gameThread():
    input("give a number between 1 and 4")

root = tk.Tk()
root.geometry('200x100')
x = threading.Thread(target=gameThread)
x.start()
list=['1', '2', '3', '4']
combolist = ttk.Combobox(root, values=list)
submitButton = tk.Button(root, text='Submit', command=submitEvent)
combolist.grid(column=1, row=1)
submitButton.grid(column=1, row=2)
root.mainloop()```

【讨论】:

  • 在使用 GUI 时使用 input 不是一个好习惯,通常使用 Entry 是获取用户输入的正确方法。
【解决方案2】:

试试:

global somevariable
somevariable = input('prompt: ')

然后再调用它:

thingneededforgui = somevariable

应该可以。我在设计 pgzero 游戏时使用这些东西。

【讨论】:

    猜你喜欢
    • 2019-01-13
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多