Python 如何打开小部件,让它做点什么,然后自己关闭?
我正在努力做到以下几点: 我有一个QMainWindow对象。我想从中打开窗户,让它做点什么,然后自己关上 比如“开始某事>打开加载窗口…”。。消息>做事情>让窗口自行关闭,而不需要用户交互 我曾尝试创建一个QWidget类,并将dothething方法放在其中,但当我在QWidget上调用.show方法时,整个应用程序挂起,无法继续,但可能我不理解其背后的逻辑Python 如何打开小部件,让它做点什么,然后自己关闭?,python,pyqt,pyqt5,Python,Pyqt,Pyqt5,我正在努力做到以下几点: 我有一个QMainWindow对象。我想从中打开窗户,让它做点什么,然后自己关上 比如“开始某事>打开加载窗口…”。。消息>做事情>让窗口自行关闭,而不需要用户交互 我曾尝试创建一个QWidget类,并将dothething方法放在其中,但当我在QWidget上调用.show方法时,整个应用程序挂起,无法继续,但可能我不理解其背后的逻辑 我使用的是Python 3.7.7、PyQT5,我的操作系统是Windows 10 x64,如果这很重要的话我希望我正确理解了您的问题
我使用的是Python 3.7.7、PyQT5,我的操作系统是Windows 10 x64,如果这很重要的话我希望我正确理解了您的问题。我会用以下方法解决这个问题:
from PyQt5 import QtTest
from PyQt5.QtCore import QTimer, Qt
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QLabel, QVBoxLayout, QWidget
import sys
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.loading_window = None
self.button = QPushButton("Push for Window")
self.button.clicked.connect(self.show_new_window)
self.setCentralWidget(self.button)
self.timer = QTimer()
def show_new_window(self):
if self.loading_window is None:
self.loading_window = LoadingWindow()
self.loading_window.show()
self.do_your_job()
self.close_loading_window()
def do_your_job(self):
# Do whatever you want here
QtTest.QTest.qWait(1500)
def close_loading_window(self):
self.loading_window = None
class LoadingWindow(QWidget):
def __init__(self):
super().__init__()
layout = QVBoxLayout()
self.label = QLabel('Loading')
layout.addWidget(self.label)
self.setLayout(layout)
self.setWindowFlag(Qt.FramelessWindowHint)
app = QApplication(sys.argv)
w = MainWindow()
w.show()
app.exec_()
请提供一个是的,这正是我想要做的,非常感谢。因此,流程是-window.show>do_stuff in caller class>dereference window谢谢