看來我正在觸及某種預設的最大可滾動畫布大小,我並不知道...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