PyQt5 調出另外的窗口

寫在前面

在網上找了一遍相關的例子,總感覺不夠簡潔,所以進行了重新總結。

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窗口。

程序效果

  1. 程序剛啓動時,界面如下。
    在這裏插入圖片描述
  2. 點擊A窗口中的按鈕,界面如下。
    在這裏插入圖片描述

寫在最後

以上以爲A窗口調出B窗口的方法,窗口之間其實還可以又更多的邏輯聯繫,這裏就不做介紹了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章