Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用于命令行输入/输出的GUI界面_Python_Command Line Interface - Fatal编程技术网

Python 用于命令行输入/输出的GUI界面

Python 用于命令行输入/输出的GUI界面,python,command-line-interface,Python,Command Line Interface,我希望有人能给我指出一个我想做的项目的正确方向。我的意图很简单,有一个GUI,允许用户输入字符串,该字符串填充到预先确定的命令行文本行中,在命令行中运行,并返回在命令行屏幕上打印的内容。我一直倾向于使用Python来实现这一点,但我仍然不确定哪种语法可以完成第一部分,即用户将输入一个字符串,该字符串将贯穿命令行文本行。任何形式的输入都将不胜感激 开发GUI对于python初学者来说是一个大项目,有几种可能性可以做到这一点。如果您想认真地用Python开发GUI应用程序,我建议您通过pyside或

我希望有人能给我指出一个我想做的项目的正确方向。我的意图很简单,有一个GUI,允许用户输入字符串,该字符串填充到预先确定的命令行文本行中,在命令行中运行,并返回在命令行屏幕上打印的内容。我一直倾向于使用Python来实现这一点,但我仍然不确定哪种语法可以完成第一部分,即用户将输入一个字符串,该字符串将贯穿命令行文本行。任何形式的输入都将不胜感激

开发GUI对于python初学者来说是一个大项目,有几种可能性可以做到这一点。如果您想认真地用Python开发GUI应用程序,我建议您通过pyside或pyqt尝试Qt4或Qt5。您可能需要一个或多个教程以及一些问题来获得第一个工作的GUI应用程序,但您将能够使用此库构建任何类型的专业跨平台应用程序

运行命令行文本时,您是指系统命令还是python命令?如果您想运行系统命令,我建议您编写一个简短的python脚本,用于处理用户输入(在python命令行中),并使用子流程(
来自subprocess import call
)将其传递给系统

如果您在pyqt中完成了第一个简单的textform,并且处理用户输入的脚本尝试通过围绕命令行脚本包装Qt应用程序来连接它们。如果您只是在寻找一个快速而肮脏的解决方案,那么有几个库支持一些易于设置的GUI框架或WebInterface(在本地计算机上的浏览器中运行)。但是如果你是一个编程初学者,我强烈建议你把它分成两个或三个小项目,以保持低挫折水平;)

编辑Python2 vs Python3:pyqt和pyside可用于Python2和Python3(作为大多数库,但不是所有库),因此您可以自行选择py2和py3。语法几乎相同(print()命令除外),但您安装的库仅在您安装的版本中工作。 如果您在linux机器上工作,您可以轻松地并行安装这两个版本如果您想确保调用了正确的版本,您可以指定命令,例如
python2
python3
,而不是使用
python
运行默认命令

Edit2处理用户输入:

from subprocess import check_output

def predefined_command(user_input):
    command = ['net', 'user', '/domain', user_input]
    answer = check_output(command, args)
    decoded = answer.decode('utf8')
    return answer
这是一个使用tkinter for python的简单GUI
python 2或3。我真的不确定,我是python世界的新手。对于这个项目,一个会比另一个好吗?您可以使用Python3。通过在命令行中键入
python-V
来检查您的python版本似乎我当前安装了2.7.10。如果3更好的话,我可以换上它。在某些平台上,
python
始终是Py2,如果安装了Py3,则用于该平台的命令是
python3
。如果您只是刚刚开始,那么一定要以Py3为目标。我的目标是从(xxxxxx)这样的用户处获取输入,这将成为命令行命令的预定义字符串,该命令行命令读取“net user/domain xxxxxx”。然后,这将吐出一堆关于用户的信息,我希望这些信息显示在GUI中,而不是命令提示符中。如果你想使用tkinter,你可以使用Stack发布的代码(可能比使用pyqt快一点)。要运行该命令,您可以使用自己的函数,而不是回调处理程序中的
print('user input:…')
。我将通过编辑我的答案给出一个例子。对于3.6及更高版本,您需要
子流程.run()
是的
run()
方法是在3.5或3.6中添加的,但是与
check\u output()
方法相比,它直接返回输出,而不需要使用管道或其他方法捕获它有什么优势?
try:
    import tkinter as tk        # python v3
except:
    import Tkinter as tk        # python v2

# This function is called when the submit button is clicked
def submit_callback(input_entry):
    print("User entered : " + input_entry.get())
    return None


#######################  GUI ###########################
root = tk.Tk()
root.geometry('300x150')       #Set window size

# Heading
heading = tk.Label(root, text="A simple GUI")
heading.place(x = 100, y = 0)


input_label = tk.Label(root, text="Enter some text")
input_label.place(x = 0, y = 50)

input_entry = tk.Entry(root)
input_entry.place(x = 100, y = 50)


submit_button = tk.Button(root, text = "Submit", command = lambda: submit_callback(input_entry))
submit_button.place(x = 200, y = 90)
root.mainloop()
#############################################################