使用python制作窗体应用

使用python制作窗体应用【二】

  1. 打开Qtdesigner,该软件主要用于制作UI界面,如果使用过C#语言进行窗体应用开发的同学肯定会知道,C#的窗体界面无需代码,仅需拖拉拽即可,即所谓的所见即所得,Qtdesigner也是如此。Qt的使用,在此不再赘述。
    在这里插入图片描述
  2. 使用Qt制作如下界面,此处可自行发挥,制作完毕后,保存文件,文件后缀名为.ui,代码如下,读者可复制到.txt文本文件中,然后将以下内容粘贴进去,保存然后将文件名称改为aa.ui。
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>709</width>
    <height>560</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralwidget">
   <widget class="QPushButton" name="pushButton">
    <property name="geometry">
     <rect>
      <x>80</x>
      <y>440</y>
      <width>151</width>
      <height>51</height>
     </rect>
    </property>
    <property name="text">
     <string>确定</string>
    </property>
   </widget>
   <widget class="QPushButton" name="pushButton_2">
    <property name="geometry">
     <rect>
      <x>470</x>
      <y>440</y>
      <width>151</width>
      <height>51</height>
     </rect>
    </property>
    <property name="text">
     <string>取消</string>
    </property>
   </widget>
   <widget class="QCheckBox" name="checkBox">
    <property name="geometry">
     <rect>
      <x>310</x>
      <y>360</y>
      <width>105</width>
      <height>22</height>
     </rect>
    </property>
    <property name="text">
     <string>大猪蹄子</string>
    </property>
   </widget>
   <widget class="QCheckBox" name="checkBox_2">
    <property name="geometry">
     <rect>
      <x>310</x>
      <y>110</y>
      <width>191</width>
      <height>51</height>
     </rect>
    </property>
    <property name="text">
     <string>渣男</string>
    </property>
    <property name="autoRepeatDelay">
     <number>400</number>
    </property>
   </widget>
   <widget class="QCheckBox" name="checkBox_3">
    <property name="geometry">
     <rect>
      <x>310</x>
      <y>210</y>
      <width>105</width>
      <height>22</height>
     </rect>
    </property>
    <property name="text">
     <string>大渣男</string>
    </property>
   </widget>
   <widget class="QCheckBox" name="checkBox_4">
    <property name="geometry">
     <rect>
      <x>310</x>
      <y>290</y>
      <width>105</width>
      <height>22</height>
     </rect>
    </property>
    <property name="text">
     <string>大大渣男</string>
    </property>
   </widget>
   <widget class="QLabel" name="label">
    <property name="geometry">
     <rect>
      <x>240</x>
      <y>50</y>
      <width>321</width>
      <height>18</height>
     </rect>
    </property>
    <property name="text">
     <string>请问你的男朋友是?</string>
    </property>
   </widget>
  </widget>
  <widget class="QMenuBar" name="menubar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>709</width>
     <height>30</height>
    </rect>
   </property>
  </widget>
  <widget class="QStatusBar" name="statusbar"/>
 </widget>
 <resources/>
 <connections/>
</ui>

