第一次写完整的Python GUI程序

使用Python搞一个简单的GUI 结果看似很简单的一个GUI界面,但是背后做了非常多的工作,所以这份学习和工作是很苦很累的,不过既然选择了它,那就要义无反顾的坚持走下去,加油ヾ(◍°∇°◍)ノ゙。 阅读详情

 夜里用外挂容易被查,因此想让菜熟的时间集中到白天,每次都要口算,麻烦,正好刚刚学了wxPython,一时手痒,来自己写个吧。虽说纯属自娱自乐,但也学到不少东西。现记于下。

 

1. 关于Python的GUI设计

一直以来都没有一个足够好的Killer IDE,这也怪不得,没有一个足够强大的后台,要想做成重量级的IDE谈何容易(要是Google拉一把就好了,可惜Google出了自己的语言Go)。

 

试过无数设计器(wxGlade、wxFormBuilder、FarPy...),最终还是觉得Boa Constructor不错,虽然它的界面不习惯(P.S.一定不要最大化运行Boa就行了,当然手动双击是没这问题的,但是用一些快捷管理工具就难说了 。还有就是F9直接运行整个项目,挺方便 );虽然它中文支持得不好;虽然它还是07年更新过。。。

 

但这已经是这些当中最好用的了。

 

针对以上的不足,我只好增加“人手”帮忙了:

用Boa构建纯GUI,几乎没有任何业务逻辑。另外在Boa生成的文件中_init_ctrls 里面的代码一定别去碰它 ,否则会造成Frame Designer无法加载,而这就是Boa最有价值的所在了。但Boa没有什么代码提示(可以在Explorer->Preferences->key bindings下面设置),编辑功能也比下面两者弱不少,就只用它来做GUI了。(P.S.一定要用源码而不是二进制,可以较好地支持Unicode )

 

业务逻辑的代码用PyDev,这是个非常优秀的IDE,基于Eclipse,此次我也学习到了它更多的用法。(如Edit->Set Encoding、在Src上右键Refresh等等)

 

修改Boa生成的Python代码我用PyScripter,原因有三:没找到Eclipse怎么加入它(太笨,后来摸出来是Src上右键Refresh)、修改编码格式(现在知道可以用Eclipse的Set Encoding)、对wxPython的函数提示支持比Eclipse好(这一点我目前还没找到好的解决方法,P.S.手动加入模块路径即可 )。再说PyScripter还有个比IDLE好用得多的命令行工具。另外用它对一些功能做做测试也不错(P.S. Pydev也可以,锁定一个Console为Python Console就行了 )。

 

三者配合,再加上wxPython的Demonstration、Python的官方文档,以及万能的Google,开发起来还算不错了。

 

2. 关于Python语言学到的

①将GUI与业务逻辑几乎(大概90%)完全分开,从中体会到了这种设计对于测试的方便性、业务与GUI分离带来的代码清晰。

②类的静态方法:

③用datetime对时间进行方便的加减:

另外优快云的一个贴子中说有parse,什么时候试试。

 

④在wxPython中使用多个定时器

(P.S.后来在《wxPython in Action 》的最后一章看到另一个方法: )

⑤使用多线程程序

后来我又试验用多线程来模拟多个定时器的办法,尽管没这必要,但学到了东西。

另外,IBM上的一篇文章建议在Python中用进程而非线程:

全局解释器锁 (Global Interpretor Lock) 说明 Python 解释器并不是线程安全的。当前线程必须持有全局锁,以便对 Python 对象进行安全地访问。因为只有一个线程可以获得 Python 对象/C API,所以解释器每经过 100 个字节码的指令,就有规律地释放和重新获得锁。解释器对线程切换进行检查的频率可以通过 sys.setcheckinterval() 函数来进行控制。

此外,还将根据潜在的阻塞 I/O 操作,释放和重新获得锁。有关更详细的信息,请参见参考资料 部分中的 Gil and Threading State 和 Threading the Global Interpreter Lock 。

需要说明的是,因为 GIL,CPU 受限的应用程序将无法从线程的使用中受益。使用 Python 时,建议使用进程,或者混合创建进程和线程。

在Python2.6中提供了multiprocessing这样一个很棒的模块,一举将线程这个软肋去掉,多进程成为强项。

The multiprocessing package offers both local and remote concurrency, effectively side-stepping the Global Interpreter Lock by using subprocesses instead of threads. Due to this, the multiprocessing module allows the programmer to fully leverage multiple processors on a given machine. It runs on both Unix and Windows.

