2018-6-12
圖形使用者界面(Graphical User Inerface,GUI),這一章主要還是入門用,使用的主要庫Tk,通過Python的接口Tkinter(Tk interface的縮寫)可以通路Tk。
讓GUI程式啟動和運作起來需要以下5個步驟:
1、導入tkinter子產品
2、建立一個頂層視窗對象,用于容納整個GUI應用
3、在頂層視窗之上建構所有的GUI元件(及其功能)
4、通過底層的應用代碼将這些GUI元件連接配接起來
5、進入主事件循環
建立頂層視窗:top = tkinter.Tk() 也稱為根視窗(root)。可以由多個頂層視窗,但隻能有一個根視窗。
布局管理器:
1、Placer,需要開發者提供對所有控件的擺放位置和控件大小,加重了開發者的負擔。
2、Packer,在指定的父控件中,會把控件填充到正确的位置,對于之後的每個控件,會去尋找剩餘的空間進行填充。
3、Grid,基于網格坐标使用Grid來指定GUI控件的放置Grid會在他們的網格位置上渲染GUI應用中的每個對象。
一旦Packer确定好所有空間的大小和對齊方式,它就會在螢幕上将其放置妥當。以下是滑塊機制的代碼。
from tkinter import *
def resize(ev=None):
label.config(font='Helvetica -%d bold' % scale.get())
top = Tk()
top.geometry('250x150')
label = Label(top, text = 'Hello World!',font = 'Helvetica -12 bold')
label.pack(fill=Y, expand=1)
scale = Scale(top, from_=10, to = 40, orient = HORIZONTAL,command=resize)
scale.set(12)
scale.pack(fill =X, expand=1)
quit = Button(top, text='QUIT',command=top.quit,activeforeground='white',activebackground='red')
quit.pack()
mainloop()
windows系統下運作結果:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CXzkFROdXRq1EeJpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2LcRHelR3LcJzLctmch1mclRXY39DN4MjNwATNwIjMxYDM4EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
Tk概述:轉自https://blog.csdn.net/Red_Sola/article/details/41948795
TK元件簡介
控件
Tkinter.Lable 标簽
Tkinter.Button按鈕
Tkinter.Entry 輸入框
Tkinter.CheckButton 多選框
Tkinter.RadioButton 單選框
Tkinter.Listbox 清單框
Tkinter.Scale 數值範圍條
Tkinter.Spinbox 數值範圍框
Tkinter.Scrollbar 滾動條
Tkinter.Menu 菜單
Tkinter.Option 可選菜單
Tkinter.Frame 架構容器
Tkinter.PanedWindow面闆
Tkinter.Toplevel 上層窗體
Tkinter.Text 文本框
Tkinter.Canvas 繪圖容器
布局管理器
Tkinter.Pack
Tkinter.Place
Tkinter.Grid
字型
tkFont.Font字型
通用對話框
tkCommonDialog
SimpleDialog.SimpleDialog
FileDialog.LoadFileDialog打開檔案
FileDialog.SaveFileDialog儲存檔案
tkMessageBox.showinfo, #顯示資訊消息框
tkMessageBox. showwarning, #顯示警告消息框
tkMessageBox. showerror, #顯示錯誤消息框
tkMessageBox. askquestion, #顯示詢問消息框
tkMessageBox. askokcancel, #顯示确認/取消消息框
tkMessageBox. askyesno cancel, #顯示是/否消息框
tkMessageBox. askretrycancel #顯示重試/取消消息框
事件(Event)
1.測試滑鼠點選(Click)事件
2.測試滑鼠的移動(Motion)事件
3.測試滑鼠的釋放(Relase)事件
4.進入(Enter)事件
5.測試離開(Leave)事件
6.響應特殊鍵(Special Key)
7.響應所有的按鍵(Key)事件
8.隻處理指定的按鍵消息
9.兩個事件同時綁定到一個控件
10.為一個instance綁定一個事件
12.事件各個級别音傳遞
13.使用bind_class的後果
Tk的控件設定:
compound:
label=Tkinter.Label(root,text='error',bitmap='error', compound='left')
Label可以設定root(父視窗),text(顯示文本),wraplength(指定text中文本多少寬度後開始換行),justify(文本對齊方式),fg(前景色),bg(背景色),anchor(文本(text)或圖像(bitmap/image)在Label的位置。預設為center)
值和布局如下:
nw n ne
w center e
sw s se
以及常見的寬高等。
compound:
說明:指定文本(text)與圖像(bitmap/image)是如何在Label上顯示,預設為None,當指定image/bitmap時,文本(text)将被覆寫,隻顯示圖像了。
可以使用的值:
left: 圖像居左
right: 圖像居右
top: 圖像居上
bottom: 圖像居下
center: 文字覆寫在圖像