标签: pyqt

在PyQt应用程序中进行线程化:使用Qt线程还是Python线程?

我正在编写一个GUI应用程序,它定期通过Web连接检索数据.由于此检索需要一段时间,因此会导致UI在检索过程中无响应(无法将其拆分为较小的部分).这就是为什么我想将Web连接外包给一个单独的工作线程.

[是的,我知道,现在我有两个问题.]

无论如何,应用程序使用PyQt4,所以我想知道更好的选择是什么:使用Qt的线程还是使用Python threading模块?每个的优点/缺点是什么?或者你有一个完全不同的建议?

编辑(重新赏金):虽然在我的特定情况下的解决方案可能会使用像Jeff OberLukášLalinský建议的非阻塞网络请求(所以基本上将并发问题留给网络实现),我仍然喜欢更多对一般问题的深入回答:

使用PyQt4(即Qt)线程优于本机Python线程(来自threading模块)的优点和缺点是什么?


编辑2:谢谢大家的答案.虽然没有100%的协议,但似乎普遍认为答案是"使用Qt",因为它的优点是与库的其余部分集成,同时没有造成任何真正的缺点.

对于任何想要在两个线程实现之间进行选择的人,我强烈建议他们阅读这里提供的所有答案,包括abbot链接到的PyQt邮件列表线程.

我考虑了赏金的几个答案; 最后,我选择了abbot作为非常相关的外部参考; 然而,这是一个近距离的电话.

再次感谢.

python multithreading pyqt

107
推荐指数
6
解决办法
4万
查看次数

如何使用pip在Windows上安装PyQt4?

我在Windows上使用Python 3.4.当我运行脚本时,它会抱怨

ImportError: No Module named 'PyQt4'
Run Code Online (Sandbox Code Playgroud)

所以我试着安装它,但是pip install PyQt4给了

找不到满足PyQt4要求的任何下载

虽然它确实出现在我跑步时pip search PyQt4.我试过pip install python-qt,成功安装,但没有解决问题.

我究竟做错了什么?

python pip pyqt pyqt4 python-3.x

103
推荐指数
9
解决办法
27万
查看次数

在Python中开发GUI:Tkinter与PyQt

如果有人想在Python中开发一个用户界面,那么应该选择哪一个:TkInter或PyQt?

我刚开始使用TkInter,我能够使用标签,按钮,文本框等基本小部件来获得一些简单的UI.只是想知道PyQt与TkInter相比有多好?

干杯

python user-interface tkinter pyqt

86
推荐指数
4
解决办法
10万
查看次数

在matplotlib中更改绘图的轴,刻度和标签的颜色

我想更改轴的颜色,以及使用matplotlib和PyQt绘制的绘图的刻度和值标签.

有任何想法吗?

python pyqt colors matplotlib

76
推荐指数
3
解决办法
10万
查看次数

将qtDesigner .ui文件链接到python/pyqt?

因此,如果我进入QtDesigner并构建一个UI,它将被保存为.ui文件.我怎么能把它作为python文件或在python中使用它?

python user-interface qt pyqt qt-designer

75
推荐指数
8
解决办法
11万
查看次数

在PyQt中使用QThread的后台线程

我有一个程序,通过我在PyQt中编写的gui与我正在使用的收音机连接.显然,无线电的一个主要功能是传输数据,但为了不断地这样做,我必须循环写入,这会导致gui挂起.因为我从未处理过线程,所以我试图摆脱这些挂起使用QCoreApplication.processEvents().无线电需要在传输之间休眠,所以gui仍然根据这些睡眠的持续时间而挂起.

有没有一种简单的方法可以使用QThread来解决这个问题?我已经找到了有关如何使用PyQt实现多线程的教程,但是大多数都涉及设置服务器,并且比我需要的更先进.老实说,我甚至不需要我的线程在运行时更新任何东西,我只需要启动它,让它在后台传输,然后停止它.

python multithreading pyqt pyqt4 qthread

68
推荐指数
6
解决办法
10万
查看次数

PyQt或PySide - 使用哪一个

我开始学习一点python,现在想玩gui-building.由于其跨平台性,Qt似乎是一个不错的选择.
现在似乎有两种绑定:Riverbank Computing的PyQt和最初由诺基亚开发的PySide.
那么我应该选择哪一个?我所能找到的只是两年的特征比较,但现在有什么不同?
哪一个更容易使用,有更多/更好的文档?两者还在积极发展吗?
许可证对我来说并不是很重要,因为我不打算编写商业应用程序.

python pyqt pyside

68
推荐指数
6
解决办法
5万
查看次数

从控制台(Ctrl-C)中杀死PyQt应用程序时退出的正确方法是什么?

从控制台(Ctrl-C)中杀死PyQt应用程序时退出的正确方法是什么?

目前(我没有特别处理unix信号),我的PyQt应用程序忽略了SIGINT(Ctrl + C).我希望它表现得很好,并在它被杀死时退出.我该怎么办?

python linux qt signals pyqt

65
推荐指数
5
解决办法
4万
查看次数

PyQt4.QtCore.pyqtSignal对象没有属性'connect'

在我制作的课程中,我遇到了自定义信号的问题.

相关代码:

self.parse_triggered = QtCore.pyqtSignal()

def parseFile(self):
    self.emit(self.parse_triggered)
Run Code Online (Sandbox Code Playgroud)

这两个属于类:RefreshWidget.在它的父类我有:

self.refreshWidget.parse_triggered.connect(self.tabWidget.giveTabsData())
Run Code Online (Sandbox Code Playgroud)

当我尝试运行该程序时,我收到错误:

AttributeError: 'PyQt4.QtCore.pyqtSignal' object has no attribute 'connect'
Run Code Online (Sandbox Code Playgroud)

救命?提前致谢.

signals pyqt pyqt4

52
推荐指数
5
解决办法
4万
查看次数

是否应该避免使用通配符?

我正在使用PyQt并遇到了这个问题.如果我的import语句是:

from PyQt4.QtCore import *
from PyQt4.QtGui import *
Run Code Online (Sandbox Code Playgroud)

然后pylint给出了数百个"未使用的导入"警告.我很犹豫要把它们关闭,因为可能有其他未使用的导入实际上很有用.另一种选择是这样做:

from PyQt4.QtCore import Qt, QPointF, QRectF
from PyQt4.QtGui import QGraphicsItem, QGraphicsScene, ...
Run Code Online (Sandbox Code Playgroud)

and I end up having 9 classes on the QtGui line. There's a third option, which is:

from PyQt4 import QtCore, QtGui
Run Code Online (Sandbox Code Playgroud)

and then prefix all the classes with QtCore or QtGui whenever I use them.

At this point I'm agnostic as to which one I end up doing in my project, although the last one seems the …

python pyqt pylint pyqt4 python-import

48
推荐指数
2
解决办法
3万
查看次数