Back

Explore Courses Blog Tutorials Interview Questions
0 votes
1 view
in Python by (50.2k points)

I have executed the below code which is regarding the scrollbar and it is just running fine.

from tkinter import *

master = Tk()

scrollbar = Scrollbar(master)

scrollbar.pack(side=RIGHT, fill=Y)

listbox = Listbox(master, yscrollcommand=scrollbar.set)

for i in range(10000):

    listbox.insert(END, str(i))

listbox.pack(side=LEFT, fill=BOTH)

scrollbar.config(command=listbox.yview)

mainloop()

I have tried to apply the same concept in my code like this:

import tkinter as tk

class interface(tk.Frame):

    def __init__(self,den):

        self.tklist() 

        #in my code, tklist is not called here. I called it here to minimize the code

        #there are stuff in here also

    def tklist(self):

        scrollbar = tk.Scrollbar(den)

        self.lst1 = tk.Listbox(den, selectmode="SINGLE", width="100", yscrollcommand=scrollbar.set)

        for i in range(1000):

            self.lst1.insert(END, str(i))

        self.lst1.pack(side=LEFT, fill=BOTH)

        scrollbar.config(command=lst1.yview)

den = tk.Tk()

den.title("Search")

inter = interface(den)

den.mainloop()

But when I executed my code, I am getting an error on the insertion line.

NameError: global name 'END' is not defined

1 Answer

0 votes
by (108k points)

Kindly be informed that the END, LEFT, and BOTH all should be imported from the tkinter namespace in Python

for i in range(1000):

    self.lst1.insert(tk.END, str(i))

self.lst1.pack(side=tk.LEFT, fill=tk.BOTH)

scrollbar.config(command=lst1.yview)

Or, the easy way is to import them explicitly if you want:

from tkinter import BOTH, END, LEFT

Related questions

Welcome to Intellipaat Community. Get your technical queries answered by top developers!

28.4k questions

29.7k answers

500 comments

94k users

Browse Categories

...