python GUI學習——Tkinter

來源:互聯網
上載者:User

標籤:

支援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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.