【小甲鱼python】Tkinter学习笔记1-4

    技术2022-07-11  76

    1.1

    import tkinter as tk app=tk.Tk() #生成了顶层窗口的实例 root窗口,T大写k小写 app.title("Fishc Demo")#设置标题栏 #Label是一个组件,组件实例化后成为一个对象。 #该组件放在app这个窗口上 #该组件是最常见的组件之一,主要用于显示文本和图标 theLabel=tk.Label(app,text="我的第二个窗口程序!") #pack()用于自动调节组件自身的尺寸和位置 theLabel.pack() #mainloop()窗口的主事件循环 app.mainloop()

    1.2

    import tkinter as tk class App: def __init__(self,master): frame=tk.Frame(master) #Frame框架 在复杂的布局里面将这些组件进行分组 frame.pack(side=tk.LEFT,padx=10,pady=10)#自动调整位置 self.hi_there =tk.Button(frame,text="打招呼",bg="black",fg="white",command=self.say_hi)#按钮组件 self.hi_there.pack() def say_hi(self): print("Hi!") root=tk.Tk()#创建一个顶层窗口 app =App(root) root.mainloop()#进入主事件循环

    2.1

    from tkinter import * #把tkinter模块中的所有内容都导入 root = Tk() #生成一个root窗口 #justify设置左对齐 textLabel =Label(root,text="你好!该页面无法访问",justify=LEFT,padx=10) textLabel.pack(side=LEFT)#将标签放到图片的左边 photo=PhotoImage(file="daka.png")#将PhotoImage实例化 imgLabel=Label(root,image=photo) imgLabel.pack(side=RIGHT)#RIGHT要全部大写 不然报错 mainloop()

    2.2 将文字显示在图片上

    from tkinter import * #把tkinter模块中的所有内容都导入 root = Tk() #生成一个root窗口 photo=PhotoImage(file="daka.png") theLabel=Label(root, text="学python\n到...!", justify=LEFT, image=photo, compound=CENTER,#文字在图片的正上方显示 font=("宋体",20),#用元组 字体+字号 fg="orange"#文字的颜色 ) theLabel.pack() mainloop()

    2.3 button接受用户的信息

    from tkinter import * #把tkinter模块中的所有内容都导入 def callback(): var.set("访问再次失败!") root = Tk() #生成一个root窗口 frame1=Frame(root) frame2=Frame(root) var=StringVar()#必须在Tk()初始化后定义使用 var.set("你好!请问您要继续访问该网页吗?") #justify设置左对齐 textLabel =Label(frame1,textvariable=var,justify=LEFT) textLabel.pack(side=LEFT)#将标签放到图片的左边 photo=PhotoImage(file="daka.png")#将PhotoImage实例化 imgLabel=Label(frame1,image=photo) imgLabel.pack(side=RIGHT)#RIGHT要全部大写 不然报错 theButton=Button(frame2,text="继续访问",command=callback)#一点要有command,button才会有用 theButton.pack() frame1.pack(padx=10,pady=10) frame2.pack(padx=10,pady=10) mainloop()

    3.1

    from tkinter import * root=Tk() v=IntVar() #整型变量v表示按钮是否被按下 c=Checkbutton(root,text="测试一下",variable=v) c.pack() mainloop()

    3.2 显示是否被选中状态

    from tkinter import * root=Tk() v=IntVar() #整型变量v表示按钮是否被按下 c=Checkbutton(root,text="测试一下",variable=v) c.pack() l=Label(root,textvariable=v) l.pack() mainloop()

    3.3 可以选中多个

    from tkinter import * root=Tk() GIRLS=["amy","cindy","helen","susan"] v=[] for girl in GIRLS: #添加状态到状态列表v[]中去 v.append(IntVar()) #每操作一次就有状态存入v[],-1就是读取最新的状态并返回 b=Checkbutton(root,text=girl,variable=v[-1]) b.pack(anchor='w')#w是west 左对齐 大写W 小写'w' mainloop()

    3.4 只能选中一个

    from tkinter import * root=Tk() v=IntVar() #variable设置同样的变量 value的值一定要不同 Radiobutton(root,text="One",variable=v,value=1).pack(anchor=W) Radiobutton(root,text="Two",variable=v,value=2).pack(anchor=W) Radiobutton(root,text="Three",variable=v,value=3).pack(anchor=W) mainloop()

    3.5 循环+按钮去掉小圆点并且横向填充

    from tkinter import * root=Tk() LANS=[ ("python",1), ("ruby",2), ("Per1",3), ] v=IntVar() v.set(1) for lang,num in LANS: b=Radiobutton(root,text=lang,variable=v,value=num,indicator=False)#indicator设置按钮 '''b.pack(anchor=W)''' b.pack(fill=X)#将按钮横向填充 X为大写 或者'w'小写 mainloop()

    3.6

    from tkinter import * root=Tk() group=LabelFrame(root,text="最好的脚本语言是?",padx=5,pady=5) group.pack(padx=10,pady=10) LANS=[ ("python",1), ("ruby",2), ("Per1",3), ] v=IntVar() v.set(1) for lang,num in LANS: b=Radiobutton(group,text=lang,variable=v,value=num) b.pack(anchor=W) mainloop()

    4.1

    from tkinter import * root=Tk() Label(root,text="作品:").grid(row=0,column=0) Label(root,text="作者:").grid(row=1,column=0) e1=Entry(root) e2=Entry(root) e1.grid(row=0,column=1,padx=10,pady=5) e2.grid(row=1,column=1,padx=10,pady=5) def show(): print("作品:《%s》" % e1.get()) print("作品: %s" % e2.get()) #两个按钮 Button(root,text="获取信息",width=10,command=show).\ grid(row=3,column=0,sticky=W,padx=10,pady=5) Button(root,text="退出",width=10,command=root.quit).\ grid(row=3,column=1,sticky=E,padx=10,pady=5) mainloop()

    4.2账号和密码

    from tkinter import * root=Tk() Label(root,text="账号:").grid(row=0,column=0) Label(root,text="密码:").grid(row=1,column=0) v1=StringVar() v2=StringVar() e1=Entry(root,textvariable=v1) e2=Entry(root,textvariable=v2,show="*") e1.grid(row=0,column=1,padx=10,pady=5) e2.grid(row=1,column=1,padx=10,pady=5) def show(): print("账号: %s" % e1.get()) print("密码: %s" % e2.get()) #两个按钮 Button(root,text="芝麻开门",width=10,command=show).\ grid(row=3,column=0,sticky=W,padx=10,pady=5) Button(root,text="退出",width=10,command=root.quit).\ grid(row=3,column=1,sticky=E,padx=10,pady=5) mainloop()

    4.3在第一个输入框输入“小甲鱼”并通过Tab键将焦点转移到第二个输入框的时候,验证功能被成功触发。

    from tkinter import * master=Tk() def test(): if e1.get()=="小甲鱼": print("正确!") return True else: print("错误!") e1.delete(0,END) return False v=StringVar() e1=Entry(master,textvariable=v,validate="focusout",validatecommand=test) e2=Entry(master) e1.pack(padx=10,pady=10) e2.pack(padx=10,pady=10) mainloop()

    4.4 invalidcommand选项指定的函数只有在validatecommand的返回值为False的时候才被调用。

    from tkinter import * master=Tk() def test1(): if e1.get()=="小甲鱼": print("正确!") return True else: print("错误!") e1.delete(0,END) return False def test2(): print("我被调用了...") return True v=StringVar() e1=Entry(master,textvariable=v,validate="focusout",validatecommand=test1,invalidcommand=test2) e2=Entry(master) e1.pack(padx=10,pady=10) e2.pack(padx=10,pady=10) mainloop()

    4.5

    from tkinter import * master=Tk() v=StringVar() def test(content,reason,name): if content=="小甲鱼": print("正确!") print(content,reason,name) return True else: print("错误!") print(content,reason,name) return False testCMD=master.register(test) #'%P'当输入框的值允许改变的时候,该值有效,该值为输入框的最新文本内容 #'%v'该组件当前的validate选项的值 #'%W'该组件的名字 e1=Entry(master,textvariable=v,validate="focusout",\ validatecommand=(testCMD,'%P','%v','%W')) e2=Entry(master) e1.pack(padx=10,pady=10) e2.pack(padx=10,pady=10) mainloop()

    4.6 简单计算器

    from tkinter import * master=Tk() v1=StringVar() v2=StringVar() v3=StringVar() def test(content): return content.isdigit() testCMD=master.register(test) e1=Entry(master,textvariable=v1,validate="key",\ validatecommand=(testCMD,'%P')).grid(row=0,column=0) Label(master,text="+").grid(row=0,column=1) e2=Entry(master,textvariable=v2,validate="key",\ validatecommand=(testCMD,'%P')).grid(row=0,column=2) Label(master,text="=").grid(row=0,column=3) e3=Entry(master,textvariable=v3,state="readonly").grid(row=0,column=4)#计算结果设置为只读 def calc(): result=int(v1.get())+int(v2.get()) v3.set(str(result)) Button(master,text="计算结果",command=calc).grid(row=1,column=2) mainloop()

    4.7 调整格式之后

    from tkinter import * master=Tk() frame=Frame(master) frame.pack(padx=10,pady=10) v1=StringVar() v2=StringVar() v3=StringVar() def test(content): return content.isdigit() testCMD=master.register(test) e1=Entry(frame,width=10,textvariable=v1,validate="key",\ validatecommand=(testCMD,'%P')).grid(row=0,column=0) Label(frame,text="+").grid(row=0,column=1) e2=Entry(frame,width=10,textvariable=v2,validate="key",\ validatecommand=(testCMD,'%P')).grid(row=0,column=2) Label(frame,text="=").grid(row=0,column=3) e3=Entry(frame,width=10,textvariable=v3,state="readonly").grid(row=0,column=4)#计算结果设置为只读 def calc(): result=int(v1.get())+int(v2.get()) v3.set(str(result)) Button(frame,text="计算结果",command=calc).grid(row=1,column=2,pady=5) mainloop()
    Processed: 0.013, SQL: 9