import sys import serial from PyQt5.QtWidgets import QMainWindow, QApplication from aaa_main import Ui_MainWindow from aaa_child import Ui_ChildWindow import serial.tools.list_ports class Main(QMainWindow, Ui_MainWindow): def __init__(self): super(Main, self).__init__() self.setupUi(self) self.serial = serial.Serial() self.refresh() def refresh(self): plist = list(serial.tools.list_ports.comports()) if len(plist)<=0: self.comboBox_uart.clear() self.comboBox_uart.addItem("无串口") else: self.comboBox_uart.clear() for i in range(0, len(plist)): plist_0 = list(plist[i]) self.comboBox_uart.addItem(str(plist_0[0])) def btn_uart_cb(self): if not self.serial.isOpen(): self.btn_Open.setText("关闭串口") portName = self.comboBox_uart.currentText() baud = self.comboBox_baud.currentText() self.serial = serial.Serial(portName, baud) else: self.serial.close() self.btn_Open.setText("打开串口") class Child(QMainWindow, Ui_ChildWindow): def __init__(self): super(Child, self).__init__() self.setupUi(self) self.pushButton.clicked.connect(self.close) def Open(self): self.show() if __name__ == "__main__": app = QApplication(sys.argv) main = Main() child = Child() main.show() main.pushButton.clicked.connect(child.Open) sys.exit(app.exec_())
时间: 2024-04-25 20:26:30 浏览: 12
这段代码看起来比之前的代码没有问题,但是需要确认 `aaa_main.py` 和 `aaa_child.py` 这两个文件中定义的 `Ui_MainWindow` 和 `Ui_ChildWindow` 类是否存在,以及是否正确导入。如果这些类不存在或者导入错误,也会导致程序崩溃。另外,如果你在程序运行过程中出现错误,可以查看控制台输出的错误信息,以便更好地定位问题。
相关问题
pyqt5 子窗口关闭释放
在 PyQt5 中,当子窗口关闭时,可以通过调用 `QWidget.close()` 方法来关闭窗口,并且该窗口会被自动释放。以下是一个示例代码,展示如何在子窗口关闭时释放它:
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QPushButton
class ChildWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("Child Window")
self.setGeometry(100, 100, 300, 200)
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Main Window")
self.setGeometry(100, 100, 500, 400)
self.child_window = ChildWindow()
self.child_window.destroyed.connect(self.on_child_window_destroyed)
button = QPushButton("Open Child Window", self)
button.clicked.connect(self.open_child_window)
button.move(50, 50)
def open_child_window(self):
self.child_window.show()
def on_child_window_destroyed(self):
print("Child window has been destroyed")
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
```
在上面的示例中,当点击 "Open Child Window" 按钮时,会打开一个子窗口。当子窗口关闭时,会触发 `on_child_window_destroyed` 方法,你可以在该方法中进行一些释放资源的操作。
希望这个示例对你有帮助!如果你对其他问题有任何疑问,请随时提问。
pyqt5当子窗口显示时主窗口隐藏
当子窗口显示时,可以使用`hide()`方法隐藏主窗口。具体实现代码如下:
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QPushButton
class ChildWindow(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.setWindowTitle('Child Window')
self.resize(200, 100)
def closeEvent(self, event):
# 显示主窗口
self.parent().show()
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle('Main Window')
self.resize(400, 300)
self.btn = QPushButton('Open Child Window', self)
self.btn.clicked.connect(self.open_child_window)
def open_child_window(self):
# 隐藏主窗口
self.hide()
child = ChildWindow(self)
child.show()
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
```
在上面的例子中,子窗口类`ChildWindow`重写了`closeEvent`方法,在关闭子窗口时会触发该方法,从而显示主窗口。在主窗口类`MainWindow`中,点击按钮会打开一个子窗口并隐藏主窗口。