Windows时间悬浮窗程序,Tkinter和Pyinstaller开发,用python开发开源Windows程序,python软件开发入门(代码分析)

 本文介绍一个我个人基于python开发的一个时间悬浮窗(时间窗)开源Windows程序,带你入门python软件开发,本文章是技术部分简单讲解。如果想查看这个项目的功能和展示,请移步这个博客

下载程序:Github Release(建议下载到某一个文件夹内而不是桌面)

项目开源地址:Repo (求求给个star吧) 

欢迎大家来使用这个小程序,也欢迎大家通过这个项目学习怎么使用python开发Windows程序,也希望大家给我的项目点点star。


简述

Python 在很多领域都可以使用,开发 Windows 桌面应用程序也不例外。Tkinter 是 Python 的标准 GUI(图形用户界面)库,它提供了创建简单桌面应用程序所需的工具。而 PyInstaller 则是一个强大的工具,可以将 Python 脚本打包成独立的可执行文件,方便在 Windows 系统上分发和运行。本文将通过一个示例代码,详细介绍如何使用 Python 和 Tkinter 开发 Windows 程序,并使用 PyInstaller 进行打包。

简单来说,就是Tkinter负责所有的交互逻辑和界面展示,Pyinstaller负责将所有的代码生成成exe文件,可以直接运行。

所有内容开始前肯定是安装依赖:

本项目使用了 `Tkinter`(Python自带)。如果你的Python版本不包含 `Tkinter`,你可以使用以下命令安装:

pip install python-tk

接下来安装 `pyinstaller`:

pip install pyinstaller

Tkinter

Tkinter的代码相对简单,因此通过一些简单的例子来讲解一些基础内容:

主窗口与顶级窗口

在 Tkinter 中,每个应用程序都有一个主窗口(Tk 对象),它是所有其他窗口和控件的父级。顶级窗口(Toplevel)是独立于主窗口的窗口,可以用来创建额外的窗口,例如设置窗口或对话框。

在示例代码中,主窗口被隐藏(self.root.withdraw()),而浮动时钟窗口则通过 Toplevel 创建:

self.root = tk.Tk()
self.root.withdraw()
self.floating_window = tk.Toplevel(self.root)

这种方式允许我们创建一个独立的浮动窗口,而不显示主窗口。

控件(Widgets)

Tkinter 提供了多种控件,用于构建用户界面。常见的控件包括:

  • Label(标签):用于显示文本或图片。项目中的时间显示通过 Label 实现:

    self.time_label = tk.Label(self.floating_window, text="", font=("Consolas", 17), bg="#000000", fg="#FFFFFF")
  • Button(按钮):用于触发事件。项目中的锁定按钮和关闭按钮都是通过 Button 创建的:

    self.pin_button = tk.Button(self.floating_window, text="🔓", command=self.toggle_lock)
  • Entry(输入框)Combobox(下拉框):用于用户输入。项目中的设置窗口使用了 EntryCombobox 来让用户调整字体大小、窗口透明度等设置。

  • 除此之外还有滑动条等,可以查看项目源代码查看所有的触法控件

布局管理

Tkinter 提供了多种布局管理器,用于控制控件的排列方式。常见的布局管理器包括:

  • pack:自动将控件排列到窗口中,适合简单的布局。

  • grid:基于网格的布局,适合复杂的表格式排列。

  • place:通过坐标定位控件,适合需要精确控制位置的场景。

在本项目中中,pack 被用于将时间标签填充到浮动窗口中:

self.time_label.pack(fill="both", expand=True)

place 则用于将按钮放置在窗口的特定位置:

self.pin_button.place(relx=0.05, rely=0.05, anchor="nw")

事件绑定

Tkinter 支持事件驱动编程,可以通过绑定事件(如鼠标点击、键盘输入)来触发回调函数。以本项目代码为例,鼠标拖动事件被绑定到窗口上,用于实现窗口的可移动性:

self.floating_window.bind("<Button-1>", self.drag_start)
self.floating_window.bind("<B1-Motion>", self.drag_move)

当用户点击并拖动窗口时,drag_startdrag_move 方法会被调用,从而更新窗口的位置。

主题与样式

Tkinter 的 ttk 模块提供了更现代的控件样式,支持主题和样式定制。在本项目代码中,ttk 被用于创建设置窗口中的滚动条和下拉框:

sb = ttk.Scrollbar(cf, orient="vertical", command=cv.yview)
combo_lang = ttk.Combobox(frm, values=self.available_languages, state="readonly")

Pyinstaller

Pyinstaller非常易用,以本项目为例,在终端使用以下命令创建可执行文件:

pyinstaller --onefile --noconsole --icon=images/icon.ico --name TimeWindow .\Time_Floating_Window.py

PyInstaller 参数介绍:

  • --onefile:将所有文件打包成一个单独的可执行文件。
  • --noconsole:不显示控制台窗口(对于GUI应用很有用)。
  • --icon:指定应用程序图标。
  • --name:指定生成的可执行文件的名称。

可执行文件(.exe)将位于 dist 文件夹内。

为项目做贡献

如果你有任何新功能的想法,或者打算提出更多功能意见,或者打算提供更多翻译语言的版本,欢迎联系作者,或者前往github提出issue或者直接提交pull request。

在代码中,翻译模块已经被独立了出来,如果你会更多的语言,你可以直接fork本项目,之后在translation.py中增加更多语言,之后提出pull request即可。


作者的其他有趣文章:

保姆级教程,完全从零搭建简单个人网站(免费,无需服务器无需域名)个人博客网站,个人简历网站模板-CSDN博客

适合初学者的Transformer介绍(通俗易懂),含pytorch代码_transformer入门介绍-CSDN博客

一个基于PVT(Pyramid Vision Transformer)的视频插帧程序(pytorch)_pvt v2处理视频-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值