I want to make a GUI program that inputs the value of a column the program must go to the row where the inputted value is equal to the row value and display the particular row value in a text box but I am clueless on how to do this.
I tried using while loop to do it so it will search the whole excel file to check whether value of inputted data is equal to the data in the textbox but it did not go properly.
I am using python 3.7.0 using anaconda.
from tkinter import *
import openpyxl
a = Tk()
a.title('Return Book')
a.geometry('500x200')
heading = Label(a,text = 'Return Book')
heading.grid(row = 0,column = 1)
lab1 = Label(a,text = 'Enter Invoice Number:')
lab1.grid(row = 1, column = 0)
inv_field = Entry(a)
inv_field.grid(row = 1, column = 1)
inv_field.get()
find = Button(a,text = 'Find',width = 4,command =a.destroy)
find.grid(row = 2, column = 1)
def find():
##extradiction
##location of excel file
path = "E:\Library Management\issue.xlsx"
# workbook object is created
wb = openpyxl.load_workbook(path)
sheet = wb.active
max_col = sheet.max_column
# Will print a particular row value
for i in range(1, max_col + 1):
cell_obj = sheet.cell(row = 2, column = i)
print(cell_obj.value, end = " ")
a.mainloop()
I expect the program to input the value of the invoice number and search the whole database for the number and print the row in the textbox.
First you did not define the textbox
in your code to show the search result. Second you use a.destroy
in command
option of find
button, it should be set to find
function. Also you use same name find
for find button and find function.
Suggest to add a Text
widget:
book_info = Text(a, width=40, height=5)
book_info.grid(...)
Then rename find()
function to find_book()
and add a new update_text()
to show the search result as below:
def update_text(info):
book_info.delete(1.0, 'end')
book_info.insert('end', info)
def find_book():
inv_no = inv_field.get()
if inv_no:
wb = openpyxl.load_workbook('E:\Library Management\issues.xlsx')
sheet = wb.active
for row in sheet.rows:
# assume invoice no is in column 1
if row[0].value == inv_no:
update_text('\n'.join(str(cell.value) if cell.value else '' for cell in row))
return
wb.close()
update_text('Book not found')
Finally change the command
option of find
button to call the find_book()
function:
find = Button(a, text='Find', command=find_book)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.