我正是用PySide做到的。:)
您可以使用此https://gist.github.com/cpbotha/1b42a20c8f3eb9bb7cb8(塞巴斯蒂安·威斯纳的原著位于https://github.com/lunaryorn/snippets/blob/master/qt4/designer/pyside_dynamic.py,但已经消失了) -它将覆盖PySide.QtUiTools.QUiLoader并提供一个新loadUi()
方法,以便您可以执行此操作:
class MyMainWindow(QMainWindow):
def __init__(self, parent=None):
QMainWindow.__init__(self, parent)
loadUi('mainwindow.ui', self)
实例化MyMainWindow时,它将具有您使用Qt Designer设计的UI。
如果还需要使用自定义窗口小部件(在Qt Designer中为“ Promote To”),请参见以下答案:
loader.registerCustomWidget(TimelinePane)
在调用loader.load()之前。在您的情况下,您需要添加相关的导入语句:
from timeline_pane import TimelinePane
但是,我只是在Ubuntu 12.04 x86_64上使用PySide 1.1.2进行了测试,这导致了段错误。YMMV,所以请测试。
我最终实现了这种解决方法:http : //www.mail-archive.com/pyside@qt-project.org/msg00306.html
简而言之,请覆盖QUiLoader的creteWidget()方法,如果该小部件的class_name不在self.availableWidgets()中,请根据已添加的customWidgets实例变量自行实例化它。