2009-12-04 21 views
5

Tengo un programa tkinter:¿Cómo agregar una barra de desplazamiento a una ventana con tkinter?

import urllib.request 
from tkinter import * 


root = Tk() 
root.iconbitmap(default='icon.ico') 
root.wm_title('Got Skills\' Skill Tracker') 
frame = Frame(width="500",height="500") 
frame.pack() 


def show(): 
    name = "zezima" 
    page = urllib.request.urlopen('http://hiscore.runescape.com/index_lite.ws?player=' + name) 
    page = page.readlines() 

    skills = [] 
    for line in page: 
    skills.append([line.decode("utf-8").replace("\n", "").split(",")]) 

    skills = skills[0:25] 

    for item in skills: 
    toPrint = item[0][0],"-",item[0][1],"-",item[0][1],"\n" 
    w = Message(frame, text=toPrint) 
    w.pack() 


menu = Menu(root) 
root.config(menu=menu) 

filemenu = Menu(menu) 
menu.add_cascade(label="Commands", menu=filemenu) 
filemenu.add_command(label="Show Skills", command=show) 


root.mainloop() 

Cuando ejecuto el script anterior, que muestra esto (que es bueno):

alt text http://img708.imageshack.us/img708/8821/tkinter1.png

Al hacer clic en Comandos> Mostrar Habilidades, resulta en this. (Vinculado porque es alto.) Muestra lo correcto, pero ... Puedo imaginar que ves el problema.

dos preguntas:

-¿Cómo puedo añadir una barra de desplazamiento a la estructura, y mantener el marco de un tamaño fijo? (Lo ideal es mantener el tamaño de la primera imagen, añadir la salida del show(), añadir una barra de desplazamiento a la primera imagen del programa.) -Con el siguiente código:

for item in skills: 
    toPrint = item[0][0],"-",item[0][1],"-",item[0][2],"\n" 
    w = Message(frame, text=toPrint) 
    w.pack() 

es que la mejor manera de para dar salida a lo que estoy produciendo? La lista (skills) parece [[1,2,3],[4,5,6]..], y quiero mostrar 1-2-3 en una línea, 4 - 5 - 6 en una línea, etc.

Pero, no quiero que la línea adicional en el medio ellos como los hay ahora, y me preguntaba si cómo lo hice es la mejor manera de hacerlo.

Respuesta

7

Para agregar las barras de desplazamiento, use tkinter.tix.ScrolledWindow.

Para eliminar el espacio extra, suelte el adicional "\ n" y muestre una cadena, no una tupla. Aquí está el código completo:

import urllib.request 
from tkinter import * 
from tkinter.tix import * 

root = Tk() 
root.iconbitmap(default='icon.ico') 
root.wm_title('Got Skills\' Skill Tracker') 
frame = Frame(width="500",height="500") 
frame.pack() 
swin = ScrolledWindow(frame, width=500, height=500) 
swin.pack() 
win = swin.window 


def show(): 
    name = "zezima" 
    page = urllib.request.urlopen('http://hiscore.runescape.com/index_lite.ws?player=' + name) 
    page = page.readlines() 

    skills = [] 
    for line in page: 
    skills.append([line.decode("utf-8").replace("\n", "").split(",")]) 

    skills = skills[0:25] 

    for item in skills: 
    toPrint = item[0][0],"-",item[0][1],"-",item[0][1] 
    w = Message(win, text=' '.join(toPrint), width=500) 
    w.pack() 


menu = Menu(root) 
root.config(menu=menu) 

filemenu = Menu(menu) 
menu.add_cascade(label="Commands", menu=filemenu) 
filemenu.add_command(label="Show Skills", command=show) 


root.mainloop() 
+0

Pensé que necesitaba ese '\ n' para evitar que aparezcan en la misma línea. :PAG. De todos modos, muchas gracias. Funciona bien :) – Andrew

Cuestiones relacionadas