python懒人小工具python打包exe小工具

1. 介绍

Python GUI 常用的 3 种框架是:Tkinter、wxpython、PyQt5

PyQt5 基于 Qt,是 Python 和 Qt 的结合体,可以用 Python 语言编写跨平台的 GUI 应用程序

相比 Tkiner和 wxpython,PyQt5 利用自带的 Qt Designer 可视化工具进行界面设计,可以非常快速地开发出一款功能强大、界面美观的 GUI 应用程序

2. 安装

以 Mac OSX 为例,PC 下的操作类似。

首先,在系统内部安装 qt 应用

# 安装qt
brew install qt

然后,在 Python 虚拟环境下安装 sip 和 pyqt5 两个依赖库

# 安装依赖sip
pip3 install sip

# 安装依赖pyqt5
pip3 install pyqt5

接着,在 Pycharm 中配置 External Tools,新建 Qt Designer 和 PyUIC 两个命令

# Qt Designer 配置
Program:/usr/local/Cellar/qt/5.14.1/libexec/Designer.app
Working directory:/usr/local/Cellar/qt/5.14.1/libexec

# PyUIC
# Python环境路径
Program:/usr/local/bin/python3.7
# 参数
Arguments:-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py 
# 路径【固定】
Working directory:$ProjectFileDir$

其中,在第一步安装 Qt 应用文件夹下,找到 Designer.app 和 libexec 两个文件,配置进去

由于 QtDesigner 生成的文件是 *.ui 文件,需要借助 pyqt5 中的 pyuic,将 ui 文件转换为 Python 文件

最后,可以直接在 Pycharm 中快速打开 Designer 界面、ui 转 py 文件这两个操作。

3. 常用功能介绍

QtDesigner 是一个非常强大的 GUI 设计工具,生成的文件格式为:*.ui

QtDesigner 主要包含下面 6 部分:

  • 主设计界面区

  • 控件区

  • 控件属性区

  • 信号和槽函数区

  • 资源图片区

  • 控件结构树区

其中,

主设计界面区:用于窗口编辑,最终的 GUI 展示区域

控件区:包含文本、输入框、选择器、容器等控件,可以直接拖拉到窗口进行布局

属性区:用于定义控件的属性,包含:内容、字体大小、宽和高等

信号和槽函数区:可以很方便地为一个控件指定一个事件监听,比如:单击、选中事件等

资源图片区域:用于导入本地的资源文件,在控件中使用,比如:图片

控件结构树区:可以很直观地显示控件间的结构关系

4.来个例子

第 1 步,我们从控件区拖 3 个按钮和 2 个输入框到界面设计区域

第 2 步,选中控件,鼠标右键为控件新增属性,比如:控件内容、控件名称(相当于id),对于一些复杂的属性设置,需要在属性区域单独进行设置

编辑完 UI 界面之后,会在本地生成一个 *.ui 的文件

第 3 步,选择 *.ui 文件,在 Pycharm 中使用 PyUIC 命令,将 ui 文件转换为 py 文件

# ui文件转为py文件
from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 790)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(130, 80, 111, 41))
        self.pushButton.setObjectName("pushButton")
        self.username = QtWidgets.QLineEdit(self.centralwidget)
        self.username.setGeometry(QtCore.QRect(260, 80, 271, 41))
        self.username.setObjectName("username")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(130, 150, 111, 41))
        self.pushButton_2.setObjectName("pushButton_2")
        self.password = QtWidgets.QLineEdit(self.centralwidget)
        self.password.setGeometry(QtCore.QRect(260, 150, 271, 41))
        self.password.setObjectName("password")
        self.login = QtWidgets.QPushButton(self.centralwidget)
        self.login.setGeometry(QtCore.QRect(260, 230, 141, 61))
        self.login.setObjectName("login")
        MainWindow.setCentralWidget(self.centralwidget)
        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.login.setText(_translate("MainWindow", "登录"))

第 4 步,为按钮添加点击事件

使用 控件名.信号.connect(槽函数) 的形式,为控件添加一个点击事件的监听

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        # 为登录按钮指定事件
        # clicked:信号,login_met:槽函数
        self.login.clicked.connect(self.login_met)

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

def login_met(self):
        """
        登录事件(槽函数)
        :return:
        """
        # 用户名输入框的内容
        username = self.login.text()
        # 密码输入框的内容
        password = self.password.text()

print("输入的用户名是:", username, "密码是:", password)

第 5 步,展示界面

最后,新建一个 py 文件,实例化一个 QApplication 对象,将上面创建的 MainWindow 展示出来即可。

import sys

from PyQt5.QtWidgets import QApplication, QMainWindow

# 界面文件
from temp import *

class CustomUI(QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        super(CustomUI, self).__init__(parent)
        self.setupUi(self)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    cutomUI = CustomUI()
    cutomUI.show()
    sys.exit(app.exec_())

需要注意的是,这部分内容仅仅是调用显示 GUI 界面的逻辑,实际项目开发过程中很少变动。

5.总结

通过上面的例子发现,使用 PyQt5 构建 GUI 真的很方便,大部分的工作都可以在 QtDesigner 设计完成,然后回归到 Pycharm中,转为 py 文件、编写信号和槽函数,就能快速开发 GUI 图形用户界面。

(0)

相关推荐

  • 多SHEET页的EXCEL文件批量合并

    前段时间工作中遇到需要将多个excel合并,且每个excel都有多个sheet页 在CSDN也没搜到特别简洁的代码,其实就两个循环的事情 不过还好,站在巨人的肩膀上看的远,就集各家所长,为己所用 顺带 ...

  • [懒人编程学院]Python教程汇总之日期遍历循环

    愿天下没有难画的简笔画,  愿天下知识都能秒会Python1.简介2.安装3.hello world4.学习资料5.操作mySQL6.微信远程控制电脑7.爬虫极致教学8.抓取空气质量9.生成漫画头像1 ...

  • 灌木丛绿篱的懒人画法(004手绘小课堂)

    本期图片素材来自网络,文字观点及视频属于蚂蚁景观原创内容. 大家好,我是小蚁君.这期我教大家灌木丛和绿篱的懒人画法. 照例先献上我们这期的内容: 不知道大家有没有感觉到,景观的尺度性是非常强的, 大到 ...

  • 人物配景的懒人画法(009手绘小课堂)

    大家好,我是小蚁君.有段时间没跟大家见面了,之前我们发布了好多期懒人画法,有小伙伴在后台说:这也懒人,那也懒人,你们到底有多懒~这么久没更新了,你说呢? 那么好,这期我们来看看人物配景的懒人画法~懒人 ...

  • 得草丛者得天下,草地的懒人画法(032手绘小课堂)

    大家好,我是小蚁君. 手绘小课堂第32期,我们来聊聊草的画法.可不要小看草丛,任何一张景观手绘没有了草丛,都是灾难性的~. 在景观设计中,绿地是面积最大,也是占据画面最多的存在. 从草坪到草丛,再到小 ...

  • 女生别再扎马尾辫了,今冬流行这5款“懒人发型”,时髦显脸小

    在整个人的形象当中,穿搭可能占整个身体部分的90%,而发型这一块可能就只有10%,但是一个人要达到理想的完美形象,哪怕是只占10%的发型也要做到精致洋气,更别说发型还能修饰脸型了~ 因此我们总会听到一 ...

  • 懒人家务指南:9个小tips,每日家务减半

    科学的做家务方式,从来都不会花太多精力和时间.只要平常养成一些预处理的打理习惯,家务根本没有想象中那么难. 关于这点,住友@Y大C整理了一些日常生活中的小技能,的确能减轻不少家务负担,一起跟她取取经吧 ...

  • 懒人养生方案,左点小仙智能足蒸器Z9评测:90后都开始养生了

    记得小时候,奶奶会不定时的烧一锅开水倒在木桶里,然后桶里放个小板凳,让我脱掉鞋子把双脚放在小板凳上,再在木桶四周围上厚衣服,来个现实版的蒸脚丫子.而这也是我当时最讨厌的事,因为这样除了得安安静静坐一个 ...

  • 实战|教你用Python PyQt5制作一款视频数据下载小工具!

    前言 大家好,我是早起. 目前,市场上有大量 Python图形用户界面(GUI)开发框架可供选择,如wxpython .pyqt5.Gtk.Tk等.本文将用Python结合PyQt5制作一款B站视频数 ...

  • 假期减肥不费力!懒人宅家瘦腿小技巧分享!

    假期在家很多人都被爸爸妈妈或者零食,被迫减肥失败 夏天马上也快来了!现在还不减肥,整个夏天徒伤悲啊~~ 应该有很多女生已经迫不及待想要快速瘦身减脂. 但是一定要掌握科学的方法和训练哦! 今天小美分享一 ...