Python
提供了多個圖形開發界面的庫,幾個經常使用Python GUI
庫以下:Tkinter
:Tkinter
模塊(Tk 接口)是Python
的標準 Tk GUI 工具包的接口.Tk
和Tkinter
能夠在大多數的Unix
平臺下使用, 一樣能夠應用在Windows
和Macintosh
系統裏。Tk8.0
的後續版本能夠實現本地窗口風格,並良好地運行在絕大多數平臺中。wxPython
:wxPython
是一款開源軟件,是Python
語言的一套優秀的GUI
圖形庫,容許Python
程序員很方便的建立完整的、功能健全的GUI
用戶界面。Jython
:Jython
程序能夠和Java
無縫集成。除了一些標準模塊,Jython
使用Java
的模塊。Jython
幾乎擁有標準的Python
中不依賴於C
語言的所有模塊。好比,Jython
的用戶界面將使用 Swing
,AWT
或者SWT
。Jython
能夠被動態或靜態地編譯成Java
字節碼Tkinter
介紹Tkinter
是Python
的標準GUI
庫。Python
使用 Tkinter
能夠快速的建立GUI
應用程序。Tkinter
是內置到python
的安裝包中、只要安裝好Python
以後就能import Tkinter
庫、並且IDLE
也是用Tkinter
編寫而成、對於簡單的圖形界面Tkinter
仍是能應付自如須要注意: Python3.x
版本使用的庫名爲 tkinter
,即首寫字母T
爲小寫前端
import tkinter
複製代碼
tkinter
模塊master
,即這個控件屬於哪個GM(geometry manager)
有一個控件產生了iOS
中每個APP
都有一個主窗口window
, 該window
就是全部視圖嘴地城最基礎的視圖View
Python
中童謠也會有一個主窗口, 下面看一下tkinter
生成主窗口的方法# 主窗口
import tkinter
# 建立主窗口
window = tkinter.Tk()
# 設置標題
window.title('Titanjun')
# 設置窗口大小
window.geometry('400x400')
# 進入消息循環
window.mainloop()
複製代碼
效果以下python
主窗口除了上述方法以外還有如下方法程序員
# 框體大小的可調性, 分別表示x, y方向的可變性
window.resizable(0, 0)
# 退出
window.quit()
# 刷新頁面
window.update()
複製代碼
Tkinter
組件Tkinter
的提供各類控件,如按鈕,標籤和文本框,一個GUI
應用程序中使用, 這些控件一般被稱爲控件或者部件控件 | 描述 |
---|---|
Label |
標籤控件, 能夠顯示文本和位圖 |
Button |
按鈕控件, 在程序中顯示按鈕 |
Entry |
輸入控件;用於顯示簡單的文本內容 |
Checkbutton |
多選框控件;用於在程序中提供多項選擇框 |
Frame |
框架控件;在屏幕上顯示一個矩形區域,多用來做爲容器 |
Canvas |
畫布控件;顯示圖形元素如線條或文本 |
Listbox |
列表框控件;在Listbox 窗口小部件是用來顯示一個字符串列表給用戶 |
Menubutton |
菜單按鈕控件,因爲顯示菜單項。 |
Menu |
菜單控件;顯示菜單欄,下拉菜單和彈出菜單 |
Message |
消息控件;用來顯示多行文本,與label 比較相似 |
Radiobutton |
單選按鈕控件;顯示一個單選的按鈕狀態 |
Scale |
範圍控件;顯示一個數值刻度,爲輸出限定範圍的數字區間 |
Scrollbar |
滾動條控件,當內容超過可視化區域時使用,如列表框 |
Text |
文本控件;用於顯示多行文本 |
Spinbox |
輸入控件;與Entry 相似,可是能夠指定輸入範圍值 |
PanedWindow |
一個窗口布局管理的插件,能夠包含一個或者多個子控件 |
LabelFrame |
一個簡單的容器控件, 經常使用與複雜的窗口布局 |
tkMessageBox |
用於顯示你應用程序的消息框 |
若是以前作過H5前端開發或者iOS等頁面相關開發工做的, 應該能到, 其實這些組件和其餘開發語言提供的組件功能類似, 屬性也相似, 下面咱們先看一下一些通用的屬性介紹框架
屬性值 | 屬性描述 |
---|---|
bg |
控件的背景顏色 |
fg |
組件中的字體顏色 |
font |
設置文本的字體樣式和字號 |
height |
設置控件高度 |
width |
設置控件寬度 |
bd |
設置控件邊框的大小, 默認2個像素 |
relief |
設置邊框樣式, 有falt, sunken, raised, groove, ridge, 默認flat |
text |
設置文本內容 |
anchor |
瞄點, 控制文本的位置, 默認居中(可選: n北, e東, s南, w西, center居中, ne se, sw, nw) |
justify |
顯示多行文本的時候,設置不一樣行之間的對齊方式(left, right, center) |
wraplength |
根據寬度限制控件每行顯示的字符的數量 |
underline |
下劃線, 默認沒有; 取值就是帶下劃線的字符串索引,爲 0 時,第一個字符帶下劃線 |
padx |
在x軸方向上的內邊距(padding),是指控件的內容與控件邊緣的距離 |
pady |
在y軸方向上的內邊距(padding) |
Label
控件Label
控件用以顯示文字和圖片.Label
一般被用來展現信息, 而非與用戶交互Label
也能夠綁定點擊等事件, 只是一般不這麼用label = tkinter.Label(window,
text="我是一隻小鴨子",
bg='#999999',
fg='white',
font=('黑體', 13),
justify='center',
height=5,
width=30,
anchor='n',
# wraplength=30
underline=3,
bd=3,
relief='flat'
)
#顯示出來
label.pack()
複製代碼
顯示效果ide
部分屬性介紹函數
anchor
: 文本在空間中的顯示位置(按上北下南, 左西右東規則), 可選值有(n北 e東 s南 w西 center居中 ne西北 se東南 sw西南 nw東北)方向image
: 顯示的圖片Button
控件Button
控件是一個標準的Tkinter
小部件,用於各類按鈕, 若是用鼠標點擊按鈕,可能會開始一些操做Button
能夠顯示文本和圖片# 設置標題
window.title('Titanjun')
# 設置窗口大小
window.geometry('400x400')
# 建立按鈕
button1 = tkinter.Button(window,
text='按鈕1',
bg='orange',
height=3,
width=20,
bd=3,
relief='sunken',
activebackground='orange',
activeforeground='white',
command=action1
)
button1.pack()
button2 = tkinter.Button(window, text='Titanjun', height=3, command=window.quit())
button2.pack()
# 進入消息循環
window.mainloop()
複製代碼
效果樣式工具
部分屬性介紹oop
activebackground
: 當鼠標放上去時,按鈕的背景色activeforeground
: 當鼠標放上去時,按鈕的文本顏色highlightcolor
: 要高亮的顏色image
: 按鈕上要顯示的圖片state
: 設置按鈕組件狀態,可選的有(normal(默認), active, disabled)command
: 按鈕的綁定函數方法, 接受一個函數名,注意函數名不要加引號Entry
輸入輸入控件, 用於顯示簡單的文本內容, 和iOS
中的UITextField
同樣, 示例以下佈局
vari = tkinter.Variable()
entry = tkinter.Entry(window, textvariable=vari)
entry.pack()
# 設置值
vari.set('very good')
# 取值
print(vari.get())
print(entry.get())
# 只讀輸入框
vari2 = tkinter.Variable()
entry2 = tkinter.Entry(window, textvariable=vari2, state='disabled')
entry2.pack()
# 設置值
vari2.set('very bad')
print(vari2.get())
# 密碼輸入框, 不管輸入什麼都顯示密文
vari3 = tkinter.Variable()
entry3 = tkinter.Entry(window, textvariable=vari3, show='@', bg='red', fg='white')
entry3.pack()
複製代碼
效果樣式字體
監聽輸入框內文字的改變
validate
: 設置輸入框的監聽狀態
focus
:當Entry
組件得到或失去焦點的時候驗證focusin
: 當Entry
組件得到焦點的時候驗證focusout
: 當Entry
組件失去焦點的時候驗證key
:當輸入框被編輯的時候驗證all
: 當出現上邊任何一種狀況的時候驗證validatecommand
: 接受一個判斷輸入框內的文字是否符合要求的函數, 該函數只能返回 True 或 False 表示驗證的結果invalidcommand
: 指定的函數只有在validatecommand
的返回值爲False
的時候才被調用# 主窗口
import tkinter
# 驗證輸入的文字
def varileText():
text = entry4.get()
if text == '1':
print('對嘍')
return True
print('錯漏')
return False
#
def testInvaild():
print('invaildCommanf被調用')
return True
# 建立主窗口
window = tkinter.Tk()
# 設置標題
window.title('Titanjun')
# 設置窗口大小
window.geometry('400x400')
# 驗證輸入的內容是否符合要求
vari4 = tkinter.Variable()
entry4 = tkinter.Entry(window, textvariable=vari4, validate='key', validatecommand=varileText, invalidcommand=testInvaild)
entry4.pack()
# 進入消息循環
window.mainloop()
複製代碼
Text
多行文本Text
文本組件用於顯示和處理多行文本。Tkinter
的全部組件中,Text
組件顯得異常強大和靈活,它適用於處理多任務Text
組件的時候裏面是沒有內容的。爲了給其插入內容,可使用insert()
以及INSERT
或END
索引號text = Text(window, bg='yellow', width=40, height=10)
#INSERT索引表示在光標處插入
text.insert(INSERT,'I Love')
#END索引號表示在最後插入
text.insert(END,' you')
text.pack()
def show():
print('好了, 你贏了')
# text還能夠插入按鈕 圖片等
b1 = Button(text, text='點我點我', command=show)
# 在text建立組件的命令
text.window_create(INSERT, window=b1)
複製代碼
Indexes
(索引)是用來指向Text
組件中文本的位置,跟python
的序列索引同樣,Text
的組件索引也是對應實際字符之間的位置from tkinter import *
root = Tk()
text1=Text(root,width=30,height=3)
text1.insert(INSERT,'index的練習')
#1.2到1.5的範圍之間
print(text1.get(1.2,1.5))
複製代碼
Tags
一般用於改變Text組件中內容的樣式和功能,你能夠修改文本的字體,尺寸和顏色,另外Tags
還容許你將文本、嵌入的組件和圖片與鍵盤相關聯,除了user-defined tags
(用戶自定義的Tags
)
text.insert(INSERT, '自定義標籤的名字')
#第一個參數爲自定義標籤的名字
#第二個參數爲設置的起始位置,第三個參數爲結束位置
#第四個參數爲另外一個位置
text.tag_add('tag1', '1.7', '1.12', '1.14')
#用tag_config函數來設置標籤的屬性(這裏不要用簡寫, 不然報錯)
text.tag_config('tag1', font=17, background='blue', foreground='red')
# text.tag_config('tag1', bg='yellow', fg='red')
#新的tag會覆蓋舊的tag
複製代碼
text = Text(window, bg='yellow', width=100, height=10)
# 添加右側滾動條
scroll = Scrollbar()
# side放到窗體的那一側 fill填充
scroll.pack(side=RIGHT, fill=Y)
text.pack(side=RIGHT, fill=Y)
# 二者關聯
scroll.config(command=text.yview)
text.config(yscrollcommand=scroll.set)
str = '''致橡樹--舒婷 ..........此處省略N個字........... '''
text.insert(INSERT, str)
複製代碼
效果樣式
Checkbutton
能夠表示兩種狀態:On
和Off
,能夠設置回調函數,每當點擊此按鈕時回調函數被調用def update():
message = ''
if tag1.get() == True:
message += 'titan \n'
if tag2.get() == True:
message += 'jun \n'
if tag3.get() == True:
message += 'coder \n'
#清除text中的全部內容
text.delete(0.0, END)
# 插入新的文本內容
text.insert(INSERT, message)
# 要綁定的變量
tag1 = BooleanVar()
check1 = Checkbutton(window, text = 'Titan', variable = tag1, command = update)
check1.pack()
tag2 = BooleanVar()
check2 = Checkbutton(window, text = 'Juned', variable = tag2, command = update)
check2.pack()
tag3 = BooleanVar()
check3 = Checkbutton(window, text = 'Coder', variable = tag3, command = update)
check3.pack()
text = Text(window, bg = 'orange', width = 50, height = 5)
text.pack()
複製代碼
效果樣式
Radiobutton
爲單選按鈕,即在同一組內只能有一個按鈕被選中,每當選中組內的一個按鈕時,其它的按鈕自動改成非選中態,與其餘控件不一樣的是:它有組的概念
def selectorAction():
print(tag.get())
# 一組單選框要綁定同一個變量
tag = IntVar()
radio1 = Radiobutton(window, text = 'one', value = 23, variable = tag, command = selectorAction)
radio1.pack()
radio2 = Radiobutton(window, text = 'two', value = 32, variable = tag, command = selectorAction)
radio2.pack()
radio3 = Radiobutton(window, text = 'ten', value = 10, variable = tag, command = selectorAction)
radio3.pack()
複製代碼
效果樣式
未完待續, 後期會繼續更新其餘控件的相關介紹..........