寫在前面
在網上找了一遍相關的例子,總感覺不夠簡潔,所以進行了重新總結。
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窗口的方法,窗口之間其實還可以又更多的邏輯聯繫,這裏就不做介紹了。