Я пытаюсь добавить полосу прокрутки к своему интерфейсу tkinter, но не могу понять, как это сделать правильно.Я просмотрел различные существующие темы по этой теме, но не смог найти нужную мне помощь;отсюда этот пост.
Может кто-нибудь сказать мне, что полоса прокрутки не добавляется в мой кадр нижнего фрейма?
Вот код:
import tkinter as tk
import webbrowser
class Pierre:
def __init__(self, master, url, chk_lbl):
self.url = url
self.chk_lbl = chk_lbl
self.counter = 0
self.vars = []
_, i = master.grid_size() # get the current row number
lbl = tk.Label(master, text=url, fg="blue", cursor="hand2")
lbl.grid(row=i, column=1)
lbl.bind("<Button-1>", self.callback)
ic = 2
for lbl in self.chk_lbl:
var = tk.IntVar()
chk = tk.Checkbutton(master, text=lbl, variable=var)
chk.grid(row=i, column=ic)
self.vars.append(var)
ic+=1
def state(self):
return map((lambda var: var.get()), self.vars)
def callback(self, event):
webbrowser.open_new(self.url)
class TestClass(tk.Tk):
def __init__(self, **kwargs):
root = tk.Tk.__init__(self, **kwargs)
self.title('Test')
self.canvas = tk.Canvas(root)
self.canvas.pack(side=tk.LEFT)
self.scrollbar = tk.Scrollbar(root, command=self.canvas.yview)
self.scrollbar.pack(side=tk.LEFT, fill='y')
self.canvas.configure(yscrollcommand = self.scrollbar.set)
self.canvas.bind('<Configure>', self.canvas.configure(scrollregion=self.canvas.bbox('all')))
self.topframe = tk.Frame(self.canvas)
self.topframe.pack( side = tk.TOP, pady=30)
self.bottomframe = tk.Frame(self.canvas)
self.canvas.create_window(0,0, window=self.bottomframe, anchor='nw')
self.bottomframe.pack( side = tk.BOTTOM )
self.button = tk.Button(self.topframe, text='Click', command = self.output_value)
self.button.pack(side="left", fill="both", expand=True)
def output_value(self):
urls = ["http://www.google.com", "http://www.facebook.com", "http://bbc.co.uk", ]
chk_lbl = ['select']
for url in urls:
Pierre(self.bottomframe, url, chk_lbl)
if __name__ == "__main__":
root = TestClass()
root.mainloop()