zoukankan      html  css  js  c++  java
  • pyqt5 在非主线程(QThread线程)中实现弹窗QMessageBox

    今天编辑工具遇到一个问题,查询资料得到解决办法,记录一下。

    Qt将所有GUI(图形用户界面)相关的处理都限制在主线程中,这么做有助于防止意想不到的访问冲突产生,但也限制了线程中某些简单的UI交互的实现,比如QMessageBox。

    因为QMessageBox必须在主线程中打开,想在QThread中使用QMessageBox可用信号量

    class Window(QMainWindow,Ui_MainWindow):
        def __init__(self, parent=None):
            super(Window,self).__init__(parent)
            self.setupUi(self)
     
            self.message = message(self)
            self.message.signal.connect(self.box)
     
            self.pushButton.clicked.connect(self.message.start)
     
     
        def box(self):
            QMessageBox.information(self, 'Warning', 'Success', QMessageBox.Ok)
     
     
    class message(QThread):
        signal = pyqtSignal()
        def __init__(self, Window):
            super(message, self).__init__()
            self.window = Window
     
        def run(self):
            self.signal.emit()
     
    if __name__ == "__main__":
        app = QApplication(sys.argv)
        win = Window()
        win.show()
        sys.exit(app.exec_())

     参考:

     https://www.freesion.com/article/7333105480/

    https://blog.csdn.net/JohnYork/article/details/46419185

    以前-好记性不如烂笔头 现在-好记性不如烂键盘
  • 相关阅读:
    Java多线程编程初识— —2
    Java多线程编程初识
    Java XML解析技术
    Java读取Properties文件的六种方法
    Java对象的序列化与反序列化
    文言写作
    阅读理解主题综合训练
    记叙文阅读的六大题型详解(全部转换成法事情人"法事情人")
    读书类、美景类作文
    开头技法
  • 原文地址:https://www.cnblogs.com/gexbooks/p/14661743.html
Copyright © 2011-2022 走看看