Похоже, вам нужно добавить несколько вещей.
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?