I just started with tkinter and I don't know how to make scrollbar to work. I checked many different threads about tkinter on stackoverflow and I'm confused as to what exactly I need to do.
I already added scrollbar but it doesn't scroll anything (commented # ******* Scrollbar *******). I want it to scroll text from content frame.
There is already lorem ipsum inserted in # ******* Dictionary data *******.
from tkinter import *
class Search(Tk):
def __init__(self):
Tk.__init__(self)
self.minsize(380,444)
self.maxsize(380,444)
self.title("")
self.search_start = StringVar()
self.search_start.set('Enter your query')
self.search_result = StringVar()
self.bind("<Return>", self.search_button)
self.scrollbar = Frame(self)
self.scrollbar.pack(side=RIGHT, fill=Y)
self.search_bar = Frame(self, bg="blue")
self.search_bar.pack(side=TOP, fill=X)
self.index = Frame(self)
self.index.pack(side=LEFT)
self.content = Frame(self)
self.content.pack(side=TOP, fill=X)
self.status_bar = Frame(self, bg="yellow")
self.status_bar.pack(side=BOTTOM, fill=X)
# ******* Search Input *******
self.entry = Entry(self.search_bar, textvariable = self.search_start)
self.entry.pack(side=LEFT, padx=4, pady=4)
# ******* Search Button *******
self.search = Button(self.search_bar, text="Search", command=self.search_button)
self.search.pack(side=LEFT)
# ******* Content *******
self.content = Label(self.content, textvariable = self.search_result, bg="ghost white", wraplength=360, width=52, height=26, justify=LEFT, anchor=NW) # justify == align
self.content.pack(side=LEFT)
# ******* Scrollbar *******
self.scrollbar = Scrollbar(self.scrollbar)
self.scrollbar.pack(side=RIGHT, fill=Y)
self.listbox = Listbox(self.scrollbar, yscrollcommand=self.scrollbar.set)
self.scrollbar.config(command=self.listbox.yview)
# ******* Toolbar *******
self.status_bar = Label(self.status_bar, text="toolbar", bg="yellow", relief=FLAT)
self.status_bar.pack(side=LEFT)
# ******* Search Button *******
def search_button(self, event=None):
result_text = dictionary_data.get(self.entry.get(), "Entry not in database.\n\nCheck if you wrote your query correctly or type index to see all available entries.")
self.search_result.set(result_text)
self.search_start.set("")
# ******* Dictionary data *******
dictionary_data = {
"index": 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin laoreet a enim a elementum. Ut tristique maximus mauris vitae tempus. Aliquam erat volutpat. Etiam semper, libero posuere vulputate aliquet, arcu odio fermentum ex, vulputate elementum urna felis fringilla nisi. Quisque nec nunc eu lacus fermentum sollicitudin quis ut ante. Maecenas consectetur varius eros, quis mollis est tincidunt eget. Morbi tempus aliquam dui, quis placerat metus porta sit amet. Suspendisse vitae diam at nibh semper iaculis quis quis velit. Morbi ac ipsum porttitor, lacinia eros at, volutpat arcu. Vestibulum ut diam convallis, auctor metus a, malesuada ante. Aliquam vitae leo magna. Quisque rutrum tristique neque, ut venenatis nibh viverra eget. Duis vitae felis non lacus viverra varius. Nunc placerat eros sed arcu vestibulum, id pharetra felis fermentum. Quisque semper vitae dolor sed molestie. Suspendisse semper ante eu sem ultricies ullamcorper. Quisque suscipit pellentesque varius. Integer magna lorem, lacinia in dolor quis, commodo tempus nibh. Etiam fermentum cursus vehicula. Vestibulum congue arcu at purus viverra faucibus. Pellentesque pellentesque facilisis massa, vel iaculis mauris egestas eu. Sed ut risus eu turpis sodales faucibus. Morbi aliquam sit amet purus ac rhoncus. Aliquam eros orci, laoreet ut fringilla vitae, sodales vitae ipsum. Nunc eu enim condimentum, fermentum massa hendrerit, cursus orci. Suspendisse potenti. Nulla faucibus velit ipsum, sollicitudin elementum nibh consequat ac. Nunc et condimentum nibh. Sed a malesuada nisl.Nulla at est arcu. Maecenas elementum ex nulla. Aliquam erat volutpat. Vivamus mattis iaculis nulla, eget tempus purus fermentum vel. Etiam auctor dolor eget eros scelerisque accumsan. Donec lacus tellus, interdum non gravida quis, cursus non magna. Sed lacinia, elit quis hendrerit lobortis, lorem dolor viverra purus, interdum vestibulum enim orci ac nibh. Fusce tellus lacus, pharetra at dignissim eu, maximus at ipsum. Fusce nec semper felis.',
}
# ******* Loop *******
app = Search()
app.mainloop()