1 import sys
2 from PyQt5.QtWidgets import *
3 from PyQt5.QtCore import *
4 from PyQt5.QtGui import *
5 ################################################
6 #######创建主窗口
7 ################################################
8 class FirstMainWindow(QMainWindow):
9 def __init__(self, *args, **kwargs):
10 super().__init__(*args, **kwargs)
11 self.setWindowTitle('主界面')
12
13 ###### 创建界面 ######
14 self.centralwidget = QWidget()
15 self.setCentralWidget(self.centralwidget)
16 self.Layout = QVBoxLayout(self.centralwidget)
17
18 # 设置顶部三个按钮
19 self.topwidget = QWidget()
20 self.Layout.addWidget(self.topwidget)
21 self.buttonLayout = QHBoxLayout(self.topwidget)
22
23 self.pushButton1 = QPushButton()
24 self.pushButton1.setText("打开主界面")
25 self.buttonLayout.addWidget(self.pushButton1)
26
27 self.pushButton2 = QPushButton()
28 self.pushButton2.setText("打开对话框")
29 self.buttonLayout.addWidget(self.pushButton2)
30
31 self.pushButton3 = QPushButton()
32 self.pushButton3.setText("打开提示框")
33 self.buttonLayout.addWidget(self.pushButton3)
34
35 # 设置中间文本
36 self.label = QLabel()
37 self.label.setText("第一个主界面")
38 self.label.setSizePolicy(QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding))
39 self.label.setAlignment(Qt.AlignCenter)
40 self.label.setFont(QFont("Roman times", 50, QFont.Bold))
41 self.Layout.addWidget(self.label)
42
43 # 设置状态栏
44 self.statusBar().showMessage("当前用户:一心狮")
45
46 # 窗口最大化
47 self.showMaximized()
48
49 ###### 三个按钮事件 ######
50 self.pushButton1.clicked.connect(self.on_pushButton1_clicked)
51 self.pushButton2.clicked.connect(self.on_pushButton2_clicked)
52 self.pushButton3.clicked.connect(self.on_pushButton3_clicked)
53
54 # 按钮一:打开主界面
55 windowList = []
56 def on_pushButton1_clicked(self):
57 the_window =SecondWindow()
58 self.windowList.append(the_window) ##注:没有这句,是不打开另一个主界面的!
59 self.close()
60 the_window.show()
61
62
63 # 按钮二:打开对话框
64 def on_pushButton2_clicked(self):
65 the_dialog = TestdemoDialog()
66 if the_dialog.exec_() == QDialog.Accepted:
67 pass
68
69 # 按钮三:打开提示框
70 def on_pushButton3_clicked(self):
71 QMessageBox.information(self, "提示", "这是information框!")
72 #QMessageBox.question(self, "提示", "这是question框!")
73 #QMessageBox.warning(self, "提示", "这是warning框!")
74 #QMessageBox.about(self, "提示", "这是about框!")
75
76
77 ################################################
78 #######第二个主界面
79 ################################################
80 class SecondWindow(QMainWindow):
81 def __init__(self, *args, **kwargs):
82 super().__init__(*args, **kwargs)
83 self.setWindowTitle('第二主界面')
84
85 # 设置中间文本
86 self.label = QLabel()
87 self.label.setText("第二个主界面")
88 self.label.setSizePolicy(QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding))
89 self.label.setAlignment(Qt.AlignCenter)
90 self.label.setFont(QFont("Roman times", 50, QFont.Bold))
91 self.setCentralWidget(self.label)
92
93 # 设置状态栏
94 self.statusBar().showMessage("当前用户:一心狮")
95
96 # 窗口最大化
97 self.showMaximized()
98
99
100 ###### 重写关闭事件,回到第一界面
101 windowList = []
102 def closeEvent(self, event):
103 the_window = FirstMainWindow()
104 self.windowList.append(the_window) ##注:没有这句,是不打开另一个主界面的!
105 the_window.show()
106 event.accept()
107
108 ################################################
109 #######对话框
110 ################################################
111 class TestdemoDialog(QDialog):
112 def __init__(self, *args, **kwargs):
113 super().__init__(*args, **kwargs)
114 self.setWindowTitle('对话框')
115
116 ### 设置对话框类型
117 self.setWindowFlags(Qt.Tool)
118
119
120 ################################################
121 #######程序入门
122 ################################################
123 if __name__ == "__main__":
124 app = QApplication(sys.argv)
125 the_mainwindow = FirstMainWindow()
126 the_mainwindow.show()
127 sys.exit(app.exec_())
