<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python圖形用戶界GUI大解密(下篇)

          共 5770字,需瀏覽 12分鐘

           ·

          2021-06-04 20:17

          點(diǎn)擊上方“Python爬蟲與數(shù)據(jù)挖掘”,進(jìn)行關(guān)注

          回復(fù)“書籍”即可獲贈(zèng)Python從入門到進(jìn)階共10本電子書

          君不見吳中張翰稱達(dá)生,秋風(fēng)忽憶江東行。

          上篇文章我們主要介紹了tkinter的安裝、基本部件、下拉菜單、畫布等內(nèi)容,Python圖形用戶界GUI大解密(上篇),這篇文章緊接著上篇文章繼續(xù)圍繞tkinter知識(shí)進(jìn)行展開。

          十、框架

          又稱窗口,它是在原先的基礎(chǔ)上又創(chuàng)建一個(gè)窗口,一般課用于多個(gè)窗戶交互,如聊天,打游戲,我們來(lái)看下:

          fm = tk.Frame(root)  #在root上創(chuàng)建一個(gè)framefm.pack() #添加進(jìn)去 #在剛剛創(chuàng)建的frame上創(chuàng)建兩個(gè)framef1= tk.Frame(fm)f2= tk.Frame(fm) #添加部件f1.pack()f2.pack()
          分別給兩個(gè)frame添加兩個(gè)部件并且顏色不同,以便于區(qū)分tk.Label(f1, text='標(biāo)簽一', bg='green').pack()tk.Button(f1, text='按鈕一', bg='green').pack()tk.Label(f2, text='標(biāo)簽二', bg='red').pack()tk.Button(f2, text='按鈕二', bg='red').pack()

          我們可以簡(jiǎn)單的理解為在主窗口中放置了一個(gè)父窗口,然后這個(gè)父窗口又增添了兩個(gè)子窗口,每個(gè)子窗口都創(chuàng)建了兩個(gè)部件。這個(gè)部件在我們進(jìn)行交互時(shí)還是挺有用的。


          十一、彈窗,輸入

          1.messagebox

          接下來(lái)我們要說的就是彈窗了,我們一般需要提示的地方都需要窗口,還有確認(rèn)返回什么的,下面來(lái)看看:

          要想正常使用這些功能,我們需要先引入一個(gè)模塊messagebox(消息盒子),彈窗我們可以把它分為以下幾種:

          注意先必須導(dǎo)入messagebox:

          from tkinter  import messagebox
          1.提示信息
          messagebox.showinfo(title='提示',message='你需要這么做')
          2.警告
          messagebox.showwarning(title='警告',message='你不能這么做')
          3.錯(cuò)誤
          messagebox.showerror(title='錯(cuò)誤',message='你做錯(cuò)了')

          前面幾個(gè)都是提示彈窗,下面介紹集中與用戶交互,可以讓用戶選擇的彈窗:


          4.詢問選擇
          messagebox.askquestion(title='選擇',message='你是否這樣做')
          5.確定或取消
          messagebox.askokcancel(title='選擇',message='你是否這樣做')
          6.是,否
          messagebox.askyesno(title='選擇',message='你是否這樣做')
          7.重試,取消
          messagebox.askretrycancel(title='選擇',message='你是否這樣做')

          若是你想把這所有的類型集中到一個(gè)函數(shù)中設(shè)置了,也有,它就是_show()函數(shù),用法如下:

          messagebox._show函數(shù)的控制參數(shù):default         消息框按鈕icon            消息框圖標(biāo)message        消息框所顯示的消息parent          消息框的父組件title           標(biāo)題type            類型

          2.simpledialog

          為了提高用戶的交互,我們需要設(shè)置一些方框供用戶選擇,simpledialog是你必不可少的,來(lái)看下:

          導(dǎo)入模塊:

          from tkinter import simpledialog

          simpledialog提供三種類型輸入,即字符串  整數(shù)  浮點(diǎn)。我們來(lái)寫下:

          simpledialog.askinteger(title='顯示',prompt='輸入',initialvalue='12')

          總體來(lái)說相當(dāng)簡(jiǎn)單,沒什么可說的。


          十二、文件對(duì)話框

          用于打開文件對(duì)話框,選擇文件或者文件夾,下面看看它有哪些用法吧:

          首先我們先導(dǎo)入選擇文件模塊:

          from tkinter import filedialog

          1.返回文件名

          filedialog.askopenfilename()

          2.返回文件流對(duì)象

          filedialog.askopenfile()

          3.返回多個(gè)文件流對(duì)象

          filedialog.askopenfiles()

          4.返回多個(gè)文件名對(duì)象

          filedialog.askopenfilenames()

          5.返回目錄名

          filedialog.askdirectory()

          6.返回文件流并創(chuàng)建文件

          filedialog.asksaveasfile()

          7.返回文件名保存

          filedialog.asksaveasfilename()

          8.打開文件對(duì)話框顯示當(dāng)前目錄所有文件文件夾

          filedialog.LoadFileDialog(root).go()

          9.保存文件對(duì)話框

          filedialog.SaveFileDialog(root).go()


          十三、樹型列表

          它就好像一棵樹一樣,將它的子元素包裹在里面,同樣它的模塊也是在ttk里面,請(qǐng)看:

          from tkinter import ttkt = ttk.Treeview(root)  #加載樹型控件t.pack()n=t.insert('',0,text="hello",values=("1")) #插入一個(gè)值到控件中n1=t.insert(n,1,text="cq",values=("2"))  #插入一個(gè)屬于它的子元素也就是二級(jí)元素n2=t.insert(n,1,text="sc",values=("2"))t.insert(n1,2,text='fd',values=("3"))  #插入一個(gè)屬于它的三級(jí)元素t.insert(n1,2,text='we',values=("3"))t.insert(n2,2,text='1',values=("3"))t.insert(n2,2,text='2',values=("3"))

          就這樣可以一直循環(huán)插入,這樣就方便咱們列出大型項(xiàng)目的目錄了,你比如說磁盤目錄就可以用這個(gè)。


          十四、顏色對(duì)話框

          選擇顏色時(shí)使用,豐富的色彩可以讓你處理圖片畫圖,非常好用:

          from tkinter  import colorchooser #導(dǎo)入模塊colorchooser.askcolor() #打開顏色選擇對(duì)話框

          十五、組件排版

          基本上所有的組件我們都介紹完了,相信大家通過對(duì)這章的學(xué)習(xí)應(yīng)該對(duì)tkinter有了個(gè)深入的了解。

          除了組件的用法之外,最重要的莫過于組件的排版了,下面我們來(lái)說一下,如何讓組件放對(duì)位置。

          組件有三種排列方式:pack   grid    place.

          1.pack

          它是按照上下左右的方式來(lái)排列的,例如:

          tk.Label(root, text='1').pack(side='top')#上tk.Label(root, text='2').pack(side='bottom')#下tk.Label(root, text='3').pack(side='left')#左tk.Label(root, text='4').pack(side='right')#右

          而且它還可以設(shè)置組件填充方式,如:

          tk.Label(root, text='1').pack(fill='y')    #垂直填充tk.Label(root, text='2').pack(fill='x')    #水平填充tk.Label(root, text='3').pack(fill='both') #水平垂直填充tk.Label(root, text='4').pack(fill='none') #不填

          2.grid

          它是一種網(wǎng)格布局,劃分為幾行幾列的樣子。所以它一般就是設(shè)置行,列。例如:

          tk.Label(root, text='1').grid(row=3, column=3)#第三行第三列插入一個(gè)1

          還可以設(shè)置組件所跨越的行列數(shù)和內(nèi)外部間隔距離:

          tk.Label(root, text='1').grid(row=3, column=3,rowspan=3,ipadx=6)#跨3行單元格距離6tk.Label(root, text='2').grid(row=4, column=4,columnspa=3,pady=8)#跨3列邊框距離


          3.place

          這是一種最簡(jiǎn)單靈活的布局,使用組件坐標(biāo)來(lái)放置組件的位置。

          tk.Label(root,text='43').place(x=100,y=200,width=10,height=5) #距離左邊100,上邊200寬高為10X5


          十六、鼠標(biāo)鍵盤事件

          講完布局接著該說說最重要的東西了,綁定事件,沒有這個(gè)東西組件都是沒有靈魂的。我總結(jié)了以下幾點(diǎn):

          bind(sequence,func,add)bind_class(className,sequence,func,add)bind_all(sequence,func,add)事件參數(shù):  sequence              所綁定的事件;如‘<Control-n>’寓意為ctrl+N鍵 或者<Button-3> 右鍵func                   所綁定的事件處理函數(shù);add                    可選參數(shù),為空字符或‘+’;className             所綁定的類;

          鼠標(biāo)鍵盤事件 <Button-1>    鼠標(biāo)左鍵按下,2表示中鍵,3表示右鍵; <ButtonPress-1>   同上; <ButtonRelease-1>    鼠標(biāo)左鍵釋放; <B1-Motion>    按住鼠標(biāo)左鍵移動(dòng); <Double-Button-1>    雙擊左鍵; <Enter>    鼠標(biāo)指針進(jìn)入某一組件區(qū)域; <Leave>    鼠標(biāo)指針離開某一組件區(qū)域; <MouseWheel>      滾動(dòng)滾輪; <KeyPress-A>       按下A鍵,A可用其它鍵替代; <Alt-KeyPress-A>    同時(shí)按下alt和A;alt可用ctrl和shift替代; <Double-KeyPress-A>   快速按兩下A; <Lock-KeyPress-A>    大寫狀態(tài)下按A; 窗口事件 Activate      當(dāng)組件由不可用轉(zhuǎn)為可用時(shí)觸發(fā); Configure      當(dāng)組件大小改變時(shí)觸發(fā); Deactivate       當(dāng)組件由可用轉(zhuǎn)變?yōu)椴豢捎脮r(shí)觸發(fā); Destroy      當(dāng)組件被銷毀時(shí)觸發(fā); Expose      當(dāng)組件從被遮擋狀態(tài)中暴露出來(lái)時(shí)觸發(fā); Unmap       當(dāng)組件由顯示狀態(tài)變?yōu)殡[藏狀態(tài)時(shí)觸發(fā); Map      當(dāng)組件由隱藏狀態(tài)變?yōu)轱@示狀態(tài)時(shí)觸發(fā); FocusIn       當(dāng)組件獲得焦點(diǎn)時(shí)觸發(fā); FocusOut       當(dāng)組件失去焦點(diǎn)時(shí)觸發(fā); Property      當(dāng)窗體的屬性被刪除或改變時(shí)觸發(fā);    Visibility           當(dāng)組件變?yōu)榭梢暊顟B(tài)時(shí)觸發(fā);
          響應(yīng)事件event對(duì)象(def function(event)): char        按鍵字符,僅對(duì)鍵盤事件有效; keycode         按鍵名,僅對(duì)鍵盤事件有效; keysym         按鍵編碼,僅對(duì)鍵盤事件有效; num       鼠標(biāo)按鍵,僅對(duì)鼠標(biāo)事件有效; type      所觸發(fā)的事件類型; widget      引起事件的組件; width,heigh       組件改變后的大小,僅Configure有效; x,y         鼠標(biāo)當(dāng)前位置,相對(duì)于窗口; x_root,y_root       鼠標(biāo)當(dāng)前位置,相對(duì)于整個(gè)屏幕

          好了,以上就是我學(xué)習(xí)tkinter所總結(jié)的所有知識(shí)點(diǎn),可能還有部分地方未補(bǔ)充清楚,希望大家多多指正。

          ------------------- End -------------------

          往期精彩文章推薦:

          歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持

          想加入Python學(xué)習(xí)群請(qǐng)?jiān)诤笈_(tái)回復(fù)【入群

          萬(wàn)水千山總是情,點(diǎn)個(gè)【在看】行不行

          /今日留言主題/

          隨便說一兩句吧~~

          瀏覽 71
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产视频中文字幕 | 国产成人自拍在线观看 | 国产三级视频在线播放 | 亚洲中文字幕观看 | 欧美日批网|