es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿El Scrollbar de Python Tkinter es demasiado pequeño y no se puede ver?

¿Alguien puede explicar por qué la barra de desplazamiento no funciona en mi código de Python?

Ver la sección “#add_scroll_bar”. Deseo que la barra de desplazamiento esté al lado del widget treeview. Por lo tanto, la barra de desplazamiento solo debe desplazarse a través del contenido, pero no del marco tkinter.

Ver el código Python a continuación:

import requests
import json
import datetime
import tkinter as tk
from tkinter import ttk

abrir interfaz tkinter

root = tk.Tk()

#cambiar la interfaz GUID
longitud=600
ancho=450

root.geometry(str(longitud)+’x’+str(ancho))
root.title(‘Helium Earning Tracker’)

etiqueta

x1=50
y1=30

tk.Label(root,text=’Dirección del minero de Helium’).place(x=x1,y=y1,anchor=’w’)
tk.Label(root,text=’Bloques’).place(x=x1,y=(y12)+20,anchor=’w’)
tk.Label(root,text=’Resultado’).place(x=x1,y=(y1
4)+20,anchor=’w’)

columnas=[‘Fecha’,’Cantidad de HNT’,’Precio de HNT’,’Ganancias diarias’]

agregar cuadro de datos

tvw=ttk.Treeview(root,columns=columnas,show=’headings’)
tvw.place(x=x1,y=(y1*9)+20,anchor=’w’)

for c1 in range(len(columnas)):
tvw.heading(columnas[c1],text=str(columnas[c1]))
tvw.column(columnas[c1],width=len(columnas[c1])*14)

contactos = []
for n in range(1, 100):
contactos.append((f’primero {n}’, f’último {n}’, f’email{n}@example.com’))

agregar datos al treeview

for contacto in contactos:
tvw.insert(”, tk.END, values=contacto)

añadir barra de desplazamiento

scrollbar = ttk.Scrollbar(root,orient=’vertical’,command=tvw.yview)
tvw.configure(yscroll=scrollbar.set)
scrollbar.pack(side=’left’,fill=’y’)

root.mainloop()

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que la barra de desplazamiento no funciona en el código de Python proporcionado porque la barra de desplazamiento no está ubicada junto al widget treeview. En su lugar, está ubicada en el lado izquierdo del marco tkinter. Para solucionar este problema, se pueden seguir los siguientes pasos:

    1. Eliminar la línea scrollbar.pack(side='left', fill='y') del código.
    2. Agregar el widget scrollbar al widget treeview utilizando el método tvw.config(yscrollcommand=scrollbar.set).
    3. Colocar el widget treeview y el widget scrollbar en un marco común.
    4. Configurar el marco común para que utilice el método pack() para la gestión de geometría.

    El código actualizado con estos cambios se vería así:

    import requests
    import json 
    import datetime
    import tkinter as tk
    from tkinter import ttk
    
    # abrir interfaz tkinter
    root = tk.Tk()
    
    # cambiar interfaz GUID
    longitud = 600
    ancho = 450
    
    root.geometry(str(longitud) + 'x' + str(ancho))
    root.title('Seguimiento de Ganancias de Helium')
    
    # etiqueta
    x1 = 50
    y1 = 30
    
    tk.Label(root, text='Dirección del Minero de Helium').place(x=x1, y=y1, anchor='w')
    tk.Label(root, text='Bloques').place(x=x1, y=(y1*2)+20, anchor='w')
    tk.Label(root, text='Resultado').place(x=x1, y=(y1*4)+20, anchor='w')
    
    columns = ['Fecha', 'Cantidad de HNT', 'Precio de HNT', 'Ganancias Diarias']
    
    # agregar caja de datos
    frame = ttk.Frame(root)
    frame.place(x=x1, y=(y1*9)+20, anchor='w')
    
    tvw = ttk.Treeview(frame, columns=columns, show='headings')
    tvw.pack(side='left', fill='both', expand=True)
    
    for c1 in range(len(columns)):
        tvw.heading(columns[c1], text=str(columns[c1]))
        tvw.column(columns[c1], width=len(columns[c1])*14)
    
    contacts = []
    for n in range(1, 100):
        contacts.append((f'nombre{n}', f'apellido{n}', f'email{n}@example.com'))
    
    # agregar datos al treeview
    for contact in contacts:
        tvw.insert('', tk.END, values=contact)
    
    # agregar_barra_desplazamiento
    scrollbar = ttk.Scrollbar(frame, orient='vertical', command=tvw.yview)
    tvw.config(yscrollcommand=scrollbar.set)
    scrollbar.pack(side='right', fill='y')
    
    # ejecutar la interfaz tkinter
    root.mainloop()
    

    Estos cambios deberían colocar el widget scrollbar junto al widget treeview y hacerlo funcional para desplazarse a través del contenido del widget treeview.

Comments are closed.