我编写了一个基于文本 CLI 的脚本来测试某些设备。一些测试需要输入是/否答案以及阅读脚本的输出。我想看看创建一个 PyQT 应用程序是否可行。可以在这种类型的交互上放置一个 GUI 前端吗?例如,当用户单击按钮运行脚本时,脚本运行时将其输出行一次发送到 GUI 上的文本窗口,并且从 GUI 输入的任何行也向下发送到脚本。
TIA,弗雷德
我编写了一个基于文本 CLI 的脚本来测试某些设备。一些测试需要输入是/否答案以及阅读脚本的输出。我想看看创建一个 PyQT 应用程序是否可行。可以在这种类型的交互上放置一个 GUI 前端吗?例如,当用户单击按钮运行脚本时,脚本运行时将其输出行一次发送到 GUI 上的文本窗口,并且从 GUI 输入的任何行也向下发送到脚本。
TIA,弗雷德
你判断它是否可行的标准是什么?
这当然是可能的。QProcess类提供了在 Qt 应用程序中运行和与外部进程交互所需的一切。从本质上讲,它可以做所有subprocess
可以做的事情(尽管不太方便)。这是一个人为的用法示例:
button = QPushButton('start')
textedit = QTextEdit()
process = QProcess()
button.clicked.connect(on_clicked)
def on_clicked():
process.readyReadStandardOutput.connect(read_ready)
process.start('/bin/sh',
('-c', "while /bin/true; do echo hello world ; sleep 1; done"))
def read_ready(self):
chunk = process.readAllStandardOutput()
textedit.append(str(chunk))
既然您仍处于规划阶段,为什么不考虑使用zenity之类的工具作为 GUI 部分呢?它可以为您节省大量工作。获取复选框列表并将命令的输出发送到 textarea 变成:
parameters=$(
zenity --list --text "Test parameters:" \
--checklist --column "Check" --column "Parameter" \
TRUE "One" TRUE "Two" TRUE "Three" FALSE "Four" \
--separator=":");
# parameters -> One:Two:Three
./instrument-test.py $parameters | zenity --text-info
祝你的项目好运!