In this simple example, I add a test class with unittest to sleep the application and QtTest to wait for the window to open after pressing the button.
To run the unittest you need to uncomment this row of source code:
#unittest.main()
Let's see the source code:
import sys
from PyQt6.QtWidgets import QApplication, QDialog, QMainWindow, QPushButton
from PyQt6 import QtCore, QtGui, QtWidgets
from PyQt6 import QtTest
# Unitest area
import unittest
from time import sleep
def sleep_sec(sec):
sleep(10*sec)
#
#define class for unittest
class Test(unittest.TestCase):
def test_square(self):
sleep_sec(5)
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(640, 480)
self.verticalLayout = QtWidgets.QVBoxLayout(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
class Window(QMainWindow):
"""Main window."""
def __init__(self, parent=None):
"""Initializer."""
super().__init__(parent)
# Use a QPushButton for the central widget
self.centralWidget = QPushButton("Test_Button")
# Connect the .clicked() signal with the .onTest_BtnClicked() slot
self.centralWidget.clicked.connect(self.onTest_BtnClicked)
self.setCentralWidget(self.centralWidget)
# Create a slot for launching the Test_ dialog
def onTest_BtnClicked(self):
"""Launch the Test_ dialog."""
dlg = Test_Dlg(self)
# This will test with QtTest just for click
QtTest.QTest.qWait(2500)
dlg.exec()
class Test_Dlg(QDialog):
"""Test dialog."""
def __init__(self, parent=None):
super().__init__(parent)
# Create an instance of the GUI
self.ui = Ui_Dialog()
# Run the .setupUi() method to show the GUI
self.ui.setupUi(self)
if __name__ == "__main__":
# this test all run of application and show :
# Ran 1 test in 50.001s
# uncoment this
#unittest.main()
# Create the application
app = QApplication(sys.argv)
# Create and show the application's main window
win = Window()
win.show()
# Run the application's main loop
sys.exit(app.exec())