如何使用qt-designer和pyside2生成的.ui文件显示更多Windows?

时间:2019-07-10 14:54:29

标签: python qt-designer pyside2

我尝试为Python项目使用PySide2和qt-designer工具。

我找到了这个有用的网站: http://www.blog.pythonlibrary.org/2018/05/30/loading-ui-files-in-qt-for-python/

这很好用,但是我尝试在单击按钮时打开另一个窗口。 我不知道该怎么办,因为第二个窗口也是由qt设计器生成的,并且是一个.ui文件。

想象一下,您只有一个ui文件。然后,您可以使用以下代码直接在Python中打开应用程序,而无需更改ui文件。

De handler用于更多按钮等。您可以在每次需要时更改ui文件,而不会丢失按钮的代码。

但是我不是专家,如果要加载第二个ui文件,我也不知道该怎么办

我想在单击按钮时打开一个新窗口-并自动加载其他ui文件

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_())

0 个答案:

没有答案