¿Cómo agregar una barra de desplazamiento a una ventana con tkinter?

Tengo un progtwig 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, muestra esto (lo cual es bueno):

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

Cuando hago clic en Comandos> Mostrar habilidades, se convierte en esto . (Vinculado porque es alto). Muestra lo correcto, pero … Me imagino que ves el problema.

Dos preguntas:

-¿Cómo agrego una barra de desplazamiento al marco y mantengo el marco en un tamaño fijo? (Lo ideal es mantener el tamaño de la primera imagen, agregar la salida de show (), agregar una barra de desplazamiento a la primera imagen del progtwig). 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 esa la mejor manera de emitir lo que estoy emitiendo? La lista ( skills ) se ve como [[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 esa línea extra entre ellos como lo hay ahora, y me preguntaba si la forma en que lo hice es la mejor manera de hacerlo.

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

Para eliminar espacio adicional, suelte el “\ n” adicional 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()