0
私が書いたクラスと他の人が書いたクラスを組み合わせたPythonプロジェクトをPyQT5で作成しています。 2番目のクラスは新しいウィンドウで開き、シリアル通信から読み取ったデータを表示します。 2番目のウィンドウが表示される前にプログラムを閉じると、2番目のクラスによってCOMポートが開かれ、インスタンス化が正しく閉じられないため、プログラムを再実行できないという問題があります。あまりにも早く開かないようにこのCOMポートを扱うにはどうしたらいいですか?別のクラスのCOMポートを扱う
私のコードは次のようになります。
class SecondWindow(SecondWindowClass):
def closeThis(self):
self.ser.close()
self.close()
self.first.show()
def __init__(self, first):
#SecondWindowClass.__init__(self)
super(SecondWindow, self).__init__()
self.first = first
self.ui = WindowTemplate()
self.ui.setupUi(self)
self.show()
print("Now opening COM port")
self.ser = serial.Serial('COM1', 9600, timeout=1)
print("COM1 opened")
#line = self.ser.readline() # first line is trash
self.ser.flush()
print("flushed COM11")
self.ui.pushButton.clicked.connect(lambda x:self.closeThis())
class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
def showSecond(self):
self.second.show()
self.hide()
self.ui.end_button.clicked.connect(lambda x:self.nextPicture())
def __init__(self):
QtGui.QMainWindow.__init__(self)
Ui_MainWindow.__init__(self)
self.setWindowTitle('pyqtgraph example: Qt Designer')
self.ui=uic.loadUi(uiFile, self)
self.setupUi(self)
self.show()
self.second = SecondWindow(self)
self.second.hide()
self.ui.end_button.clicked.connect(lambda x:self.showSecond())
win = MainWindow()
if __name__ == '__main__':
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
QtGui.QApplication.instance().exec_()