基于Qt Designer和pyuic开发UI界面的方法

1、  打开Qt Designer选择一个模板


2、按照以下步骤建立窗体界面(下面步骤从《Python Qt GUI快速编程》的7.1节摘录)

  

  

3、  Qt Designer生成的xxx.ui文件生成Python代码

   cmd中打开xxx.ui所在路径例如:cd C:/work

         然后输入pyuic5 -o xxx.py xxx.ui 回车.其中,

        -o 后的参数为输出文件的名称 

        -o 后第二个参数即为生成的ui文件的名称


        如果建立好了PyCharm的开发环境也可以通过右键选择xxx.ui文件

       然后选择扩展工具,PyUIC直接生成xxx.py

  

  

4、  使用上一步生成的xxx.py

  这里我自动生成的代码如下:

  
  

  在使用Qt Designer创建用户界面时,利用多重继承的方法会创建一个子类,

这样就可以把打算赋予用户界面行为的代码放到这里。这样就把界面设计和个

人的具体行为逻辑分离,是一种很好的解耦方法。因此新建一个my_test.py文

件,继承上面负责界面的test.py文件。my_test.py文件的内容如下:

 

 

  我们先看看导入的模块:

 

  第一个导入的是要用在代码中的常规表达式模块

  import test导入了负责界面的test模块

  后面是常规的Qt模块

 

  现在看一下这个子类:

  

  多重继承的第一个类是QMainWindow类,因为界面用了MainWindow模板,

  如果界面用的QWidget,那第一个就要继承QWidget。然后第二个要继承

  的是test模块中的Ui_MainWindow。

 

  关注一下初始化函数的super调用,这个是调用父类的初始化方法

  

  然后就是调用setupUi这个函数(《Python Qt GUI快速编程》中的说明摘录如下)

  

  

  初始化函数最后调用我们自己定义的方法,updateUi()用来初始化一些默认状态。

  

  即使用上一步生成的xxx.py一般要经过下面的步骤:

  1、  另外新建一个py文件;

  2、  导入xxx.py和用到的模块;

  3、  新建一个子类,用多重继承的方式继承xxx.py中的类;

  4、  这个子类的初始化函数中调用super(xxx,xxx)__init__(parent)调用父类的初始化函数

  5、  这个子类的初始化函数中调用setupUi()建立Ui和启动信号槽的自动连接机制

  6、  这个子类的初始化函数中调用updateUi()实现自己的初始化代码

  7、  编写updateUi()函数

  8、  编写处理信号的槽函数

  9、  编写其他函数

    

  我们下面再看看setupUi()这个函数支持的信号槽机制在代码上是怎么实现的。

由于初始化函数中调用了setupUi(),定义成“on_xxx控件_xxx信号”的函数会

自动连接到对应的信号上,如下面的on_findLineEdit_textEdited(self,text)函

数,自动连接到findLineEdit控件的textEdited信号上。

  

我们可以看到@pyqtSlot()修饰符,使用修饰符的目的是为了区分各个具有相同名字

但是不同参数的信号。如下图@pyqtSlot后面是可以跟不同参数的。

  


5、  Mian文件代码编写

  

  Importsys 是因为用到了sys.argv参数

  app= QApplication(sys.argv)

  

  ui= myui(text)

  生成ui对象

  ui.show()

 

  最后调用

  app.exec_()

 

  则Mian文件代码主要包含:

  1、  app = QApplication(sys.argv)

  2、  生产UI对象

  3、  调用show()方法

  4、  调用app.exec_()进入消息循环



6、例子工程见下面github链接

  代码运行环境PyQt5 UI code generator 5.9.2

  Python 3.6

     https://github.com/philipyou/PyQt_QtDesigner.git


  • 5
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值