逻辑描述:
点击窗体login中的查询按钮,会出现sele窗体
问题描述:
点击查询之后,sele窗体闪退,刚出现就退出
问题分析:
直接在sele窗体中写main函数单独调用,是可以显示的,说明还是在调用过程中出现问题
解决办法:
在login中实例sele对象时,需要加self
出现问题前的代码如下:注意def select_act中的调用
login.py
class Ui_mainWindow(object):
def setupUi(self,mainWindow):
mainWindow.setObjectName("mainWindow")
mainWindow.resize(800,500)
self.centralwidget = QtWidgets.QWidget(mainWindow)
self.centralwidget.setObjectName("centralwidget")
mainWindow.setCentralWidget(self.centralwidget)
# 查询按钮
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(200, 300, 100, 50))
self.pushButton.setAutoDefault(True)
self.pushButton.setObjectName("pushButton")
# 通过styleSheet设置查询按钮得样式,包含字体颜色,大小,位置,背景颜色,边框样式等
self.pushButton.setStyleSheet(
"QPushButton{" #正常状态样式
"background-color: rgb(100,94,16,0);" # 背景色(也可以设置图片)
"color: black;" # 字体颜色
"font: bold 30px;" # 字体: 加粗 大小
"border-radius: 5px;" # 边框圆角半径像素
"border: 2px solid rgb(50, 50, 50);" # 边框样式:border-width border-style border-color
"border-style:outset;" # 定义一个3D突出边框,inset与之相反
"text-align: center;" # 文本:左对齐
"}")
self.pushButton.clicked.connect(self.select_act)
# 增加按钮
self.add_pushButton = QtWidgets.QPushButton(self.centralwidget)
self.add_pushButton.setGeometry(QtCore.QRect(500, 300, 100, 50))
self.add_pushButton.setAutoDefault(True)
self.add_pushButton.setObjectName("pushButton")
# 通过styleSheet设置 增加按钮得样式,包含字体颜色,大小,位置,背景颜色,边框样式等
self.add_pushButton.setStyleSheet(
"QPushButton{" #正常状态样式
"background-color: rgb(100,94,16,0);" # 背景色(也可以设置图片)
"color: black;" # 字体颜色
"font: bold 30px;" # 字体: 加粗 大小
"border-radius: 5px;" # 边框圆角半径像素
"border: 2px solid rgb(50, 50, 50);" # 边框样式:border-width border-style border-color
"border-style:outset;" # 定义一个3D突出边框,inset与之相反
"text-align: center;" # 文本:左对齐
"}")
self.retranslateUi(mainWindow)
QtCore.QMetaObject.connectSlotsByName(mainWindow)
def retranslateUi(self, mainWindow):
_translate = QtCore.QCoreApplication.translate
mainWindow.setWindowTitle(_translate("mainWindow", "管理系统"))
self.pushButton.setText(_translate("MainWindow", "查询"))
self.add_pushButton.setText(_translate("MainWindow", "增加"))
def select_act(self):
import select_page
demo=select_page.Sele()# 创建窗口类对象
demo.show() # 显示窗口
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_mainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
第二个窗体代码:select_page.py
from ast import Num
from itertools import count
from PyQt5 import QtCore
from PyQt5.QtWidgets import *
class Sele(QWidget):
def __init__(self,parent=None):
# import pdb
# pdb.set_trace()
super(Sele,self).__init__(parent)
self.initUI() # 初始化窗口
def initUI(self):
print(f'into initUi')
grid=QGridLayout() # 创建网格布局
# 创建并设置标签文本
label1=QLabel()
label1.setText("用户名:")
# 第一行第一列添加标签控件,并设置左对齐
grid.addWidget(label1,0,0,QtCore.Qt.AlignLeft)
print(grid)
self.setLayout(grid) # 设置网格布局
# if __name__=='__main__':
# import sys
# app=QApplication(sys.argv) # 创建窗口程序
# demo=Sele() # 创建窗口类对象
# demo.show() # 显示窗口
# # import pdb
# # pdb.set_trace()
# sys.exit(app.exec_())
解决后的代码:
其它不需要修改,只需将login中的select_act方法,在实例sele类时加self