Tkinter - Функция Entry .get()
class FCMenu:
def __init__(self,master):
frame=Frame(master)
frame.pack()
Label(frame, text="What is the number?").grid(row=0)
self.num = IntVar()
self.entry = Entry(frame,textvariable=self.num).grid(row=1)
button = Button(frame, text="Factorize", command=self.calc).grid(row=2)
self.resultvar = StringVar()
Label(frame, textvariable=self.resultvar).grid(row=3)
def calc(self):
e = int(self.entry.get())
print(e,self.num.get())
...
Я пытаюсь создать Python GUI с tkinter, как показано выше. Тем не менее, каждый раз, когда я звоню .get()
на запись или переменную text, это не удается. Сама запись объясняет, что нет .get()
функция для NoneType. Если я удаляю это и использую только self.num.get()
, он печатает 0 или 0.0, в зависимости от того, превращаю я его в целое число или нет. Если я поверну self.num
к StringVar
, он ничего не печатает вообще. Просто я не могу найти способ получить ввод, который я хочу получить.
1 ответ
Сделал упрощенную версию вашего кода, и он правильно печатает как Entry
виджет изменен. Может быть ошибка в другом месте вашего кода? Или неправильный отступ? Вот код, с которым я тестировал (это код 2.7, но он также работал с версией 3.5):
import Tkinter as tk
class FCMenu:
def __init__(self, master):
frame = tk.Frame(master)
self.num = tk.IntVar()
self.entry = tk.Entry(frame, textvariable=self.num)
self.button = tk.Button(frame, text='Calc', command=self.calc)
frame.pack()
self.entry.pack()
self.button.pack()
def calc(self):
print(self.num.get(), self.entry.get())
root = tk.Tk()
frame = FCMenu(root)
root.mainloop()
Он печатает с обоих self.num.get()
а также self.entry.get()
, Первый Int
а второй как String
похоже на то.