我想在MainWindow中创建一个小部件,该小部件从使用QtDesigner创建的文件中获取设计。
test.ui
QMainWindow
的MainWindow实例,该实例将创建一个堆叠的小部件,其中包含许多小部件。为了简单起见,在此示例中,它将仅创建一个小部件作为中央小部件。应用程序实际显示一个空白窗口
代码如下:
from PySide2.QtWidgets import QMainWindow, QApplication, QDesktopWidget, QWidget
from PySide2.QtCore import QCoreApplication, Qt
from PySide2.QtUiTools import QUiLoader
from PySide2.QtCore import QFile
class MyWidget(QWidget):
def __init__(self, parent=None):
super(MyWidget, self).__init__(parent)
ui_file = QFile("test.ui")
ui_file.open(QFile.ReadOnly)
loader = QUiLoader()
window = loader.load(ui_file)
ui_file.close()
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.ui_dim_percentage = 70/100
self.initUI()
def initUI(self):
self.center()
self.home_widget = MyWidget(self)
self.setCentralWidget(self.home_widget)
self.show()
def center(self): # resizes the UI to a percentage of the screen and centers the widget
screen_size = QDesktopWidget().screenGeometry()
self.resize(screen_size.width()*self.ui_dim_percentage, screen_size.height()*self.ui_dim_percentage)
qr = self.frameGeometry()
cp = QDesktopWidget().availableGeometry().center()
qr.moveCenter(cp)
self.move(qr.topLeft())
def main():
app = QApplication(sys.argv)
ex = MainWindow()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
我应该如何纠正代码?
答案 0 :(得分:1)
问题是您在混淆概念,当您使用QUiLoader时,正在创建的窗口在这种情况下是 canvas.saveLayer();
Paint().shader = ImageShader(uiImage,
TileMode.repeated, TileMode.repeated, deviceTransform);
变量,它是局部变量,即.ui不会填充MyWidget
解决方案不是创建MyWidget类,而是使用window变量。
window
答案 1 :(得分:0)
您是否尝试过转换ui文件?
您可以在shell上使用pyuic4命令:
Array
(
[totals] => Array
(
[errors] => 2
[warnings] => 0
[fixable] => 0
)
[files] => Array
(
[/home/ke/Test-Code/CODE.php] => Array
(
[errors] => 2
[warnings] => 0
[messages] => Array
(
[0] => Array
(
[message] => Missing file doc comment
[source] => PEAR.Commenting.FileComment.Missing
[severity] => 5
[type] => ERROR
[line] => 2
[column] => 1
[fixable] =>
)
[1] => Array
(
[message] => Expected "for (...) {\n"; found "for (...)\n{\n"
[source] => PEAR.ControlStructures.ControlSignature.Found
[severity] => 5
[type] => ERROR
[line] => 12
[column] => 1
[fixable] =>
)
)
)
)
)