七个Python必备的GUI库


Posted in Python onApril 27, 2021

GUI(图形用户界面),顾名思义就是用图形的方式,来显示计算机操作的界面,更加方便且直观。

与之相对应的则是CUI(命令行用户交互),就是常见的Dos命令行操作,需要记忆一些常用的命令,对于普通人而言,操作起来学习难度还是蛮高的。

一个好看又好用的GUI,可以大大提高大家的使用体验,提高效率。

比如你想开发一个计算器,如果只是一个程序输入,输出窗口的话,是没有用户体验的。

所以开发一个图像化的小窗口,就变得很有必要。

今天,小F就给大家介绍七个Python必备的GUI库,每一个都值得学习。

01. PyQt5

PyQt5由Riverbank Computing开发。基于Qt框架构建,是一个跨平台框架,可以给各种平台创建应用程序,包括:Unix、Windows、Mac OS。

PyQt将Qt和Python结合在一起。它不只是一个GUI工具包。还包括了线程,Unicode,正则表达式,SQL数据库,SVG,OpenGL,XML和功能完善的Web浏览器,以及许多丰富的GUI小部件集合。

使用pip安装一下。

# 安装PyQt5
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple PyQt5

安装成功后,来个Hello Word简单示例。

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout

# 建立application对象
app = QApplication(sys.argv)
# 建立窗体对象
w = QWidget()
# 设置窗体大小
w.resize(500, 500)

# 设置样式
w.layout = QVBoxLayout()
w.label = QLabel("Hello World!")
w.label.setStyleSheet("font-size:25px;margin-left:155px;")
w.setWindowTitle("PyQt5 窗口")
w.layout.addWidget(w.label)
w.setLayout(w.layout)

# 显示窗体
w.show()
# 运行程序
sys.exit(app.exec_())

结果如下。

七个Python必备的GUI库

文档地址:

https://riverbankcomputing.com/software/pyqt/intro

教程链接:

https://www.guru99.com/pyqt-tutorial.html 

02. Tkinter 

Tkinter是Python中最受欢迎的GUI库之一。由于它简单易学的语法,成为GUI开发初学者的首选之一。

Tkinter提供了各种小部件,例如标签,按钮,文本字段,复选框和滚动按钮等。

支持Grid(网格)布局,由于我们的程序大多数都是矩形显示,这样即使是复杂的设计,开发起来也变得简单些。 

# 安装tkinter
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tkinter

下面使用Tkinter设计一个BMI计算器。

以重量和高度作为输入,并在弹出框中返回BMI系数作为输出。

from tkinter import *
from tkinter import messagebox

def get_height():
    # 获取身高数据(cm)
    height = float(ENTRY2.get())
    return height

def get_weight():
    # 获取体重数据(kg)
    weight = float(ENTRY1.get())
    return weight

def calculate_bmi():
    # 计算BMI系数
    try:
        height = get_height()
        weight = get_weight()
        height = height / 100.0
        bmi = weight / (height ** 2)
    except ZeroDivisionError:
        messagebox.showinfo("提示", "请输入有效的身高数据!!")
    except ValueError:
        messagebox.showinfo("提示", "请输入有效的数据!")
    else:
        messagebox.showinfo("你的BMI系数是: ", bmi)

