纯净、安全、绿色的下载网站

首页|软件分类|下载排行|最新软件|IT学院

当前位置:首页IT学院IT技术

Python 设计办公工具 Python实战之设计一个多功能办公小工具

编程简单学   2021-12-02 我要评论
想了解Python实战之设计一个多功能办公小工具的相关内容吗编程简单学在本文为您仔细讲解Python设计办公工具的相关知识和一些Code实例欢迎阅读和指正我们先划重点:Python设计工具,Python设计办公工具下面大家一起来学习吧

UI排版布局

主页通过分页栏来划分不同的界面以及窗体最小化最大化关闭功能

应用、网页直达页由简单的按钮组成前后对正、左右标齐

天气查询栏有简单的“按钮、输入框、标签框”组成

界面美化方面采用的是“插画”的元素因为放入一整张照片不仅会填充整个界面而且也很不好看

图形界面的设计思想

图形界面我采用的是Python自带的tkinter库我认为图形界面的学习并不是难的当你熟练之后你就会发现他就是一个“窗口+部件+函数”的一个流程窗口为我们进一步的设计提供好“容器”部件为我们所实现的功能打下“基础”而函数则是我们通过按钮的触发所实现的“功能”

实现步骤

界面布局

from tkinter import *
from tkinter import messagebox
from tkinter import ttk
import os
import webbrowser
import urllib.request   #发送网络请求获取数据
import gzip             #压缩和解压缩模块
import json             #解析获得的数据
import tkinter as tk
import random
from PIL import Image, ImageTk
import glob
import shutil
 
TOP6 = Tk()
TOP6.geometry("630x775")
 
TOP6.iconbitmap('宁宁图标工具.ico')#指定图标
 
TOP6.title('宁宁小助手')
 
 
 
tab_main=ttk.Notebook(TOP6)#创建分页栏
tab_main.place(relx=0, rely=0, width=630, height=774)
 
tab1=Frame(tab_main,width=400, height=300)#创建第一页框架
 
 
 
tab1.place(x=0,y=30)
tab_main.add(tab1,text='学习⚡通讯')#将第一页插入分页栏中
 
image1 = Image.open('Card Payment_Outline(1).png')
pyt1 = ImageTk.PhotoImage(image1)
label2 = Label(tab1, image=pyt1)
label2.place(x=0,y=500)
 
 
image2 = Image.open('CPU_Two Color.png')
pyt2 = ImageTk.PhotoImage(image2)
label2 = Label(tab1, image=pyt2)
label2.place(x=200,y=100)
 
image3 = Image.open('AR_Outline.png')
pyt3 = ImageTk.PhotoImage(image3)
label2 = Label(tab1, image=pyt3)
label2.place(x=0,y=0)
 
BUTTON = Button(tab1, fg='black',bd=5, text="ℒQQ",width = 20,command = QQ,
                    font=("黑体", 14))
BUTTON.grid(row=5, column=0, sticky=W)
BUTTON.place(x=30,y=50)
 
BUTTON = Button(tab1, bd=5,  fg='black',text="ℒ微信",width = 20,command = WeChat,
                    font=("黑体", 14))
BUTTON.grid(row=5, column=0, sticky=W)
BUTTON.place(x=380,y=50)
 
 
 
BUTTON = Button(tab1, fg='black', bd=5, text="✎AE",width = 10,command = AE,
                    font=("黑体", 14))
BUTTON.grid(row=5, column=0, sticky=W)
BUTTON.place(x=450,y=200)
 
BUTTON = Button(tab1, fg='black', bd=5, text="✎PR",width = 10,command = PR,
                    font=("黑体", 14))
BUTTON.grid(row=5, column=0, sticky=W)
BUTTON.place(x=250,y=200)
 
BUTTON = Button(tab1, fg='black', bd=5, text="✎剪映",width = 10,command = jian_ying,
                    font=("黑体", 14))
BUTTON.grid(row=5, column=0, sticky=W)
BUTTON.place(x=50,y=200)
 
 
BUTTON = Button(tab1, fg='black', bd=5, text="✎WPS",width = 10,command = WPS,
                    font=("黑体", 14))
BUTTON.grid(row=5, column=0, sticky=W)
BUTTON.place(x=50,y=280)
 
BUTTON = Button(tab1, fg='black', bd=5, text="✎剪映",width = 10,command = jian_ying,
                    font=("黑体", 14))
BUTTON.grid(row=5, column=0, sticky=W)
BUTTON.place(x=250,y=280)
 
BUTTON = Button(tab1, fg='black', bd=5, text="✎百度网盘",width = 10,command = wangpan,
                    font=("黑体", 14))
BUTTON.grid(row=5, column=0, sticky=W)
BUTTON.place(x=250,y=280)
 
BUTTON = Button(tab1, fg='black', bd=5, text="✎BiBili",width = 10,command = bili,
                    font=("黑体", 14))
