Я сделал графический интерфейс с Tkinter, чтобы позволить кому-то ввести одну строку и два целых числа, которые затем будут запускать код при нажатии кнопки для извлечения данных из одного файла в другой, но я продолжаю сталкиваться с проблемой и я не уверен, как обойти это.Запись Tkinter как целое число
def copy(Orn, Orc, Stage):
for a in range(1, 10):
for b in range(1,Stage):
import Tkinter as T
top= T.Tk()
L1=T.Label(text="Order Number").grid(row=0, column=0)
E1=T.Entry().grid(row=0,column=1)
L2=T.Label(text="Number of Compounds").grid(row=1,column=0)
E2=T.Entry().grid(row=1,column=1)
L3=T.Label(text="Number of Stages").grid(row=2,column=0)
E3=T.Entry().grid(row=2, column=1)
B1=T.Button(text="Extract", command=copy(E1, E2, E3)).grid(row=3,column=0)
top.mainloop()
Я получаю ошибку range() integer end argument expected, got NoneType.
Как получить значение начального быть целым числом? Я также попытался:
e3=E3.get()
, как было показано, в чьем-то подобный вопрос, но я получаю сообщение об ошибке: NoneType object has no attribute get.
Что мне не хватает?
Большое вам спасибо, что подводит меня к следующей ошибке, которую я получаю. 'e3 = int (E3.get())' дает мне 'недопустимый литерал для int() с базой 10.' Я попробовал «float», и я получаю «невозможно преобразовать строку в float». – zw1ck
@ zw1ck Я не совсем уверен, что попадает в поле, но эта ошибка, вероятно, связана с тем, что в строке есть пробел. Используйте .strip(), чтобы избавиться от любого пробела, а затем преобразовать его в int. –
Я не уверен, где происходит целочисленное преобразование, но это, скорее всего, связано с 'command'. При назначении функций виджетам вы должны отбрасывать '()' и использовать 'command = function', однако, если вы хотите передать переменные, вам нужно использовать' lambda', например 'command = lambda: function (a, b, c) '. Если вы этого не сделаете, используйте 'command = function()' или 'command = function (a, b, c)', тогда он будет вызываться вместо назначенного. Вот почему вы получаете ошибку, потому что вы не можете преобразовать пустую строку в int (поскольку запись пуста). –