¿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.

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

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