• 使用Qt设计师文件的3种方式


    使用Qt设计师设计的.ui界面文件是XML文件,有3种方式在PyQt中使用,本文将通过实例进行讲解。

    使用PyQt中如何结合Qt设计师进行开发中的例子。点击按钮修改标签的内容。

    1. 直接使用ui文件

    PyQt4的ui模块提供了加载.ui文件的功能,ui.uic.loadUi(uifile[, baseinstance=None])方法会返回一个QWdiget子类的实例。

    优点:不用手工转换.ui文件,直接使用。
    缺点:效率低,多一个在运行中的转换过程;.ui文件暴露在外,不利于发布。
    代码如下(widget1.py):

    # -*- coding: utf-8 -*-
    from PyQt4 import QtGui, uic

    class Widget(QtGui.QWidget):
    def __init__(self, parent=None):
    QtGui.QWidget.__init__(self, parent)
    self.ui = uic.loadUi('widget.ui')
    self.ui.show()

    self.ui.pbHello.clicked.connect(self.sayHello)

    def sayHello(self):
    self.ui.lHello.setText("Hello PyQt4")

    if __name__ == '__main__':
    import sys
    app = QtGui.QApplication(sys.argv)
    widget = Widget()
    sys.exit(app.exec_())
    2. 转换后加载使用

    先用pyuic4命令转让成.py文件,再通过setupUi()调用。和方法1类似,多了个转换过程。

    优点:界面加载速度快,方便打包发布。
    缺点:调用界面中的对象需要通过self.ui,代码写的比较麻烦;每次修改.ui文件后都需要转换。
    先转换:

    $ pyuic4 -o ui_widget.py widget.ui
    代码如下(widget2.py):

    # -*- coding: utf-8 -*-
    from PyQt4 import QtGui
    from ui_widget import Ui_Form

    class Widget(QtGui.QWidget):
    def __init__(self, parent=None):
    QtGui.QWidget.__init__(self, parent)
    self.ui = Ui_Form()
    self.ui.setupUi(self)

    self.ui.pbHello.clicked.connect(self.sayHello)

    def sayHello(self):
    self.ui.lHello.setText("Hello PyQt4")

    if __name__ == '__main__':
    import sys
    app = QtGui.QApplication(sys.argv)
    widget = Widget()
    widget.show()
    sys.exit(app.exec_())
    3. 转换后通过多重继承使用

    和方法2类似,但是写类的时候用多重继承的方式。

    优点:代码写的跟简单;可以通过self.objectName方式引用界面对象;可以使用Decorator方式绑定信号和槽。
    缺点:每次修改.ui文件后都需要转换。
    代码如下(widget3.py):

    # -*- coding: utf-8 -*-
    from PyQt4 import QtGui, QtCore
    from ui_widget import Ui_Form

    class Widget(QtGui.QWidget, Ui_Form):
    def __init__(self, parent=None):
    QtGui.QWidget.__init__(self, parent)
    self.setupUi(self)

    @QtCore.pyqtSignature("")
    def on_pbHello_clicked(self):
    self.lHello.setText('Hello PyQt4')

    if __name__ == '__main__':
    import sys
    app = QtGui.QApplication(sys.argv)
    widget = Widget()
    widget.show()
    sys.exit(app.exec_())

  • 相关阅读:
    nodejs初期,搭建一个登陆注册功能,(原生的)
    关于vue如何创建一个自定义组件(这是项目中经常得用的)
    关于vue 使用watch方法,详解。
    怎样用Nodejs搭建一个服务器
    关于Promise的理解及运用
    Ado.NET SQLHelper(2)
    Ado.NET SQLHelper
    MS SQLSERVER 自增ID列竟然会重复
    SQL中Left Join 与Right Join 与 Inner Join 与 Full Join的区别
    thread.start和threadstart.invoke的区别
  • 原文地址:https://www.cnblogs.com/jsben/p/4909909.html
Copyright © 2020-2023  润新知