if __name__ == '__main__':
    # 实例化object,建立窗口TOP
    TOP = Tk()
    TOP.bind("<Return>", calculate_bmi)
    # 设定窗口的大小(长 * 宽)
    TOP.geometry("400x400")
    # 窗口背景颜色
    TOP.configure(background="#8c52ff")
    # 窗口标题
    TOP.title("BMI 计算器")
    TOP.resizable(width=False, height=False)
    LABLE = Label(TOP, bg="#8c52ff", fg="#ffffff", text="欢迎使用 BMI 计算器", font=("Helvetica", 15, "bold"), pady=10)
    LABLE.place(x=55, y=0)
    LABLE1 = Label(TOP, bg="#ffffff", text="输入体重(单位:kg):", bd=6,
                   font=("Helvetica", 10, "bold"), pady=5)
    LABLE1.place(x=55, y=60)
    ENTRY1 = Entry(TOP, bd=8, width=10, font="Roboto 11")
    ENTRY1.place(x=240, y=60)
    LABLE2 = Label(TOP, bg="#ffffff", text="输入身高(单位:cm):", bd=6,
                   font=("Helvetica", 10, "bold"), pady=5)
    LABLE2.place(x=55, y=121)
    ENTRY2 = Entry(TOP, bd=8, width=10, font="Roboto 11")
    ENTRY2.place(x=240, y=121)
    BUTTON = Button(bg="#000000", fg='#ffffff', bd=12, text="BMI", padx=33, pady=10, command=calculate_bmi,
                    font=("Helvetica", 20, "bold"))
    BUTTON.grid(row=5, column=0, sticky=W)
    BUTTON.place(x=115, y=250)
    TOP.mainloop()

界面如下。

七个Python必备的GUI库

当没有数据时,点击BMI按钮,会有与之对应的提示。

下面我们使用正确的数据,来看看结果。

七个Python必备的GUI库

使用起来感觉还是不错的。

03. Kivy

Kivy是另一个开源的Python库,最大的优点就是可以快速地编写移动应用程序(手机)。

Kivy可以在不同的平台上运行,包括Windows、Mac OS、Linux、Android、iOS和树莓派。

此外也是免费使用的,获得了MIT许可。

# 安装kivy
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple kivy

一个基于Kivy的Hello World窗口。

from kivy.app import App
from kivy.uix.button import Button

class TestApp(App):
    def build(self):
        return Button(text=" Hello Kivy World ")

TestApp().run()

结果如下。

七个Python必备的GUI库

04. wxPython

wxPython是一个跨平台GUI的Python库,可轻松创建功能强大稳定的GUI,毕竟是用C++编写的~

目前,支持Windows,Mac OS X,macOS和Linux。

使用wxPython创建的应用程序(GUI)在所有平台上都具有原生外观。

# 安装wxPython
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple wxPython

下面使用wxPython创建一个基本的GUI示例。

import wx

myapp = wx.App()
init_frame = wx.Frame(parent=None, title='WxPython 窗口')

init_frame.Show()
myapp.MainLoop()

结果如下

七个Python必备的GUI库

文档链接:https://www.wxpython.org/

05. PySimpleGUI

PySimpleGUI也是基于Python的GUI框架。可以轻松制作自定义的GUI。

采用了四种最流行的GUI框架QT、Tkinter、WxPython和Remi,能够实现大多数样例代码,降低了学习难度。

Remi将应用程序的界面转换为HTML,以便在Web浏览器中呈现。

# 安装PySimpleGUI
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple PySimpleGUI

下面是一个简单的案例。

import PySimpleGUI as sg

layout = [[sg.Text("测试 PySimpleGUI")], [sg.Button("OK")]]
window = sg.Window("样例", layout)
while True:
    event, values = window.read()
    if event == "OK" or event == sg.WIN_CLOSED:
        break
window.close()

结果如下。

七个Python必备的GUI库

点击OK按钮,窗口消失。

06. PyGUI

PyGUI是一个以简单API而闻名的GUI框架,减少Python应用与平台底层GUI之间的代码量。

轻量级的API,可以让你的应用程序运行起来更流畅,更快速。

同时还开源代码,跨平台项目。目前可在基于Unix的系统,Windows和Mac OS上运行。

Python2和Python3,都是可以支持的。

文档地址:

https://www.cosc.canterbury.ac.nz/greg.ewing/python_gui/

教程链接:

https://realpython.com/pysimplegui-python/

07. Pyforms

Pyforms是用于开发GUI应用程序的一个跨平台框架。

七个Python必备的GUI库

pyforms是一个Python2.7/3.x跨环境图形应用开发框架,模块化和代码复用可以节省大量工作。

允许应用程序在桌面,Web和终端上运行,无需修改代码。

# 安装PyFroms
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple PyFroms

文档地址:https://pyforms.readthedocs.io/en/v4/

