Я пытаюсь работать с PySide2 и инструментом qt-designer для проекта Python.
Я нашел этот полезный сайт: http://www.blog.pythonlibrary.org/2018/05/30/loading-ui-files-in-qt-for-python/
Это прекрасно работает, но я пытаюсь открытьдругое окно при нажатии на кнопку.Я не знаю, как это сделать, потому что второе окно тоже создается с помощью дизайнера qt и представляет собой файл .ui
.
Представьте, что у вас есть только один файл пользовательского интерфейса.Затем вы можете использовать следующий код, чтобы открыть приложение непосредственно в Python без изменения файла пользовательского интерфейса.
Обработчик De предназначен для дополнительных кнопок и т. Д., И вы можете изменять файл пользовательского интерфейса каждый раз, когда захотите, не теряя код длякнопки.
Но я не эксперт, и я не знаю, что делать, если я хочу загрузить второй файл пользовательского интерфейса
Я хочу открыть новое окно при нажатии накнопка - и загрузка другого пользовательского файла автоматически
from PySide2.QtUiTools import QUiLoader
from PySide2.QtWidgets import QApplication, QPushButton, QLineEdit
from PySide2.QtCore import QFile, QObject
from PySide2.QtGui import QIcon
class Form(QObject):
def __init__(self, ui_file, parent=None):
super(Form, self).__init__(parent)
ui_file = QFile(ui_file)
ui_file.open(QFile.ReadOnly)
#self.icon = QIcon(self.__resource("basic_logo.png"))
#self.ui.setWindowIcon(self.icon)
loader = QUiLoader()
self.window = loader.load(ui_file)
ui_file.close()
self.line = self.window.findChild(QLineEdit, 'lineEdit')
btn = self.window.findChild(QPushButton, 'pushButton')
btn.clicked.connect(self.ok_handler)
self.window.show()
def ok_handler(self):
language = 'None' if not self.line.text() else self.line.text()
print('Favorite language: {}'.format(language))
if __name__ == '__main__':
app = QApplication(sys.argv)
form = Form('main_window.ui')
sys.exit(app.exec_())