Поиск в одной строке в Excel для получения данных из строки сравнения, используя Python - PullRequest
0 голосов
/ 15 января 2020

Я хотел создать простой словарь для своей работы, в котором я бы установил связь между Python и Excel. В одном столбце есть сокращение, а в другом столбце - полное имя. Я создал окно с всплывающим окном, в котором пользователь должен ввести аббревиатуру, и в ответ он получит всплывающее окно с полным именем. Моя проблема сейчас написать кусок кода, где он будет принимать данные из Excel и возвращать с ответом. Я довольно новичок в программировании и все еще учусь, и мне нужна Ваша помощь.

from tkinter import *
from xlrd import open_workbook


window = Tk()

window.title("Hapag-Lloyd Dictionary")

window.geometry('350x200')

lbl = Label(window, text="Insert the abbreviation")

lbl.grid(column=0, row=0)

txt = Entry(window, width=10)

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


def clicked():
messagebox.showinfo('Message title', 'Message content')

btn = Button(window, text="Click Me", command=clicked)

btn.grid(column=2, row=0)

window.mainloop()

1 Ответ

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

Похоже, вам нужно добавить несколько вещей.

1) переменную для ввода текста в вашу функцию

2) функцию, позволяющую принимать переданный параметр и кнопка, так как теперь она передает параметр, должен использовать лямбда. помочь понять лямбда здесь.

Почему Python лямбды полезны?

3) подпрограмма для поиска значения в файле Excel в вашей функции, я обычно использую openpyxl или xlwings и включаю рабочий код для openpyxl, я также включил то, что, по моему мнению, должно быть в xlrd, но его нет на процессоре, который я сейчас проверяю, вот пара ссылок, чтобы сделать почти то, что вы хотите в модуле xlrd.

Итерация всех столбцов с помощью xlrd

Итерация строк и столбцов с использованием XLRD в Python

import tkinter as tk
from tkinter.messagebox import showinfo
import openpyxl as opxl

def popupmsg(msg):
    #output to user 
    title = "Full name"
    msg = msg
    showinfo(title, msg)

#3)lookup function
def lookUp(a):
    abbreviation = str(a)
    wb = opxl.load_workbook('example.xlsx')
    #if excel is not inside same folder as this routine include path to it
    sheet= wb['main']
    #named the sheet 'main' in case I need more
    for col_cells in sheet.iter_cols(min_col = 1 , max_col =1):
        for cell in col_cells:
            if (cell.value == abbreviation):
                rowN = cell.row
                fullName = str(sheet.cell(row = rowN, column = 2).value)
                popupmsg(fullName) #this will output every match 
                #with input Initials
            else:
                pass

    # #3)here's what I think should be the xlrd equivalent
    # import xlrd # replace opxl at top, comment out opxl routine
    # file_location = "example.xlsx"
    # workbook = xlrd.open_workbook(file_location)
    # sheet = workbook.sheet_by_index(0)
    # for cell in sheet.col(0)):
    #     if (cell.value == abbreviation):
    #         rowN = cell.row
    #         fullName = sheet.cell_value(rowN,1)
    #     else:
    #         pass
    popupmsg(fullName) #this will output the last output with input Initials


root=tk.Tk()

#txtvar 1)
abb = tk.StringVar()

abbLabel = tk.Label(root, text= "Insert the abbreviation")
abbEntry = tk.Entry(root, textvariable = abb)
#lambda 2)
lookupBtn = tk.Button(root, text= "Look Up Name", command = lambda: 
lookUp(abbEntry.get()))

abbLabel.pack()
abbEntry.pack(padx = 20)
lookupBtn.pack()
#more complicated forms may want to use grid

root.mainloop()

Я также Настоятельно рекомендуем принять объектно-ориентированную структуру, особенно если вы добавите сложность, изложенную здесь.

Лучший способ структурировать приложение tkinter?

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