相关疑难解决方法(0)

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

我有一个线程类"MyThread"和我的主要应用程序,简称为"Gui".我想从线程类创建一些对象,但是对于这个例子,我只创建了一个对象.线程类做了一些工作,然后向Gui类发出一个信号,指示需要用户输入(此指示现在只是更改按钮的文本).然后线程应该等待用户输入(在这种情况下是一个按钮点击),然后继续做它正在做的事情......

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)

    def btn(self):
        print("Return result to corresponding thread")



if "__main__" == __name__:
    import sys
    app = QtGui.QApplication(sys.argv)
    m = Gui()
    m.show()
    sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

如何在(多个)线程中等待用户输入?

python multithreading pyqt pyqt4 python-3.x

7
推荐指数
1
解决办法
4298
查看次数

使用PyQt进度条的繁忙指示

我正在尝试编写一个脚本,在执行任务时会显示忙碌指示.当任务结束时,进度条将填充到最后,表明100%任务已完成.我只是想让进度条显示正在进行的任务.但是当我开始任务时,忙碌指示停止.在我看来,指示和任务不能一起继续.请帮我.这是我的代码:

from PyQt4 import QtCore, QtGui
from time import sleep
try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName(_fromUtf8("MainWindow"))
        MainWindow.resize(344, 159)
        self.centralwidget = QtGui.QWidget(MainWindow)
        self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
        self.pb = QtGui.QProgressBar(self.centralwidget)
        self.pb.setGeometry(QtCore.QRect(20, 20, 301, 31))
        self.pb.setProperty("value", 0)
        self.pb.setObjectName(_fromUtf8("pb"))
        self.btn = QtGui.QPushButton(self.centralwidget)
        self.btn.setGeometry(QtCore.QRect(20, 70, 98, 27))
        self.btn.setObjectName(_fromUtf8("btn"))
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtGui.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 344, …
Run Code Online (Sandbox Code Playgroud)

python pyqt progress pyqt4

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

标签 统计

pyqt ×2

pyqt4 ×2

python ×2

multithreading ×1

progress ×1

python-3.x ×1