Поиск списка Tkinter - PullRequest
       0

Поиск списка Tkinter

0 голосов
/ 29 января 2020

ОБНОВЛЕНИЕ!

Код ниже теперь работает, я забыл уничтожить начальное окно Tk root.


Я пытался прочитать файл CSV в Фрейм данных, а затем поместите имена столбцов в список поиска с возможностью поиска и попробуйте это;

from tkinter import *
from tkinter import filedialog
import tkinter as tk
import pyautogui as gui
import pandas as pd

gui.alert(text="Please Select Data File.", title="Data")
raw_root = tk.Tk()
raw_root.withdraw()
file_path = filedialog.askopenfilename()
raw_root.destroy()
data = pd.read_table(file_path, encoding='ANSI')
data = data.drop([0], axis=0)
data = data.apply(pd.to_numeric, axis=1, errors='coerce')

class Application(Frame):

    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.pack()
        self.create_widgets()

    def getInput(self):
        a = self.lbox.curselection()
        root.destroy()
        global inputs
        inputs = a

    def create_widgets(self):
        self.search_var = StringVar()
        self.search_var.trace("w", lambda name, index, mode: self.update_list())
        self.entry = Entry(self, textvariable=self.search_var, width=13)
        self.lbox = Listbox(self, width=45, height=15)
        self.btn = Button(self, width=15, text='Enter', command=self.getInput)
        self.entry.grid(row=0, column=0, padx=10, pady=3)
        self.lbox.grid(row=1, column=0, padx=10, pady=3)
        self.btn.grid(row=2, column=0, padx=10, pady=3)
        self.update_list()

    def update_list(self):
        search_term = self.search_var.get()
        channels = list(data.columns)
        self.lbox.delete(0, END)

        for item in channels:
            if search_term.lower() in item.lower():
                self.lbox.insert(END, item)


root = Tk()
root.title('Select Channels')
app = Application(master=root)
app.mainloop()

Это работает, если я удаляю часть кода импорта файла и вместо этого использую список чего-то подобного ниже в def update_list;

a_list = ['Can','We','Search','For','Words','Yet']

Однако при использовании раздела кода импорта файлов возможность поиска исчезает вместе с обратным вызовом getInput. Может кто-нибудь помочь объяснить, почему это происходит и где я иду не так?

Спасибо

1 Ответ

0 голосов
/ 29 января 2020

Смотрите обновление:

Я забыл уничтожить начальное окно Tk root. Обновлено и работает сейчас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...