将qt designer生成的UI文件转换成代码后,运行时出现了一闪而过的白色画面
显示展示一个白色的页面,停顿一会儿后才出现我想要的页面, 请问是什么问题导致,求大佬帮助,代码如下# -*- coding: utf-8 -*-
import sys
# Form implementation generated from reading ui file '.\projectpage.ui'
#
# Created by: PyQt5 UI code generator 5.15.9
#
# 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.
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_projectpage(object):
def setupUi(self, projectpage):
projectpage.setObjectName("projectpage")
projectpage.resize(1018, 781)
self.horizontalLayout = QtWidgets.QHBoxLayout(projectpage)
self.horizontalLayout.setObjectName("horizontalLayout")
self.widget = QtWidgets.QWidget(projectpage)
self.widget.setStyleSheet("background-color: rgb(39, 39, 39);")
self.widget.setObjectName("widget")
self.widget.resize(1018, 781)
self.pushButton = QtWidgets.QPushButton(self.widget)
self.pushButton.setGeometry(QtCore.QRect(30, 40, 201, 111))
self.pushButton.setMinimumSize(QtCore.QSize(201, 111))
self.pushButton.setStyleSheet("background-color: rgb(50, 50, 50);")
self.pushButton.setObjectName("pushButton")
self.horizontalLayout.addWidget(self.widget)
self.retranslateUi(projectpage)
QtCore.QMetaObject.connectSlotsByName(projectpage)
def retranslateUi(self, projectpage):
_translate = QtCore.QCoreApplication.translate
projectpage.setWindowTitle(_translate("projectpage", "Form"))
self.pushButton.setText(_translate("projectpage", "PushButton"))
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_projectpage()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_()) 你好呀!很高兴能帮助你解决这个问题。你遇到的问题大概是因为在设置背景颜色时,使用的窗口层级不正确。更具体地说,你设置背景颜色的`widget`可能并未完全覆盖整个主窗口,导致一开始的白色页面出现在主窗口显示之前。
我们可以尝试以下方法来解决这个问题:
1. 直接对子窗口进行背景颜色设置。
2. 确保`widget`覆盖了整个主窗口。
以下是修改后的代码示例:
# -*- coding: utf-8 -*-
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_projectpage(object):
def setupUi(self, projectpage):
projectpage.setObjectName("projectpage")
projectpage.resize(1018, 781)
projectpage.setStyleSheet("background-color: rgb(39, 39, 39);")# 设置主窗口背景颜色
self.horizontalLayout = QtWidgets.QHBoxLayout(projectpage)
self.horizontalLayout.setObjectName("horizontalLayout")
self.pushButton = QtWidgets.QPushButton(projectpage)
self.pushButton.setGeometry(QtCore.QRect(30, 40, 201, 111))
self.pushButton.setMinimumSize(QtCore.QSize(201, 111))
self.pushButton.setStyleSheet("background-color: rgb(50, 50, 50);")
self.pushButton.setObjectName("pushButton")
self.horizontalLayout.addWidget(self.pushButton)# 将按钮直接加入到主窗口的布局中
self.retranslateUi(projectpage)
QtCore.QMetaObject.connectSlotsByName(projectpage)
def retranslateUi(self, projectpage):
_translate = QtCore.QCoreApplication.translate
projectpage.setWindowTitle(_translate("projectpage", "Form"))
self.pushButton.setText(_translate("projectpage", "PushButton"))
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_projectpage()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
在这个版本中,我直接将背景颜色设置为主窗口`projectpage`,并将按钮加入到主窗口的布局中,不再使用额外的`widget`来包裹按钮。这应该解决你所描述的“一闪而过的白色画面”的问题。
祝你编程愉快,如果有更多问题,尽管问我哦!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2024-6-17 22:19
你好呀!很高兴能帮助你解决这个问题。你遇到的问题大概是因为在设置背景颜色时,使用的窗口层级不正确。更 ...
还是不行,从一开始先设置背景在调用还是一样的会出现白色屏幕的闪烁 熊天天 发表于 2024-06-18 15:02
还是不行,从一开始先设置背景在调用还是一样的会出现 ...
明白了,我们来进一步优化看看。通常情况下,闪烁的问题可能和布局刷新以及窗口初始显示有关。我们可以尝试使用一些优化技巧来避免这些问题,如在构造窗口对象之前先隐藏它,设置好背景颜色后再显示窗口。
下面是修改后的代码:
# -*- coding: utf-8 -*-
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_projectpage(object):
def setupUi(self, projectpage):
projectpage.setObjectName("projectpage")
projectpage.resize(1018, 781)
# 隐藏窗口,防止一开始的白屏闪烁
projectpage.hide()
# 设置主窗口背景颜色
projectpage.setStyleSheet("background-color: rgb(39, 39, 39);")
self.horizontalLayout = QtWidgets.QHBoxLayout(projectpage)
self.horizontalLayout.setObjectName("horizontalLayout")
self.pushButton = QtWidgets.QPushButton(projectpage)
self.pushButton.setGeometry(QtCore.QRect(30, 40, 201, 111))
self.pushButton.setMinimumSize(QtCore.QSize(201, 111))
self.pushButton.setStyleSheet("background-color: rgb(50, 50, 50);")
self.pushButton.setObjectName("pushButton")
self.horizontalLayout.addWidget(self.pushButton)# 将按钮直接加入到主窗口的布局中
self.retranslateUi(projectpage)
QtCore.QMetaObject.connectSlotsByName(projectpage)
# 设置完成后再显示窗口
projectpage.show()
def retranslateUi(self, projectpage):
_translate = QtCore.QCoreApplication.translate
projectpage.setWindowTitle(_translate("projectpage", "Form"))
self.pushButton.setText(_translate("projectpage", "PushButton"))
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_projectpage()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
这次我们在设置窗口属性之前先将窗口隐藏,等所有设置操作完成后再显示窗口。这种方式应该能够有效避免白色画面的闪烁问题。
另外,如果这个方法还是不行,请确保你使用的是最新的PyQt版本,有时库的问题也会引起类似的问题。如果问题依然存在,我们可能需要更精细地分析具体的运行环境和代码结构,逐步排查原因。
希望这次能帮到你,有任何问题请随时告诉我!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]