BUTTON.grid(row=5, column=0, sticky=W)
BUTTON.place(x=450,y=280)
 
BUTTON = Button(tab1, fg='black', bd=5, text="✎百度C一下",width = 10,command = baidu,
                    font=("黑体", 14))
BUTTON.grid(row=5, column=0, sticky=W)
BUTTON.place(x=250,y=360)
 
BUTTON = Button(tab1, fg='black', bd=5, text="✎学习通",width = 10,command = xue_tong,
                    font=("黑体", 14))
BUTTON.grid(row=5, column=0, sticky=W)
BUTTON.place(x=50,y=360)
 
BUTTON = Button(tab1, fg='black', bd=5, text="✎湘大教育",width = 10,command = xiangda,
                    font=("黑体", 14))
BUTTON.grid(row=5, column=0, sticky=W)
BUTTON.place(x=450,y=360)
 
 
 
BUTTON = Button(tab1, fg='black', bd=5, text="QQ游戏",width = 10,
                    font=("黑体", 14))
BUTTON.grid(row=5, column=0, sticky=W)
BUTTON.place(x=250,y=500)
 
BUTTON = Button(tab1, fg='black', bd=5, text="网易云音乐",width = 10,
                    font=("黑体", 14))
BUTTON.grid(row=5, column=0, sticky=W)
BUTTON.place(x=50,y=500)
 
BUTTON = Button(tab1, fg='black', bd=5, text="腾讯视屏",width = 10,
                    font=("黑体", 14))
BUTTON.grid(row=5, column=0, sticky=W)
BUTTON.place(x=450,y=500)
 
BUTTON = Button(tab1, fg='black', bd=5, text="爱奇艺",width = 10,
                    font=("黑体", 14))
BUTTON.grid(row=5, column=0, sticky=W)
BUTTON.place(x=250,y=570)
 
tab2=Frame(tab_main)
tab2.place(x=100,y=30)
tab_main.add(tab2,text='天气❤助手')
 
image4 = Image.open('Weather_Isometric.png')
pyt4 = ImageTk.PhotoImage(image4)
label2 = Label(tab2, image=pyt4)
label2.place(x=0,y=0)
 
size_str=StringVar()
habits = tk.LabelFrame(tab2, text="相比于蓝天我更想选择阳菜", padx=0, pady=0 )  # 水平垂直方向上的边距均为 10
habits.place(x=45,y=450)
habits_Window = Label(habits,textvariable=size_str, width=60, height=15,  font=('楷体', 13))
habits_Window.grid()
 
label1 = StringVar()
input_name = Label(tab2, text='☼☁❅请输入您想要查询的城市☼☁❅', font=('楷体', 14)).place(x=160, y=20)
entry = Entry(tab2, bg='#ffffff', width=20, textvariable=label1, font=('楷体', 13)).place(x=223, y=72)
 
right_data_button = Button(tab2,fg='#696969', text="C一下",width = 10,command = show_data, font=('黑体', 13)).place(x=260, y=125)
 
tab3=Frame(tab_main)
tab3.place(x=200,y=30)
tab_main.add(tab3,text='文件✪整理')
BUTTON = Button(tab3, fg='#696969', bd=5, text="桌面端文件整理",width = 20,command = zhengli,
                    font=("黑体", 14))
BUTTON.grid(row=5, column=0, sticky=W)
BUTTON.place(x=200,y=50)
 
TOP6.mainloop()

 

“直达”函数

- 应用直达

def QQ():
    def open_app(app_dir):
        os.startfile(app_dir)
    if __name__ == "__main__":
        app_dir = r'"C:\Program Files (x86)\Tencent\QQ\Bin\QQScLauncher.exe"'
        open_app(app_dir)

只需要替换“app_dir = '链接”中的链接即可下面我给大家梳理一下如何获取本机应用的目标位置

首先左键点击应用“属性”找到“快捷方式”一栏中的“目标”将路径完整粘贴下来即可

- 网页直达

def xue_tong():
    webbrowser.open('http://passport2.chaoxing.com/login?fid=&newversion=true&refer=http%3A%2F%2Fi.chaoxing.com')

只需要替换“ webbrowser.open()中的链接即可

“天气”函数

“相比于蓝天我更想选择阳菜”

