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 14:26:30 浏览: 185
这段代码看起来比之前的代码没有问题,但是需要确认 `aaa_main.py` 和 `aaa_child.py` 这两个文件中定义的 `Ui_MainWindow` 和 `Ui_ChildWindow` 类是否存在,以及是否正确导入。如果这些类不存在或者导入错误,也会导致程序崩溃。另外,如果你在程序运行过程中出现错误,可以查看控制台输出的错误信息,以便更好地定位问题。
相关问题
pyqt5子窗口调用
在PyQt5中,创建子窗口通常涉及到继承QMainWindow或者QWidget,并通过特定的方式打开或显示它。下面是一个简单的例子:
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
# 创建主界面布局
self.setWindowTitle("主窗口")
self.setGeometry(100, 100, 400, 300)
# 添加一个按钮,点击时打开子窗口
button = QPushButton("打开子窗口", self)
button.clicked.connect(self.show_child_window)
# 设置窗口的基本属性
self.button_layout = QVBoxLayout()
self.button_layout.addWidget(button)
self.setLayout(self.button_layout)
def show_child_window(self):
child = ChildWindow(parent=self) # 子窗口继承自QMainWindow或QWidget
child.show() # 显示子窗口
class ChildWindow(QMainWindow):
def __init__(self, parent=None):
super(ChildWindow, self).__init__(parent)
self.setWindowTitle("子窗口")
self.setGeometry(450, 100, 300, 200)
# 这里可以添加子窗口需要的内容
if __name__ == "__main__":
app = QApplication([])
main = MainWindow()
main.show()
app.exec_()
```
在这个例子中,`show_child_window`方法会在用户点击“打开子窗口”按钮时被触发,此时会创建一个新的`ChildWindow`实例并显示出来。
pyqt5显示不同窗口
要在PyQt5中显示不同的窗口,可以使用QMainWindow作为主窗口,并创建其他窗口作为子窗口。以下是一个简单的示例,其中包含两个窗口:主窗口和子窗口。
```python
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QLabel, QPushButton
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Main Window")
self.setGeometry(100, 100, 300, 200)
self.central_widget = QWidget()
self.setCentralWidget(self.central_widget)
self.label = QLabel(self.central_widget)
self.label.setText("This is the main window")
self.label.move(50, 50)
self.button = QPushButton(self.central_widget)
self.button.setText("Open Child Window")
self.button.move(50, 100)
self.button.clicked.connect(self.open_child_window)
def open_child_window(self):
self.child_window = ChildWindow(self)
self.child_window.show()
class ChildWindow(QWidget):
def __init__(self, parent):
super().__init__(parent)
self.setWindowTitle("Child Window")
self.setGeometry(200, 200, 300, 200)
self.label = QLabel(self)
self.label.setText("This is the child window")
self.label.move(50, 50)
if __name__ == "__main__":
app = QApplication(sys.argv)
main_window = MainWindow()
main_window.show()
sys.exit(app.exec_())
```
在这个示例中,我们创建了一个QMainWindow作为主窗口,将一个QWidget设置为中心部件,并在其中添加了一个QLabel和一个QPushButton。当用户单击按钮时,将创建一个子窗口(ChildWindow)并显示出来。子窗口是一个QWidget,它包含一个QLabel。在子窗口中,我们将parent参数设置为主窗口,这样可以让子窗口成为主窗口的子窗口。
阅读全文