【问题标题】:Tkinter Listbox - Selects ALL in listbox instead of what I chooseTkinter Listbox - 在列表框中选择 ALL 而不是我选择的
【发布时间】:2021-02-14 03:21:11
【问题描述】:

我遇到了一个问题,我一直在搜索,但没有找到任何我认识的类似内容。有一个链接显示了如何在延迟 200 毫秒后运行循环,但我无法按照代码进行操作。

我的问题是我得到了一些多个列表框代码,运行它,它提取了我想要的但不允许我选择一个选项。我在列表框中选择了任何东西的实例,该框被破坏了,它拉入了所有值,而不仅仅是我选择的值。我发现这一点我确信选择多个也可以。

不知道如何将它放入一个循环中,延迟它,停止它,以便我可以浏览列表并选择一个项目。任何代码链接或资源也将不胜感激。谢谢。

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()

【问题讨论】:

    标签: python tkinter listbox


    【解决方案1】:

    由于您使用了self.selected_items = self.list_box.get(0, last=END),它将获取列表框中的所有项目。

    您应该改用self.selected_items = [self.list_box.get(x) for x in self.list_box.curselection()]

    【讨论】:

    • 谢谢!!!抱歉没有早点回答。德克萨斯州天气。
    猜你喜欢
    • 2014-09-16
    • 2012-07-18
    • 2020-06-23
    • 1970-01-01
    • 2020-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-25
    相关资源
    最近更新 更多