【发布时间】:2014-12-13 22:32:49
【问题描述】:
我目前正在为我的计算机课程编写一些东西,我正在尝试将滚动条加入其中,目前我找不到任何网站可以真正解释为什么在移动窗口框架后,滚动条停止工作(变成变灰)并且在移动窗口的画布后,画布变得非常小(不是我想要的大小)。下面是一些示例代码:
import Tkinter as tk
from Tkinter import *
master.geometry("800x600+300+150")
class Example(tk.Frame):
def main(self):
self.canvas = tk.Canvas(master, borderwidth=0, background="#ffffff")
self.frame = tk.Frame(self.canvas, background="#ffffff")
self.vsb = tk.Scrollbar(self.canvas, orient="vertical", command=self.canvas.yview)
self.hsb = tk.Scrollbar(self.canvas, orient="horizontal", command=self.canvas.xview)
self.canvas.configure(yscrollcommand=self.vsb.set)
self.canvas.configure(xscrollcommand=self.hsb.set)
self.vsb.pack(side="right", fill="y")
self.hsb.pack(side="bottom", fill="x")
self.canvas.pack(side="left", fill="both", expand=True)
self.canvas.create_window((4,4), window=self.frame, anchor="nw",
tags="self.frame")
self.frame.bind("<Configure>", self.OnFrameConfigure)
self.populate()
def populate(self):
vars1 = StringVar()
vars1.set("junk")
for i in range(100):
tk.Entry(self.frame, text=vars1).grid(row=1*i, column=1)
def OnFrameConfigure(self, event):
self.canvas.configure(scrollregion=self.canvas.bbox("all"))
dave3 = Example()
dave3.main()
button = Button(master, text="Hi").place(x=0, y=0)
mainloop()
如果我尝试移动框架或画布,我不想移动框架或画布,我只是希望整个框架向下移动,这样按钮就不会与画布条目重叠,并且滚动条仍然可以工作.如果有人可以解决这个问题,我将非常感激,干杯。
感谢 Bryan Oakley 用他的示例代码让我走到这一步。
【问题讨论】:
-
“移动框架或画布”是什么意思?你的意思是你只是给它不同的包装选项,或者给它一个不同的父母?执行其中任何一个都不应该影响滚动条。
-
对不起,我对 Python 比较陌生,所以我并不完全熟悉与它相关的技术术语,我基本上希望滚动条区域只是屏幕的一小部分,就像一个窗口一个窗户里面。在我的实际项目中,我在顶部有一个菜单栏,我希望整个滚动条区域都在它下面,而不是在它上面。在这里,如果我尝试将“.place”与框架一起使用,它会使滚动条变灰并使它们无用,所以我的问题是,我必须做什么才能将框架移动到示例按钮“Hi”下方并且仍然有滚动条在职的?干杯。
标签: python canvas tkinter scrollbar