paulenot
@paulenot
IT Issue

Как открыть окно по нажатию QPushButton в PyQT5?

В процессе изучения PyQT5 возникло множество вопросов на которые я не могу найти понятного ответа.
Создал главную форму программы в QT Designer, сохранил как main.ui > прогнал через pyuic5 > получил ui.py.

Я создал второй файл, что бы при редактировании формы ui не слетал мой код в ui.py, по этому для запуска главной формы и работы с ней я сделал второй файл main.py:
from PyQt5 import QtCore, QtGui, QtWidgets
import sys
from os import system as go
from os import getcwd as mainpath
from ui import Ui_MainWindow //здесь импотированна форма ui.py полученная через PyUIC5

app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()

main_path =   "'{}'".format(str(mainpath())) # здесь я получаю путь к текущему файлу(запущеному)
path = "cd " + main_path + "/ui/  " # переход к папке /ui

def formstart():
	go( path + "&& python3 add-account.py") # Запуск /ui/add-account.py через os.system

ui.pushButton.clicked.connect( formstart ) # при нажатии кнопки запускается другая форма

sys.exit(app.exec_())

Этот метод меня абсолютно не устраивает, таким методом основная форма полностью перестает отвечать, пока не закрою запущенную форму.
Подскажите пожалуйста, как было бы правильнее открывать дополнительные формы в PyQt5?
  • Вопрос задан
  • 1930 просмотров
Решения вопроса 1
paulenot
@paulenot Автор вопроса
IT Issue
def start_window():
    from ui import Ui_MainWindow //здесь импотированна форма ui.py полученная через PyUIC5
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
  
ui.pushButton.clicked.connect(start_window)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы