用python来开发图形界面,确实不是很方便,没有c#,Java,甚至VB来得容易。几个控件拖拽,然后响应事件。

用python写脚本,或者web service来处理一般工作,绰绰有余。
但有的时候,脱离开发环境,脱离服务器,还是GUI程序更单纯。

Python支持多种图形界面的第三方库,包括:
Tk,wxWidgets,Qt,GTK等等。

Tk(Tkinter)是Python自带的库,使用Tkinter,无需安装任何包,就可以直接使用。

PyQt是一个创建GUI应用程序的工具包。它是Python编程语言和Qt库的成功融合。Qt库是目前最强大的库之一。

一般的框架,需要熟悉很多的API,PyQt也能实现类似c#一样GUI开发, 只需要拖拽控件,无需熟记太多的API。

本文就探索用pycharm 和 PyQt5 开发python GUI程序。

  1. 配置环境。
    a. 下载并安装QtDesigner。
    b. 将QtDesigner集成到Pycharm中,如图:

  2. 编写代码。
    PyQt的核心就是信号与槽。
    先拖拽几个控件,通过上图定义的工具,就可以轻松的定义UI.

from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_MainWindow(object):def setupUi(self, MainWindow):MainWindow.setObjectName("MainWindow")MainWindow.resize(800, 600)self.centralwidget = QtWidgets.QWidget(MainWindow)self.centralwidget.setObjectName("centralwidget")self.label = QtWidgets.QLabel(self.centralwidget)self.label.setGeometry(QtCore.QRect(180, 80, 47, 13))self.label.setObjectName("label")self.label_2 = QtWidgets.QLabel(self.centralwidget)self.label_2.setGeometry(QtCore.QRect(390, 130, 47, 13))self.label_2.setObjectName("label_2")self.pushButton = QtWidgets.QPushButton(self.centralwidget)self.pushButton.setGeometry(QtCore.QRect(190, 150, 75, 23))self.pushButton.setObjectName("pushButton")MainWindow.setCentralWidget(self.centralwidget)self.menubar = QtWidgets.QMenuBar(MainWindow)self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21))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.translateMainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))self.label.setText(_translate("MainWindow", "show"))self.label_2.setText(_translate("MainWindow", "TextLabel"))self.pushButton.setText(_translate("MainWindow", "PushButton"))

然后定义一个main函数调用一下。

import sysfrom passlevel.first import Ui_MainWindow
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import pyqtSlotclass MyWindow(QtWidgets.QMainWindow, Ui_MainWindow):def __init__(self):super(MyWindow, self).__init__()self.setupUi(self)@pyqtSlot()def on_pushButton_clicked(self):print("hello")if __name__ == '__main__':app = QtWidgets.QApplication(sys.argv)mywindow = MyWindow()mywindow.show()sys.exit(app.exec_())

运行成功。

  1. 打包。
    安装一个pyinstaller
pip install pyinstaller

然后运行命令:

pyinstaller -F -w  yourscript

参数说明:
-F 表示生成单个可执行文件
-w 表示去掉控制台窗口,这在GUI界面时非常有用。不过如果是命令行程序的话那就把这个选项删除吧!
-p 表示你自己自定义需要加载的类路径,一般情况下用不到
-i 表示可执行文件的图标

最终效果就是这样子的。

更多精彩,请关注微信公众号: python爱好部落

python 图形界面开发相关推荐

  1. python简单编程例子-中文方便就用中文编程!Python图形界面开发实例

    原标题:中文方便就用中文编程!Python图形界面开发实例 之前做的一个Python小程序,功能很简单,面对用户群也很窄,是五笔编码编.校人员使用的五笔编码编辑器. 这样的"周末" ...

  2. python界面开发工具-python图形界面开发用什么

    作为Python开发者,你迟早都会用到图形用户界面来开发应用.本文将推荐一些 Python GUI 框架,希望对你有所帮助. Python 的 UI 开发工具包 Kivy(推荐学习:Python视频教 ...

  3. python图形界面开发用什么

    作为Python开发者,你迟早都会用到图形用户界面来开发应用.本文将推荐一些 Python GUI 框架,希望对你有所帮助. Python 的 UI 开发工具包 Kivy Kivy是一个开源工具包能够 ...

  4. Python图形界面开发(一)——pyside入门

    目录 前言 如果用 Python 语言开发 跨平台 的图形界面的程序,主要有3种选择: PySide2.PyQt5 都是基于著名的 Qt 库. 安装 PySide2 安装PyQt5 案例一 前言 众所 ...

  5. Python图形界面开发教程-课程笔记-2022-2-14

    目录 1.1 写一个弹窗 1.2了解模板代码的组成 1.3 根据模板代码写一个界面 1.4 窗口关闭事件 1.5 通过字典获取返回值values 1.6 自定义主题 1.7 自定义窗口 1.8 布局和 ...

  6. Python 图形界面开发哪个库好

    Tkinter 是官方提供的图形界面开发库,用于封装Tk GUI工具包,跨平台,但是控件少,帮助文档不健全,不便于开发复杂的图形用户界面. b站小甲鱼有Tkinter的教程 PyQt 非官方提供的图形 ...

  7. Python图形界面开发的几种方案

    如果用 Python 语言开发 跨平台 的图形界面的程序,主要有3种选择: Tkinter 基于Tk的Python库,这是Python官方采用的标准库,优点是作为Python标准库.稳定.发布程序较小 ...

  8. linux python 图形界面开发_python在linux制作图形界面(snack)

    snack是一个用于在linux制作图形界面(GUI)的模块,该模块由c编写,而且redhat的系统都自带这个模块. 1.获取模块 虽然redhat系统会自带这个模块,但是直接去import snac ...

  9. Python图形界面开发——PyQt5环境的搭建(史上最详细,保证都能搭建好)

    前期准备:PyQt5以及其他组件的下载与安装 在python的图形界面开发过程中,我们需要三个组件,分别是:PyQt5.pyqt5-tools.PyQt5Designer,我们直接在命令行输入下面的代 ...

最新文章

  1. 不错的jquery插件
  2. 学习笔记——Numpy基本操作(二)
  3. 洞悉物联网发展1000问之物联网会产生哪些独角兽?机会在哪里?
  4. 微信小程序时间转换成时间戳、获取当前时间戳、获取当前时间、时间戳加减
  5. SSRF(服务端请求伪造)
  6. oracle表空间可以迁移,Oracle 表空间迁移
  7. 使用java.util.concurrent包处理多线程
  8. Php 魔术函数性能,php常用的魔术函数详细解析
  9. vue的matcher_vue-router工作原理概述和问题分析
  10. ARM(IMX6U)裸机主频和时钟
  11. Apollo进阶课程⑳丨Apollo感知之旅——机器学习与感知的未来
  12. 工具用途_小工具大用途:万能扳手、开瓶器、开箱器,DIY16种用法,玩过吗
  13. Pytorch和caffe对maxpool模式ceil比较
  14. 内置函数的数据聚合NumpyPandas
  15. html中嵌入flvplayer.swf播放器,播放视频
  16. 施努卡:锂电池电芯底面和侧板的压胶面积
  17. IDEA自动生成serialVersionUID的设置
  18. python语言的就业方向_Python语言就业方向
  19. 最强升级系统的锚点连接
  20. 控制台基于Quartz.Net组件实现定时任务调度(一)

热门文章

  1. 视频聊天源码,IOS 保存图片、视频到自定义相簿
  2. [职场开放日活动]网龙嘉宾回答网友提问-合集
  3. 转载 藏经阁第2卷-SQL常用的函数
  4. StarRocks斩获「2022 掘金引力榜」年度技术品牌传播案例 Top 10!
  5. SHELL脚本之基础网络检查
  6. git 常用命令及基本用法
  7. win10g更新,0x8000FFFF错误
  8. PHP判断QQ是否在线代码。
  9. QT5.15在线安装下载速度慢的解决办法(包括qt6.0beta版)
  10. [Linux]linux下7z文件的解压方法