(PS: 实际使用中发现multiprocessing在Windows平台上有不少的限制,其中一个就是要求picklable )

 

⑥在Python中使用了单元测试:

 

⑦使用了sqlite,只是后来发现这么点数据实在不值得用数据库,于是直接用tuple of tuple:

crops = (
    #name, rank, count, (times,)
    #can be added col before time
    (u'牧草', 0, 1, (8,)),
    (u'白萝卜', 0, 1, (10,)),

   ...)

 

小结:学程序是要靠多写的,写一个小程序就让我写到了这么多,而且还留下很多值得继续深入的话题,比如:Py2exe打包后在XP上无法正常运行、mutiprocess模块的使用等等。我一定还会回来的!

python怎么做gui界面,python gui界面设计 Tkinter: Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 Windows 和 Macintosh 系统里。wxPython:wxPython 是一款开源软件,是 Python 语言的一套优秀的 GUI 图形库,允许 Python 程序员很方便的创建完整的、功能键全的 GUI 用户界面。我们编写的Python代码会调用内置的Tkinter,Tkinter封装了访问Tk的接口; 阅读详情

相关推荐

python写一个爬虫GUI程序并生成windows程序

写在前面 也许坚持一件事,一年、两年后会有很大收获吧。 上周一朋友让帮忙写个爬虫,抓取某网站的商品列表。写完之后又不知道怎么给他,导出文件吧,可能每次要的时候又来找我。发代码吧,又怕他没有python环境。所以干脆写成一个GUI页面,再做成exe文件直接给他,他爱怎么玩就怎么玩。 文章包含内容 本篇文章包含的东西挺多。为了缩短写文章的时间。这里我直接省略了爬虫代码的编写。因为关于爬虫...

Richie 8658

python编程400例_python GUI实例学习

在学习本篇之前,如果你对Python下进行GUI编程基础内容还有不明白,推荐一篇相关文章:简单介绍利用TK在Python下进行GUI编程的教程写一个简单的界面很容易,即使是什么都不了解的情况下,这个文本转载了最简单的界面编写,下个文本介绍了TK的简单但具体的应用在python中创建一个窗口,然后显示出来。from Tkinter import *root = Tk()root.mainloop()...

weixin_30481539的博客 404

python编写的GUI表白小程序

# Tkinter是Python的标准GUI(图形用户界面)库 ,Python使用Tkinter可以快速的创建GUI应用程序 from tkinter import * from tkinter import messagebox def closeWindow(): messagebox.showinfo(title="警告",message="不许关闭,好好回答") # m...

qq_36525166的博客 1万+

python核心编程-GUI例子

#!/usr/bin/env python # -*- coding: UTF-8 -*- from functools import partial import Tkinterroot = Tkinter.Tk() MyButton = partial(Tkinter.Button, root, fg='white', bg='blue') b1 = MyButton(text='But

you 540

用 Python 的GUI 库 PySimpleGUI,写一个肥胖指数计算工具,Python开发就是这么简单

Python 的 GUI 库 PySimpleGUI,写一个简单的有界面的小工具很简单!这里我们来写一个计算肥胖指数(BMI)的小工具。首先,通过百度得到 BMI 指数的计算公式为: 体重 / (身高的平方)体重单位为 kg, 身高的单位为 m 再查阅中国的 BMI 标准为: 分类BMI偏瘦<= 18.4正常18.5 ~ 23.9过重24.0 ~ 27.9肥胖>= 28.0 于是先...

Python这样学 4054

Python 编写GUI 程序并打包成 exe 程序

文章目录Python 编写GUI 程序并打包成 exe 程序1、安装依赖2、编写 GUI 程序3、打包命令 Python 编写GUI 程序并打包成 exe 程序 1、安装依赖 pyinstaller 2、编写 GUI 程序 xxx xxx 3、打包命令 cd 到文件所在目录 pyinstaller -F Python入口文件名 -F 打包成独立的 exe 程序 ...

简简单单Onlinezuozuo 6601

Python GUI编程实例

1 import os 2 from time import sleep 3 from tkinter import * 4 from tkinter.messagebox import showinfo 5 6 7 class DirList(object): 8 def __init__(self, initdir=None): 9 ...

程序就是世界 132

终端效率神器:Tmux 安装与使用全指南

终端效率神器:Tmux 安装与使用全指南

身在被窝_心在编程 1360

