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

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
显示是否被选中状态
【小甲鱼python】Tkinter学习笔记1-4_第1张图片
【小甲鱼python】Tkinter学习笔记1-4_第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
可以选中多个
【小甲鱼python】Tkinter学习笔记1-4_第3张图片【小甲鱼python】Tkinter学习笔记1-4_第4张图片

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
只能选中一个
【小甲鱼python】Tkinter学习笔记1-4_第5张图片
【小甲鱼python】Tkinter学习笔记1-4_第6张图片

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
循环+按钮去掉小圆点并且横向填充
【小甲鱼python】Tkinter学习笔记1-4_第7张图片

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
【小甲鱼python】Tkinter学习笔记1-4_第8张图片

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
【小甲鱼python】Tkinter学习笔记1-4_第9张图片

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账号和密码
【小甲鱼python】Tkinter学习笔记1-4_第10张图片

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
简单计算器
【小甲鱼python】Tkinter学习笔记1-4_第11张图片

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
调整格式之后
【小甲鱼python】Tkinter学习笔记1-4_第12张图片

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()

你可能感兴趣的:(python)