标签: tkinter.scrollbar

将滚动条添加到Tkinter中的一组小部件

我使用Python来解析日志文件中的条目,并使用Tkinter显示条目内容,到目前为止它非常好.输出是标签小部件的网格,但有时会有比屏幕上显示的行多的行.我想添加一个滚动条,看起来应该很容易,但我无法弄明白.

该文档暗示只有List,Textbox,Canvas和Entry小部件支持滚动条界面.这些似乎都不适合显示小部件网格.可以在Canvas小部件中放置任意小部件,但您似乎必须使用绝对坐标,因此我无法使用网格布局管理器?

我已经尝试将小部件网格放入框架,但这似乎不支持滚动条界面,所以这不起作用:

mainframe = Frame(root, yscrollcommand=scrollbar.set)
Run Code Online (Sandbox Code Playgroud)

任何人都可以建议绕过这个限制吗?我不想在PyQt中重写并增加我的可执行图像大小,只需要添加一个滚动条!

python tkinter tkinter.scrollbar

57
推荐指数
3
解决办法
5万
查看次数

tkinter 将滚动条放在画布上的底部位置

关于我的 tkinter 画布上滚动条位置的问题。我有一个带有 3 个画布小部件的框架。感谢这篇文章的想法。我添加了一个水平滚动条,每个画布都有一个 50+ 列 500+ 行的 Pandas 数据框。负载不是很快,但这不是一个目标。

新行将添加到每个数据框的底部。这个新行需要验证。因此,与其每次都向下滚动,不如滚动条/或画布显示底部。

请参阅下面定义 3x 画布和 3x 滚动条 (x+y) 的代码。

def createBox(window):
    list_ = ['df1', 'df2', 'df3'] # 3 dataframes

    for i in range(3):
            mybox = LabelFrame(window, padx=5, pady=4)
            mybox.grid(row=i, column=0)
            createWindow(mybox, list_[i], i)

def createWindow(box, lt_actual, i):
    canvas = Canvas(box, borderwidth=0)
    frame = Frame(canvas)
            vsbY = Scrollbar(box, orient="vertical", command=canvas.yview)
            canvas.configure(yscrollcommand=vsbY.set, width=1200, heigh=200) 
            vsbY.pack(side="right", fill="y")

            vsbX = Scrollbar(box, orient="horizontal", command=canvas.xview)
            canvas.configure(xscrollcommand=vsbX.set, width=1200, heigh=200)       
            vsbX.pack(side="bottom", fill="x")

    #canvas.yview_moveto(1) - no effect …
Run Code Online (Sandbox Code Playgroud)

python tkinter pandas tkinter-canvas tkinter.scrollbar

5
推荐指数
2
解决办法
6134
查看次数