项目地址:

链接:https://pan.baidu.com/s/1bSeDjNGWEia7xw5c1zpsYg  密码:aw5m

以上就是七个Python必备的GUI库的详细内容,更多关于python gui库的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
使用Python中的greenlet包实现并发编程的入门教程
Apr 16 Python
Python中__new__与__init__方法的区别详解
May 04 Python
使用python遍历指定城市的一周气温
Mar 31 Python
使用Python通过win32 COM打开Excel并添加Sheet的方法
May 02 Python
Python XML转Json之XML2Dict的使用方法
Jan 15 Python
python实现烟花小程序
Jan 30 Python
十分钟搞定pandas(入门教程)
Jun 21 Python
PyQt5基本控件使用之消息弹出、用户输入、文件对话框的使用方法
Aug 06 Python
浅谈selenium如何应对网页内容需要鼠标滚动加载的问题
Mar 14 Python
Python下划线5种含义代码实例解析
Jul 10 Python
2021年的Python 时间轴和即将推出的功能详解
Jul 27 Python
基于OpenCV的网络实时视频流传输的实现
Nov 15 Python
Python实战之用tkinter库做一个鼠标模拟点击器
Python基础之pandas数据合并
上手简单,功能强大的Python爬虫框架——feapder
python绘制箱型图
基于Python实现的购物商城管理系统
Apr 27 #Python
详解用Python把PDF转为Word方法总结
python实现的web监控系统
You might like
PHP中实现生成静态文件的方法缓解服务器压力
2014/01/07 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
2020/01/22 PHP
InnerHtml和InnerText的区别分析
2009/03/13 Javascript
IE和Firefox下event事件杂谈
2009/12/18 Javascript
JS继承 笔记
2011/07/13 Javascript
window.requestAnimationFrame是什么意思,怎么用
2013/01/13 Javascript
jquery实现网站超链接和图片提示效果
2013/03/21 Javascript
cookie的secure属性详解
2015/04/08 Javascript
jQuery实现下拉框选择图片功能实例
2015/08/08 Javascript
Angular2中Bootstrap界面库ng-bootstrap详解
2016/10/18 Javascript
清除输入框内的空格
2016/12/21 Javascript
微信小程序 实战实例开发流程详细介绍
2017/01/05 Javascript
深入nodejs中流(stream)的理解
2017/03/27 NodeJs
详解vue嵌套路由-params传递参数
2017/05/23 Javascript
vue中v-model动态生成的实例详解
2017/10/27 Javascript
bootstrap实现点击删除按钮弹出确认框的实例代码
2018/08/16 Javascript
如何使用jQuery操作Cookies方法解析
2020/09/08 jQuery
[09:40]DAC2018 4.5 SOLO赛 MidOne vs Miracle
2018/04/06 DOTA
用PyQt进行Python图形界面的程序的开发的入门指引
2015/04/14 Python
Python守护进程用法实例分析
2015/06/04 Python
浅谈django开发者模式中的autoreload是如何实现的
2017/08/18 Python
python3处理含有中文的url方法
2018/05/10 Python
Python 使用Numpy对矩阵进行转置的方法
2019/01/28 Python
使用django和vue进行数据交互的方法步骤
2019/11/11 Python
Python使用Pandas读写Excel实例解析
2019/11/19 Python
python环境下安装opencv库的方法
2020/03/05 Python
PyQt5中向单元格添加控件的方法示例
2020/03/24 Python
浅析python 动态库m.so.1.0错误问题
2020/05/09 Python
css3实现可拖动的魔方3d效果
2019/05/07 HTML / CSS
Ego Shoes官网:英国时髦鞋类品牌
2020/10/19 全球购物
党委书记岗位职责
2013/11/24 职场文书
物业管理工作方案
2014/05/10 职场文书
信息与计算机科学职业规划范文:成为一艘有方向的船
2014/09/11 职场文书
导师对论文的学术评语
2015/01/04 职场文书
2015年幼儿园中班工作总结
2015/04/25 职场文书
大学推普周活动总结
2015/05/07 职场文书