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

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

基于Qt Designer和pyuic开发UI界面的方法_第1张图片


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

  基于Qt Designer和pyuic开发UI界面的方法_第2张图片

  

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

  基于Qt Designer和pyuic开发UI界面的方法_第3张图片

  

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

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

   基于Qt Designer和pyuic开发UI界面的方法_第4张图片
  

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

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

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

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

  基于Qt Designer和pyuic开发UI界面的方法_第5张图片

 

  我们先看看导入的模块:

 

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

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

  后面是常规的Qt模块

 

  现在看一下这个子类:

  

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

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

  的是test模块中的Ui_MainWindow。

 

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

  

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

  

  基于Qt Designer和pyuic开发UI界面的方法_第6张图片

  初始化函数最后调用我们自己定义的方法,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后面是可以跟不同参数的。

  基于Qt Designer和pyuic开发UI界面的方法_第7张图片


5、  Mian文件代码编写

   基于Qt Designer和pyuic开发UI界面的方法_第8张图片

  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


你可能感兴趣的:(软件编程)