(四)python tkinter GUI简单化编程之调整数据组合框控件


创作不易,请多包涵支持,谢谢!


python tkinter GUI简单化编程之文章目录(点击可传送)

python tkinter GUI简单化编程之文章目录


一、自我介绍、封装及使用方法

本系列文章将先以封装python的tkinter库为目标进行讲解,后续将会再封装其他python的GUI库。具体可从第一章开始浏览,后续不再阐述。


二、封装调整数据组合框控件

在第一章python-GUI简单化编程之基础窗口中我们已经import载入封装的tkinter以及要用的的其他库,并添加了封装基础窗口封装顶层窗口数据组合框控件的代码。现在,我们在PythonGui.pyw再添加以下代码封装调整数据组合框控件,此控件有两种类型,接下来将会讲解使用方法。注意不要删除以前的代码。

def S_1创建调整数据组合框控件(放置属性,组合框属性,变量属性,调整属性):
    '''
    函数说明:\n\n
    放置属性为一个列表,元素的意义分别为: 0.放置的窗口 1.放置于窗口的行 2.放置于窗口的列\n\n
    组合框属性为一个列表,元素的意义分别为:0.组合框名称 1.输入框宽度 2.字体大小 3.背景颜色\n\n
    变量属性为一个列表,元素的意义分别为: 0.默认值 1.是否保存变量值 2.变量保存的文件夹名称\n\n
    调整属性为一个列表,元素的意义分别为: 0.调整下限 1.调整上限 2.调整幅度 
    '''
    放置窗体 = 放置属性[0]
    放置位置 = 放置属性[1:]
    组合框名称 = 组合框属性[0]
    输入框宽度 = 组合框属性[1]
    字体大小 = 组合框属性[2]
    背景颜色 = 组合框属性[3]
    默认值 = 变量属性[0]
    是否保存变量值 = 变量属性[1]
    变量保存的文件夹名称 = 变量属性[2]
    调整下限 = 调整属性[0]
    调整上限 = 调整属性[1]
    调整幅度 = 调整属性[2]
    
    
    子窗口 = tk.Frame(放置窗体,bg =背景颜色,height = 50,width = 200 )
    子窗口.grid(row = 放置位置[0],column = 放置位置[1],padx = 2,pady= 2)
    tk.Label(子窗口,text = 组合框名称 ,font=('黑体', 字体大小),bg=背景颜色).grid(row = 0,column = 0,padx = 1,pady= 1)
    组合框变量 = tk.StringVar()
    if 是否保存变量值:
        def 调整保存():
            保存路径及名称 = os.path.dirname(os.path.realpath(sys.argv[0]))+"/"+变量保存的文件夹名称+'/'+组合框名称
            with open(保存路径及名称,"w") as f:
                f.write(str(组合框变量.get())) 
            f.close()
        tk.Spinbox(子窗口, textvariable = 组合框变量, width = 输入框宽度,font=('黑体', 字体大小),justify = tk.CENTER,from_ = 调整下限,to = 调整上限,increment = 调整幅度,command = 调整保存).grid(row = 0,column = 1,padx = 1,pady= 1)
        保存路径及名称 = os.path.dirname(os.path.realpath(sys.argv[0]))+"/"+变量保存的文件夹名称+"/"+组合框名称
        try:
            with open(保存路径及名称,"r") as f:
                for line in f.readlines():
                    组合框变量.set(line.strip('\n'))
            f.close()
        except:
            组合框变量.set(默认值)
            with open(保存路径及名称,"w") as f:
                f.write(str(组合框变量.get())) 
            f.close()
    else:
        tk.Spinbox(子窗口, textvariable = 组合框变量, width = 输入框宽度,font=('黑体', 字体大小),justify = tk.CENTER,from_ = 调整下限,to = 调整上限,increment = 调整幅度).grid(row = 0,column = 1,padx = 1,pady= 1)
        组合框变量.set(默认值)
    return 组合框变量



