(4) Ajuste el control del cuadro combinado de datos de la programación simplificada de la GUI de python tkinter


La creación no es fácil, perdóname por tu apoyo, ¡gracias!


Directorio de artículos de programación simplificada de la GUI de Python tkinter (haga clic para enviar)

Directorio de artículos de programación simplificada de la GUI de Python tkinter


1. Autointroducción, empaquetado y uso

Esta serie de artículos primero explicará la biblioteca tkinter que encapsula Python y luego encapsulará otras bibliotecas GUI de Python. Los detalles se pueden consultar en el primer capítulo y no se explicarán en el seguimiento.


Dos, empaque y ajuste el control del cuadro combinado de datos

En el primer capítulo python-GUI简单化编程之基础窗口, que ya importamos tkinter paquete de carga y el uso de otras bibliotecas y añada el 封装基础窗口, 封装顶层窗口, 数据组合框控件código. Ahora, estamos PythonGui.pywagregando el siguiente paquete de código 调整数据组合框控件. Hay dos tipos de este control. A continuación, explicaremos cómo usarlo. Tenga cuidado de no borrar el código anterior.

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 组合框变量

En tercer lugar, el uso de bibliotecas de paquetes.

Agregue el siguiente código a test.pyw para prepararse para la prueba y cree una nueva carpeta con el nombre del archivo de secuencia de comandos en la misma carpeta '测试保存变量值文件夹':

Inserte la descripción de la imagen aquí

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创建调整数据组合框控件()Hay cuatro parámetros formales en la función y : 1. Colocar la propiedad 2. Propiedad del cuadro combinado 3. Propiedad de la variable 4. Ajustar la propiedad
(1) Colocar la propiedad como una lista, y el significado de los elementos es: 0. Colocado ventana 1. Colocado en La fila de la ventana 2. La columna colocada en la ventana
(2) El atributo del cuadro combinado es una lista, y el significado de los elementos es: 0. Nombre del cuadro combinado 1. Ancho del cuadro de entrada 2. Fuente tamaño 3. Color de fondo.
(3) El atributo de variable es una lista, y los significados de los elementos son: 0. Valor predeterminado 1. Si se guardará el valor de la variable 2. El nombre de la carpeta donde se guarda la variable. El cual 是否保存变量值indica si se guarda el valor en el control cuando el programa se está ejecutando, para que se pueda cargar cuando se vuelva a ejecutar el programa, y 变量保存的文件夹名称es la carpeta donde se guarda la variable. Si está vacío, la variable se guarda en el mismo directorio que el script. Se recomienda crear una nueva carpeta en el mismo directorio para almacenar y guardar archivos. Consulte el control del cuadro combinado de datos de la programación simplificada de python-tkinter-GUI en el Capítulo 3 para ver la descripción y el uso del almacenamiento de variables, que no se describirá aquí.
(4) El atributo de ajuste es una lista, y los significados de los elementos son: 0. Ajustar el límite inferior 1. Ajustar el límite superior 2. Cada rango de ajuste
S_1 crea un control de cuadro combinado de datos de ajuste () S_2 crea un dato de ajuste función de control de cuadro combinado () `respectivamente Hay dos tipos de cuadros de ajuste de datos: el primero se ajusta mediante flechas y el segundo se ajusta mediante botones. Puede utilizar los controles adecuados según las diferentes ocasiones.

Inserte la descripción de la imagen aquí


Cuatro, resumen

Si tiene alguna sugerencia, indíquela en el área de comentarios y progresemos juntos, gracias. PD: Normalmente trabajo muchas horas extra, así que me tomaré el tiempo para actualizar los siguientes capítulos. (Sea un programador útil, incluso el código simple, escribirlo usted mismo es mejor que pegarlo diez veces) Primero publique la respuesta del capítulo anterior (cree un cuadro de visualización que muestre 51 datos)

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

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/baidu_37611158/article/details/114834394
Recomendado
Clasificación