此篇Tkinter學(xué)習(xí)教程主要介紹以下幾個控件的用法:
Label
Frame
Entry
Text
Button
Listbox
Scrollbar
說明每個控件最后要加上pack().否則控件是無法顯示的
1.Label
說明:標(biāo)簽
用法:Label(根對象,【屬性列表】)
屬性:
text 要顯示的文本
bg 背景顏色
bd 外圍3D邊界的寬度
font 字體(顏色、大?。?/span>
width 控件寬度
height 控件高度
實例:
#-*- coding: UTF-8 -*-
__author__ = '007'
__date__ = '2016/4/7'
from Tkinter import *
root = Tk() # 初始化Tk()
root.title("label-test") # 設(shè)置窗口標(biāo)題
root.geometry("200x300") # 設(shè)置窗口大小 注意:是x 不是*
root.resizable(width=True, height=False) # 設(shè)置窗口是否可以變化長/寬,False不可變,True可變,默認為True
l = Label(root, text="label", bg="pink", font=("Arial",12), width=8, height=3)
l.pack(side=LEFT) # 這里的side可以賦值為LEFT RTGHT TOP BOTTOM
root.mainloop() # 進入消息循環(huán)
運行結(jié)果:
2.Frame
說明:在屏幕上創(chuàng)建一塊矩形區(qū)域,多作為容器來布局窗體
用法:frame(根對象,【屬性列表】)
實例:
#-*- coding: UTF-8 -*-
__author__ = '007'
__date__ = '2016/4/7'
from Tkinter import *
root = Tk() # 初始化Tk()
root.title("frame-test") # 設(shè)置窗口標(biāo)題
root.geometry("300x200") # 設(shè)置窗口大小 注意:是x 不是*
root.resizable(width=True, height=False) # 設(shè)置窗口是否可以變化長/寬,False不可變,True可變,默認為True
Label(root, text="frame", bg="red", font=("Arial",15)).pack()
frm = Frame(root)
#left
frm_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)
#right
frm_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 BOTTOM
root.mainloop() # 進入消息循環(huán)
運行結(jié)果:
3.Entry
說明:創(chuàng)建單行文本框
用法:創(chuàng)建 Entry(根對象,【屬性列表】)
綁定變量 var=StringVar() e=Entry(根對象, textvariable = var)
獲取文本框中的值 var.get()
設(shè)置文本框中的值 var.set(item1)
實例:
#-*- coding: UTF-8 -*-
__author__ = '007'
__date__ = '2016/4/7'
from Tkinter import *
root = Tk() # 初始化Tk()
root.title("entry-test") # 設(shè)置窗口標(biāo)題
root.geometry("300x200") # 設(shè)置窗口大小 注意:是x 不是*
root.resizable(width=True, height=False) # 設(shè)置窗口是否可以變化長/寬,False不可變,True可變,默認為True
var = Variable()
e = Entry(root, textvariable=var)
var.set("entry") # 設(shè)置文本框中的值
e.pack() # 這里的side可以賦值為LEFT RTGHT TOP BOTTOM
root.mainloop() # 進入消息循環(huán)
運行結(jié)果:
4.Text
說明:向該空間內(nèi)輸入文本
用法:
t = Text(根對象)
插入:t.insert(mark,內(nèi)容)
刪除:t.delete(mark1,mark2)
其中,mark可以是行號,或者特殊標(biāo)識,例如
INSERT:光標(biāo)的插入點CURRENT:鼠標(biāo)的當(dāng)前位置所對應(yīng)的字符位置
END:這個Textbuffer的最后一個字符
SEL_FIRST:選中文本域的第一個字符,如果沒有選中區(qū)域則會引發(fā)異常
SEL_LAST:選中文本域的最后一個字符,如果沒有選中區(qū)域則會引發(fā)異常
實例:
#-*- coding: UTF-8 -*-
__author__ = '007'
__date__ = '2016/4/7'
from Tkinter import *
root = Tk() # 初始化Tk()
root.title("text-test") # 設(shè)置窗口標(biāo)題
root.geometry("300x200") # 設(shè)置窗口大小 注意:是x 不是*
root.resizable(width=True, height=False) # 設(shè)置窗口是否可以變化長/寬,False不可變,True可變,默認為True
t = 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 BOTTOM
root.mainloop() # 進入消息循環(huán)
運行結(jié)果:
5.Button
說明:創(chuàng)建按鈕
用法:Button(根對象,【屬性列表】)
實例:
#-*- coding: UTF-8 -*-
__author__ = '007'
__date__ = '2016/4/7'
from Tkinter import *
root = Tk() # 初始化Tk()
root.title("button-test") # 設(shè)置窗口標(biāo)題
root.geometry() # 設(shè)置窗口大小 注意:是x 不是*
def printhello():
t.insert(END,"hello\n")
t = Text()
t.pack() # 這里的side可以賦值為LEFT RTGHT TOP BOTTOM
Button(root, text="press", command=printhello).pack()
root.mainloop() # 進入消息循環(huán)
運行結(jié)果:
6.Listbox
說明:列表控件,可以含有一個或者多個文本框,可單選也可多選
用法:
創(chuàng)建 lb = ListBox(根對象,【屬性列表】)
綁定變量 var = StringVar() lb=ListBox(根對象,listvariable=var)
得到列表中的所有值 var.get()
設(shè)置列表中的所有值 var.set((item1,item2,......))
添加:lb.insert(item)
刪除:lb.delete(item,...)
綁定事件 lb.bind('<ButtonRelease-1>',函數(shù))
獲得所選中的選項 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()
運行結(jié)果:
7.Scrollbar
說明:垂直滾動控件
用法:ListBox(根對象,【屬性列表】
實例:
#-*- coding: UTF-8 -*-
__author__ = '007'
__date__ = '2016/4/7'
from Tkinter import *
root = Tk() # 初始化Tk()
root.title("scrl-test") # 設(shè)置窗口標(biāo)題
root.geometry() # 設(shè)置窗口大小 注意:是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的回調(diào)函數(shù)為Scrollbar的set,表示滾動條在窗口變化時實時更新
lb.pack(side=LEFT,fill=BOTH)
scrl['command'] = lb.yview # 指定Scrollbar的command的回調(diào)函數(shù)是Listbar的yview
root.mainloop()
運行結(jié)果:
原文來自:博客園/python客棧