【问题标题】:How can the scrollbar be filled to the height of canvas? (grid based)如何将滚动条填充到画布的高度? (基于网格)
【发布时间】:2019-09-03 12:00:52
【问题描述】:

我将滚动条放在第二个窗口中。但是滚动条不像画布的高度,它很小。只有按钮起作用。我如何使它成为画布的高度?

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()

【问题讨论】:

    标签: python python-3.x tkinter tkinter-canvas


    【解决方案1】:

    这是因为grid 几何管理器不会自动扩展小部件以占用所有可用的窗口空间。

    您可以使用sticky 属性告诉小部件它应该粘在“单元格”的哪些边缘:

    myscrollbar.grid(row=0,column=200, sticky="NS")
    

    添加上述行代替您的grid 调用将解决此问题。


    作为参考,“单元格”的四个边缘都以四个基本方向(北、东、南和西)命名,其中 N 表示上边缘,E 表示右边缘,S 表示下边缘,W 表示左边缘。

    您可以在属性声明中将它们组合在一起,方法是按任意顺序将所有四个作为字符串相加。

    【讨论】:

    • 这有效,但只有按钮有效,栏本身无效。
    • 这是一个不同的问题。如果您需要这个问题的答案,请提出一个新问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-30
    • 2017-09-29
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多