自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

開發(fā) 后端
這篇文章緊接著上篇文章繼續(xù)圍繞tkinter知識進行展開。希望能夠幫助到你!

[[403616]]

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

十、框架

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

  1. fm = tk.Frame(root)  #在root上創(chuàng)建一個frame 
  2. fm.pack() #添加進去 
  3.   
  4. #在剛剛創(chuàng)建的frame上創(chuàng)建兩個frame 
  5. f1= tk.Frame(fm) 
  6. f2= tk.Frame(fm) 
  7.   
  8. #添加部件 
  9. f1.pack() 
  10. f2.pack() 
  11.  
  12. 分別給兩個frame添加兩個部件并且顏色不同,以便于區(qū)分 
  13. tk.Label(f1, text='標簽一', bg='green').pack() 
  14. tk.Button(f1, text='按鈕一', bg='green').pack() 
  15. tk.Label(f2, text='標簽二', bg='red').pack() 
  16. tk.Button(f2, text='按鈕二', bg='red').pack() 

 

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

十一、彈窗,輸入

1.messagebox

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

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

注意先必須導入messagebox:

  1. from tkinter  import messagebox 

1.提示信息

  1. messagebox.showinfo(title='提示',message='你需要這么做'

2.警告

  1. messagebox.showwarning(title='警告',message='你不能這么做'

3.錯誤

  1. messagebox.showerror(title='錯誤',message='你做錯了'

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

4.詢問選擇

  1. messagebox.askquestion(title='選擇',message='你是否這樣做'

5.確定或取消

  1. messagebox.askokcancel(title='選擇',message='你是否這樣做'

6.是,否

  1. messagebox.askyesno(title='選擇',message='你是否這樣做'

7.重試,取消

  1. messagebox.askretrycancel(title='選擇',message='你是否這樣做'

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

  1. messagebox._show函數(shù)的控制參數(shù): 
  2. default         消息框按鈕 
  3. icon            消息框圖標 
  4. message        消息框所顯示的消息 
  5. parent          消息框的父組件 
  6. title           標題 
  7. type            類型 

2.simpledialog

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

導入模塊:

  1. from tkinter import simpledialog 

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

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

總體來說相當簡單,沒什么可說的。

十二、文件對話框

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

首先我們先導入選擇文件模塊:

  1. from tkinter import filedialog 

1.返回文件名

  1. filedialog.askopenfilename() 

2.返回文件流對象

  1. filedialog.askopenfile() 

3.返回多個文件流對象

  1. filedialog.askopenfiles() 

4.返回多個文件名對象

  1. filedialog.askopenfilenames() 

5.返回目錄名

  1. filedialog.askdirectory() 

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

  1. filedialog.asksaveasfile() 

7.返回文件名保存

  1. filedialog.asksaveasfilename() 

8.打開文件對話框顯示當前目錄所有文件文件夾

  1. filedialog.LoadFileDialog(root).go() 

9.保存文件對話框

  1. filedialog.SaveFileDialog(root).go() 

十三、樹型列表

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

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

 

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

十四、顏色對話框

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

  1. from tkinter  import colorchooser #導入模塊 
  2. colorchooser.askcolor() #打開顏色選擇對話框 

十五、組件排版

基本上所有的組件我們都介紹完了,相信大家通過對這章的學習應該對tkinter有了個深入的了解。

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

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

1.pack

它是按照上下左右的方式來排列的,例如:

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

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

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

2.grid

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

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

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

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

3.place

這是一種最簡單靈活的布局,使用組件坐標來放置組件的位置。

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

十六、鼠標鍵盤事件

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

  1. bind(sequence,func,add
  2. bind_class(className,sequence,func,add
  3. bind_all(sequence,func,add
  4. 事件參數(shù):   
  5. sequence              所綁定的事件;如‘<Control-n>’寓意為ctrl+N鍵 或者<Button-3> 右鍵 
  6. func                   所綁定的事件處理函數(shù); 
  7. add                    可選參數(shù),為空字符或‘+’; 
  8. className             所綁定的類; 
  9.  
  10.  
  11. 鼠標鍵盤事件 
  12.     <Button-1>            鼠標左鍵按下,2表示中鍵,3表示右鍵; 
  13.     <ButtonPress-1>        同上; 
  14.     <ButtonRelease-1>    鼠標左鍵釋放; 
  15.     <B1-Motion>           按住鼠標左鍵移動; 
  16.     <Double-Button-1>     雙擊左鍵; 
  17.     <Enter>               鼠標指針進入某一組件區(qū)域; 
  18.     <Leave>               鼠標指針離開某一組件區(qū)域; 
  19.     <MouseWheel>         滾動滾輪; 
  20.     <KeyPress-A>         按下A鍵,A可用其它鍵替代; 
  21.     <Alt-KeyPress-A>      同時按下alt和A;alt可用ctrl和shift替代; 
  22.     <Double-KeyPress-A>    快速按兩下A; 
  23.     <Lock-KeyPress-A>     大寫狀態(tài)下按A; 
  24.      
  25.     
  26. 窗口事件 
  27.     Activate             當組件由不可用轉(zhuǎn)為可用時觸發(fā); 
  28.     Configure            當組件大小改變時觸發(fā); 
  29.     Deactivate          當組件由可用轉(zhuǎn)變?yōu)椴豢捎脮r觸發(fā); 
  30.     Destroy              當組件被銷毀時觸發(fā); 
  31.     Expose              當組件從被遮擋狀態(tài)中暴露出來時觸發(fā); 
  32.     Unmap              當組件由顯示狀態(tài)變?yōu)殡[藏狀態(tài)時觸發(fā); 
  33.     Map                  當組件由隱藏狀態(tài)變?yōu)轱@示狀態(tài)時觸發(fā); 
  34.     FocusIn              當組件獲得焦點時觸發(fā); 
  35.     FocusOut            當組件失去焦點時觸發(fā); 
  36.     Property             當窗體的屬性被刪除或改變時觸發(fā); 
  37.     Visibility           當組件變?yōu)榭梢暊顟B(tài)時觸發(fā); 
  38.  
  39. 響應事件 
  40. event對象(def function(event)): 
  41.     char                按鍵字符,僅對鍵盤事件有效; 
  42.     keycode            按鍵名,僅對鍵盤事件有效; 
  43.     keysym             按鍵編碼,僅對鍵盤事件有效; 
  44.     num                鼠標按鍵,僅對鼠標事件有效; 
  45.     type                 所觸發(fā)的事件類型; 
  46.     widget               引起事件的組件; 
  47.     width,heigh        組件改變后的大小,僅Configure有效; 
  48.     x,y                鼠標當前位置,相對于窗口; 
  49.     x_root,y_root       鼠標當前位置,相對于整個屏幕 

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

 

責任編輯:姜華 來源: Python爬蟲與數(shù)據(jù)挖掘
相關推薦

2021-06-01 09:02:06

PythonClassPython基礎

2012-02-01 08:56:32

2016-07-12 10:09:13

OpenManage大

2016-06-20 15:36:01

OpenManage大

2017-12-14 09:35:10

58速運訂單調(diào)度

2023-11-29 07:30:08

Python用戶界面

2025-02-08 14:03:25

2025-02-24 10:17:48

2022-01-26 00:02:00

PythonGUI界面

2024-09-24 10:00:55

2024-10-28 16:03:24

2021-06-27 17:12:27

PythonGUI圖形界面

2017-11-22 12:40:02

PythonGUI框架

2024-06-26 12:17:48

深度學習GUI

2009-03-10 08:43:38

Erwise圖形瀏覽器

2021-01-04 09:19:06

WindowsLinuxGUI程序

2011-05-17 14:38:52

身份認證校園網(wǎng)

2009-06-10 18:18:43

Java GUI用戶界面

2011-01-18 17:47:35

2010-06-17 16:06:18

串口協(xié)議
點贊
收藏

51CTO技術棧公眾號