zoukankan      html  css  js  c++  java
  • (八)python语法之Tkinter

    1.主框架

    import tkinter as tk
    
    root = tk.Tk()
    root.title('my window')
    root.geometry('400x300')
    root.mainloop()
    

    2.标签 变量

    import tkinter as tk
    
    root = tk.Tk()
    root.title('my window')
    root.geometry('400x300')
    
    # 标签
    l1 = tk.Label(root, text='Label1', bg='green', font=('Arial', 12), width=15, height=2)
    l1.pack(expand=True, side='top')  
    l1.config(text='Hello', bg='yellow')
    
    # 标签内容设为变量
    var = tk.StringVar() 
    l2 = tk.Label(root, textvariable=var, bg='red', font=('Arial', 12), width=15, height=2)
    l2.pack(expand=True, side='top')
    var.set('Label2')
    
    root.mainloop()
    

    3.输入框 文本框 按钮

    import tkinter as tk
    
    root = tk.Tk()
    root.title('my window')
    root.geometry('400x300')
    
    def hit_me():
        # 从输入框获取内容
        var = e.get()          
        # 在文本框光标处输入内容
        t.insert('insert',var) 
        # 向文本框末尾处输入内容
        t.insert('end',var)    
    
    # 输入框设置输入内容显示为*
    e = tk.Entry(root, show='*') 
    e.pack()
    
    # 文本框
    t = tk.Text(root, width=15, height=2)
    t.pack()
    
    # 按钮
    b = tk.Button(root, text='hit me', width=15, height=2, command=hit_me) 
    b.pack()
    
    root.mainloop()
    

    4.Listbox长条形选择框

    import tkinter as tk
    import tkinter.messagebox as msg
    
    root = tk.Tk()
    root.title('my window')
    root.geometry('400x300')
    
    def add_item():
        var = e.get() 
        lb.insert('end', var) # 在末尾插入
        lb.insert(0, 'first') # 在最上面插入
        
    def del_item():
        # 删除第二个位置的字符
        lb.delete(lb.curselection())    
    
    def show_item():
        # 获取Listbox光标值 
        var = lb.get(lb.curselection())  
        # 弹窗消息
        msg.showinfo(title='Hello', message=var)    
    
    var = tk.StringVar()
    var.set(('Tom','Mary','Jack'))
    lb = tk.Listbox(root, listvariable=var) 
    lb.pack()
    
    e = tk.Entry(root) 
    e.pack()
    
    b1 = tk.Button(root, text='增加', width=15, height=2, command=add_item) 
    b1.pack(side='left')
    
    b2 = tk.Button(root, text='删除', width=15, height=2, command=del_item) 
    b2.pack(side='left')
    
    b3 = tk.Button(root, text='Show', width=15, height=2, command=show_item) 
    b3.pack(side='right')
    
    root.mainloop()
    

    5.Radiobutton圆形选择框

    import tkinter as tk
    
    root = tk.Tk()
    root.title('my window')
    root.geometry('400x300')
    
    # 选中时把value的值A放到变量var中
    var = tk.StringVar() 
    var.set('A')
    
    r1 = tk.Radiobutton(root, text='Option A', variable=var, value='A')
    r1.pack()
    
    r2 = tk.Radiobutton(root, text='Option B', variable=var, value='B')
    r2.pack()
    
    print(var.get())
    
    root.mainloop()
    

    6.Checkbutton勾选项

    import tkinter as tk
    
    root = tk.Tk()
    root.title('my window')
    root.geometry('400x300')
    
    # 选中时onvalue的值1放到变量var中
    var = tk.StringVar() 
    var.set(0)
    
    c = tk.Checkbutton(root, text='Python', variable=var, onvalue=1, offvalue=0)
    c.pack()
    
    print(var.get())
    
    root.mainloop()
    

    7.Scale滑动选择框

    import tkinter as tk
    
    root = tk.Tk()
    root.title('my window')
    root.geometry('400x300')
    
    var = tk.IntVar()
    
    s = tk.Scale(root, label='try me', from_=5, to=11, orient=tk.HORIZONTAL,
                 length=200, showvalue=1, tickinterval=2, resolution=0.01,
                 variable=var)
    s.pack()
    
    print(var.get())
    
    root.mainloop()
    

    8.Canvas画布

    import tkinter as tk
    
    root = tk.Tk()
    root.title('my window')
    root.geometry('400x300')
    
    # 横坐标移动0个单位,纵坐标移动2个单位
    def moveit(): 
        canvas.move(rect, 0, 2)
    
    canvas = tk.Canvas(root, bg='blue', height=400, width=300)
    canvas.pack()
    
    # 加载图片
    image_file = tk.PhotoImage(file='1.png') 
    # 在画布上添加图片
    image = canvas.create_image(10, 10, anchor='nw', image=image_file) 
    
    # 从坐标(50,50)到(80,80)画一条直线 
    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='red')  
    
    # 画一个扇形
    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) 
    
    b = tk.Button(root, text='move', command=moveit).pack()
    
    root.mainloop()
    

    9.弹窗

    import tkinter as tk
    import tkinter.messagebox as msg
    import tkinter.filedialog as fd
    
    root = tk.Tk()
    root.title('my window')
    root.geometry('400x300')
    ###########################################
    msg.showinfo(title='Hi', message='INFO')  
    
    msg.showwarning(title='Hi', message='WARNING') 
    
    msg.showerror(title='Hi', message='ERROR')   
    
    # return 'yes' , 'no'
    msg.askquestion(title='Hi', message='ask1')  
    
    # return True, False
    msg.askyesno(title='Hi', message='ask2')     
    
    # return True, False
    msg.askokcancel(title='Hi', message='ask3')  
    
    # return, True, False, None
    msg.askyesnocancel(title="Hi", message="ask4") 
    
    # 文件选择框
    fd.askopenfilename() 
    
    root.mainloop()
    

    10.菜单

    import tkinter as tk
    
    root = tk.Tk()
    root.title('my window')
    root.geometry('400x300')
    
    def do_job():
        print("test")
    
    # 创建菜单栏容器
    menubar = tk.Menu(root)         
    # 创建空菜单                  
    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_separator()                              
    filemenu.add_command(label='Exit', command=root.quit) 
    
    # 在filemenu上添加二级菜单
    submenu = tk.Menu(filemenu)                           
    filemenu.add_cascade(label='Import', menu=submenu, underline=0)
    submenu.add_command(label="Image", command=do_job)
    
    # 菜单项配置
    root.config(menu=menubar) 
    
    root.mainloop()
    

    11.布局

    import tkinter as tk
    
    root = tk.Tk()
    root.title('my window')
    root.geometry('400x300')
    
    # grid用表格形式定位。row为行,colum为列,padx是单元格左右间距,pady是单元格上下间距
    for i in range(4):
        for j in range(3):
            tk.Label(root, text=i+j).grid(row=i, column=j, padx=10, pady=10)
    
    # place将这个部件放在坐标为(x,y)的位置,anchor=nw表示锚定点是西北角
    tk.Label(root, text='Hello').place(x=200, y=100, anchor='nw')
    
    root.mainloop()
    

    12.Frame

    import tkinter as tk
    
    root = tk.Tk()
    root.title('my window')
    root.geometry('400x300')
    
    # 在root上创建一个frame
    frm = tk.Frame(root).pack()
    
    # 在frame上创建两个frame
    frm_l = tk.Frame(frm)       
    frm_r = tk.Frame(frm)
    
    # 布局位置
    frm_l.pack(side='left')     
    frm_r.pack(side='right')
    
    # 在Frame上添加组件
    tk.Label(frm_l, text='frm_l1').pack() 
    tk.Label(frm_l, text='frm_l2').pack()
    tk.Label(frm_r, text='frm_r1').pack()
    
    root.mainloop()
    
  • 相关阅读:
    C# 获取指定目录下所有文件信息、移动目录、拷贝目录
    土地利用数据库地图自动缩编软件--地图缩编
    全国不动产登记交流
    [记录]好用的文件上传插件webuploader
    Petapoco Update在使用匿名对象修改时提示“给定关键字不在字典中”
    解决在MySQL使用PetaPoco T4生成数据的实体时得到当前MySQL数据库下所有表的错误方法
    [知识积累]MySQL外键约束条件
    Js判断QQ在线状态不准确的解决办法
    稍带迷茫的秋日小记
    假如你有个idea,你将怎么去实现它?
  • 原文地址:https://www.cnblogs.com/qxcheng/p/13536286.html
Copyright © 2011-2022 走看看