问题描述:
想使用PyQt5 点击后弹出一个新窗口
思路:
0: 首先得绘制一个窗口
1: 一个点击按钮 【 初始化 —> 布局 —> 触发新窗口 】
2: 引入另外一个文件的窗口展示 【 这个窗口也可以单独运行 】
图片演示:
代码:
这个方法,指向新的文件 layout1
def layoutFn(self):
"""
想要有新的窗口, 引用其它已经写好的类
"""
import layout1 # 这个是可以单独运行的窗口
self.one = layout1.Layout1()
self.one.show()
layout1.py 这个文件也可以单独运行
import sys
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QApplication ,QWidget ,QFormLayout , QLineEdit, QLabel
class Layout1(QWidget):
def __init__(self,parent=None):
super(Layout1,self).__init__(parent)
self.setWindowTitle("排列组合")
self.resize(400, 100)
fromlayout = QFormLayout()
labl1 = QLabel("标签1")
lineEdit1 = QLineEdit()
labl2 = QLabel("标签2")
lineEdit2 = QLineEdit()
labl3 = QLabel("标签3")
lineEdit3 = QLineEdit()
fromlayout.addRow(labl1, lineEdit1)
fromlayout.addRow(labl2, lineEdit2)
fromlayout.addRow(labl3, lineEdit3)
self.setLayout(fromlayout)
def closeEvent(self, event):
reply = QtWidgets.QMessageBox.question(self, '警告', '退出后测试将停止,你确认要退出吗?', QtWidgets.QMessageBox.Yes, QtWidgets.QMessageBox.No)
if reply == QtWidgets.QMessageBox.Yes:
event.accept()
else:
event.ignore()
if __name__ == "__main__":
app = QApplication(sys.argv)
form = Layout1()
form.show()
sys.exit(app.exec_())
图示的完整代码:
主文件:
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'd:\python code\07ClassRoom.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QMessageBox, QPushButton, QFormLayout, QLineEdit, QWidget
class Ui_classRoom(object):
def createTable(self, columnNmb, rowsNmb):
self.tableWidget = QtWidgets.QTableWidget(self.centralwidget)
self.tableWidget.setGeometry(QtCore.QRect(90, 70, 500, 300))
self.tableWidget.setMinimumSize(QtCore.QSize(480, 0))
self.tableWidget.setShowGrid(False)
self.tableWidget.setGridStyle(QtCore.Qt.DashLine)
self.tableWidget.setObjectName("tableWidget")
self.tableWidget.setColumnCount(columnNmb)
self.tableWidget.setRowCount(self)
for i in range(columnNmb): # 生产纵向 item
item = QtWidgets.QTableWidgetItem()
item.setTextAlignment(QtCore.Qt.AlignCenter)
self.tableWidget.setVerticalHeaderItem(i, item)
for i in range(rowsNmb): # 生产横向 item
item = QtWidgets.QTableWidgetItem()
item.setTextAlignment(QtCore.Qt.AlignCenter)
self.tableWidget.setHorizontalHeaderItem(i, item)
for i in range(columnNmb): # 把 item 根据坐标放入
for j in range(rowsNmb):
item = QtWidgets.QTableWidgetItem()
item.setTextAlignment(QtCore.Qt.AlignCenter)
self.tableWidget.setItem(j, i, item)
self.tableWidget.horizontalHeader().setVisible(True)
self.tableWidget.horizontalHeader().setCascadingSectionResizes(False)
self.tableWidget.horizontalHeader().setHighlightSections(True)
self.tableWidget.horizontalHeader().setMinimumSectionSize(40)
self.tableWidget.verticalHeader().setDefaultSectionSize(30)
def setupUi(self, classRoom):
classRoom.setObjectName("classRoom")
classRoom.resize(637, 561)
self.centralwidget = QtWidgets.QWidget(classRoom)
self.centralwidget.setObjectName("centralwidget")
self.pulpit = QtWidgets.QLineEdit(self.centralwidget)
self.pulpit.setGeometry(QtCore.QRect(200, 400, 200, 50))
self.pulpit.setStyleSheet("font: 26pt \"楷体\";")
self.pulpit.setObjectName("pulpit")
self.tableWidget = QtWidgets.QTableWidget(self.centralwidget)
self.tableWidget.setGeometry(QtCore.QRect(90, 70, 480, 260))
self.tableWidget.setMinimumSize(QtCore.QSize(480, 0))
self.tableWidget.setShowGrid(False)
self.tableWidget.setGridStyle(QtCore.Qt.DashLine)
self.tableWidget.setObjectName("tableWidget")
self.tableWidget.setColumnCount(3)
self.tableWidget.setRowCount(4)
item = QtWidgets.QTableWidgetItem()
item.setTextAlignment(QtCore.Qt.AlignCenter)
self.tableWidget.setVerticalHeaderItem(0, item)
item = QtWidgets.QTableWidgetItem()
item.setTextAlignment(QtCore.Qt.AlignCenter)
self.tableWidget.setVerticalHeaderItem(1, item)
item = QtWidgets.QTableWidgetItem()
item.setTextAlignment(QtCore.Qt.AlignCenter)
self.tableWidget.setVerticalHeaderItem(2, item)
item = QtWidgets.QTableWidgetItem()
item.setTextAlignment(QtCore.Qt.AlignCenter)
self.tableWidget.setVerticalHeaderItem(3, item)
item = QtWidgets.QTableWidgetItem()
item.setTextAlignment(QtCore.Qt.AlignCenter)
self.tableWidget.setHorizontalHeaderItem(0, item)
item = QtWidgets.QTableWidgetItem()
item.setTextAlignment(QtCore.Qt.AlignCenter)
self.tableWidget.setHorizontalHeaderItem(1, item)
item = QtWidgets.QTableWidgetItem()
item.setTextAlignment(QtCore.Qt.AlignCenter)
self.tableWidget.setHorizontalHeaderItem(2, item)
item = QtWidgets.QTableWidgetItem()
item.setTextAlignment(QtCore.Qt.AlignCenter)
self.tableWidget.setItem(0, 0, item)
item = QtWidgets.QTableWidgetItem()
item.setTextAlignment(QtCore.Qt.AlignCenter)
self.tableWidget.setItem(0, 1, item)
item = QtWidgets.QTableWidgetItem()
item.setTextAlignment(QtCore.Qt.AlignCenter)
self.tableWidget.setItem(0, 2, item)
item = QtWidgets.QTableWidgetItem()
item.setTextAlignment(QtCore.Qt.AlignCenter)
self.tableWidget.setItem(1, 0, item)
item = QtWidgets.QTableWidgetItem()
item.setTextAlignment(QtCore.Qt.AlignCenter)
self.tableWidget.setItem(1, 1, item)
item = QtWidgets.QTableWidgetItem()
item.setTextAlignment(QtCore.Qt.AlignCenter)
self.tableWidget.setItem(1, 2, item)
item = QtWidgets.QTableWidgetItem()
item.setTextAlignment(QtCore.Qt.AlignCenter)
self.tableWidget.setItem(2, 0, item)
item = QtWidgets.QTableWidgetItem()
item.setTextAlignment(QtCore.Qt.AlignCenter)
self.tableWidget.setItem(2, 1, item)
item = QtWidgets.QTableWidgetItem()
item.setTextAlignment(QtCore.Qt.AlignCenter)
self.tableWidget.setItem(2, 2, item)
item = QtWidgets.QTableWidgetItem()
item.setTextAlignment(QtCore.Qt.AlignCenter)
self.tableWidget.setItem(3, 0, item)
item = QtWidgets.QTableWidgetItem()
item.setTextAlignment(QtCore.Qt.AlignCenter)
self.tableWidget.setItem(3, 1, item)
item = QtWidgets.QTableWidgetItem()
item.setTextAlignment(QtCore.Qt.AlignCenter)
self.tableWidget.setItem(3, 2, item)
self.tableWidget.horizontalHeader().setVisible(True)
self.tableWidget.horizontalHeader().setCascadingSectionResizes(False)
self.tableWidget.horizontalHeader().setHighlightSections(True)
self.tableWidget.horizontalHeader().setMinimumSectionSize(40)
self.tableWidget.verticalHeader().setDefaultSectionSize(30)
self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit.setGeometry(QtCore.QRect(92, 10, 481, 20))
self.lineEdit.setObjectName("lineEdit")
classRoom.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(classRoom)
self.menubar.setGeometry(QtCore.QRect(0, 0, 637, 21))
self.menubar.setObjectName("menubar")
self.menu = QtWidgets.QMenu(self.menubar)
self.menu.setObjectName("menu")
classRoom.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(classRoom)
self.statusbar.setObjectName("statusbar")
classRoom.setStatusBar(self.statusbar)
self.toLayout = QtWidgets.QAction(classRoom)
self.toLayout.setObjectName("toLayout")
self.menu.addAction(self.toLayout)
self.menubar.addAction(self.menu.menuAction())
self.retranslateUi(classRoom)
QtCore.QMetaObject.connectSlotsByName(classRoom)
def retranslateUi(self, classRoom):
_translate = QtCore.QCoreApplication.translate
classRoom.setWindowTitle(_translate("classRoom", "MainWindow"))
self.pulpit.setText(_translate("classRoom", " 讲台"))
item = self.tableWidget.verticalHeaderItem(0)
item.setText(_translate("classRoom", "第一排"))
item = self.tableWidget.verticalHeaderItem(1)
item.setText(_translate("classRoom", "第二排"))
item = self.tableWidget.verticalHeaderItem(2)
item.setText(_translate("classRoom", "第三排"))
item = self.tableWidget.verticalHeaderItem(3)
item.setText(_translate("classRoom", "第四排"))
item = self.tableWidget.horizontalHeaderItem(0)
item.setText(_translate("classRoom", "第一列"))
item = self.tableWidget.horizontalHeaderItem(1)
item.setText(_translate("classRoom", "第二列"))
item = self.tableWidget.horizontalHeaderItem(2)
item.setText(_translate("classRoom", "第三列"))
__sortingEnabled = self.tableWidget.isSortingEnabled()
self.tableWidget.setSortingEnabled(False)
item = self.tableWidget.item(0, 0)
item.setText(_translate("classRoom", "零零"))
item = self.tableWidget.item(0, 1)
item.setText(_translate("classRoom", "空一"))
item = self.tableWidget.item(0, 2)
item.setText(_translate("classRoom", "空二"))
item = self.tableWidget.item(1, 0)
item.setText(_translate("classRoom", "姚一"))
item = self.tableWidget.item(1, 1)
item.setText(_translate("classRoom", "不二"))
item = self.tableWidget.item(1, 2)
item.setText(_translate("classRoom", "张三"))
item = self.tableWidget.item(2, 0)
item.setText(_translate("classRoom", "李四"))
item = self.tableWidget.item(2, 1)
item.setText(_translate("classRoom", "王五"))
item = self.tableWidget.item(2, 2)
item.setText(_translate("classRoom", "六六"))
item = self.tableWidget.item(3, 0)
item.setText(_translate("classRoom", "小七"))
item = self.tableWidget.item(3, 1)
item.setText(_translate("classRoom", "铁八"))
item = self.tableWidget.item(3, 2)
item.setText(_translate("classRoom", "永久"))
self.tableWidget.setSortingEnabled(__sortingEnabled)
self.lineEdit.setText(_translate("classRoom", " 黑板报"))
self.menu.setTitle(_translate("classRoom", "初始化"))
self.toLayout.setText(_translate("classRoom", "布局"))
self.toLayout.triggered.connect(self.layoutFn)
def layoutFn(self):
"""
想要有新的窗口, 引用其它已经写好的类
"""
import layout1 # 这个是可以单独运行的窗口
self.one = layout1.Layout1()
self.one.show()
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
widget = QtWidgets.QMainWindow()
window = Ui_classRoom()
window.setupUi(widget)
widget.show()
sys.exit(app.exec())
上面的 layout1.py 文件