首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyQt5:通过uic.loadUi打开新窗口

PyQt5:通过uic.loadUi打开新窗口
EN

Stack Overflow用户
提问于 2021-09-19 11:56:10
回答 2查看 76关注 0票数 0

我有类似于下面的东西。我想从顶部工具栏打开一个新窗口,这是archive,当前打开了一个新窗口,但它很小并且是空白的,它不是由qtdesigner生成的保存为archive.ui的窗口。窗口的对象名称是ArchiveWindow

代码语言:javascript
复制
class GUI(QMainWindow):
    def __init__(self, parent=None):
        super().__init__(parent)
        uic.loadUi('gui.ui', self)
        self.actionSingle_Archive.triggered.connect(self.archive)
        ...

        def archive(self):
            self.window = QtWidgets.QMainWindow()
            uic.loadUi('archive.ui')
            self.window.show()

if __name__ == "__main__":
    app = QApplication(sys.argv)
    win = GUI()
    win.show()
    sys.exit(app.exec())
EN

回答 2

Stack Overflow用户

发布于 2021-09-19 12:00:50

loadUi文档中所述:

资源后缀,loadUi(uifile,=‘’,

_ baseinstance=None =‘_rc’)

加载Qt设计器.ui文件并返回用户界面的实例。

  • uifile ( file.
  • baseinstance )-包含.ui str的文件名或类似文件的对象- Qt基类的可选实例。如果指定,则在其中创建用户界面。否则,将自动创建基类的新实例。

这就是您在__init__中已经在做的事情:调用uic.loadUi('gui.ui', self)意味着UI安装在self上(它代表GUI的当前实例)。

只需将要在其上设置UI的实例添加到参数。

代码语言:javascript
复制
    def archive(self):
        self.window = QtWidgets.QMainWindow()
        uic.loadUi('archive.ui', self.window)
        self.window.show()
票数 0
EN

Stack Overflow用户

发布于 2021-10-30 14:04:30

您不需要将父对象添加到uic.load中,下面是一个示例:

代码语言:javascript
复制
uic.load('archive.ui', parent)

要加载ui文件作为主窗口,只需将parent替换为self:

代码语言:javascript
复制
uic.load('archive.ui', self)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69243030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档