Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Cách sửa đổi trực tiếp mục cụ thể trong Listbox Tkinter?

Tkinter là thư viện phát triển ứng dụng GUI dựa trên Python thường dùng để xây dựng ứng dụng máy tính để bàn hữu ích. Widget Listbox là widget tkinter khác, dùng làm container hiển thị danh sách các mục dưới dạng Listbox.

Để định nghĩa danh sách mục trong widget Listbox, bạn cần tạo hàm khởi tạo Listbox(root, width, height, **options). Bạn có thể chèn bao nhiêu mục tùy ý để hiển thị trong listbox.

Giả sử bạn muốn sửa đổi mục cụ thể trong Listbox tkinter, bạn có thể tạo nút để chọn mục từ danh sách bạn muốn sửa đổi, sau đó gọi phương thức delete() để xóa giá trị hiện có. Khi giá trị bị xóa, bạn có thể insert() mục mới vào listbox. Hãy xem ví dụ để hiểu cách hoạt động.

Ví dụ

# Nhập thư viện cần thiết
from tkinter import *
from tkinter import ttk

# Tạo instance của khung hoặc cửa sổ tkinter
win = Tk()

# Thiết lập kích thước cửa sổ
win.geometry("700x350")

# Tạo widget Listbox
lb = Listbox(win, width=100, height=10, background="purple3", foreground="white", font=('Times 13'), selectbackground="white")
lb.pack()

# Chọn mục danh sách và xóa mục trước
# Khi mục danh sách bị xóa, chúng ta có thể chèn mục mới vào listbox
def edit_current():
    for item in lb.curselection():
        lb.delete(item)
        lb.insert("end", "foo")

# Thêm mục vào Listbox
lb.insert("end", "item1", "item2", "item3", "item4", "item5")

# Thêm Nút để Sửa và Xóa mục Listbox
ttk.Button(win, text="Edit", command=edit_current).pack()

win.mainloop()

Trong ví dụ này, chúng ta tạo danh sách mục bằng widget Listbox. Chúng ta tạo nút "Edit" về cơ bản sửa đổi giá trị hiện có của mục danh sách được chọn. Sử dụng này, bạn có thể thay đổi/sửa đổi giá trị của bất kỳ mục nào trong danh sách widget Listbox.

Kết quả

Khi thực thi, nó sẽ tạo cửa sổ đầu ra sau:

Cách sửa đổi trực tiếp mục cụ thể trong Listbox Tkinter?

Bây giờ, chọn mục từ danh sách và nhấn nút "Edit". Giả sử bạn chọn "item5" và nhấn "Edit", mục đó sẽ được thay thế bằng "foo".

Cách sửa đổi trực tiếp mục cụ thể trong Listbox Tkinter?