標籤:
支援python的常見GUI工具包:
Tkinter 使用Tk平台 很容易得到 半標準
wxpython 基於wxWindows。跨平台越來越流行
Python Win 只能在Windows上使用 使用了原生Windows GUI功能
Java Swing 只能用於Jython 使用原生Java GUI
PyGTK 使用GTK平台 在linux上很流行
PyQt 使用QT平台 跨平台
Tkinter學習
介紹以下幾個控制項的用法
Label
Frame
Entry
Text
Button
Listbox
Scrollbar
說明每個控制項最後要加上pack().否則控制項是無法顯示的
1.Label
說明:標籤
用法:Label(根對象,【屬性列表】)
屬性:
text 要顯示的文本
bg 背景顏色
bd 外圍3D邊界的寬度
font 字型(顏色、大小)
width 控制項寬度
height 控制項高度
執行個體:
#-*- coding: UTF-8 -*-__author__ = ‘007‘__date__ = ‘2016/4/7‘from Tkinter import *root = Tk() # 初始化Tk()root.title("label-test") # 設定視窗標題root.geometry("200x300") # 設定視窗大小 注意:是x 不是*root.resizable(width=True, height=False) # 設定視窗是否可以變化長/寬,False不可變,True可變,預設為Truel = Label(root, text="label", bg="pink", font=("Arial",12), width=8, height=3)l.pack(side=LEFT) # 這裡的side可以賦值為LEFT RTGHT TOP BOTTOMroot.mainloop() # 進入訊息迴圈
運行結果:
2.Frame
說明:在螢幕上建立一塊矩形地區,多作為容器來布局表單
用法:frame(根對象,【屬性列表】)
執行個體:
#-*- coding: UTF-8 -*-__author__ = ‘007‘__date__ = ‘2016/4/7‘from Tkinter import *root = Tk() # 初始化Tk()root.title("frame-test") # 設定視窗標題root.geometry("300x200") # 設定視窗大小 注意:是x 不是*root.resizable(width=True, height=False) # 設定視窗是否可以變化長/寬,False不可變,True可變,預設為TrueLabel(root, text="frame", bg="red", font=("Arial",15)).pack()frm = Frame(root)#leftfrm_L = Frame(frm)Label(frm_L, text="左上", bg="pink", font=("Arial",12)).pack(side=TOP)Label(frm_L, text="左下", bg="green", font=("Arial",12)).pack(side=TOP)frm_L.pack(side=LEFT)#rightfrm_R = Frame(frm)Label(frm_R, text="右上", bg="yellow", font=("Arial",12)).pack(side=TOP)Label(frm_R, text="右下", bg="purple", font=("Arial",12)).pack(side=TOP)frm_R.pack(side=RIGHT)frm.pack() # 這裡的side可以賦值為LEFT RTGHT TOP BOTTOMroot.mainloop() # 進入訊息迴圈
運行結果:
3.Entry
說明:建立單行文字框
用法:建立 Entry(根對象,【屬性列表】)
綁定變數 var=StringVar() e=Entry(根對象, textvariable = var)
擷取文字框中的值 var.get()
設定文字框中的值 var.set(item1)
執行個體:
#-*- coding: UTF-8 -*-__author__ = ‘007‘__date__ = ‘2016/4/7‘from Tkinter import *root = Tk() # 初始化Tk()root.title("entry-test") # 設定視窗標題root.geometry("300x200") # 設定視窗大小 注意:是x 不是*root.resizable(width=True, height=False) # 設定視窗是否可以變化長/寬,False不可變,True可變,預設為Truevar = Variable()e = Entry(root, textvariable=var)var.set("entry") # 設定文字框中的值e.pack() # 這裡的side可以賦值為LEFT RTGHT TOP BOTTOMroot.mainloop() # 進入訊息迴圈
運行結果:
4.Text
說明:向該空間內輸入文本
用法:
t = Text(根對象)
插入:t.insert(mark,內容)
刪除:t.delete(mark1,mark2)
其中,mark可以是行號,或者特殊標識,例如
INSERT:游標的插入點CURRENT:滑鼠的當前位置所對應的字元位置
END:這個Textbuffer的最後一個字元
SEL_FIRST:選中文本域的第一個字元,如果沒有選中地區則會引發異常
SEL_LAST:選中文本域的最後一個字元,如果沒有選中地區則會引發異常
執行個體:
#-*- coding: UTF-8 -*-__author__ = ‘007‘__date__ = ‘2016/4/7‘from Tkinter import *root = Tk() # 初始化Tk()root.title("text-test") # 設定視窗標題root.geometry("300x200") # 設定視窗大小 注意:是x 不是*root.resizable(width=True, height=False) # 設定視窗是否可以變化長/寬,False不可變,True可變,預設為Truet = Text(root)t.insert(‘1.0‘,"text1\n") # 插入t.insert(END,"text2\n") # END:這個Textbuffer的最後一個字元t.insert(‘1.0‘,"text3\n")#t.delete(‘1.0‘,‘2.0‘) # 刪除t.pack() # 這裡的side可以賦值為LEFT RTGHT TOP BOTTOMroot.mainloop() # 進入訊息迴圈
運行結果:
5.Button
說明:建立按鈕
用法:Button(根對象,【屬性列表】)
執行個體:
#-*- coding: UTF-8 -*-__author__ = ‘007‘__date__ = ‘2016/4/7‘from Tkinter import *root = Tk() # 初始化Tk()root.title("button-test") # 設定視窗標題root.geometry() # 設定視窗大小 注意:是x 不是*def printhello(): t.insert(END,"hello\n")t = Text()t.pack() # 這裡的side可以賦值為LEFT RTGHT TOP BOTTOMButton(root, text="press", command=printhello).pack()root.mainloop() # 進入訊息迴圈
運行結果:
6.Listbox
說明:清單控制項,可以含有一個或者多個文字框,可單選也可多選
用法:
建立 lb = ListBox(根對象,【屬性列表】)
綁定變數 var = StringVar() lb=ListBox(根對象,listvariable=var)
得到列表中的所有值 var.get()
設定列表中的所有值 var.set((item1,item2,......))
添加:lb.insert(item)
刪除:lb.delete(item,...)
綁定事件 lb.bind(‘<ButtonRelease-1>‘,函數)
獲得所選中的選項 lb.get(lb.curselection())
屬性:selectmode可以為BROWSE MULTIPL SINGLE
執行個體:
#-*- coding: UTF-8 -*-__author__ = ‘007‘__date__ = ‘2016/4/7‘from Tkinter import *root = Tk()root.title("listbox-test")root.geometry()def print_item(event): print lb.get(lb.curselection())var = StringVar()lb = Listbox(root, listvariable = var)list_item = [1,2,3,4]for item in list_item: lb.insert(END,item)lb.delete(2,4)var.set((‘a‘,‘b‘,‘c‘,‘d‘))print var.get()lb.bind(‘<ButtonRelease-1>‘,print_item)lb.pack()root.mainloop()
運行結果:
7.Scrollbar
說明:垂直滾動控制項
用法:ListBox(根對象,【屬性列表】
執行個體:
#-*- coding: UTF-8 -*-__author__ = ‘007‘__date__ = ‘2016/4/7‘from Tkinter import *root = Tk() # 初始化Tk()root.title("scrl-test") # 設定視窗標題root.geometry() # 設定視窗大小 注意:是x 不是*def print_item(event): print lb.get(lb.curselection())var = StringVar()lb = Listbox(root, height=5, selectmode=BROWSE, listvariable = var)lb.bind(‘<ButtonRelease-1>‘,print_item)list_item = [1,2,3,4,5,6,7,8,9,0]for item in list_item: lb.insert(END,item)scrl = Scrollbar(root)scrl.pack(side=RIGHT,fill=Y)lb.configure(yscrollcommand=scrl.set) # 指定Listbox的yscrollbar的回呼函數為Scrollbar的set,表示捲軸在視窗變化時即時更新lb.pack(side=LEFT,fill=BOTH)scrl[‘command‘] = lb.yview # 指定Scrollbar的command的回呼函數是Listbar的yviewroot.mainloop()
運行結果:
通用控制項屬性參考
python GUI學習——Tkinter