#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)
...