您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

将QTDesigner与PyQT和Python 2.6结合使用

将QTDesigner与PyQT和Python 2.6结合使用

我开始写我的第一个PyQT应用程序(PyQT仅用于处理GUI),看来,好的工具链是:QtDesigner生成.ui并处理资源和一些IDE,可以将QtDesigner设置为编辑它们。我使用Eclipse,因为它是高度可定制的。您可以通过在应用程序启动,安装或任何其他时间执行以下操作来按需编译.qrc和.ui:

os.system("pyrcc4.exe -o ui/images_rc.py ui/images/images.qrc")
uic.compileUiDir(appDir + '/ui', True)

然后以这种方式使用生成的类:

class MyMainWindow(QtGui.QMainWindow):

    def __init__(self, owner):
        QtGui.QMainWindow.__init__(self)
        # 'Ui_MyMainWindow' is the class, that was generated by uic, 
        # naming convention is: 'Ui_' plus the name of root widget in designer
        self.ui = Ui_MyMainWindow()
        self.ui.setupUi(self)

或者您可以在容器初始化时直接加载.ui:

    QtGui.QMainWindow.__init__(self)
    self.ui = None
    uic.loadUi('MyMainWindowUI.ui', self.ui)
    #Now you have the instance of Ui_MyMainWindow in self.ui too, as above

请注意,我在.ui文件名称添加了UI后缀,这样做是为了避免名称交集,因为uic生成的.py文件名称不是以’Ui_’开头的类名,而只是root小部件的。

还有一个注意事项:uic在生成文件末尾放置“ import%.qrc name%_rc”(认为import images_rc)字符串,因此在使用pyrcc4时必须注意这一点。

整个方法足够灵活,需要您进行所有虚拟ui编码工作;但是您仍然可以在MyMainWindow.ui属性(Ui_MyMainWindow实例所在的位置)中进行一些微调;并且避免了不必要的继承。就我个人而言,我在MyMainWindow中制作_connectSlots和_initIntefrace方法来做一些设计器无法完成的工作。

我仍然要注意,自己编写接口代码是一种好方法,因为uic生成代码很丑陋。我更喜欢通过loadUi()将.ui加载到位,因为:)而且,如果您有很多自定义PyQT控件,那么将它们带入QtDesigner实在是太麻烦了。

python 2022/1/1 18:43:22 有407人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