一、tkinter是python的標准gui庫,tkinter是內置在python的安裝包之中的,所以安裝好python之后就可以import導入tkinter模塊了
二、創建一個GUI程序
- 1、導入 Tkinter 模塊 from tkinter import *
- 2、創建窗口 top=Tk()——實例化主窗口,,如果要實例化子窗口,用toplevel()
- 3、創建控件(詳看三) canvas=Canvas(top,width=300,height=300,bg='white') label=Label(top,bg='red',text='文字',fg='black')
- 4、將控件放到窗口里面去(指定這個控件的 master, 即這個控件屬於哪一個) canvas.pack() lable.pack()
- 5、進入消息循環(告訴 GM(geometry manager) 有一個控件產生了。) mainloop()
三、Tkinter 控件
Tkinter的提供各種控件,如按鈕,標簽和文本框,一個GUI應用程序中使用。這些控件通常被稱為控件或者部件。
目前有15種Tkinter的部件。我們提出這些部件以及一個簡短的介紹,在下面的表
控件 | 描述 |
---|---|
Button | 按鈕控件;在程序中顯示按鈕。 |
Canvas | 畫布控件;顯示圖形元素如線條或文本 |
Checkbutton | 多選框控件;用於在程序中提供多項選擇框 |
Entry | 輸入控件;用於顯示簡單的文本內容 |
Frame | 框架控件;在屏幕上顯示一個矩形區域,多用來作為容器 |
Label | 標簽控件;可以顯示文本和位圖 |
Listbox | 列表框控件;在Listbox窗口小部件是用來顯示一個字符串列表給用戶 |
Menubutton | 菜單按鈕控件,用於顯示菜單項。 |
Menu | 菜單控件;顯示菜單欄,下拉菜單和彈出菜單 |
Message | 消息控件;用來顯示多行文本,與label比較類似 |
Radiobutton | 單選按鈕控件;顯示一個單選的按鈕狀態 |
Scale | 范圍控件;顯示一個數值刻度,為輸出限定范圍的數字區間 |
Scrollbar | 滾動條控件,當內容超過可視化區域時使用,如列表框。. |
Text | 文本控件;用於顯示多行文本 |
Toplevel | 容器控件;用來提供一個單獨的對話框,和Frame比較類似 |
Spinbox | 輸入控件;與Entry類似,但是可以指定輸入范圍值 |
PanedWindow | PanedWindow是一個窗口布局管理的插件,可以包含一個或者多個子控件。 |
LabelFrame | labelframe 是一個簡單的容器控件。常用與復雜的窗口布局。 |
tkMessageBox | 用於顯示你應用程序的消息框。 |
標准屬性
標准屬性也就是所有控件的共同屬性,如大小,字體和顏色等等。
屬性 | 描述 |
Dimension | 控件大小; |
Color | 控件顏色; |
Font | 控件字體; |
Anchor | 錨點; |
Relief | 控件樣式; |
Bitmap | 位圖; |
Cursor | 光標; |
幾何管理
Tkinter控件有特定的幾何狀態管理方法,管理整個控件區域組織,一下是Tkinter公開的幾何管理類:包、網格、位置
幾何方法 | 描述 |
pack() | 包裝; |
grid() | 網格; |
place() | 位置; |
四、canvas畫布控件的常用方法
canvas.create_rectangle(40,40,100,100,dash=(4,4)) #前4個參數表示:矩形左上角坐標(40,40),右下角坐標(100,100),dash為4表示虛線長度為4?
canvas.create_oval(40,40,100,100) #前4個參數表示:圓形外圍的矩形左上角坐標(40,40),右下角坐標(100,100)
canvas.create_oval(40,40,100,70) #畫橢圓,也是圓的一種
canvas.create_line(40,40,40,100,width=4,fill='red')
- create_arc:繪制弧。
- create_bitmap:繪制位圖。
- create_image:繪制圖片。
- create_line():繪制直線。
- create_polygon:繪制多邊形。
- create_text:繪制文字。
- create_window:繪制組件。
四、舉例:
1、畫一個簡單的窗口
import Tkinter
top = Tkinter.Tk() #導入模塊直接是from tkinter import *時,創建控件就直接Tk()即可
top.mainloop() # 進入消息循環
顯示結果:
2、給上面的窗口中插入2個列表
from tkinter import * #導入庫
top=Tk() #創建對象
l1= ['C','python','php','html','SQL','java'] #新建2個列表
l2= ['CSS','jQuery','Bootstrap']
list1=Listbox(top) #創建2個列表控件
list2=Listbox(top)
for i in l1:
list1.insert(0,i)
for j in l2:
list2.insert(0,j)
list1.pack() #將小部件放到主窗口
list2.pack()
top.mainloop() #進入消息循環
顯示結果:
3、畫矩形、圓、橢圓、直線
from tkinter import *
top=Tk()
canvas=Canvas(top,width=300,height=300,bg='green') #創建了一個畫布控件
canvas.pack(expand=YES,fill=BOTH) #創建控件后必須要加這句pack(),表示把畫布放到窗口里面去,否則打印出來只有一個白色的窗口
canvas.create_rectangle(40,40,100,100,dash=(4,4)) #前4個參數表示:矩形左上角坐標(40,40),右下角坐標(100,100),dash為4表示虛線長度為4?
canvas.create_oval(40,40,100,100) #前4個參數表示:圓形外圍的矩形左上角坐標(40,40),右下角坐標(100,100)
canvas.create_oval(40,40,100,70) #畫橢圓,也是圓的一種
canvas.create_line(40,40,40,100,width=4,fill='red') #畫直線,直線寬度是1
mainloop()
顯示結果:
改為白色背景,紅色的填充
4、Label標簽控件
from tkinter import *
top=Tk()
label=Label(top,bg='red',text='文字',fg='black') #bg是標簽的背景色,text是指標簽上的字,fg是文字的顏色
label.pack(padx=10,pady=50,side=LEFT)
mainloop()
顯示結果:
5、實例化多窗口:實例化主窗口用tkinter.Tk(),,,實例化其他子窗口用tkinter.Topleval()
from tkinter import *
top=Tk() #實例化一個主窗口
toplevel1=Toplevel() #實例化2個子窗口
toplevel2=Toplevel()
label=Label(toplevel2,bg='red',text='文字',fg='black') #bg是標簽的背景色,text是指標簽上的文字,fg是文字的顏色
label.pack(padx=10,pady=50,side=LEFT)
mainloop()
顯示結果:
6、指定窗口的名字、大小和定位、背景色