Python tkinter - TypeError - объект 'str' нельзя интерпретировать как целое число - PullRequest
0 голосов
/ 06 марта 2020

Здравствуйте, пожалуйста, вы можете мне помочь? Я пытаюсь попрактиковаться в программировании и создании базы данных, но я застрял. Кто-нибудь получил какой-либо совет? Спасибо:

Я пытаюсь ввести данные в поле ввода, чтобы их можно было скопировать в таблицу в моей базе данных, но у меня возникает проблема - TypeError - объект 'str' не может быть интерпретированным как целое число.

def players_one():
    global screen8
    global playertext
    global playerLabel
    screen8 = Tk()
    screen8.title = ("PLAYERS")
    screen8.geometry("1080x750")
    Label(screen8, text = "WHCC 1ST XI PLAYERS", bg = "cyan", width = "350", height = "3", font = ("Calibri", 28, "bold")).pack()

    MainFrame = Frame(screen8)
    MainFrame.pack()

    TopFrame = Frame(MainFrame, bd = 14, width = 1350, height = 550, padx = 20, relief = RIDGE, bg = "cyan")
    TopFrame.pack(side = TOP)

    playerLabel2 = Label(TopFrame, font = ("calibri", 28, "bold"), pady = 10, bg = "cyan",
    text = "Player Name")
    playerLabel2.grid(row = 0, column = 0, columnspan = 17)

    playertext = Text(TopFrame, height = 15, width = 90, bd = 10, font = ("calibri", 20 , "bold"))
    playertext.grid(row = 1, column = 0, columnspan=6, padx = 2, pady = 5)


def playerfunction():
    playertext = []
    playertext.insert(END, player_name_verify.get())

При вводе имени игрока в поле ввода логина менеджера оно должно go к моей таблице данных игрока в логине моего игрока, но постоянно появляется ошибка

def players():
    global screen4
    global playertext
    screen4 = Tk()
    screen4.title("PLAYERS")
    screen4.geometry("1080x750")
    Label(screen4, text = "WHCC 1ST XI PLAYERS", bg = "cyan", width = "350", height = "3", font = ("Calibri", 28, "bold")).pack()
    Label(screen4, text = "").pack()

    global player_name_entry

    global player_name_verify




    player_name_verify = StringVar() 


    Label(screen4, text = "Player Name : ", font = ("Calibri", 16)).pack()
    player_name_entry = Entry(screen4, textvariable = player_name_verify)
    player_name_entry.pack()

    Button(screen4, text = "Enter", width = "13", height = "2", command = playerfunction).pack()

Несмотря на то, что имя игрока было названо StringVar ()

Вот трассировка:

трассировка (последний вызов был последним): Файл "C: \ Python33 \ lib \ tkinter__init __. Py ", строка 1482, в вызов возврат файла self.fun c (* args)" // TDMS-FS-02/2013 $ / 13IshKau / a LEVELS / cw st.py ", строка 133, в функции player playertext.insert (END, player_name_verify.get ()) Ошибка типа: объект 'str' не может быть интерпретирован как целое число

1 Ответ

0 голосов
/ 06 марта 2020

Скорее всего, StringVar(), player_name_verify функционирует.

Эту ошибку можно довольно легко смоделировать с помощью:

from tkinter import *
l = []
l.insert(END, "Something")

Возврат:

Traceback (most recent call last):
  File "<pyshell#2>", line 3, in <module>
    l.insert(END, "Something")
TypeError: 'str' object cannot be interpreted as an integer

Это происходит потому, что END содержит значение 'end', которое не является целым числом, поэтому при попытке вставить в индексную позицию списка 'end' происходит ошибка.

Как указывает @stovfl, это происходит в функции def playerfunction(): и появляется, что вы намеревались использовать глобальное текстовое поле playertext вместо локального списка.

def playerfunction():
    global playertext
    global player_name_verify # you may need this as well
    playertext.insert(END, player_name_verify.get())

Я хотел бы рассмотреть передачу переменных в функции вместо того, чтобы полагаться на глобальные переменные, как привычка проникать в глобальные переменные, как правило, быстро запутывает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...