相关疑难解决方法(0)

将滚动条添加到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 的 Matplotlib 中图形允许的所有空间?

我想在 Tkinter 窗口中显示很多子图,并且能够向下滚动以查看所有大小合适的图。但是,它全部打包,并且子图似乎并没有占用我图中允许的所有空间,而仅限制在窗口的空间内。我怎样才能让它更间隔开并使子图更大?

我已经尝试使用该tight_layout()选项进行不同的填充,更改了 Tkinter 的图形大小和其他参数,例如我的小部件中的fillexpand

import tkinter as tk
from tkinter import Scrollbar
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg

import matplotlib.pyplot as plt

class ScrollableWindow:

    def __init__(self, master, fig, **options):

        master.geometry("%dx%d+0+0" % (800, 500))
        master.focus_set()

        fig_wrapper = tk.Frame(master, width=800, height=fig.get_figheight())
        fig_wrapper.pack(fill=tk.BOTH, expand=True)

        fig_canvas = FigureCanvasTkAgg(fig, master=fig_wrapper)

        scrollbar = Scrollbar(fig_wrapper, orient=tk.VERTICAL, command=fig_canvas.get_tk_widget().yview)
        scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
        fig_canvas.get_tk_widget().pack(fill=tk.BOTH, side=tk.LEFT, expand=True)
        fig_canvas.get_tk_widget().config(yscrollcommand = scrollbar.set, scrollregion=fig_canvas.get_tk_widget().bbox("all"), width=800, height=1000)



n_col, n_row = 3, 11

fig, axes = plt.subplots(figsize=(n_col,n_row*2), ncols=n_col, nrows=n_row)
for i …
Run Code Online (Sandbox Code Playgroud)

python user-interface tkinter matplotlib subplot

5
推荐指数
1
解决办法
1437
查看次数