今天編輯工具遇到一個問題,查詢資料得到解決辦法,記錄一下。
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