使布莱恩·奥克利的答案适应您的特定问题:
- 以画布为父创建框架
- 使用canvas作为参数
scrollregion
注意:在python中进行子类化时,您不需要存储parent的结果,
__init__因为它可以对self进行操作。
这是补丁:
def __init__(self,name): self.name = name- self.frame=tk.frame.__init__(self,root) if name=="BotWin":+ self.canvas = tk.Canvas(root, borderwidth=0, background="#ffffff")+ tk.frame.__init__(self,self.canvas) tk.Label(self,text="FirstColBot",width=30).grid(row=0,column=0) tk.Label(self,text="SecndColBot",width=20).grid(row=0,column=1)- self.canvas = tk.Canvas(root, borderwidth=0, background="#ffffff") self.vsb = tk.Scrollbar(root, orient="vertical", command=self.canvas.yview) self.canvas.configure(yscrollcommand=self.vsb.set) self.vsb.pack(side="right", fill="y") self.canvas.pack(side="left", fill="both", expand=True)- self.canvas.create_window((4,4), window=self.frame)+ self.canvas.create_window((4,4), window=self) self.bind("<Configure>", self.OnframeConfigure) elif name=="TopWin":+ self.frame=tk.frame.__init__(self,root) self.pack() tk.Label(self,text="FirstColTop",width=30).grid(row=0,column=0)tk.Label(self,text="SecndColTop",width=20).grid(row=0,column=1)@@ -41,7 +40,7 @@ toprow+=1 def onframeConfigure(self, event):- self.canvas.configure(scrollregion=self.frame.bbox("all"))+ self.canvas.configure(scrollregion=self.canvas.bbox("all")) def addrowBot(self,stuff,otherstuff): global botrow


