滚动条如何填充到canvas的高度? (基于网格)
How can the scrollbar be filled to the height of canvas? (grid based)
我把滚动条放在了第二个window。但是滚动条没有canvas的高度,很小。而且只有按钮有效。我如何使它成为canvas的高度?
import tkinter as tk
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk
def on_window1():
top = tk.Toplevel()
top.wm_geometry("794x470")
top.title('Optimized Map 1')
frame = tk.Frame(top)
frame.grid(row=3, column=0)
canvas1 = tk.Canvas(top, width=400, height=280)
canvas1.grid(row=0,column=200)
for i in range(40):
l3 = tk.Label(canvas1, text="Number of Rectangles:" + str(i))
canvas1.create_window(50,21*i, window=l3, anchor=tk.NW)
myscrollbar= tk.Scrollbar(top,orient="vertical",command=canvas1.yview)
myscrollbar.grid(row=0,column=200)
#l4 = tk.Label(canvas1, text="Number of Rectangles:")
#canvas1.create_window(50,21, window=l4, anchor=tk.NW)
window = tk.Tk()
b1 = tk.Button(window, text="Next", command=on_window1)
b1.grid(row=0, column=0)
window.mainloop()
这是因为 grid
几何管理器不会自动扩展小部件以占用它们可用的所有 window space。
您可以使用 sticky
属性告诉小部件它应该粘附在 "cell" 的哪些边缘:
myscrollbar.grid(row=0,column=200, sticky="NS")
添加以上行代替您的 grid
调用将解决此问题。
作为参考,"cell" 的四个边均以四个基本方向(北、东、南和西)命名,其中 N 代表顶边,E 代表右边,S 代表底边边缘和 W 左边缘。
您可以在属性声明中将它们组合在一起,方法是将所有四个以任意顺序添加为一个字符串。
我把滚动条放在了第二个window。但是滚动条没有canvas的高度,很小。而且只有按钮有效。我如何使它成为canvas的高度?
import tkinter as tk
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk
def on_window1():
top = tk.Toplevel()
top.wm_geometry("794x470")
top.title('Optimized Map 1')
frame = tk.Frame(top)
frame.grid(row=3, column=0)
canvas1 = tk.Canvas(top, width=400, height=280)
canvas1.grid(row=0,column=200)
for i in range(40):
l3 = tk.Label(canvas1, text="Number of Rectangles:" + str(i))
canvas1.create_window(50,21*i, window=l3, anchor=tk.NW)
myscrollbar= tk.Scrollbar(top,orient="vertical",command=canvas1.yview)
myscrollbar.grid(row=0,column=200)
#l4 = tk.Label(canvas1, text="Number of Rectangles:")
#canvas1.create_window(50,21, window=l4, anchor=tk.NW)
window = tk.Tk()
b1 = tk.Button(window, text="Next", command=on_window1)
b1.grid(row=0, column=0)
window.mainloop()
这是因为 grid
几何管理器不会自动扩展小部件以占用它们可用的所有 window space。
您可以使用 sticky
属性告诉小部件它应该粘附在 "cell" 的哪些边缘:
myscrollbar.grid(row=0,column=200, sticky="NS")
添加以上行代替您的 grid
调用将解决此问题。
作为参考,"cell" 的四个边均以四个基本方向(北、东、南和西)命名,其中 N 代表顶边,E 代表右边,S 代表底边边缘和 W 左边缘。
您可以在属性声明中将它们组合在一起,方法是将所有四个以任意顺序添加为一个字符串。