相关疑难解决方法(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万
查看次数

Python tkinter绑定鼠标滚轮到滚动条

我有这个可滚动的框架(实际上是画布内的框架).

import Tkinter as tk
class Scrollbarframe():
    def __init__(self, parent,xsize,ysize,xcod,ycod):
        def ScrollAll(event):
                canvas1.configure(scrollregion=canvas1.bbox("all"),width=xsize,height=ysize,bg='white')
        self.parent=parent
        self.frame1=tk.Frame(parent,bg='white')
        self.frame1.place(x=xcod,y=ycod)
        canvas1=tk.Canvas(self.frame1)
        self.frame2=tk.Frame(canvas1,bg='white',relief='groove',bd=1,width=1230,height=430)
        scrollbar1=tk.Scrollbar(self.frame1,orient="vertical",command=canvas1.yview)
        canvas1.configure(yscrollcommand=scrollbar1.set)
        scrollbar1.pack(side="right",fill="y")
        canvas1.pack(side="left")
        canvas1.create_window((0,0),window=self.frame2,anchor='nw')
        self.frame2.bind("<Configure>",ScrollAll)
Run Code Online (Sandbox Code Playgroud)

我想将鼠标滚轮绑定到滚动条,以便用户可以向下滚动框架,而无需使用滚动条上的箭头按钮.环顾四周后,我添加了一个canvas1像我这样的绑定

self.frame1.bind("<MouseWheel>", self.OnMouseWheel)
Run Code Online (Sandbox Code Playgroud)

这是功能:

def OnMouseWheel(self,event):
    self.scrollbar1.yview("scroll",event.delta,"units")
    return "break" 
Run Code Online (Sandbox Code Playgroud)

但是当我使用鼠标滚轮时,滚动条不会移动.谁能帮我这个?我想要的只是当用户使用鼠标滚轮(在框架区域内/滚动条上)时,画布应自动向上或向下滚动.

python binding tkinter scrollbar mousewheel

28
推荐指数
4
解决办法
3万
查看次数

我怎么能在Tkinter中使用滚动条获得一个Frame?

我希望有一个Frame,用户可以根据应用程序的需要添加任意数量的文本字段.

应用程序以文本字段和该文本字段下方的按钮开始.当用户按下按钮时,将在第一个下方添加新的文本条目(这可以重复无数次).在窗口中间,会有一个Text小部件,用于显示文本:)

但是,我在文档中注意到了这一点:

This widget is used to implement scrolled listboxes, canvases, and text fields.

有没有办法使用的一种方法ScrollbarFrame

python tkinter scrollbar frame

8
推荐指数
2
解决办法
2万
查看次数

如何让 Matplotlib 图形在 Tkinter GUI 中正确滚动 + 调整大小

我有一个 Tkinter GUI,它显示一个 Matplotlib 图(Python 2.7.3 with Matplotlib 1.2.0rc2)并让用户配置图的某些方面。绘图往往会变大,因此图形被包裹在滚动画布中。配置图的一方面是改变其大小。

现在,一方面绘图正确滚动,另一方面调整大小也能正常工作,但这两种操作不能结合使用。下面是一个脚本来演示效果。(对不起,长度,我不能再短了。)您可以滚动绘图(使用滚动条),并且可以将其变得越来越小(使用按钮)。但是,无论何时滚动,图形都会重置为其原始大小。显然,我希望图形的大小不会因使用滚动条而改变。

import math
from Tkinter import Tk, Button, Frame, Canvas, Scrollbar
import Tkconstants
from matplotlib import pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg

def addScrollingFigure(figure, frame):

    # set up a canvas with scrollbars
    canvas = Canvas(frame)
    canvas.grid(row=0, column=0, sticky=Tkconstants.NSEW)

    xScrollbar = Scrollbar(frame, orient=Tkconstants.HORIZONTAL)
    yScrollbar = Scrollbar(frame)

    xScrollbar.grid(row=1, column=0, sticky=Tkconstants.EW)
    yScrollbar.grid(row=0, column=1, sticky=Tkconstants.NS)

    canvas.config(xscrollcommand=xScrollbar.set)
    xScrollbar.config(command=canvas.xview)
    canvas.config(yscrollcommand=yScrollbar.set)
    yScrollbar.config(command=canvas.yview)

    # plug in the figure
    figAgg = FigureCanvasTkAgg(figure, canvas)
    mplCanvas = …
Run Code Online (Sandbox Code Playgroud)

python tkinter matplotlib

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

使用按钮 Tkinter 创建新的输入框

当用户决定输入更多输入时,如何使按钮在下面添加两个框(并排)?

def addBox():
    labelframe = Tkinter.Frame()
    labelframe.bind("<Add Input>", callback)
    labelframe.pack()

labelframe = Tkinter.Frame()

labelFrom = Tkinter.Label(labelframe, text= "from")
labelFrom.grid(column=1, row=0)
e = Tkinter.Entry(labelframe)
e.grid(column=1, row=1)

labelTo = Tkinter.Label(labelframe, text= "to")
labelTo.grid(column=2, row=0)
e2 = Tkinter.Entry(labelframe)
e2.grid(column=2, row=1)

labelframe.pack()

addboxButton = Button( root,text='<Add Time Input>', fg="Red",command="addBox")
addboxButton.pack(side=Tkinter.TOP)
Run Code Online (Sandbox Code Playgroud)

python tkinter

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