看来我正在触及某种预设的最大可滚动画布大小,我并不知道...tkinter最大画布尺寸?
我已经在Tkinter中编写了一个简单的骨骼iTunes替代品。
由于我喜欢的专辑封面视图,专辑至少需要200×200像素的尺寸,并且我的相册(〜1600)的很多,它跟随我需要一个很大的空间。
但我发现高于〜35000px的高度窗口无法显示它们。
在这里我写了一个示例代码 - 它需要ImageMagick的转换,并在我的机器上运行大约15秒。 你可以看到,该窗口只显示170个平方163 ...
from Tkinter import *
import subprocess
def main():
root = Tk()
root.geometry("%dx%d+0+0" % (1800,1000))
cv = Canvas(root)
vscrollbar = Scrollbar(root, orient=VERTICAL)
vscrollbar.pack(fill=Y, side=RIGHT)
vscrollbar.config(command=cv.yview)
cv.config(yscrollcommand=vscrollbar.set)
cv.configure(scrollregion=(0,0, 4000, 50000))
cv.pack(side=LEFT, fill=BOTH, expand=TRUE)
fcv=Frame(root)
cv.create_window(0, 0, anchor = "nw", window=fcv)
memimages=[]
for row_index in range(170):
a=subprocess.Popen("convert -size 200x200 -pointsize 22 -gravity center label:%d test.gif" % row_index, shell=True,
stdout=subprocess.PIPE,stderr=subprocess.PIPE)
output, errors = a.communicate()
iconimage = PhotoImage(file="test.gif")
b=Button(fcv,image=iconimage)
memimages.append(iconimage)
b.grid(row=row_index, column=0, sticky=N+S+E+W)
mainloop()
main()
确实,Tkinter有一些技术上的限制。也就是说,如何让[巨型列表中的一页中的所有内容](https://www.youtube.com/watch?v=9BnLbv6QYcA)有用? – TigerhawkT3
我对视频大笑......但认真的是,我只是复制了任何类似iTunes的程序在封面视图中所做的事情。在200x200px的时候,我的屏幕一次显示〜12x7 = 84个专辑,所以我只需滚动20个屏幕即可看到它们 - 这几乎不是'巨人' – alessandro
再次,Tkinter有一些技术限制。它不会像本地应用程序那样执行。有多个网页有什么问题,就像大多数网站对搜索结果所做的一样?再次,您可能会考虑一个更有用的界面,其中可能包括搜索,排序和筛选。 – TigerhawkT3