Сначала я должен сказать, что использование Array очень запутанно. Array
- это встроенный метод, поэтому вам нужно использовать некоторую другую терминологию для того, что вы делаете. Я немного почистил ваш код и внес несколько необходимых изменений, чтобы получить функциональность, которая, я думаю, вы ищете. Тем не менее, пожалуйста, найдите время, чтобы прочитать руководство по стилю PEP8 . Другим будет намного проще читать ваш код.
Один из ключевых факторов, почему ваш код не выполняет то, что вы хотите, - вы пропускаете global
операторов для snum
и box_list
. Эти 2 понадобятся, чтобы заставить все делать то, что вы хотите.
Далее вам не нужно return
в вашей функции linear()
, так как вы вызываете эту функцию с помощью кнопки, и ничто не может быть возвращено.
В вашем коде есть много мест, где вы назначаете виджеты для имени переменной, когда оно на самом деле не нужно. Я тоже их почистил.
Дайте мне знать, если у вас есть какие-либо вопросы:
import tkinter as tk
root = tk.Tk()
root.title("Linear Search")
root.geometry("1200x600")
box_list = []
def linear():
index_list = []
global snum, box_list
x = snum.get()
for i in range(len(box_list)):
if box_list[i].get() == str(x):
index_list.append(i)
print(index_list)
tk.Label(root, text=index_list).pack()
def applyto_label():
global snum, box_list
xx = size.get()
for i in range(xx):
tk.Label(root, text="Array Element: {}".format(box_list[i].get() ),
font="Arial 12 bold", bg="red", fg="white", bd="5").pack(side="left")
tk.Label(root,text="Number to search:", font="Arial 10 bold",
fg="blue", pady="10", anchor="w").pack(side="left")
snum = tk.IntVar()
tk.Entry(root, textvariable=snum).pack(side="left")
tk.Button(root,text="Linear Search",command=linear).pack(side="left")
def Boxes():
global snum, box_list
xx = size.get()
for _ in range(xx):
box_list.append(tk.Entry(root, font="Arial 10 bold", bd="5", width="5"))
box_list[-1].pack(side="left")
tk.Button(root ,text="Submit To Array", command=applyto_label).pack(side="left")
arr_frame = tk.Frame(root)
arr_frame.pack()
tk.Label(arr_frame, text="Enter the Size of Array:", font="Arial 10 bold", fg="blue").pack()
size = tk.IntVar()
array_size = tk.Entry(arr_frame, textvariable=size)
array_size.pack()
tk.Button(arr_frame, text="Submit", command=Boxes).pack()
root.mainloop()
