1
我試圖根據窗口大小使用畫布展開和縮小,並根據需要使用滾動條。我還沒有添加水平滾動條,但它不是水平或垂直縮放,而是固定保持在任意大小。Tkinter,Canvas拒絕展開或縮小窗口大小
我有2幀的原因是因爲內框滾動水平,因爲我有幾個畫布必須滾動在一起,只有其中一個也滾動垂直。
root = Tk()
maxtick = 1000
frame = ttk.Frame(root) # , padding="3 3 12 12")
frame.grid(column=0, row=0, sticky=(N, W, E, S))
frame.columnconfigure(0, weight=1)
frame.rowconfigure(0, weight=1)
inner_frame = ttk.Frame(frame)
inner_frame.grid(column=0, row=0, sticky=(N, W, E, S))
inner_frame.columnconfigure(0, weight=1)
inner_frame.rowconfigure(0, weight=1)
# Primary canvas (inner_frame)
canvas = Canvas(inner_frame, bg='#FFF', width=maxtick,
scrollregion=(0, 0, maxtick, 16 * (128 + 1 + 1)))
canvas.grid(column=0, row=0, sticky=(N, W, E, S))
for y in range(1, 128 + 1 + 1):
canvas.create_line(0, 16 * y - 1, maxtick, 16 * y - 1)
# Vertical scrollbar
vbar = ttk.Scrollbar(frame, orient=VERTICAL, command=canvas.yview)
vbar.grid(column=1, row=0, sticky=(N, W, E, S))
canvas.configure(yscrollcommand=vbar.set)
# canvas.create_line(10, 10, 200, 50)
root.mainloop()
會有多個帆布垂直疊放,還是合適的包? – jimbo1qaz 2014-10-18 01:50:11
@ jimbo1qaz,是的,這是因爲你已經使用過幀。 – falsetru 2014-10-18 01:52:11
@ jimbo1qaz:如果您在一個框架內垂直或水平堆疊小部件,pack往往是最佳選擇。網格工作得很好,但它需要幾行代碼才能使用包。 – 2014-10-18 15:02:23