Запись Tkinter выдает ошибку «TypeError: get () отсутствует 1 требуемый позиционный аргумент: ‘self'»

#python #tkinter #python-3.8

#python #tkinter #python-3.8

Вопрос:

Я пытаюсь создать код, который принимает запись из графического интерфейса Tkinter и выполняет поиск через API, бла-бла-бла. Но когда я пытаюсь получить информацию из виджета «Запись», отображается эта ошибка:

 Exception in Tkinter callback
Traceback (most recent call last):
  File "C:UsersUserAppDataLocalProgramsPythonPython38-32libtkinter__init__.py", line 1883, in __call__
    return self.func(*args)
  File "C:/Users/User/PycharmProjects/pythonProject/login.py", line 7, in search
    EntryResult = Entry.get()
TypeError: get() missing 1 required positional argument: 'self'

Process finished with exit code 0
  

Вот мой код:

 from tkinter import *
from tkinter.ttk import *
import base64
import requests as r
searchup = Tk()
def search():
    EntryResult = Entry.get()
    hypixelData = r.get('https://api.hypixel.net/player?key={MyAPIKey}amp;name=' EntryResult).json()
    uuid = hypixelData["player"]["uuid"]
    encodedData = r.get('https://sessionserver.mojang.com/session/minecraft/profile/' uuid).json()
    encodedCode = encodedData["properties"]["0"]["value"]
    decode = base64.decodestring(encodedCode)
    print(decode)
Label(searchup, text= "Search MineFriends").grid(column = 5, row = 0, sticky = W, pady = 2)
Entry(searchup).grid(column = 5, row = 1, sticky = W, pady = 2)
Button(searchup, text= "Search player!", command=search).grid(column = 5, row = 2, sticky = W, pady = 2)
searchup.mainloop()
  

Я не совсем понимаю проблему, я новичок в Python

Комментарии:

1. Entry сначала должен быть инициализирован. gen это метод экземпляра, а не метод класса.

2. Я поставил определение после ввода, проблема все еще заключается… это как-то связано с тем, что аргумент «self» находится в def search()

Ответ №1:

get Метод должен быть вызван в экземпляре Entry . Вы вызываете его в классе Entry .

Решение выглядит следующим кодом, в котором экземпляр Entry создается и сохраняется в переменной с именем search_box . Затем для получения входных данных вызывается get метод search_box .

 def search():
    entryResult = search_box.get()
    ...
...
search_box = Entry(searchup)
search_box.grid(column = 5, row = 1, sticky = W, pady = 2)
...