在qt程序中怎么运行一个python程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在qt程序中怎么运行一个python程序相关的知识,希望对你有一定的参考价值。

因为process.start()函数实质是采用命令行中"start XXX"的方式启动XXX。这里的XXX仅仅适用于大部分的exe可执行文件以及一些常用文件。对于py或者pyw文件都不行。
有两种解决方案:
另外编写一个bat用来启动py文件,就可以使用start启动这个bat就可以了;
使用另一个函数“QDesktopServices::openUrl”来启动py文件。具体使用方法请自行百度。不做过多说明。
参考技术A QString local_path = QString("C:/Users/....../new.py"); //修改为自己的路径
QString path = QString("file:///") + local_path;
bool is_open = QDesktopServices::openUrl(QUrl(path,QUrl::TolerantMode));

如果仅出现黑框而没有运行程序,请关闭电脑上的杀毒软件,尤其是某安全卫士,本人的Python程序因为使用pyautogui模块的代码而被其以模拟按键的理由给自动阻止了。
参考技术B run 文件路径\文件名.py

在 python 中运行 Qt 应用程序时如何在控制台中输入?

【中文标题】在 python 中运行 Qt 应用程序时如何在控制台中输入?【英文标题】:How to input in console while running Qt Application in python? 【发布时间】:2016-05-22 11:26:06 【问题描述】:

在运行 PyQt 应用程序时,我无法在终端中输入用户的任何内容。

实际上我正在创建一些东西,但我不能在这里显示整个代码,所以有代码的 ma​​in,并且相信我只需要修复它:

from PyQt4.QtGui import *
import sys
def window():
    app = QApplication(sys.argv)
    window = QWidget()
    btn = QPushButton()
    btn.setText("Input In Console")
    box = QFormLayout()
    box.addRow(btn)
    btn.clicked.connect(input_txt)
    window.setLayout(box)
    window.show()
    sys.exit(app.exec_())

def input_txt():
    input("Enter you Name ")

if __name__ == "__main__":
    window()

当我按下按钮运行时,循环的灾难开始了:

我确实尝试了很多配置此问题的解决方案,但都失败了。希望这些信息对您有所帮助,如果对帖子有任何疑问,请在评论中说。

【问题讨论】:

【参考方案1】:

我不再需要这个了,但如果其他人有同样的问题,我仍然会发布答案。

解决方案:使用线程

from PyQt4.QtGui import *
import sys,threading
def window():
    app = QApplication(sys.argv)
    window = QWidget()
    btn = QPushButton()
    btn.setText("Input In Console")
    box = QFormLayout()
    box.addRow(btn)
    btn.clicked.connect(input_txt)
    window.setLayout(box)
    window.show()
    sys.exit(app.exec_())

def input_txt():
    thread = threading.Thread(target=input)
    thread.start()

if __name__ == "__main__":
    window()

【讨论】:

以上是关于在qt程序中怎么运行一个python程序的主要内容,如果未能解决你的问题,请参考以下文章

使用QT自带命令行来打包程序

qt弹出消息框程序继续运行

qt怎么查看当前正在执行的代码

在 python 中运行 Qt 应用程序时如何在控制台中输入?

调用了shell脚本的Qt程序如何打包成.deb文件

PyQt5类,方法和属性未在Eclipse中显示在AutoComplete中,标准类名称显示错误但程序运行