在这里插入图片描述
3. 检查python目录下的【script】目录下,是否存在“pyuic5.exe”文件,如存在,找到上一步保存的.ui文件所在的目录,按住shift,鼠标右键单击,选择【在此处打开PowerShell窗口】,打开控制台。
在这里插入图片描述
5. 在控制台输入“pyuic5 -o destination.py aa.ui”。‘-o’代表需生成一个文件,destination.py代表生成.py文件的名称,‘aa.ui’此处为上一步笔者生成的ui文件,如图为生成的文件。
注意】如果存在该exe文件,但是在控制台中输入提示不存在该命令,则鼠标右键单击【我的电脑】|【属性】|【高级系统设置】|【环境变量】|【系统变量】|【Path】,将python/script(pyuic5.exe所在目录)目录添加到其中即可。
在这里插入图片描述生成的destination.py源码如下:

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'aa.ui'
#
# Created by: PyQt5 UI code generator 5.9
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(709, 560)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(80, 440, 151, 51))
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(470, 440, 151, 51))
        self.pushButton_2.setObjectName("pushButton_2")
        self.checkBox = QtWidgets.QCheckBox(self.centralwidget)
        self.checkBox.setGeometry(QtCore.QRect(310, 360, 105, 22))
        self.checkBox.setObjectName("checkBox")
        self.checkBox_2 = QtWidgets.QCheckBox(self.centralwidget)
        self.checkBox_2.setGeometry(QtCore.QRect(310, 110, 191, 51))
        self.checkBox_2.setAutoRepeatDelay(400)
        self.checkBox_2.setObjectName("checkBox_2")
        self.checkBox_3 = QtWidgets.QCheckBox(self.centralwidget)
        self.checkBox_3.setGeometry(QtCore.QRect(310, 210, 105, 22))
        self.checkBox_3.setObjectName("checkBox_3")
        self.checkBox_4 = QtWidgets.QCheckBox(self.centralwidget)
        self.checkBox_4.setGeometry(QtCore.QRect(310, 290, 105, 22))
        self.checkBox_4.setObjectName("checkBox_4")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(240, 50, 321, 18))
        self.label.setObjectName("label")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 709, 30))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton.setText(_translate("MainWindow", "确定"))
        self.pushButton_2.setText(_translate("MainWindow", "取消"))
        self.checkBox.setText(_translate("MainWindow", "大猪蹄子"))
        self.checkBox_2.setText(_translate("MainWindow", "渣男"))
        self.checkBox_3.setText(_translate("MainWindow", "大渣男"))
        self.checkBox_4.setText(_translate("MainWindow", "大大渣男"))
        self.label.setText(_translate("MainWindow", "请问你的男朋友是?"))


  1. 在pycham中打开该.py文件,运行后发现并无窗体出现。只需要在末尾添加一个主程序入口,代码如下【一般将主程序入口与函数分离,不放在同一文件中,此处为示例】,运行后出现窗体,该窗体即为在qt中设计的窗体。
if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

在这里插入图片描述【完整代码如下】***

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'aa.ui'
#
# Created by: PyQt5 UI code generator 5.9
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(709, 560)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(80, 440, 151, 51))
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(470, 440, 151, 51))
        self.pushButton_2.setObjectName("pushButton_2")
        self.checkBox = QtWidgets.QCheckBox(self.centralwidget)
        self.checkBox.setGeometry(QtCore.QRect(310, 360, 105, 22))
        self.checkBox.setObjectName("checkBox")
        self.checkBox_2 = QtWidgets.QCheckBox(self.centralwidget)
        self.checkBox_2.setGeometry(QtCore.QRect(310, 110, 191, 51))
        self.checkBox_2.setAutoRepeatDelay(400)
        self.checkBox_2.setObjectName("checkBox_2")
        self.checkBox_3 = QtWidgets.QCheckBox(self.centralwidget)
        self.checkBox_3.setGeometry(QtCore.QRect(310, 210, 105, 22))
        self.checkBox_3.setObjectName("checkBox_3")
        self.checkBox_4 = QtWidgets.QCheckBox(self.centralwidget)
        self.checkBox_4.setGeometry(QtCore.QRect(310, 290, 105, 22))
        self.checkBox_4.setObjectName("checkBox_4")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(240, 50, 321, 18))
        self.label.setObjectName("label")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 709, 30))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton.setText(_translate("MainWindow", "确定"))
        self.pushButton_2.setText(_translate("MainWindow", "取消"))
        self.checkBox.setText(_translate("MainWindow", "大猪蹄子"))
        self.checkBox_2.setText(_translate("MainWindow", "渣男"))
        self.checkBox_3.setText(_translate("MainWindow", "大渣男"))
        self.checkBox_4.setText(_translate("MainWindow", "大大渣男"))
        self.label.setText(_translate("MainWindow", "请问你的男朋友是?"))

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

【末尾总结】

PyQt可使用一行代码便可将Qt生成的Ui文件转换为Python代码,弥补了python制作窗体应用的短板,但相较于C#而言,该方面还是有较大缺点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值