Tkinterのでウィンドウにスクロールバーを追加する方法?

StackOverflow https://stackoverflow.com/questions/1844995

  •  12-09-2019
  •  | 
  •  

質問

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

私は上記のスクリプトを実行すると、それは(良いです)、これを示しています:

altテキストhttp://img708.imageshack.us/img708/8821/tkinter1。 PNGする

私はコマンド>ショースキルをクリックすると、

、それがこののrel="noreferrer">の

二つの質問ます:

- どのように私は、フレームにスクロールバーを追加し、フレーム固定サイズを維持していますか? (理想的には、プログラムの最初の画像にスクロールバーを追加)を追加し、ショー(の出力を第1の画像の大きさを保ちます。) 次のコード-withます:

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

を出力するための最良の方法は、私が何を出力していますされていること?

など、ライン上の6 - リスト(skills)は[[1,2,3],[4,5,6]..]のように見える、と私はライン上で1-2-3を表示する、4から5

しかし、今そこにあるように、私はそれらの間には、余分な行をしたくない、と私はそれをやって行くための最良の方法ですやった場合思っていました。

役に立ちましたか?

解決

、スクロールバーを追加するにはtkinter.tix.ScrolledWindowを使用します。

余分な「\ n」をドロップし、余分なスペースを削除し、文字列ではなく、タプルを表示します。ここでは完全なコードがあります:

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