說明
本例給出了三種視窗打開方式。
其中主界面打開主界面的方式,比較實用,卻少有示例。特釋出于此,希望對大家有幫助。
一.主界面打開 新的主界面
二.主界面打開 對話框
三.主界面打開 提示框
【如下代碼,完全複制,直接運作,即可使用】
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
################################################
#######建立主視窗
################################################
class FirstMainWindow(QMainWindow):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.setWindowTitle('主界面')
###### 建立界面 ######
self.centralwidget = QWidget()
self.setCentralWidget(self.centralwidget)
self.Layout = QVBoxLayout(self.centralwidget)
# 設定頂部三個按鈕
self.topwidget = QWidget()
self.Layout.addWidget(self.topwidget)
self.buttonLayout = QHBoxLayout(self.topwidget)
self.pushButton1 = QPushButton()
self.pushButton1.setText("打開主界面")
self.buttonLayout.addWidget(self.pushButton1)
self.pushButton2 = QPushButton()
self.pushButton2.setText("打開對話框")
self.buttonLayout.addWidget(self.pushButton2)
self.pushButton3 = QPushButton()
self.pushButton3.setText("打開提示框")
self.buttonLayout.addWidget(self.pushButton3)
# 設定中間文本
self.label = QLabel()
self.label.setText("第一個主界面")
self.label.setSizePolicy(QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding))
self.label.setAlignment(Qt.AlignCenter)
self.label.setFont(QFont("Roman times", 50, QFont.Bold))
self.Layout.addWidget(self.label)
# 設定狀态欄
self.statusBar().showMessage("目前使用者:一心獅")
# 視窗最大化
self.showMaximized()
###### 三個按鈕事件 ######
self.pushButton1.clicked.connect(self.on_pushButton1_clicked)
self.pushButton2.clicked.connect(self.on_pushButton2_clicked)
self.pushButton3.clicked.connect(self.on_pushButton3_clicked)
# 按鈕一:打開主界面
windowList = []
def on_pushButton1_clicked(self):
the_window =SecondWindow()
self.windowList.append(the_window) ##注:沒有這句,是不打開另一個主界面的!
self.close()
the_window.show()
# 按鈕二:打開對話框
def on_pushButton2_clicked(self):
the_dialog = TestdemoDialog()
if the_dialog.exec_() == QDialog.Accepted:
pass
# 按鈕三:打開提示框
def on_pushButton3_clicked(self):
QMessageBox.information(self, "提示", "這是information框!")
#QMessageBox.question(self, "提示", "這是question框!")
#QMessageBox.warning(self, "提示", "這是warning框!")
#QMessageBox.about(self, "提示", "這是about框!")
################################################
#######第二個主界面
################################################
class SecondWindow(QMainWindow):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.setWindowTitle('第二主界面')
# 設定中間文本
self.label = QLabel()
self.label.setText("第二個主界面")
self.label.setSizePolicy(QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding))
self.label.setAlignment(Qt.AlignCenter)
self.label.setFont(QFont("Roman times", 50, QFont.Bold))
self.setCentralWidget(self.label)
# 設定狀态欄
self.statusBar().showMessage("目前使用者:一心獅")
# 視窗最大化
self.showMaximized()
###### 重寫關閉事件,回到第一界面
windowList = []
def closeEvent(self, event):
the_window = FirstMainWindow()
self.windowList.append(the_window) ##注:沒有這句,是不打開另一個主界面的!
the_window.show()
event.accept()
################################################
#######對話框
################################################
class TestdemoDialog(QDialog):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.setWindowTitle('對話框')
### 設定對話框類型
self.setWindowFlags(Qt.Tool)
################################################
#######程式入門
################################################
if __name__ == "__main__":
app = QApplication(sys.argv)
the_mainwindow = FirstMainWindow()
the_mainwindow.show()
sys.exit(app.exec_())
本文如有幫助,敬請留言鼓勵。
本文如有錯誤,敬請留言改進。