我有一个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()
Run Code Online (Sandbox Code Playgroud)
当我运行上面的脚本时,它会显示这个(这很好):
alt text http://img708.imageshack.us/img708/8821/tkinter1.png
当我单击"命令">"显示技能"时,它将变为此.(链接因为它很高.)它显示正确的东西,但是...我可以想象你看到了问题.
两个问题:
- 如何向框架添加滚动条,并保持框架的大小固定?(理想情况下,保持第一个图像的大小,添加show()的输出,将滚动条添加到程序的第一个图像.) - 使用以下代码:
for item in skills:
toPrint = item[0][0],"-",item[0][1],"-",item[0][2],"\n"
w = Message(frame, text=toPrint)
w.pack()
Run Code Online (Sandbox Code Playgroud)
这是输出我输出的最佳方式吗?列表(skills)看起来像[[1,2,3],[4,5,6]..],我想在一条线上显示1-2-3,在一条线上显示4 - 5 - 6等.
但是,我不希望它们之间存在额外的线条,就像现在一样,我想知道我是如何做到的,这是最好的方法.
要添加滚动条,请使用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()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15547 次 |
| 最近记录: |