更新-Python OS

devtools/2024/10/9 1:10:16/

更新日志(2024-10-3  13:56):

  • 此次更新主要是将按钮替换为图片,在观感上会更好看一些
  • 增添修改名称【change_app_name】函数,用于修改应用名称

相关代码:

python">import os
import tkinter as tk
from tkinter import messagebox, simpledialog
from PIL import Image, ImageTkdef open_cumputer_app():print("打开此电脑")def attribute_cumputer_app():print("查看此电脑属性")def delete_cumputer_app():print("删除此电脑图标")def change_app_name():new_name = simpledialog.askstring("输入名称", "请输入新的名称:")if new_name:print(f"名称已更改为: {new_name}")# 如果需要更新界面上的名字,可以在这里进行操作name_label.config(text=new_name)def show_popup(menu, event):menu.post(event.x_root, event.y_root)def on_double_click_computer_button(event):open_cumputer_app()# 创建主窗口
root = tk.Tk()
root.title("Desktop Application")
root.geometry("800x600")# 获取当前文件所在目录
current_dir_file_data = os.path.dirname(__file__)# 加载此电脑图片
icon_width, icon_height = 64, 64  # 图标大小
computer_button_img = Image.open(os.path.join(current_dir_file_data,'data', "应用图标", "此电脑.jpg"))
computer_button_img = computer_button_img.resize((icon_width, icon_height), Image.LANCZOS)  # 调整图片大小
computer_button_image = ImageTk.PhotoImage(computer_button_img)# 创建一个 Frame 用于放置图片和应用名称
app_frame = tk.Frame(root)
app_frame.place(x=10, y=10)# 创建一个 Label 用于放置图片
image_label = tk.Label(app_frame, image=computer_button_image)
image_label.image = computer_button_image  # 保持对 PhotoImage 的引用,避免被垃圾回收
image_label.grid(row=0, column=0, sticky="nsew")# 创建一个 Label 用于显示应用名称
name_label = tk.Label(app_frame, text="此电脑", font=("Arial", 10))
name_label.grid(row=1, column=0, sticky="nsew")# 创建一个弹出菜单
menu_cumputer_app = tk.Menu(root, tearoff=0)  # 用于应用软件的右键菜单# 应用软件右键菜单项
menu_cumputer_app.add_command(label="打开", command=open_cumputer_app)
menu_cumputer_app.add_command(label="属性", command=attribute_cumputer_app)
menu_cumputer_app.add_separator()
menu_cumputer_app.add_command(label="删除", command=delete_cumputer_app)
menu_cumputer_app.add_command(label="修改名称", command=change_app_name)# 绑定右键点击事件
image_label.unbind("<Button-3>")  # 取消之前的绑定
image_label.bind("<Button-3>", lambda event: show_popup(menu_cumputer_app, event))  # 使用应用菜单
image_label.bind("<Double-Button-1>", on_double_click_computer_button)  # 绑定左键双击# 运行主循环
root.mainloop()

注:要在指定的路径下放置图片,不然会报错,后续会整理到源码中


http://www.ppmy.cn/devtools/121631.html

相关文章

[网络]NAT、代理服务、内网穿透、内网打洞

目录 一、NAT 1.1 NAT 技术背景 1.2 NAT IP 转换过程 1.3 NAPT&#xff08;Network Address Port Translation&#xff09; 1.地址转换表 2. NAPT&#xff08;网络地址端口转换Network Address Port Translation&#xff09; 3. NAT技术的缺陷 二、代理服务器 2.1 正向…

银从初级个人理财_26_第七章第六节

一、单选题 下列各项中不属于理财规划方案的执行原则的是()。 了解原则 诚信原则 实事求是 连续性原则 理财师向客户提供持续的信息反馈、建议和专业指导意见&#xff0c;所遵循的原则是()&#xff0c; 连续性原则 了解原则 实事求是原则 诚信原则 理财&#xff0c;…

27 基于51单片机的方向盘模拟系统

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于STC89C52单片机&#xff0c;采用两个MPX4115压力传感器作为两路压力到位开关电路&#xff0c; 采用滑动变阻器连接数模转换器模拟重力加速度传感器电路&#xff1b; 一个按键控制LED灯的点亮与…

向PHP传入参数的三种方法

向PHP传入参数是Web开发中常见的需求&#xff0c;它允许你的PHP脚本接收用户输入、处理数据并生成相应的输出。以下是三种主要的向PHP传入参数的方法&#xff0c;每种方法都有其特定的应用场景和优缺点。 方法一&#xff1a;通过URL参数&#xff08;GET请求&#xff09; 概述…

c++泛型编程

一、模板 template 1.1概念 C重模板可以让类或函数声明一种通用类型&#xff0c;使得函数或类中的某些成员变量或成员变量的参数、返回值在实际上的使用中可以是任何类型。 模板可以让程序员写出与类型无关的代码&#xff0c;是泛型编程的基础。 模板主要分为两种实现方式&…

10月2日笔记(内网资源探测篇)

内网资源探测 在内网渗透中&#xff0c;测试人员往往需要通过各种内网扫描技术来探测内网资源的情况&#xff0c;为后续的横向渗透做准备&#xff0c;通常需要发现内网存活的主机&#xff0c;并探测主机的操作系统、主机开放了哪些端口、端口上运行了哪些服务、服务的当前版本…

Docker搭建一款开源的文档管理系统

1.系统介绍 Wizard是一款开源的文档管理系统&#xff0c;它支持多种格式类型的文档管理&#xff0c;包括Markdown、Swagger和Table&#xff0c;以适应不同场景和需求下的文档管理需求。 1.1功能特点 开源免费&#xff1a;Wizard是一款完全免费的开源项目&#xff0c;用户可以…

详细介绍:API 和 SPI 的区别

文章目录 Java SPI (Service Provider Interface) 和 API (Application Programming Interface) 的区别详解目录1. 定义和目的1.1 API (Application Programming Interface)1.2 SPI (Service Provider Interface) 2. 使用场景2.1 API 的应用场景2.2 SPI 的应用场景 3. 加载和调…