稍微延迟以在Python程序中显示PyQt窗口内容

问题描述 投票:0回答:1

以下Python程序在运行时(无论是在PyCharm中还是通过在Windows资源管理器中双击.py来运行)在显示窗口的[[contents之前都有明显的延迟(有时为5s)。 (主窗口本身在运行时显示)

import os from PyQt5 import QtCore, QtGui, QtWidgets, uic class MyWindow(QtWidgets.QMainWindow): i = 0#global variable def __init__(self): super(MyWindow, self).__init__() uic.loadUi('hello_world.ui', self) self.pushButton.clicked.connect(self.onButtonClicked) def onButtonClicked(self): self.i+=1 print('hello world! ' + str(self.i)) if __name__ == '__main__': import sys app = QtWidgets.QApplication(sys.argv) window = MyWindow() window.show() sys.exit(app.exec_())
UI文件使用QtDesigner作为.ui文件保存在与.py脚本相同的目录中

UPDATE

# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'hello_world.ui' # # Created by: PyQt5 UI code generator 5.13.2 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(800, 500) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.pushButton = QtWidgets.QPushButton(self.centralwidget) self.pushButton.setGeometry(QtCore.QRect(140, 80, 186, 41)) self.pushButton.setStyleSheet("QPushButton {\n" " background-color: red;\n" " border-style: outset;\n" " border-width: 2px;\n" " border-radius: 10px;\n" " border-color: beige;\n" " font: bold 14px;\n" " min-width: 10em;\n" " padding: 6px;\n" "}\n" "QPushButton:pressed {\n" " background-color: rgb(224, 0, 0);\n" " border-style: inset;\n" "}") self.pushButton.setObjectName("pushButton") MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21)) self.menubar.setObjectName("menubar") MainWindow.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) self.pushButton.setText(_translate("MainWindow", "PushButton")) if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_())
以上更新是使用pyuic直接生成的代码。但它仍然显示出明显的延迟。 (首先,主窗口显示标题栏,其内容应为全白色。大约一秒钟后,内容将被加载)
python pyqt delay
1个回答
0
投票
我对此可能是错的。但我会看看您使用.ui文件的事实。 loadui()可能需要一些时间才能将文件加载为.py格式。

我将使用pyuic命令将文件首先转换为.py格式,然后导入并尝试运行它。

https://wiki.python.org/moin/JonathanGardnerPyQtTutorial

© www.soinside.com 2019 - 2024. All rights reserved.