def S_2创建调整数据组合框控件(放置属性,组合框属性,变量属性,调整属性):
    '''
    函数说明:\n\n
    放置属性为一个列表,元素的意义分别为: 0.放置的窗口 1.放置于窗口的行 2.放置于窗口的列\n\n
    组合框属性为一个列表,元素的意义分别为:0.组合框名称 1.输入框宽度 2.字体大小 3.背景颜色\n\n
    变量属性为一个列表,元素的意义分别为: 0.默认值 1.是否保存变量值 2.变量保存的文件夹名称\n\n
    调整属性为一个列表,元素的意义分别为: 0.调整下限 1.调整上限 2.调整幅度 
    '''
    放置窗体 = 放置属性[0]
    放置位置 = 放置属性[1:]
    组合框名称 = 组合框属性[0]
    输入框宽度 = 组合框属性[1]
    字体大小 = 组合框属性[2]
    背景颜色 = 组合框属性[3]
    默认值 = 变量属性[0]
    是否保存变量值 = 变量属性[1]
    变量保存的文件夹名称 = 变量属性[2]
    调整下限 = 调整属性[0]
    调整上限 = 调整属性[1]
    调整幅度 = 调整属性[2]
    组合框变量 = tk.StringVar()
    子窗口 = tk.Frame(放置窗体,bg =背景颜色,height = 50,width = 200 )
    子窗口.grid(row = 放置位置[0],column = 放置位置[1],padx = 2,pady= 2)
    if 是否保存变量值:
        保存路径及名称 = os.path.dirname(os.path.realpath(sys.argv[0]))+"/"+变量保存的文件夹名称+"/"+组合框名称
        try:
            with open(保存路径及名称,"r") as f:
                for line in f.readlines():
                    组合框变量.set(line.strip('\n'))
            f.close()
        except:
            组合框变量.set(默认值)
            with open(保存路径及名称,"w") as f:
                f.write(str(组合框变量.get())) 
            f.close()
        def 写入保存值(*args):
            保存路径及名称 = os.path.dirname(os.path.realpath(sys.argv[0]))+"/"+变量保存的文件夹名称+"/"+组合框名称
            with open(保存路径及名称,"w") as f:
                f.write(str(组合框变量.get())) 
            f.close()
        组合框变量.trace("w",写入保存值)
    else:
        组合框变量.set(默认值)
    def 加调整():
        当前值 = float(组合框变量.get())
        调整值 = round(当前值 + 调整幅度,2)
        if 调整值>=调整上限:
            调整值 = 调整上限
        组合框变量.set(调整值)
    def 减调整():
        当前值 = float(组合框变量.get())
        调整值 = round(当前值 - 调整幅度,2)
        if 调整值<=调整下限:
            调整值 = 调整下限
        组合框变量.set(调整值)
    tk.Label(子窗口,text = 组合框名称 ,font=('黑体', 字体大小),bg=背景颜色).grid(row = 0,column = 0,padx = 1,pady= 1)
    tk.Entry(子窗口, textvariable = 组合框变量, width = 输入框宽度,font=('黑体', 字体大小),justify = tk.CENTER).grid(row = 0,column = 1,padx = 1,pady= 1)
    tk.Button(子窗口,text = '+'+str(调整幅度),font=('黑体', 字体大小),command = 加调整,bg=背景颜色).grid(row = 0,column = 2,padx = 1,pady= 1)
    tk.Button(子窗口,text = '-'+str(调整幅度),font=('黑体', 字体大小),command = 减调整,bg=背景颜色).grid(row = 0,column = 3,padx = 1,pady= 1)
    return 组合框变量

三、封装库的使用

在test.pyw中添加以下代码准备测试,并在脚本文件的同一个文件夹下创建一个新的文件夹命名为'测试保存变量值文件夹'

在这里插入图片描述

import PythonGui as GUI
主窗体 = GUI.A_建立根页面(['测试软件',400,210,'Beige'],'')
测试调整数据的组合框1 = GUI.S_1创建调整数据组合框控件([主窗体,0,0],['测试数据组合框1',10,12,'Beige'],[123,True,'测试保存变量值文件夹'],[-10,10,1])
测试调整数据的组合框2 = GUI.S_2创建调整数据组合框控件([主窗体,1,0],['测试数据组合框2',10,12,'Beige'],[123,True,'测试保存变量值文件夹'],[-10,10,0.1])
主窗体.mainloop()

S_1创建调整数据组合框控件()S_2创建调整数据组合框控件()函数中有四个形参:1.放置属性 2.组合框属性 3.变量属性 4.调整属性
(1)放置属性为一个列表,元素的意义分别为: 0.放置的窗口 1.放置于窗口的行 2.放置于窗口的列
(2)组合框属性为一个列表,元素的意义分别为:0.组合框名称 1.输入框宽度 2.字体大小 3.背景颜色。
(3)变量属性为一个列表,元素的意义分别为:0.默认值 1.是否保存变量值 2.变量保存的文件夹名称。其中是否保存变量值表示是否保存程序运行时控件中的数值,以便在程序再次运行时载入,而变量保存的文件夹名称则是该变量保存文件的文件夹,若为空,变量的保存文件与脚本同目录。建议在同目录下建立新的文件夹以存放保存文件。变量保存的说明及使用方法请查询第三章python-tkinter-GUI简单化编程之数据组合框控件,这里就不再叙述。
(4)调整属性为一个列表,元素的意义分别为:0.调整下限 1.调整上限 2.每次调整幅度
S_1创建调整数据组合框控件()S_2创建调整数据组合框控件()`函数分别是两种类型的数据调整框,前者是使用箭头调整,后者是使用按钮调整,可以根据不同的场合使用合适的控件。

在这里插入图片描述


四、总结

若有建议之处,麻烦在评论区指出,共同进步,谢谢。ps:平常加班较多,我会抽空余时间更新后面章节。(请做一个手勤的程序猿,哪怕再简单的代码,自己书写一遍胜过粘贴十遍)首先贴出上一章的答案(建立一个显示51个数据显示框)

import PythonGui as GUI
主窗体 = GUI.A_建立根页面(['测试软件',800,510,'Beige'],'')
数据组合框变量列表 = []
for i in range(3):
    for j in range(18):
        数据组合框变量列表.append(GUI.S_创建数据组合框控件([主窗体,j,i],['测试数据组合框'+str(j+i*17),True,False,10,12,'Beige'],['int',j+i*17,False,'']))
主窗体.mainloop()

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/baidu_37611158/article/details/114834394