• 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

    以前-好记性不如烂笔头 现在-好记性不如烂键盘
  • 相关阅读:
    mybatis---demo1--(1-n)----bai
    字符流之文件读写流
    字节字符转换流
    字节缓冲流
    字节流之数据输入输出流
    字节流之文件输出流FileOutputStream
    【洛谷P3916】图的遍历
    【codevs1297】硬币 完全背包
    【codevs2205】等差数列
    【洛谷P1214】等差数列
  • 原文地址:https://www.cnblogs.com/gexbooks/p/14661743.html
Copyright © 2020-2023  润新知