子窗口闪现:
当对某一窗口的按钮绑定事件后,点击该按钮,我的本意是想要通过点击按钮来创建一个子窗口并将其显示(但是出现了闪现)——我将创建子窗口和子窗口显示都放在一个触发事件当中。(导致闪现问题的代码如下)
错误代码:
# 弹出划分区域窗口(绑定方法)
def showPic(self):
//这是子窗口中用来创建窗口对象的
labelWin = MyWindow2()
labelWin.show()
但是让我疑惑的是,无论怎么点击按钮,虽然会触发绑定事件但是子窗口总是闪现。
解决方法:
最终在父窗口的setUpUi()函数当中,连同按钮等组件的初始化一起,我将子窗口的初始化也放在该方法中。然后在原先定义的触发函数当中只用来显示子窗口,这样闪现问题便解决了。
子窗口创建代码如下:
这里只看最后一行即可,其余行都是窗口组件的初始化
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1150, 890)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.line_3 = QtWidgets.QFrame(self.centralwidget)
self.line_3.setGeometry(QtCore.QRect(0, 63, 1140, 40))
self.line_3.setFrameShape(QtWidgets.QFrame.HLine)
self.line_3.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_3.setObjectName("line_3")
self.line = QtWidgets.QFrame(self.centralwidget)
self.line.setGeometry(QtCore.QRect(0, 436, 898, 21))
self.line.setFrameShape(QtWidgets.QFrame.HLine)
self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line.setObjectName("line")
# 文本显示
self.textBrowser = QtWidgets.QTextBrowser(MainWindow)
self.textBrowser.setGeometry(QtCore.QRect(902, 130, 240, 510))
self.textBrowser.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded)
self.textBrowser.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
self.textBrowser.setObjectName("textBrowser")
# 将创建的文本框对象传递给paintlabel中的对象
paintLabel.textBrowser = self.textBrowser
# 区域识别按钮
self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_3.setGeometry(QtCore.QRect(910, 830, 100, 31))
self.pushButton_3.setObjectName("pushButton_3")
# 区域显示
self.comboBox = QtWidgets.QComboBox(self.centralwidget)
self.comboBox.setGeometry(QtCore.QRect(1040, 90, 100, 31))
self.comboBox.setObjectName("comboBox")
self.comboBox.addItems(['区域1','区域2','区域3','区域4','区域5'])
paintLabel.comboBox = self.comboBox
# 标签
self.option_label = QtWidgets.QLabel(self.centralwidget)
self.option_label.setGeometry(QtCore.QRect(965, 570, 150, 190))
# 设定识别区域(调用分割区域界面)
self.pushButton_4 = QtWidgets.QPushButton(self.centralwidget)
# (x,y,width,height)
self.pushButton_4.setGeometry(QtCore.QRect(100, 820, 200, 50))
self.pushButton_4.setObjectName("pushButton_4")
# 识别区域详情
self.pushButton_5 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_5.setGeometry(QtCore.QRect(600, 820, 200, 50))
self.pushButton_5.setObjectName("pushButton_5")
# 在这之前都是创建
self.labelWin = MyWindow2()
触发事件:
# 弹出划分区域窗口
def showPic(self):
self.labelWin.show()
点击如下按钮:
弹出对应子窗口:(由于项目原因,只显示窗口上部分截图)