Estoy obteniendo datos de MS SQL y mostrándolos en Python usando el widget de entrada tkinter para la GUI. Sin embargo, al establecer el ancho en el parámetro, todas las columnas tienen el mismo ancho, por lo que las columnas que contienen ID / Claves tienen espacio innecesario, mientras que las columnas que requieren más ancho tienen su texto truncado.

Aquí está mi código:

class Table: 
      
    def __init__(self, root, totalRows, totalColoumns, rows): 
          
        # code for creating table 
        for i in range(totalRows): 
            for j in range(totalColoumns): 
                  
                self.e = tkinter.Entry(root, width=50, fg='blue', 
                               font=('Arial', 12)) 
                  
                self.e.grid(row=i, column=j) 
                self.e.insert(tkinter.END, rows[i][j]) 

Aquí los parámetros root, totalRows, totalColoumns, rows son proporcionados por una función que llama al fragmento de código anterior.

Esta es la salida de todas las columnas generadas donde las dos primeras columnas son clave primaria y clave externa: Salida

0
sajjad 24 ago. 2020 a las 15:02

1 respuesta

La mejor respuesta

Supongo aquí que las dos primeras columnas pueden ser pequeñas, p. Ej. de ancho 10, mientras que todos los demás serán más grandes, p. ej. de ancho 80.

Hay muchas formas de cambiar el bucle for creando la tabla para lograr esto. Por ejemplo, puede crear una lista de anchos:

widths = [10, 10] + [80]*(totalColoumns - 2)

# code for creating table 
for i in range(totalRows): 
    for j in range(totalColoumns): 
          
        self.e = tkinter.Entry(root, width=widths[j], fg='blue', 
                       font=('Arial', 12)) 
          
        self.e.grid(row=i, column=j) 
        self.e.insert(tkinter.END, rows[i][j]) 
2
Wai Ha Lee 24 ago. 2020 a las 20:17