1. 程式人生 > 其它 >PyQt5中執行緒和介面操作總結

PyQt5中執行緒和介面操作總結

介面及功能完成後,點選某個按鈕操作耗時的操作時(比如打包大檔案),點選按鈕後執行打包,於是在真正打包完成前,介面介面都是呈現卡住的,無法動彈,稍微操作一下時可能不會遇到停止等待。

於是這就有必要另起執行緒去操作打包而不影響介面上其它功能操作。使用執行緒時無須線上程中獲取介面上的屬性值,可以通過在執行執行緒前將所有執行緒中會遇到的屬性引數進行傳值過去,可以像下面這樣操作:

 1 class MyMainWindow(QtWidgets.QMainWindow):
 2     def __init__(self):
 3         super().__init__()
 4 
 5     def
btn_bts_click(self): 6 fp = self.lineEdit_.text() 7 if fp != "": 8 self.thread.s_path = self.lineEdit_bts_path.text() # 傳值給執行緒中的引數 9 self.thread.fn = self.lineEdit_zzbb.text() # 傳值給執行緒中的引數 10 self.thread.start() 11 else: 12 QMessageBox.information(self, "
Info", "Input First")
1 class RunThread(QThread):
2     btn_zip_signal = QtCore.pyqtSignal()
3     zip_doing_signal = QtCore.pyqtSignal()
4     zip_error_signal = QtCore.pyqtSignal()
5     zip_ok_signal = QtCore.pyqtSignal()
6     s_path = ""
7     fn = ""

然後線上程執行過程中如需要給介面上一些彈框提示的話,可以通過訊號的方法,觸發訊號後執行介面上的某些操作