python tkinter 禁止关闭窗口_【莫烦Python】Tkinter 做简单的窗口视窗<学习笔记(1)>...

python tkinter 禁止关闭窗口_【莫烦Python】Tkinter 做简单的窗口视窗<学习笔记(1)>..._第1张图片

视频见链接

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

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

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

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

python tkinter 禁止关闭窗口_【莫烦Python】Tkinter 做简单的窗口视窗<学习笔记(1)>..._第2张图片
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输入和文本框

python tkinter 禁止关闭窗口_【莫烦Python】Tkinter 做简单的窗口视窗<学习笔记(1)>..._第3张图片
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选择按钮

python tkinter 禁止关闭窗口_【莫烦Python】Tkinter 做简单的窗口视窗<学习笔记(1)>..._第4张图片
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尺度

python tkinter 禁止关闭窗口_【莫烦Python】Tkinter 做简单的窗口视窗<学习笔记(1)>..._第5张图片
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勾选项

python tkinter 禁止关闭窗口_【莫烦Python】Tkinter 做简单的窗口视窗<学习笔记(1)>..._第6张图片
有一个疑问,为什么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进行移动放大等

python tkinter 禁止关闭窗口_【莫烦Python】Tkinter 做简单的窗口视窗<学习笔记(1)>..._第7张图片
anchor-锚定点的位置划分

python tkinter 禁止关闭窗口_【莫烦Python】Tkinter 做简单的窗口视窗<学习笔记(1)>..._第8张图片
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菜单

python tkinter 禁止关闭窗口_【莫烦Python】Tkinter 做简单的窗口视窗<学习笔记(1)>..._第9张图片
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框架

python tkinter 禁止关闭窗口_【莫烦Python】Tkinter 做简单的窗口视窗<学习笔记(1)>..._第10张图片
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弹窗

python tkinter 禁止关闭窗口_【莫烦Python】Tkinter 做简单的窗口视窗<学习笔记(1)>..._第11张图片
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放置位置

python tkinter 禁止关闭窗口_【莫烦Python】Tkinter 做简单的窗口视窗<学习笔记(1)>..._第12张图片
label--上下左右

python tkinter 禁止关闭窗口_【莫烦Python】Tkinter 做简单的窗口视窗<学习笔记(1)>..._第13张图片
grid输出

4f3c0dce43cdd3d179514dc15efda424.png
place()

详见:

Python Tkinter Grid布局管理器详解​www.cnblogs.com
python tkinter 禁止关闭窗口_【莫烦Python】Tkinter 做简单的窗口视窗<学习笔记(1)>..._第14张图片

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

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

你可能感兴趣的:(python,tkinter,禁止关闭窗口)