#python #tkinter #listbox
#python #tkinter #listbox
Вопрос:
Я столкнулся с проблемой и искал, но не нашел ничего похожего, что я узнал. Была одна ссылка, которая показывала, как запустить цикл после задержки в 200 мс, но я не мог следовать коду.
Моя проблема в том, что я получил несколько кодов listbox, запустил его, и он вытащил то, что я хотел, НО не позволил мне выбрать один вариант. В случае, когда я выбрал что-либо в listbox, поле было уничтожено, и оно извлекло ВСЕ значения вместо только того, которое я выбрал. Я понимаю это, я уверен, что выбор нескольких также будет работать.
Не уверен, как поместить это в цикл, отложить, остановить, чтобы я мог просмотреть список и выбрать элемент (ы). Любые ссылки на код или ресурсы также были бы признательны за чтение. Спасибо.
import PyPDF2 as pdf2
import tkinter as tk
from tkinter import *
class PDF:
#def __init__(self):
# pass
def pdfItemExtract(self) -> None:
# Create tkinter Tk based Main Window
self.master_win = Tk() # Primary widget win. Tk GUI style
self.master_win.title("Resume Extract Options")
self.master_win.geometry('300x300')
# Vert scroll capability on right side of window
yscrollbar = Scrollbar(self.master_win)
yscrollbar.pack(side=RIGHT, fill=Y)
label = Label(self.master_win,
text="Select the languages below : ",
font=("Times New Roman", 10),
padx=10, pady=10)
label.pack() #Centers lbl (feature of pack)
# Widget expands horizontally and
# vertically by assigning both to
# fill option
self.list_box = Listbox(self.master_win,
selectmode="MULTIPLE",
yscrollcommand=yscrollbar.set)
self.list_box.pack(padx=10, pady=10,
expand=YES, fill="both")
x = ["C", "C ", "C#", "Java", "Python",
"R", "Go", "Ruby", "JavaScript", "Swift",
"SQL", "Perl", "XML"]
for each_item in range(len(x)):
self.list_box.insert(END, x[each_item])
self.list_box.itemconfig(each_item, bg="light blue")
# Attach listbox to vertical scrollbar
yscrollbar.config(command=self.list_box.yview) #yview: allows lbox vert scrollable
self.list_box.bind("<<ListboxSelect>>", self.callback)
self.master_win.mainloop()
return self.selected_items
def callback(self, eventObject): # Call back generates var. We call it 'event'
print(eventObject)
self.selected_items = self.list_box.get(0, last=END)
self.master_win.destroy()
/* ——— Основная программа ——— */
from m_pdf import *
if __name__ == '__main__':
pdf = PDF()
extract_list = pdf.pdfItemExtract()
Ответ №1:
Поскольку вы использовали self.selected_items = self.list_box.get(0, last=END)
, он получит все элементы в listbox.
Вы должны использовать self.selected_items = [self.list_box.get(x) for x in self.list_box.curselection()]
вместо этого.
Комментарии:
1. Спасибо!!! Извините, что не ответил раньше. Погода в Техасе.