写在前面
在网上找了一遍相关的例子,总感觉不够简洁,所以进行了重新总结。
PyQt5 如何调出另外的(自定义)窗口呢?下面给出一个具体的例子:从A窗口中调出B窗口。
定义A窗口
class A(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.button = QPushButton('调出另外一个窗口', self) # 窗口里添加一个按钮
self.setGeometry(200, 200, 300, 300)
self.button.move(100, 100)
self.setWindowTitle('A窗口')
self.show()
定义B窗口
class B(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.label = QLabel('这是调出的另外一个窗口', self) # 添加一个标签
self.label.move(50, 50)
self.setGeometry(500, 500, 300, 300)
self.setWindowTitle('B窗口')
完整的代码
# -*- coding:utf-8 -*-
from PyQt5.QtWidgets import QWidget, QPushButton, QLabel, QApplication
import sys
class A(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.button = QPushButton('调出另外一个窗口', self) # 窗口里添加一个按钮
self.setGeometry(200, 200, 300, 300)
self.button.move(100, 100)
self.setWindowTitle('A窗口')
self.show()
def closeEvent(self, event):
self.a_close.emit()
self.close()
class B(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.label = QLabel('这是调出的另外一个窗口', self) # 窗口里添加一个标签
self.label.move(50, 50)
self.setGeometry(500, 500, 300, 300)
self.setWindowTitle('B窗口')
if __name__ == '__main__':
app = QApplication(sys.argv)
a = A()
b = B()
a.button.clicked.connect(b.show)
sys.exit(app.exec_())
以上代码中
a.button.clicked.connect(b.show)
是将clicked信号连接到b.show上,确保A窗口里的按钮被点击时,调出B窗口。
程序效果
- 程序刚启动时,界面如下。
- 点击A窗口中的按钮,界面如下。
写在最后
以上以为A窗口调出B窗口的方法,窗口之间其实还可以又更多的逻辑联系,这里就不做介绍了。