zoukankan      html  css  js  c++  java
  • thkiner常用组件

    进度条

    import tkinter as tk
    import time
    
    # 创建主窗口
    window = tk.Tk()
    window.title('进度条')
    window.geometry('630x150')
    
    # 设置下载进度条
    tk.Label(window, text='下载进度:', ).place(x=50, y=60)
    canvas = tk.Canvas(window, width=465, height=22, bg="white")
    canvas.place(x=110, y=60)
    
    
    # 显示下载进度
    def progress():
        # 填充进度条
        fill_line = canvas.create_rectangle(1.5, 1.5, 0, 23, width=0, fill="green")
        x = 500  # 未知变量,可更改
        n = 465 / x  # 465是矩形填充满的次数
        for i in range(x):
            n = n + 465 / x
            canvas.coords(fill_line, (0, 0, n, 60))
            window.update()
            time.sleep(0.02)  # 控制进度条流动的速度
    
        # 清空进度条
        fill_line = canvas.create_rectangle(1.5, 1.5, 0, 23, width=0, fill="white")
        x = 500  # 未知变量,可更改
        n = 465 / x  # 465是矩形填充满的次数
    
        for t in range(x):
            n = n + 465 / x
            # 以矩形的长度作为变量值更新
            canvas.coords(fill_line, (0, 0, n, 60))
            window.update()
            time.sleep(0)  # 时间为0,即飞速清空进度条
    
    
    btn_download = tk.Button(window, text='启动进度条', command=progress)
    btn_download.place(x=400, y=105)
    
    window.mainloop()
    

    grid布局管理器

    在使用Tkinter模块编写图像界面时,经常用到pack()和grid()进行布局管理,pack()参数较少,使用方便,是最简单的布局,但是当控件数量较多时,可能需要使用grid()进行布局(不要在同一个窗口中同时使用grid()和pack()!!)。

    grid使用方法和主要参数:

    row=x,column=y:将控件放在x行,y列的位置。注意:
    如果不指定参数,则默认从0开始。
    此处的行号和列号并不是像在坐标轴上一样严格,只是代表一个上下左右的关系,如:

    Label(master, text="First").grid(row=0)
    Label(master, text="Second").grid(row=1)
    

    和(在行号“1”没有出现的情况下):

    Label(master, text="First").grid(row=0)
    Label(master, text="Second").grid(row=2)
    

    效果都是一样的:
    2.columnspan: 设置单元格横向跨越的列数,即控件占据的列数(宽度); rowspan:设置单元格纵向跨越的行数,即控件占据的行数(高度)。

    3.ipadx:设置控件里面水平方向空白区域大小; ipady:设置控件里面垂直方向空白区域大小;
    padx:设置控件周围水平方向空白区域保留大小; pady:设置控件周围垂直方向空白区域保留大小;

    4.sticky:默认的控件在窗口中的对齐方式是居中。可以使用sticky选项去指定对齐方式,可以选择的值有:N/S/E/W,分别代表上对齐/下对齐/左对齐/右对齐,可以单独使用N/S/E/W,也可以上下和左右组合使用,达到不同的对齐效果,如:

    from tkinter import *
    
    master = Tk()
    master.geometry('300x130')
    e1 = Button(master,text='First',height=2,width=7,fg='red')
    e2 = Button(master,text='Second',height=3,width=13,fg='blue')
    e1.grid(row=0, column=0)
    e2.grid(row=0, column=1)
    
    mainloop()
    

    窗口内有两个按钮,宽度高度均不相同,可以看到它们的对齐方式是居中显示:

    如果想让它们在同一行上下对齐,可以设置sticky=N+S,意为顶端和低端都要对齐:

      

    from tkinter import *
    
    master = Tk()
    master.geometry('300x130')
    e1 = Button(master,text='First',height=2,width=7,fg='red')
    e2 = Button(master,text='Second',height=3,width=13,fg='blue')
    e1.grid(row=0, column=0,sticky=N+S)
    e2.grid(row=0, column=1,sticky=N+S)
    
    mainloop()
           
    

    总结如下:

    sticky=N/S/E//W:顶端对齐/底端对齐/右对齐/左对齐
    sticky=N+S:拉伸高度,使其在水平方向上顶端和底端都对齐
    sticky=E+W,拉伸宽度,使其在垂直方向上左边界和右边界都对齐
    sticky=N+S+E:拉伸高度,使其在水平方向上对齐,并将控件放在右边(当两个控件放在同一行同一列时效果明显)

    还有诸如此类的组合方式根据需要调整。
    在Tkinter模块中,各种控件的大小计量单位并不尽相同,可能需要反复调整才能达到最佳效果。

    其他方法

    w.grid_bbox(column=None, row=None, col2=None, row2=None)
    返回一个有四个元素的元组,用来描述 w 插件内一些或者全部 单元 的边界。返回的前两个数为左上方区域的x,y坐标,后续的两个数为宽度和高度。
    如果只传递了 column 和 row 参数,返回的参数描述的是该行列的 单元 的大小。如果传递了 col2 和 row2 参数,返回的参数描述的就是从 column 列 到 col2 列,以及从 row 行 到 row2 行总体区域的大小。
    比如, w.grid_bbox(0, 0, 1, 1) 返回四个单元 的边界框,而不是一个 单元 。
    
    w.grid_forget()
    这个方法可以取消显示 w 插件。w 仍存在,只是不显示。可以再次调用该插件的 .grid() 函数来显示插件。你需要重新设置 .grid()的option选项,因为插件不会存储之前的options。
    
    w.grid_info()
    可以返回 w 插件各个option组成的dict。
    
    w.grid_location(x, y)
    设定 w 插件在屏幕中相对于容纳单元的(x,y)坐标,并返回grid系统中的哪个单元包含了该坐标(column,row)。
    
    w.grid_propagate()
    正常情况下,所有的插件都会延伸,也就是根据内容自动调整大小。可以,有时候想要固定插件的大小。可以通过 w.grid_propagate(0) 来实现。
    
    w.grid_remove()
    这个方法和 .grid_forget() 类似,不同的是,它会存储grid的option。所以重新调用 .grid() 函数后,它会使用相同的option配置选项。
    
    w.grid_size()
    返回有两个元素的元组,分别表示 w 插件所在的列数和行数。
    
    w.grid_slaves(row=None, column=None)
    返回一组由 w 插件管理的插件的list。如果没有提供任何参数,返回包含所有的插件的list。提供 row 参数,返回该行所有插件,提供 column 参数,则返回该列所有插件。
    
  • 相关阅读:
    unity 编辑器模拟Pause
    1.项目委托类参考 2.wiki unity 参考库
    unity excel导出json 并解析 存在项目 dict内
    技能子弹精确化 使用int个数进行度量比较好
    lua 程序设计 面向对象 赋值后字段申请了新的空间
    圆和射线相交 矩形和射线相交判断 lua
    DX11 DX10 DWORD 和WORD
    dx11 入门 Tutorial 06: 明白context->updateSubsource和setConstantBuffers DirectXSampleBrowser(June 2010)
    dx11 入门 Tutorial 05: DepthBuffer的创建 DirectXSampleBrowser(June 2010)
    dx11 入门 Tutorial 04: DX、HLSL中矩阵的内存存储和数学计算方式 DirectXSampleBrowser(June 2010)
  • 原文地址:https://www.cnblogs.com/zhaobowen/p/14127220.html
Copyright © 2011-2022 走看看