Python實(shí)戰(zhàn)之設(shè)計(jì)一個(gè)多功能辦公小工具
UI排版布局
主頁(yè)通過(guò)分頁(yè)欄來(lái)劃分不同的界面,以及窗體最小化,最大化,關(guān)閉功能。
應(yīng)用、網(wǎng)頁(yè)直達(dá)頁(yè)由簡(jiǎn)單的按鈕組成,前后對(duì)正、左右標(biāo)齊。
天氣查詢欄,有簡(jiǎn)單的“按鈕、輸入框、標(biāo)簽框”組成。
界面美化方面采用的是“插畫”的元素,因?yàn)榉湃胍徽麖堈掌粌H會(huì)填充整個(gè)界面,而且也很不好看。
圖形界面的設(shè)計(jì)思想
圖形界面我采用的是Python自帶的tkinter庫(kù),我認(rèn)為圖形界面的學(xué)習(xí)并不是難的,當(dāng)你熟練之后,你就會(huì)發(fā)現(xiàn),他就是一個(gè)“窗口+部件+函數(shù)”的一個(gè)流程,窗口為我們進(jìn)一步的設(shè)計(jì)提供好“容器”,部件為我們所實(shí)現(xiàn)的功能打下“基礎(chǔ)”,而函數(shù)則是我們通過(guò)按鈕的觸發(fā)所實(shí)現(xiàn)的“功能”。
實(shí)現(xiàn)步驟
界面布局
from tkinter import * from tkinter import messagebox from tkinter import ttk import os import webbrowser import urllib.request #發(fā)送網(wǎng)絡(luò)請(qǐng)求,獲取數(shù)據(jù) import gzip #壓縮和解壓縮模塊 import json #解析獲得的數(shù)據(jù) import tkinter as tk import random from PIL import Image, ImageTk import glob import shutil TOP6 = Tk() TOP6.geometry("630x775") TOP6.iconbitmap('寧寧圖標(biāo)工具.ico')#指定圖標(biāo) TOP6.title('寧寧小助手') tab_main=ttk.Notebook(TOP6)#創(chuàng)建分頁(yè)欄 tab_main.place(relx=0, rely=0, width=630, height=774) tab1=Frame(tab_main,width=400, height=300)#創(chuàng)建第一頁(yè)框架 tab1.place(x=0,y=30) tab_main.add(tab1,text='學(xué)習(xí)?通訊')#將第一頁(yè)插入分頁(yè)欄中 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="?百度網(wǎng)盤",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="?學(xué)習(xí)通",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="網(wǎng)易云音樂(lè)",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="相比于藍(lán)天,我更想選擇陽(yáng)菜", 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='???請(qǐng)輸入您想要查詢的城市???', 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()
?
“直達(dá)”函數(shù)
- 應(yīng)用直達(dá)
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 = '鏈接”中的鏈接即可。下面我給大家梳理一下如何獲取本機(jī)應(yīng)用的目標(biāo)位置。
首先左鍵點(diǎn)擊應(yīng)用“屬性”,找到“快捷方式”一欄中的“目標(biāo)”,將路徑完整粘貼下來(lái)即可。
- 網(wǎng)頁(yè)直達(dá)
def xue_tong(): webbrowser.open('http://passport2.chaoxing.com/login?fid=&newversion=true&refer=http%3A%2F%2Fi.chaoxing.com')
只需要替換“ webbrowser.open()中的鏈接即可。
“天氣”函數(shù)
“相比于藍(lán)天,我更想選擇陽(yáng)菜”
def show_data():#顯示數(shù)據(jù) my_heart=['能遇見你真是太好了','不管晴天還是雨天,我只是想和你相遇','我只是想再一次的見到你啊','無(wú)論你在哪里,我一定拼盡全力去見你','我從來(lái)不知道,渴望藍(lán)天的人居然有那么多','100%的晴天女孩?','那年夏天,在那個(gè)天空之上的我們'+'\n\n'+' 把這個(gè)世界的樣貌,徹底的改變了。','天氣真的是很不可思議,光只是天空的模樣就讓人感動(dòng)不已。','你找到了我存在的意義,謝謝你;生活不是一帆風(fēng)順,'+'\n\n'+'總有磨難在前阻擋,我們要學(xué)會(huì)堅(jiān)強(qiáng)努力活在這個(gè)世界中,'+'\n\n'+'遇見了你我有了依靠明白了存在的價(jià)值,謝謝你的陪伴!','有時(shí)天邊有黑云,而且云片很厚,'+'\n\n'+'太陽(yáng)出來(lái),人眼還看不見,然而太陽(yáng)在黑云里放射的光芒,'+'\n\n'+'透過(guò)黑云的重圍,提黑云鑲了一道發(fā)光的金邊。'+'\n\n'+'后來(lái)太陽(yáng)才慢慢地沖出重圍,出現(xiàn)在天空,'+'\n\n'+'甚至把黑云也染成了紫色或者紅色,'+'\n\n'+'這時(shí)候發(fā)光的不僅是太陽(yáng),云和海水,連我自己也成了明亮的了。'] 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' #網(wǎng)址1只需要輸入城市名,網(wǎng)址2需要輸入城市代碼 #print(url1) weather_data = urllib.request.urlopen(url1).read() #讀取網(wǎng)頁(yè)數(shù)據(jù) weather_data = gzip.decompress(weather_data).decode('utf-8') #解壓網(wǎng)頁(yè)數(shù)據(jù) weather_dict = json.loads(weather_data) #將json數(shù)據(jù)轉(zhuǎn)換為dict數(shù)據(jù) if weather_dict.get('desc') == 'invilad-citykey': print(messagebox.askokcancel("提示","你輸入的城市名有誤,或者天氣中心未收錄你所在城市")) else: forecast = weather_dict.get('data').get('forecast')#獲取數(shù)據(jù)塊 root1=Tk()#副窗口 root1.iconbitmap('寧寧圖標(biāo)工具.ico')#指定圖標(biāo) root1.geometry('650x280')#修改窗口大小 root1.title(city_name1 + '天氣狀況')#副窗口標(biāo)題 #設(shè)置日期列表 for i in range(5):#將每一天的數(shù)據(jù)放入列表中 LANGS = [(forecast[i].get('date'),'日期'), (forecast[i].get('fengxiang'),'風(fēng)向'), (str(forecast[i].get('fengji')),'風(fēng)級(jí)'), (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:#將數(shù)據(jù)放入框架中 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 = "天氣因你逆轉(zhuǎn),世界因你天晴。",fg = "green",bg = "yellow").place(x=10,y=255,width=160,height=20) root1.mainloop()
通過(guò)random函數(shù)實(shí)現(xiàn)隨機(jī)文案的選擇
my_heart=['能遇見你真是太好了','不管晴天還是雨天,我只是想和你相遇','我只是想再一次的見到你啊','無(wú)論你在哪里,我一定拼盡全力去見你','我從來(lái)不知道,渴望藍(lán)天的人居然有那么多','100%的晴天女孩?','那年夏天,在那個(gè)天空之上的我們'+'\n\n'+' 把這個(gè)世界的樣貌,徹底的改變了。','天氣真的是很不可思議,光只是天空的模樣就讓人感動(dòng)不已。','你找到了我存在的意義,謝謝你;生活不是一帆風(fēng)順,'+'\n\n'+'總有磨難在前阻擋,我們要學(xué)會(huì)堅(jiān)強(qiáng)努力活在這個(gè)世界中,'+'\n\n'+'遇見了你我有了依靠明白了存在的價(jià)值,謝謝你的陪伴!','有時(shí)天邊有黑云,而且云片很厚,'+'\n\n'+'太陽(yáng)出來(lái),人眼還看不見,然而太陽(yáng)在黑云里放射的光芒,'+'\n\n'+'透過(guò)黑云的重圍,提黑云鑲了一道發(fā)光的金邊。'+'\n\n'+'后來(lái)太陽(yáng)才慢慢地沖出重圍,出現(xiàn)在天空,'+'\n\n'+'甚至把黑云也染成了紫色或者紅色,'+'\n\n'+'這時(shí)候發(fā)光的不僅是太陽(yáng),云和海水,連我自己也成了明亮的了。'] index= random.randint(0,len(my_heart)-1) size_content = my_heart[index] size_str.set(size_content)
到此這篇關(guān)于Python實(shí)戰(zhàn)之設(shè)計(jì)一個(gè)多功能辦公小工具的文章就介紹到這了,更多相關(guān)Python 設(shè)計(jì)辦公工具內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python下實(shí)現(xiàn)的RSA加密/解密及簽名/驗(yàn)證功能示例
這篇文章主要介紹了Python下實(shí)現(xiàn)的RSA加密/解密及簽名/驗(yàn)證功能,結(jié)合具體實(shí)例形式分析了Python中RSA加密、解密的實(shí)現(xiàn)方法及簽名、驗(yàn)證功能的使用技巧,需要的朋友可以參考下2017-07-07Python多線程threading和multiprocessing模塊實(shí)例解析
這篇文章主要介紹了Python多線程threading和multiprocessing模塊等相關(guān)內(nèi)容,分享了相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,這里分享給大家,需要的朋友可以參考下2018-01-01python中dot函數(shù)運(yùn)算過(guò)程總結(jié)
dot函數(shù)為numpy庫(kù)下的一個(gè)函數(shù),主要用于矩陣的乘法運(yùn)算,其中包括:向量?jī)?nèi)積、多維矩陣乘法和矩陣與向量的乘法,下面這篇文章主要給大家介紹了關(guān)于python中dot函數(shù)運(yùn)算過(guò)程的相關(guān)資料,需要的朋友可以參考下2022-09-09Python編程實(shí)現(xiàn)二分法和牛頓迭代法求平方根代碼
這篇文章主要介紹了Python編程實(shí)現(xiàn)二分法和牛頓迭代法求平方根代碼,具有一定參考價(jià)值,需要的朋友可以了解下。2017-12-12es+flask搜索小項(xiàng)目實(shí)現(xiàn)分頁(yè)+高亮的示例代碼
本文主要介紹了es+flask搜索小項(xiàng)目實(shí)現(xiàn)分頁(yè)+高亮的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01Python實(shí)現(xiàn)監(jiān)控一個(gè)程序的運(yùn)行情況
這篇文章主要為大家介紹了Python如何實(shí)現(xiàn)監(jiān)控一個(gè)程序的運(yùn)行情況,然后視情況將進(jìn)程殺死并重啟,文中的示例代碼簡(jiǎn)潔易懂,需要的可以參考一下2023-05-05Python 將 QQ 好友頭像生成祝福語(yǔ)的實(shí)現(xiàn)代碼
這篇文章主要介紹了用 Python 將 QQ 好友頭像生成祝福語(yǔ)的實(shí)現(xiàn)代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05python3多線程知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給各位分享的是關(guān)于python3多線程的相關(guān)知識(shí)點(diǎn)內(nèi)容,以后需要的朋友們可以參考下。2019-09-09Python繪圖庫(kù)Pyecharts可視化效果示例詳解
本文將帶您從零開始,逐步掌握使用Pyecharts庫(kù)進(jìn)行數(shù)據(jù)可視化的技能,Pyecharts是一個(gè)基于Echarts的Python可視化庫(kù),能夠輕松創(chuàng)建各種交互式圖表和地圖,無(wú)論您是數(shù)據(jù)分析新手還是有經(jīng)驗(yàn)的開發(fā)者,都能幫助您深入了解Pyecharts的使用2023-08-08