Tuesday, April 22, 2025

Tkinter - Listbox

It's easy to create listboxes using Tkinter. In most cases having label for that list will be helpful, so let's create it and we will use grid option for positioning:

gen_lab = Label(top_win, text = "Domain")
gen_lab.grid(row = 0, column = 0)

Ok, now we will set Listbox that will deal with, for example, domain names. That listbox will be in top_win, as with all Tkinter widgets in most simple cases:

list_domains = Listbox(top_win)

Once we have it, we can populate a list with values using insert() method, stating item position in a list, and corresponding values:

list_domains.insert(1, "google.com")
list_domains.insert(2, "yahoo.com")
list_domains.insert(3, "bing.com")

Now it's the time to grid Listbox:

list_domains.grid(row = 1, column = 0)

And this is full working source with that simple list. No operations at the moment, but list is fine:

from tkinter import *
import tkinter.messagebox as mb
import os

top_win = Tk()
top_win.geometry("800x800")

gen_lab = Label(top_win, text = "Domain")
gen_lab.grid(row = 0, column = 0)

list_domains = Listbox(top_win)

list_domains.insert(1, "google.com")
list_domains.insert(2, "yahoo.com")
list_domains.insert(3, "bing.com")

list_domains.grid(row = 1, column = 0)
top_win.mainloop()

Now we will create function that will delete selected domain from a list. We are using curselection() method for item selection, and delete() method to remove selected item:

def delete_from_list():
    selected = list_domains.curselection()
    list_domains.delete(selected)

Function will be activated on button press:

but_1 = Button(top_win, text = "Delete From List", command = delete_from_list)
but_1.grid(row = 3, column = 0)

You are advised to check corresponding YT tutorial on Listbox:

This is full working script: 

from tkinter import *
import tkinter.messagebox as mb
import os

top_win = Tk()
top_win.geometry("800x800")

def delete_from_list():
    selected = list_domains.curselection()
    list_domains.delete(selected)

gen_lab = Label(top_win, text = "Domain")
gen_lab.grid(row = 0, column = 0)

list_domains = Listbox(top_win)

list_domains.insert(1, "google.com")
list_domains.insert(2, "yahoo.com")
list_domains.insert(3, "bing.com")

but_1 = Button(top_win, text = "Delete From List", command = delete_from_list)
but_1.grid(row = 3, column = 0)

list_domains.grid(row = 1, column = 0)
top_win.mainloop()


No comments:

Post a Comment

Tkinter Introduction - Top Widget, Method, Button

First, let's make shure that our tkinter module is working ok with simple  for loop that will spawn 5 instances of blank Tk window .  ...