PySide2 QUiLoader возвращает пустое окно - PullRequest
0 голосов
/ 02 мая 2018

PySide2 (5.6.0 ~ a1) Загрузчик файлов пользовательского интерфейса Qt возвращает пустое окно, в котором загрузчик PyQt5 работает нормально. Не могли бы вы объяснить мне, где я не прав.

Не работающая версия PySide2:

import sys
from PySide2.QtWidgets import QDialog, QApplication
from PySide2 import QtUiTools

class AppWindow(QDialog):
    def __init__(self):
        super().__init__()
        self.ui = QtUiTools.QUiLoader().load("dialog1.ui")
        self.show()

app = QApplication(sys.argv)
w = AppWindow()
sys.exit(app.exec_())

Рабочая версия PyQt5:

import sys
from PyQt5.QtWidgets import QDialog, QApplication
from PyQt5 import uic

class AppWindow(QDialog):
    def __init__(self):
        super().__init__()
        self.ui = uic.loadUi("dialog1.ui", self)
        self.show()

app = QApplication(sys.argv)
w = AppWindow()
sys.exit(app.exec_())

Использование этой функции также не работает:

def loadUiWidget(uifilename, parent=None):
    loader = QtUiTools.QUiLoader()
    uifile = QtCore.QFile(uifilename)
    uifile.open(QtCore.QFile.ReadOnly)
    ui = loader.load(uifile, parent)
    uifile.close()
    return ui

1 Ответ

0 голосов
/ 02 мая 2018

QUiLoader().load() возвращает виджет как объект, поэтому, если вы присвоите его переменной, он ничего не будет делать, вы должны использовать show():

import sys
from PySide2.QtWidgets import QApplication
from PySide2 import QtUiTools

app = QApplication(sys.argv)
w = QtUiTools.QUiLoader().load("dialog1.ui")
w.show()
sys.exit(app.exec_())
...