学习一 PyQt5 GUI程序框架

一、使用可视化设计窗体的GUI程序
1、QT Creator的基本操作
2、将ui文件编写成py文件
在cmd窗口内输入指令

C:\Users\13788>cd C:\Users\13788\Desktop

C:\Users\13788\Desktop>pyuic5 -o ui_dialog.py dialog.ui

我将ui文件放在了桌面上,电脑要将pyuic5.exe添加到系统的PATH环境变量之中才能执行转换。
3、通过继承关系来实行界面与逻辑的分离
这里边有三种情况:

  • 不用继承:
import ui_dialog
app = QApplication(sys.argv)
#QApplication代表一个应用程序,在窗口的实例前完成
deme = QWidget() #创建一个实例
ui = Ui_dialog() #创建一个ui类的实例
ui.setup_UI(demo) #用实例中的函数初始化demo
demo.show() #界面输出
sys.exit(app.exec_())

在ui文件中只是设置了各种组件的内容,本身并不能作为一个承载内容输出,所以在输出中不使用ui.show(),需要通过一个父容器即其中的demo才行。
在这种情况下,不能通过实例demo来修改界面中的标签,需要通过ui来更改。

  • 多继承法
class QmyWidget(QWidget, Ui_dialog): 
    #继承QWidget和Ui_dialog
    def __init__(self, parent =None):
        super().__init__(parent)
        #多继承时使用super()得到第一个基类,此时self就是一个QWidget的对象
        self.lab ="多重继承的QmyWidget"
        self.setupUI(self)
        #调用setupUI使self自身被初始化
        self.LabHello.setText(self.lab)
        #ui中的界面组件就成为公共属性,可以通过self直接改变UI中的值

缺点:过于开放,不符合面对对象严格封装的设计思想;ui中的属性和类中新定义的属性混合在一起

  • 单继承
class QmyWidget(QWidget): 
    def __init__(self, parent =None):
        super().__init__(parent)
        self.lab ="单继承的QmyWidget"
        self.__ui =Ui_dialog()
        #在类中定义一个ui的对象作为成员
        self.__ui.setupUI(self)
        self.__ui.LabHello.setText(self.lab)
      #区别与多继承时直接用self调用,多了一个_ui作为分别的标志
      #根据Python命名规则,两个下划线表示是私有的

窃以为就是写上更加的麻烦了。
4、信号与槽的使用

  • 自动关联的槽函数
QtCore.QMetaObject.connectSlotsByName(Dialog)

qt creator 通过这句话即使在mydialog类的引用中不继承ui也能在不写代码的情况下使槽函数和信号结合。但是只有在UI设计界面自动生成的槽函数框架才有用。

  • overload型信号
    在这里插入图片描述
    这中名称相同参数却不同的称为overload型信号
    如果要自动关联必须用@pyqtSlot(类型)指定类型
  • 手动关联
    就是得自己写
    5、便利的将ui文件转换成py文件
    可以用一个bat文件,编辑中加入以下内容
echo off
pyuic5 -o ui_Dialog.py Dialog.ui

这之后点击一下就可以用了

学习资料来自《Python Qt CUI与数据可视化编程》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值