导入tkinter
- import tkinter as tk
- from tkinter import *
Lable
l = tk.Label(master,text,bg,font(,),width,height) #主体,输出,背景颜色,字体和大小,宽度,高度
import tkinter as tkwindow = 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 tkwindow = tk.Tk()window.title("window")window.geometry('180x60')var = tk.StringVar()# tkinter.StringVar保持值的变更随时显示在界面上#text 应改而使用textvariablel = 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 tkwindow = 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 tkwindow = 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 tkwindow = 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 tkwindow = 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 tkwindow = 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就是northwestcanvas.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 tkfrom 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')