Python编写GUI程序

Python编写GUI程序 一、关于GUI程序: 图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。 GUI程序的存在可以让我们忘记繁琐的代码,使用直观的图形方式解决问题,展示结果,降低了程序的使用成本。 对于我们的常用的Windows操作系统下,编写GUI桌面程序方式很多,包括Java的Swing包、 win...

qq_36717753的博客 1万+

poincare截点

poincare映射定义比较抽象,简单理解就是每个原始周期取一个点,表现在程序中的思路如下: 以激励的周期T0为poincare的原始周期,设置1个周期取m个点,取N个周期设置T0/m为ode45的步长,每个周期的 i*m个点处取一个点(i=0.0-1.0),把这些点画出来就行了。有几个点就是几倍周期。 (注意:ode45算法是变步长的算法,所以一定要之前自己设置步长,我在这个地方吃了很大一个亏...

小树 3008

halcon 检测直线

图中后三个对象既是检测出的图像;

qq_59062726的博客 666

python开发的gui界面,python写gui应用程序

python提供了多个图形开发界面的库,几个常用Python GUI库如下:Tkinter: Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口.Tk和Tkinter可以在大多数的Unix平台下使用,同样可以应用在Windows和Macintosh系统里.,Tk8.0的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。2.pyqtPyQt是Qt库的Python版本。如果你想开发跨平台的图形应用,或者仅仅是需要一个强大的跨平台图形用户开发框架,Kivy都是不错的选择。

wenangou的博客 4581

IMU标定中的Allen方差

Allen方差 Allen方差是IMU标定任务中的常用工具。IMU标定可以分为确定性误差和随机误差,确定性误差包括:scale、bias、misalignment。随机误差则主要是高斯白噪声和bias随机游走。Allen方差主要用于标定随机误差。 Allen方差获取 Allen方差的计算方法如下: 保持IMU静止, 采集N个数据点。 将N个点定长分组,常用的交叠式Allen方差如下(n=3): 对于每个子集,计算均值后,计算相邻两组的方差,得到的时间-方差曲线即为Allen方差。 Alle

realjc的博客 5737

简单的python GUI例子,写一个简单的界面

写一个简单的界面很容易,即使是什么都不了解的情况下,这个文本转载了最简单的界面编写,下个文本介绍了TK的简单但具体的应用 在python中创建一个窗口,然后显示出来。 就3行就能够把主窗口显示出来了。root是一个变量名称,其代表了这个主窗口。以后创建控件的时候指定控件创建在什么窗口之中,就要用这个root来表示了。而Tk()是一个Tkinter库之中的函数(其实是类的构造函数,构造...

python学习者的博客 6万+

从零到多智能体:Google Agent开发套件(ADK)入门指南

ADK促进自定义工具生产的能力是其优势之一。本质上,工具只是一个带有描述性文档字符串的Python函数。

独立开发,substack顶级编辑 2491

13、Java 中 MQTT 异步通知与回调的使用及传感器命令处理

本文详细介绍了在 Java 中使用 MQTT 的异步通知与回调机制,并展示了如何通过 Paho Java 客户端处理与传感器交互的命令。文章包含代码示例,讲解了 MQTT 客户端的连接、订阅、消息处理以及模拟传感器数据发布的过程,适用于希望在 Java 应用中实现 MQTT 通信与设备控制的开发者。

eee77的博客 160

python中tkinter实现GUI程序:三个实例

Tkinter是Python的标准GUI库,用于创建跨平台的桌面应用程序。它是一个轻量级的库,易于学习和使用,适合初学者和开发小型项目。Tkinter的核心优势在于其简洁性,你可以用很少的代码实现功能丰富的窗体应用。Tkinter是Python中创建GUI的一种简单而强大的方式。无论你是初学者还是有经验的开发者,Tkinter都是入门GUI编程的理想选择。通过学习和使用Tkinter,你可以构建出直观、交互性强的桌面应用程序,增强用户体验。

定期分享我的发现和想法,感谢你的陪伴和支持 7295

手把手教你学Simulink——基于Simulink的机械臂正运动学仿真建模示例

机械臂正运动学概述正运动学的核心在于根据每个关节的角度值,通过坐标变换(如DH参数法或齐次变换矩阵)计算出末端执行器相对于基座的位置和姿态。常用的数学工具包括旋转矩阵、平移向量以及它们组合而成的齐次变换矩阵。仿真目标设计并实现一个机械臂正运动学模型。输入关节角度,输出末端执行器的位置和姿态。分析不同关节角度下的机械臂位置变化。假设我们有一个简单的3自由度(DOF)平面机械臂,其各关节的长度分别为l1l1​、l2l2​和l3l3​。在Simulink中,可以使用。

MHD0815的博客 360

python gui程序_用c++和python写GUI程序(python嵌入方式)

用python写GUI相比C++好处多多:语法简洁灵活,不用编译,自动垃圾回收,等等。很让我这个c++程序员眼红,自然要好好研究一下。如果用纯python的方式很简单,qt或者wxwidget这个两个GUI库的python版本都已经很成熟,直接拿来用就行了。但在一些核心逻辑是由c来完成的项目里,就需要结合c和python来做GUI程序。c+python做GUI程序是有点麻烦的。通常采用的是exte...

weixin_39784774的博客 1215

Cleo Synchronization接口任意文件读取漏洞CVE-2024-50623 附POC

微信公众号搜索:南风漏洞复现文库该文章 南风漏洞复现文库 公众号首发Cleo。

nnn2188185的博客 481

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

用c++和python写GUI程序(python嵌入方式)

用python写GUI相比C++好处多多:语法简洁灵活,不用编译,自动垃圾回收,等等。很让我这个c++程序员眼红,自然要好好研究一下。 如果用纯python的方式很简单,qt或者wxwidget这个两个GUI库的python版本都已经很成熟,直接拿来用就行了。但在一些核心逻

某花 1888

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

python写gui、主体程序必须放进函数里吗_用c++和python写GUI程序(python嵌入方式)...

用python写GUI相比C++好处多多:语法简洁灵活,不用编译,自动垃圾回收,等等。很让我这个c++程序员眼红,自然要好好研究一下。如果用纯python的方式很简单,qt或者wxwidget这个两个GUI库的python版本都已经很成熟,直接拿来用就行了。但在一些核心逻辑是由c来完成的项目里,就需要结合c和python来做GUI程序。c+python做GUI程序是有点麻烦的。通常采用的是exte...

weixin_29599245的博客 337

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

谁说Python写GUI程序丑?那是你不会美化

在平时工作学习当中,我们经常会编写一些简单的 Python GUI 工具,以此来完成各种各样的自动化任务,比如批量处理文件,批量处理图片等等。当我们进行这些工具的编写之时,往往只关注了功能的实现,而忽略了页面的美化,这也使得在人们的眼中,Python 构建的 GUI 程序都是比较 low 的,今天我们先忽略掉功能,着眼于页面的美化,来看看纯 Python 的编写的 GUI 程序也可以很美观!......

sixqingfeng的博客 2275

python3GUI--200行代码写一个上课点名程序(附源码)

本次使用Tkinter开发了一款上课点名程序,此程序可以用于点名、抽奖…代码不到200行,程序简单又实用,主要有以下六个亮点:1.两种模式:①顺序点名②随机点名2.自动识别人名单3.支持手动导入人名单4.人名单导入校验5.人名显示位置自动矫正6.最多显示五个大字程序打包好了,点击Tk版本或者PyQt5版本获得同款软件,最后,祝大家逢考必过!思路、代码方面有什么不足欢迎各位大佬指正、批评!

懷淰メ的博客 1万+

python的gui界面怎么打开,python的gui界面程序爬虫

Python 使用 Tkinter 可以快速的创建 GUI 应用程序。Tkinter: Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 Windows 和 Macintosh 系统里。图形用户界面由窗口、下拉菜单、对话框及其相应的控制机制构成,在各种新式应用程序中都是标准化的,即相同的操作总是以同样的方式来完成,在图形用户界面,用户看到和操作的都是图形对象,应用的是计算机图形学的技术。

w12130826的博客 2011

python自带gui_Python语言自带的Tkinter写GUI小程序

本文主要向大家介绍了Python语言自带的Tkinter写GUI小程序,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。学了一点点python基础语法,就斗胆用它加上一些文件读写的module,写了几个文件处理的程序;但是需求又说:写个简单的GUI吧,用起来方便。目标:GUI实现点击选择文件按钮弹出windows的文件管理器,选取所需要的文件/文件夹将上述的路径显示出来点击运行按...

weixin_39816362的博客 183
上一篇: 《本杰明。富兰克林自传》读书摘要
下一篇: 对于正则表达式在Python中用法的几点思考
thy38
博客等级 码龄19年 184粉丝 116原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值