Tag: pyqt

循环中的QtCore.QObject.connect只影响最后一个实例

我有一个循环。 我创build了一个QCheckBox并把它放在一个QTableWidget单元格中,一切正常。 在循环的每一步中,我都调用了myslot SLOT的connect函数,但只应用了最后一个QCheckBox实例。 我GOOGLE了很多,发现很多人有我的问题。 我已经应用了他们的解决scheme for row in xrange(len(uniqueFields)): instance = QtGui.QCheckBox(uniqueFields[row], findInstance.tableWidget) print QtCore.QObject.connect(instance, QtCore.SIGNAL(_fromUtf8("stateChanged (int)")), lambda: findInstance.projectsInstance.myslot( "TWCH", findInstance, instance.text(), instance.checkState(), instance)) findInstance.tableWidget.setRowCount(findInstance.tableWidget.rowCount() + 1) findInstance.tableWidget.setCellWidget(row, 0, instance) 注意:我的connect函数返回True 。 如何在枚举所有instances的循环中创buildconnect函数?

PyQt4在线程中等待来自GUI的用户input

我有一个线程类“MyThread”和我的主要应用程序,简称为“桂”。 我想从线程类创build一些对象,但对于这个例子,我只创build了一个对象。 线程类做了一些工作,然后向Gui类发出一个信号,表示需要用户input(现在这个指示只是简单的改变一个button的文本)。 然后,线程应该等待用户input(在这种情况下点击一个button),然后继续做它正在做的事情… from PyQt4 import QtGui, QtCore class MyTrhead(QtCore.QThread): trigger = QtCore.pyqtSignal(str) def run(self): print(self.currentThreadId()) for i in range(0,10): print("working ") self.trigger.emit("3 + {} = ?".format(i)) #### WAIT FOR RESULT time.sleep(1) class Gui(QMainWindow, Ui_MainWindow): def __init__(self, parent=None): super(Gui, self).__init__(parent) self.setupUi(self) self.pushButton.clicked.connect(self.btn) self.t1 = MyTrhead() self.t1.trigger.connect(self.dispaly_message) self.t1.start() print("thread: {}".format(self.t1.isRunning())) @QtCore.pyqtSlot(str) def dispaly_message(self, mystr): self.pushButton.setText(mystr) […]

我怎样才能隐藏在Windows上运行的PyQt应用程序的控制台窗口?

这当然有可能吗? 我一直在通过PyQt教程和文档寻找,但找不到答案。 可能我只需要用不同的方式来描述我的search查询。 [编辑] 感谢PEZ的答案 – 更多详细信息,包括在Win32第20章Python编程中使用.pyw扩展名

PyQt:将信号连接到一个插槽以开始后台操作

我有以下代码执行后台操作( scan_value ),同时更新ui( progress )中的进度条。 scan_value迭代obj某个值,每当该值发生变化时都会发出一个信号( value_changed )。 由于在这里不相关的原因,我不得不把它包装在另一个线程中的对象( Scanner )。 扫描器在clickedbuttonscan时被调用。 这里是我的问题…下面的代码工作正常(即进度条按时更新)。 # I am copying only the relevant code here. def update_progress_bar(new, old): fraction = (new – start) / (stop – start) progress.setValue(fraction * 100) obj.value_changed.connect(update_progress_bar) class Scanner(QObject): def scan(self): scan_value(start, stop, step) progress.setValue(100) thread = QThread() scanner = Scanner() scanner.moveToThread(thread) thread.start() scan.clicked.connect(scanner.scan) […]

后台线程与QThread在PyQt

我有一个程序,它通过我在PyQt中编写的gui使用的无线电接口。 很明显,收音机的主要function之一就是传输数据,但是为了连续这样做,我必须循环写入,这会导致gui挂起。 由于我从来没有处理线程,我试图摆脱这些挂起使用QCoreApplication.processEvents(). 收音机需要在传输之间睡觉,所以gui仍然挂在这些睡眠持续多久。 有一个简单的方法来解决这个使用QThread? 我已经find了关于如何使用PyQt实现multithreading的教程,但是其中大部分都是关于设置服务器的,并且比我需要的要先进得多。 我真的不需要我的线程在运行时更新任何东西,我只需要启动它,让它在后台传输,然后停止。

在PyQt应用程序线程:使用Qt线程或Python线程?

我正在编写一个GUI应用程序,通过networking连接定期检索数据。 由于此检索过程需要一段时间,这会导致UI在检索过程中无响应(不能拆分成更小的部分)。 这就是为什么我想将Web连接外包给单独的工作线程。 [是的,我知道,现在我有两个问题 。] 无论如何,应用程序使用PyQt4,所以我想知道更好的select是什么:使用Qt的线程或使用Python threading模块? 各有什么优点/缺点? 或者你有完全不同的build议? 编辑(rebounty):虽然在我的具体情况下的解决scheme可能会使用像Jeff Ober和LukášLalinskýbuild议的非阻塞networking请求(所以基本上将并发问题留给networking实现),但我仍然想要更多深入解答一般问题: 使用PyQt4(即Qt)的线程优于本地Python线程(来自threading模块)的优缺点是什么? 编辑2:谢谢你所有的答案。 虽然没有100%的一致意见,但似乎有一个普遍的共识,认为答案是“使用Qt”,因为它的好处是与图书馆的其他部分整合在一起,而没有真正的缺点。 对于想要在两个线程实现之间进行select的人,我强烈build议他们阅读这里提供的所有答案,包括方法链接到的PyQt邮件列表线程。 我为赏金有几个答案。 最后我select方丈的非常相关的外部参考; 但是,这是一个密切的电话。 再次感谢。