如何给界面加滚动条java_如何将滚动条应用于画布中的框架

我正在努力在tkinter中实现一个decdent GUI布局 . 我的目标是左侧的布局,但没有比右侧的布局更进一步:

2aed2d08-f37f-4997-95bd-0910fed2baa6.jpg

d0efabf1-59c5-40a2-8053-5a9c17f61382.png

我觉得在所有不同的布局管理器中完全迷失了 . 到目前为止这是我的代码:

from Tkinter import *

class ScrolledCanvas:

def __init__(self, master, width=500, height=350):

Label(master, text="top of master frame").pack(side=TOP)

self.control=Frame(master)

self.control.pack(side=BOTTOM, fill=X, padx=2)

Label(self.control, text="bottom of master frame").pack()

self.grid = Frame(master, bd=2, bg="red")

self.canvas = Canvas(master, relief=SUNKEN, borderwidth=2,

scrollregion=('-11c', '-11c', '50c', '20c'))

self.vscroll = Scrollbar(master, command=self.canvas.yview)

self.canvas.configure(yscrollcommand=self.vscroll.set)

self.grid.pack(expand=YES, fill=BOTH, padx=1, pady=1)

self.grid.rowconfigure(0, weight=1, minsize=0)

self.grid.columnconfigure(0, weight=1, minsize=0)

self.canvas.grid(padx=1, in_=self.grid, pady=1, row=0,

column=0, rowspan=1, columnspan=1, sticky='news')

self.vscroll.grid(padx=1, in_=self.grid, pady=1, row=0,

column=1, rowspan=1, columnspan=1, sticky='news')

self.oldFill = None

self.canvas = self.fillCanvas(self.canvas)

def fillCanvas(self, theCanvas):

for i in range(10):

frame = Frame(theCanvas)

Label(frame, text="text for inner frame (%s)" % i).pack(side=TOP)

Button(frame, text="button %s.1" % i).pack(side=LEFT)

Button(frame, text="button %s.2" % i).pack(side=LEFT)

frame.pack()

return theCanvas

if __name__ == '__main__':

root = Tk()

scroll = ScrolledCanvas(root)

root.mainloop()

由于某种原因,scrollregion扩展为完整大小,使所有滚动条操作都过时(此代码基于滚动条示例,其中画布填充了一些矩形,并且所有内容都滚动得非常好) . 我可能错过了调整大小的基本知识,因为大多数组件似乎完全忽略了它们固定的宽度和高度 .

我正在寻找有关如何使用此示例与tkinter一起工作的帮助 . 我知道还有其他布局技术,我知道其他模块提供开箱即用的可滚动小部件 . 但除非完全不可避免,否则我真的很想坚持这个例子,到目前为止我花了至少3个晚上...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值