导入tkinter
- import tkinter as tk
- from tkinter import *
Lable
l = tk.Label(master,text,bg,font(,),width,height) #主体,输出,背景颜色,字体和大小,宽度,高度
import tkinter as tk
window = tk.TK() #创建窗口
window.title("my first window")
window.geometry('200x100') #长x高
l = tk.Label(window,text = 'OMG!this is iceer!',bg = 'green', font("Arial",15),width=20,height=2)
#font为字体
l.pack()
#安置标签还可:l.place()
window.mainloop()
Button
import tkinter as tk
window = tk.Tk()
window.title("window")
window.geometry('180x60')
var = tk.StringVar()
# tkinter.StringVar保持值的变更随时显示在界面上
#text 应改而使用textvariable
l = tk.Label(window,textvariable = var ,bg = '#FCE4EC', font('Arial',12),width = 18, height = 2)
l.pack()
on_hit = False
#全局变量,标记当前状态,控制lable显示或者不显示
def hit_me():
global on_hit
if on_hit ==False:
on_hit = True
var.set("you hit me")
else:
on_hit = False
var.set("")
b = tk.Button(window,text = 'hit me',bg = '#F8BBD0',width = 15,height = 1,command = hit_me)
b.pack()
window.mainloop()#不断刷新
-打开窗口是Label空白
- 点击Button hit me
entry$text
import tkinter as tk
window = tk.Tk()
window.title("enter$text")
window.geometry("200x200")
e = tk.Entry(window,show = Node,bg = '#FCE4EC')
e.pack()
def insert_point():
var = e.get()
t.insert('insert',var)
def insert_end():
var = e.get()
t.insert('end',var)
#insert 可以到指定位置
#比如 t.insert(1.1,var) 行从1开始列从0开始?
b1 = tk.Button(window,text = 'insert point',weight = 15,bg = '#F48FB1',command = insert_point)
b1.pack()
b2 = tk.Button(window,text = 'insert point',weight = 15,bg = '#F48FB1',command = insert_end)
b2.pack()
t = tk.Text(window,height = 2, bg = 'FCE4EC')
t.pack()
#不需要mainloop()也可以重复执行?
-
点击insert point,输入内容会输出到text光标处
-
点击 insert end,会输出到text的最末
-
tk.Entry(show = '*')
- little trick:show = ‘’输入其他符号, 假装中毒输入啥都显示一样
Listbox 列表控件
import tkinter as tk
window = tk.Tk()
window.title("listbox")
window.geometry("200x200")
varl = tk.StringVar()
l = tk.Label(window,bg = "#0097A7",width=12,textvariable = var1)
l.pack()
def print_selection():
value = lb.get(lb.curselection())
varl.set(value)
#不需要声明全局变量?
b = tk.Buton(window,text = 'print selection',width = 15,commad = print_selection)
b.pack()
var2 = tk.StringVar()
var2.set(('NGC 2936','IRAS','NCGC 6537'))
#set只需要输入一个参数,设定初始值时有多个元素需要用括号括起来
lb = tk.Listbox(window,listvariable = var2, bg = '#00ACC1')
list_items = [1047,'BPM']
for item in list_items:
lb.insert('end',item)
lb.inster(1,'IC101')
lb.insert(2,'世界上最孤独的鲸鱼')
lb.delete(2) #删除元素
Radiobutton 选择按钮
- tkiter.Radiobutton(master,text = '',variable,value,command = ..) #选择此选项时value传递给variable
- config()可以改变label的参数
import tkinter as tk
window = tk.Tk()
window.title("radiobutton")
window.geometry('200x200')
l = tk.Lable(window,text = 'empty',bg = '#A5D6A7',width = 12)
l.pack()
def print_selection():
l.config(text = 'you have selected' + var.get())
#config可以改变label的参数
#选择Option A时,赋‘A’值给变量‘var’
r1 = tk.Radiobutton(window,text = "Option A",variable = var, value = 'A',command = print_selection)
r1.pack()
r2 = tk.Radiobutton(window,text = "Option B",variable = var, value = 'B',command = print_selection)
r2.pack()
r3 = tk.Radiobutton(window,text = "Option C",variable = var, value = 'C',command = print_selection)
r3.pack()
window.mainloop()
checkbutton 勾选项
- Radiobutton只能选定其中一个值,checkbutton可以勾选多个值
- tkinter.Checkbutton(master,text='',variable='',onvalue = 1, command = ..) #选定就是打开onvalue,不选定就是offvalue=0
import tkinter as tk
window = tk.Tk()
window.title("checkbutton")
window.geometry('250x120')
l = tk.Label(window,width = 30,bg = '#40C4FF',text = 'empty')
l.pack()
def print_selection():
if(var1.get()== 1)&(var2.get()==0):
l.config(text = '52赫兹叫声')
elif(var1.get()== 0)&(var2.get()==1):
l.config(text = '从前有只鲸鱼叫ALice')
elif(var1.get()== 0)&(var2.get()==0):
l.cofig(text='')
else:
l.config(text = '从前有只鲸鱼叫ALice,没人听见她唱歌')
var1 = tk.IntVar()
var2 = tk.IntVar()
c1 = tk.Checkbutton(window,text = '52hz',variable = var1,onvalue = 1,command = print_selection)
c1.pack()
c2 = tk.Checkbutton(window,text = 'Alice',variable = var2,onvalue = 1,command = print_selection)
c2.pack()
scale 尺度
- tkinter.Scale(master,label,from_,to,orient,showvalue,tickinterval,command)
import tkinter as tk
window = tk.Tk()
window.title("scale")
window.geometry('200x200')
l = tk.Label(window,text = 'emptey',width = 20,by = '#FFEE58')
l.pack()
def print_selection(v):
l.config(text = 'you have selected'+v)
#v是from_吗?
s = tk.Scale(window,label = 'try me',from_ = 7,to = 11,orient = tk.HORIZONTAL,length = 200,showvalue=0,tickinterval=2,command = print_selection)
#lenth像素,orinent为排版方式,HORIZONTAL表示横向,tickinterval为标签单位长度,resolution为精确度
s.pack()
Canvas 画布
import tkinter as tk
window = tk.Tk()
window.title('my window')
window.geometry('200x200')
canvas = tk.Canvas(window,bg = '#00838F',height = 100,width=200)
image_file=tk.PhotoImage(file='xxx.')
image=canvas.creat_image(0,0,anchor='nw',imge_file) #图片放的点位,nw就是northwest
canvas.pack()
b=tk.Butthon(window,text='move',command=moveit).pack()
window.mainloop()
Menubar 菜单
- .add_cascade()添加到主菜单
- .add_command()
import tkinter as tk
window = tk.Tk()
window.title('menubar')
window.geometry('200x200')
l = tk.Label(window,text='',bg = '#00838F')
l.pack()
counter = 0
def do_job():
global counter
l.config(text='do'+str(counter))
#把整数形式转化为字符串
counter += 1
menubar = tk.Menu(window)
filemenu = tk.Menu(menubar,tearoff=0)
menubar.add_cascade(label='File',menu = filemenu)
filemenu.add_command(label='New',command = do_job)
filemenu.add_command(label='Open',command = do_job)
filemenu.add_command(label='Save',command = do_job)
filemenu.add_separator()
filemenu.add_command(label='Exit',command=windoe.qiut)
edimenu = tk.Menu(menubar,tearoff=0)
menubar.add_cascade(label='Edit',menu = editmenu)
filemenu.add_command(label='Cut',command = do_job)
filemenu.add_command(label='Copy',command = do_job)
filemenu.add_command(label='Paste',command = do_job)
submenu = tk.Menu(filemenu)
filemenu.add_cascade(label='Import',menu=submenu,underline=0)
submenu.add_command(label='Submenul',command=do_job)
window.config(menu=menubar)
window.mainloop()
Rrame 底层框架
import tkinter as tk
window = tk.Tk()
window.title('menubar')
window.geometry('200x80')
tk.Label(window,text = 'on the window',bg = '#00838F').pack()
frm = tk.Frame(window)
frm.pack()
frm_l = tk.Frame(frm)
frm_r = tk.Frame(frm)
frm_l.pack(side='left')
frm_r.pack(side='right')
#基于主frm的左右
tk.Label(frm_l,text = 'on the frm_l1',bg = '#009688').pack()
tk.Label(frm_l,text = 'on the frm_l2',bg = '#009688').pack()
tk.Label(frm_r,text = 'on the frm_r',bg = '#BDBDBD').pack()
messagebox 窗口
import tkinter as tk
from tkinter import messagebox
window = tk.Tk()
window.title('menubar')
window.geometry('200x80')
def hit_me():
messagebox.showinfo(title = 'hi',message = 'how you doing')
#信息窗口
tk.Button(window,text = 'hit me',command = hit_me).pack()
- showinfo
- showwarning
- showerror
- askquestion
- askyesno
- asktrycancel #返回字符串yes或者no
- askokcancel #返回Turn或者False
pack(),grid(),place()
tk.Label(window,text=1).pack(side='top') tk.Label(window,text=1).pack(side='bottom') tk.Label(window,text=1).pack(side='left') tk.Label(window,text=1).pack(side='right')
for i in range(4):
for j in range(3):
tk.Label(window,text = 1).grid(row=i,column=j,padx=10,pady=10)
tk.Label(window,text=1).place(x=10,y=100,anchor='nw')