Я пытаюсь реализовать свою функцию сортировки radix в графическом интерфейсе tkinter.Если я просто запускаю его в режиме IDLE, он запрашивает ввод чисел, разделенных запятыми (в GUI не имеет значения, если у них просто пробелы или запятые). Текущие выходные данные дают значения после каждого шага в процессе сортировки по основанию.Когда я пытаюсь внедрить это в tkinter, я получаю сообщение об ошибке, как я его построилОшибка, которую я продолжаю получать:
ValueError: invalid literal for int() with base 10: ','
ValueError: invalid literal for int() with base 10: ''
, в зависимости от того, делаю я запятые или просто пробелы.
def radixSort(nums):
if nums is None or len(nums) < 1:
return nums
mainQ = Queue()
binQs = []
for n in nums:
mainQ.enqueue(n)
# create an array of Queues and initialize them - bin 0 to 9
for i in range(10):
binQs.append(Queue())
for i in range(4):
visited = []
# below iteration includes only numbers of digit length i
while not mainQ.isEmpty():
val = mainQ.dequeue()
if i > len(val):
visited.append(val)
continue
r = val[-i]#get the ith index from last
r = int(r)
binQs[r].enqueue(val)
for v in visited:
mainQ.enqueue(v)
for i in range(10):
while not binQs[i].isEmpty():
mainQ.enqueue(binQs[i].dequeue())
res = []
while not mainQ.isEmpty():
res.append(mainQ.dequeue())
return(res)
def main():
ones = binone(result.get())
tens = bintwo(result.get())
nums = radixSort(result.get())
resone= Label(textvariable = ones).grid(row=5, column=4)
restwo= Label(textvariable = tens).grid(row=7, column=4)
resfin= Label(textvariable = nums).grid(row=9, column=4)
def clearEntry():
p.delete(0,END)
#Create main window
win = Tk()
result = StringVar()
win.title('Sort by Radix')
win.geometry('1000x500')
result = StringVar()
p = Entry(win, textvariable=result)
p.grid(row = 4, column=1, sticky=W)
btn = Button(win, text= 'Check', command = main)
btn.grid(column = 20, row = 40)
clearBtn = Button(win, text = 'Clear', command = clearEntry)
clearBtn.grid(column = 40, row = 40)
resultLbl = Label(win, textvariable = result)
resultLbl.grid(column = 20, row = 60)
win.mainloop()
У меня есть функция radix и произвольное окно.Для ввода чисел функции десятков и единиц предназначены только для отображения каждого шага в процессе сортировки по осям.Я также пытался использовать
r = val[-i].split(',')
в 19-й строке кода radixSort, но затем я получил ошибку, что
r=int(r) cannot be a list.