10

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

上記のスクリプトを実行すると、次のように表示されます (これは良いことです)。

代替テキスト http://img708.imageshack.us/img708/8821/tkinter1.png

Commands > Show Skills をクリックすると、このに変わります。(背が高いのでリンク。) 正しいことを示していますが、問題があることは想像できます。

2 つの質問:

-フレームにスクロールバーを追加して、フレームを固定サイズに保つにはどうすればよいですか? (理想的には、最初の画像のサイズを維持し、show() の出力を追加し、プログラムの最初の画像にスクロールバーを追加します。) - 次のコード:

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

それは私が出力しているものを出力する最良の方法ですか? リスト ( skills) は のよう[[1,2,3],[4,5,6]..]になり、1 行に 1-2-3、1 行に 4 - 5 - 6 などを表示したい。

しかし、今のようにそれらの間に余分な線を引きたくないので、どうやってそれを行うのが最善の方法なのか疑問に思っていました.

4

2 に答える 2

11

スクロール バーを追加するには、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()
于 2009-12-04T07:33:09.087 に答える