def show_data():#显示数据
 
    my_heart=['能遇见你真是太好了','不管晴天还是雨天我只是想和你相遇','我只是想再一次的见到你啊','无论你在哪里我一定拼尽全力去见你','我从来不知道渴望蓝天的人居然有那么多','100%的晴天女孩?','那年夏天在那个天空之上的我们'+'\n\n'+'  把这个世界的样貌彻底的改变了','天气真的是很不可思议光只是天空的模样就让人感动不已','你找到了我存在的意义谢谢你;生活不是一帆风顺'+'\n\n'+'总有磨难在前阻挡我们要学会坚强努力活在这个世界中'+'\n\n'+'遇见了你我有了依靠明白了存在的价值谢谢你的陪伴!','有时天边有黑云而且云片很厚'+'\n\n'+'太阳出来人眼还看不见然而太阳在黑云里放射的光芒'+'\n\n'+'透过黑云的重围提黑云镶了一道发光的金边'+'\n\n'+'后来太阳才慢慢地冲出重围出现在天空'+'\n\n'+'甚至把黑云也染成了紫色或者红色'+'\n\n'+'这时候发光的不仅是太阳云和海水连我自己也成了明亮的了']
    index= random.randint(0,len(my_heart)-1)
 
    size_content = my_heart[index]
    size_str.set(size_content)
 
 
 
 
 
    city_name1 = get_city_name1()
    url1 = 'http://wthrcdn.etouch.cn/weather_mini?city='+urllib.parse.quote(city_name1)
    url2 = 'http://wthrcdn.etouch.cn/weather_mini?citykey=101010100'
    #网址1只需要输入城市名网址2需要输入城市代码
    #print(url1)
    weather_data = urllib.request.urlopen(url1).read()
    #读取网页数据
    weather_data = gzip.decompress(weather_data).decode('utf-8')
    #解压网页数据
    weather_dict = json.loads(weather_data)
    #将json数据转换为dict数据
    if weather_dict.get('desc') == 'invilad-citykey':
        print(messagebox.askokcancel("提示","你输入的城市名有误或者天气中心未收录你所在城市"))
    else:
        forecast = weather_dict.get('data').get('forecast')#获取数据块
        root1=Tk()#副窗口
        root1.iconbitmap('宁宁图标工具.ico')#指定图标
        root1.geometry('650x280')#修改窗口大小
        root1.title(city_name1 + '天气状况')#副窗口标题
 
        #设置日期列表
        for i in range(5):#将每一天的数据放入列表中
            LANGS = [(forecast[i].get('date'),'日期'),
                        (forecast[i].get('fengxiang'),'风向'),
                        (str(forecast[i].get('fengji')),'风级'),
                        (forecast[i].get('high'),'最高温'),
                        (forecast[i].get('low'),'最低温'),
                        (forecast[i].get('type'),'天气')]
            group = LabelFrame(root1,text = '天气状况',padx = 0,pady = 0)#框架
            group.pack(padx=11,pady=0,side = LEFT)#放置框架
            for lang, value in LANGS:#将数据放入框架中
                c = Label(group,text = value + ': ' + lang)
                c.pack(anchor = W)
        Label(root1,text = '今日' + weather_dict.get('data').get('ganmao'),
                fg = 'green').place(x=40,y=20,height=40)#温馨提示
        Label(root1,text = "天气因你逆转,世界因你天晴",fg = "green",bg = "yellow").place(x=10,y=255,width=160,height=20)
 
        root1.mainloop()

通过random函数实现随机文案的选择

 my_heart=['能遇见你真是太好了','不管晴天还是雨天我只是想和你相遇','我只是想再一次的见到你啊','无论你在哪里我一定拼尽全力去见你','我从来不知道渴望蓝天的人居然有那么多','100%的晴天女孩?','那年夏天在那个天空之上的我们'+'\n\n'+'  把这个世界的样貌彻底的改变了','天气真的是很不可思议光只是天空的模样就让人感动不已','你找到了我存在的意义谢谢你;生活不是一帆风顺'+'\n\n'+'总有磨难在前阻挡我们要学会坚强努力活在这个世界中'+'\n\n'+'遇见了你我有了依靠明白了存在的价值谢谢你的陪伴!','有时天边有黑云而且云片很厚'+'\n\n'+'太阳出来人眼还看不见然而太阳在黑云里放射的光芒'+'\n\n'+'透过黑云的重围提黑云镶了一道发光的金边'+'\n\n'+'后来太阳才慢慢地冲出重围出现在天空'+'\n\n'+'甚至把黑云也染成了紫色或者红色'+'\n\n'+'这时候发光的不仅是太阳云和海水连我自己也成了明亮的了']
    index= random.randint(0,len(my_heart)-1)
 
    size_content = my_heart[index]
    size_str.set(size_content)


相关文章

猜您喜欢

  • HTTP协议详解 详细讲解HTTP协议工作方式

    想了解详细讲解HTTP协议工作方式的相关内容吗爱文飞翔在本文为您仔细讲解HTTP协议详解的相关知识和一些Code实例欢迎阅读和指正我们先划重点:Http,协议下面大家一起来学习吧..
  • Navicat行数不一致 聊聊Navicat统计的行数竟然和表实际行数不一致的问题

    想了解聊聊Navicat统计的行数竟然和表实际行数不一致的问题的相关内容吗Coder小明在本文为您仔细讲解Navicat行数不一致的相关知识和一些Code实例欢迎阅读和指正我们先划重点:Navicat行数不一致,Navicat行数下面大家一起来学习吧..

网友评论

Copyright 2020 www.eleasoftware.com 【绿软下载站】 版权所有 软件发布

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 点此查看联系方式