python tkinter 禁止关闭窗口 您所在的位置:网站首页 tkinter怎么关闭窗口 python tkinter 禁止关闭窗口

python tkinter 禁止关闭窗口

2022-06-14 11:32| 来源: 网络整理| 查看: 265

e0c95b7716dd445ee003a753ada05804.png

视频见链接

莫烦老师讲得挺好哒,听起来不会让人感觉乏味(欢迎大家一起交流哇━(*`∀´*)ノ亻!)

加分项:老师长得好阔耐,一枚典型的理工男

PS:编译环境Python3,该笔记还附加了一些与视频相关的额外资料

P2视频笔记---label&button标签和按钮

4cba72e49a285c8577c81e3681adf8e9.png GUI预览 import tkinter as tk window =tk.Tk() window.title('my window') window.geometry('200x100') var = tk.StringVar()#Tk里特定的字符串变量 l = tk.Label(window,textvariable=var,bg='green',font=('Arial',12),width=15,height=2)#如果不填写的话那么就是自带的 #text和textvariable是有区别哒,一个固定一个可变 l.pack() on_hit = False def hit_me(): global on_hit #global需要在函数内部声明 if(on_hit==False): on_hit=True var.set('you hit me')#var.set('**')将字符串变量设置为** else: on_hit = False var.set('') b= tk.Button(window,text='hit me',width=16,height=2,command=hit_me) b.pack()#将Button安放在label的下面 window.mainloop()#处于一个不断的循环中

P3视频笔记---entry&Text输入和文本框

e9897f83370186239c05ad28e612913c.png GUI预览 import tkinter as tk window = tk.Tk() window.title('my window') window.geometry('200x200') e=tk.Entry(window,show=None)#entry如果不想显示的话是show='*' e.pack() #读取到entry的值并将其insert到text中 def insert_point(): var=e.get() t.insert('insert',var) def insert_end(): var = e.get() t.insert('end', var)#如果是想制定位置输入t.insert(2.2,var)第二行的第二列 b1=tk.Button(window,text='insert point',width=15,height=2,command=insert_point) b1.pack() b2=tk.Button(window,text='insert end',command=insert_end)#如果没加height和width就是默认的大小 b2.pack() t=tk.Text(window,height=2) t.pack() window.mainloop() t=tk.Text(window,height)

P4视频笔记---Listbox列表部件

创建Listbox部件的另一个小例子见链接

import tkinter as tk window = tk.Tk() window.title('my window') window.geometry('200x200') var1=tk.StringVar() l=tk.Label(window,bg='yellow',width=4,textvariable=var1) l.pack() #把在lb中光标选择的那一项拿出来set在label中 def print_selection(): value=lb.get(lb.curselection()) var1.set(value) b1=tk.Button(window,text='print selection',width=15,height=2,command=print_selection) b1.pack() var2=tk.StringVar() var2.set((11,22,33,44)) lb=tk.Listbox(window,listvariable=var2) list_items=[1,2,3,4] for item in list_items: lb.insert('end',item) lb.insert(1,'first')#用index插入,(0是起始点),在第一位插入first lb.insert(2,'second') lb.delete(2) lb.pack() window.mainloop()

P5视频笔记---Radiobutton选择按钮

8600d4fda4bdc6e20ba05daf166edd58.png GUI预览

具体例子见链接

(有点不熟悉,得多看一下)翻译

##有一个问题:为什么运行刚开始时,三个按钮全是选中的?而链接中的IntVar不是先选中

#radiobutton与label的关联 import tkinter as tk window = tk.Tk() window.title('my window') window.geometry('200x200') l=tk.Label(window,bg='yellow',width=20,text='empty')#最开始text设置为空 l.pack() var=tk.StringVar() #将选中的放在label上 def print_selection(): l.config(text='you have selected '+ var.get()) r1=tk.Radiobutton(window,text='Option A', variable=var,value='A',command=print_selection)#(当选r1时)variable的var将赋值成'A' r1.pack() r2=tk.Radiobutton(window,text='Option B', variable=var,value='B',command=print_selection)#(当选r2时)variable的var将赋值成'B' r2.pack() r3=tk.Radiobutton(window,text='Option C', variable=var,value='C',command=print_selection)#(当选r3时)variable的var将赋值成'C' r3.pack() window.mainloop()

P6视频笔记---Scale尺度

d58a2354d7993d2fbeb64d2161c9b0f3.png GUI预览 import tkinter as tk window=tk.Tk() window.title('my window') window.geometry('200x200') l=tk.Label(window,bg='yellow',width=20,text='empty') l.pack() #将scale的变量传进来 def print_select(v): l.config(text='you have selected '+v) #从5到11,orient为横向,length--此处为像素的长度,showvalue不显示为0(False),tickinterval--间隔 #resolution=0.01保留两位小数 s=tk.Scale(window,label='try me',from_=5,to=11,orient=tk.HORIZONTAL, length=200,showvalue=0,tickinterval=3,resolution=0.01,command=print_select) s.pack() window.mainloop()

P7视频笔记---CheckButton勾选项

b7e1fe8910b80867b46f3918a6ea8fbd.png 有一个疑问,为什么Python和C++前面的复选框没有排齐 import tkinter as tk window=tk.Tk() window.title('my window') window.geometry('200x200') l=tk.Label(window,bg='yellow',width=20,text='empty') l.pack() def print_selection(): if((var1.get()==1)&(var2.get()==1)):#用&&会报错 l.config(text='I love both') elif((var1.get()==1)&(var2.get()==0)): l.config(text='I love only Python') elif ((var1.get() == 0) & (var2.get() == 1)): l.config(text='I love only C++') else: l.config(text='I do not love either') var1=tk.IntVar()#整数变量 var2=tk.IntVar() c1=tk.Checkbutton(window,text='Python',variable=var1,onvalue=1,offvalue=0,command=print_selection)#选择Python时,var1为1,否则为0 c2=tk.Checkbutton(window,text='C++',variable=var2,onvalue=1,offvalue=0,command=print_selection)#选择C++时,var2为1,否则为0 c1.pack() c2.pack() window.mainloop()

P8视频笔记---Carvas画布

#画布:可以在画布中加任何你想加入的图片,以及自己画一些东西,可用button的command进行移动放大等

de8c96af4e4497bf4f21a0d522548ca5.png anchor-锚定点的位置划分

1be790e6bc0603c29a7c41a7807cb47c.png GUI预览 import tkinter as tk window=tk.Tk() window.title('my window') window.geometry('500x500') canvas=tk.Canvas(window,bg='blue',height=150,width=440)#创建一个画布,就可以在上面添加图片等操作 image_file=tk.PhotoImage(file='C:/Users/Administrator/Desktop/3.jpg') image=canvas.create_image(0,0,anchor='nw',image=image_file)#将图片加载到canvas中(定在左上角,且锚定点为0,0 #10,10,anchor='center'这个相片的中间放在10,10的位置 x0,y0,x1,y1=50,50,80,80 line=canvas.create_line(x0,y0,x1,y1) oval=canvas.create_oval(x0,y0,x1,y1,fill='green') arc=canvas.create_arc(x0+30,y0+30,x1+30,y1+30,start=0,extent=180) rect=canvas.create_rectangle(100,30,100+20,30+20,fill='yellow') canvas.pack() def moveit():#每次按move,rect移动两个单位 canvas.move(rect,0,2) b=tk.Button(window,text='move',command=moveit).pack() window.mainloop()

P9视频笔记---Menubar菜单

9ee63a1e5eea065cd451383e68c3c3ec.png GUI预览 import tkinter as tk window=tk.Tk() window.title('my window') window.geometry('500x500') l=tk.Label(window,text='',bg='yellow') l.pack() counter=0 def do_job(): global counter l.config(text='do'+str(counter)) counter+=1 menubar=tk.Menu(window)#menubar菜单栏,还没有加任何东西 filemenu=tk.Menu(menubar,tearoff=0)#tearoff=0时不分开 menubar.add_cascade(label='File',menu=filemenu)#在菜单栏上加入filemenu,以File的名字命名(cascade级联 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=window.quit) editmenu=tk.Menu(menubar,tearoff=0) menubar.add_cascade(label='Edit',menu=editmenu) editmenu.add_command(label='Copy',command=do_job) editmenu.add_command(label='Paste',command=do_job) editmenu.add_command(label='Cut',command=do_job) #进一步的子菜单 submenu=tk.Menu(filemenu,tearoff=0) filemenu.add_cascade(label='Import',menu=submenu,underline=0) submenu.add_command(label='Submenu1',command=do_job) #把menubar放在window上 #改变window的参数,把menu改成我们设置好的menubar window.config(menu=menubar) window.mainloop()

P10视频笔记---Frame框架

696b4e6bd0906caf870188364f55108c.png GUI预览 import tkinter as tk window=tk.Tk() window.title('my window') window.geometry('200x200') tk.Label(window,text='on the window').pack() frm=tk.Frame(window)#Frame如果不加任何东西是看不到的 frm.pack() frm_l=tk.Frame(frm) tk.Label(frm_l,text='on the frm_l1').pack() tk.Label(frm_l,text='on the frm_l2').pack() frm_r=tk.Frame(frm) tk.Label(frm_r,text='on the frm_r1').pack() frm_l.pack(side='left')#左边 frm_r.pack(side='right')#右边 window.mainloop()

P11视频笔记---Messagebox弹窗

2c303fcc809158005ba4b47a24b3368d.png GUI预览 import tkinter as tk from tkinter import * import tkinter.messagebox window=tk.Tk() window.title('my window') window.geometry('200x200') def hit_me(): # tk.messagebox.showinfo(title='Hi',message='hhahah')#显示信息show information # tk.messagebox.showwarning(title='Hi', message='nonono') # 显示警告 # tk.messagebox.showerror(title='Hi', message='error') # 显示错误 # result=tk.messagebox.askquestion(title='Hi', message='继续')#返回yes或no,print--在终端输出了返回值 # if result == 'yes':#如果返回值是yes,继续进行下一步操作 # print(1) # print(tk.messagebox.askyesno(title='Hi', message='继续'))#返回True或False # print(tk.messagebox.askretrycancel(title='Hi', message='继续'))#重试或取消---返回True或False print(tk.messagebox.askokcancel(title='Hi', message='继续'))#确定或取消---返回True或False tk.Button(window,text='hit me',command=hit_me).pack() window.mainloop()

P12 pack、grid、place放置位置

feb92f74ec960f434634e5381dc7c367.png label--上下左右

aae9bc16aaf494319b27f62286272178.png grid输出

4f3c0dce43cdd3d179514dc15efda424.png place()

详见:

Python Tkinter Grid布局管理器详解​www.cnblogs.com 761309647b9d3f8c5f00c70d54e579d1.png

总结:pack()如果想设置的复杂一点,需要用frame框架;

grid()和pack()不能同时使用,会报错



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有