0
我有這個GUI代碼,它由pyuic5
和-x
參數生成。我已將一些代碼添加到Ui_LEDController
,例如通過串行端口連接到arduino。我想在程序關閉時通過X
實現斷開Arduino的連接。
我知道我必須重寫QMainWindow
方法closeEvent()
,但我不知道應該採取哪些步驟來實現此目的。我不能只創建class MyWindow(QtWidgets.QMainWindow())
,然後LEDController = MyWindow()
,因爲我將無法訪問串行變量。
所以基本上:我不應該使用這Ui_LEDController
來設置GUI項目,而不是創建class MyWindow(QtWidgets.QMainWindow())
其中我將實現所有的GUI項目並覆蓋closeEvent()
?從QtCreator中覆蓋PyQt中的QMainWindow方法
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_LEDController(object):
def setupUi(self, LEDController):
LEDController.setObjectName("LEDController")
LEDController.resize(230, 160)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(LEDController.sizePolicy().hasHeightForWidth())
LEDController.setSizePolicy(sizePolicy)
LEDController.setMinimumSize(QtCore.QSize(230, 160))
LEDController.setMaximumSize(QtCore.QSize(230, 160))
# Lot of initializing
LEDController.setCentralWidget(self.central_widget)
self.retranslateUi(LEDController)
# Signals and Slots handlers
QtCore.QMetaObject.connectSlotsByName(LEDController)
def retranslateUi(self, LEDController):
_translate = QtCore.QCoreApplication.translate
LEDController.setWindowTitle(_translate("LEDController", "LEDController"))
self.bright_label.setText(_translate("LEDController", "Brightness"))
# Changing text in items
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
LEDController = QtWidgets.QMainWindow()
ui = Ui_LEDController()
ui.setupUi(LEDController)
LEDController.show()
sys.exit(app.exec_())
好主意!謝謝。我使用了第二種解決方案。 :) –