簡體   English   中英

python 錯誤 - TypeError:字符串索引必須是整數

[英]python error - TypeError: string indices must be integers

我一直在構建一個抽認卡應用程序,並在嘗試實現單選按鈕時遇到了障礙。 問題是當運行菜單顯示並且您可以訪問課程時,單選按鈕沒有出現。 每當運行代碼時,都會顯示此錯誤TypeError: string indices must be integers attach to the radiobutton function balance_radio_butto1 balancing_radio_butto1 = Radiobutton(balancing_frame, text = balancing[answer_list[0]], variable=balancing_radio, value = 1)如果有人可以解釋為什么會出現此錯誤以及如何修復它,將不勝感激。 以下是我到目前為止的代碼。

from tkinter import *
from PIL import ImageTk, Image
from random import branding
import random

root = Tk()
root.title('Chemistry Flashcards')
root.geometry("500x500")


def balancing():
balancing_frame.pack(fill="both", expand=1)



global show_balancing
show_balancing = Label(balancing_frame)
show_balancing.pack(pady=15)

global balancing
balancing = ['balanced1', 'balanced2', 'balanced3', 'balanced4', 'balanced5', 'unbalanced1', 'unbalanced2', 'unbalanced3', 'unbalanced4', 'unbalanced5']

global balancing_state
balancing_state = {
'balanced1':'balanced',
'balanced2':'balanced',
'balanced3':'balanced',
'balanced4':'balanced',
'balanced5':'balanced',
'unbalanced1':'unbalanced',
'unbalanced2':'unbalanced',
'unbalanced3':'unbalanced',
'unbalanced4':'unbalanced',
'unbalanced5':'unbalanced',

}

answer_list = []
count = 1


while count < 3:
    rando = randint(0, len(balancing_state)-1)
    if count == 1:
        answer = balancing[rando]

        global balancing_image
        balancing = "C:/Users/Kisitu/Desktop/project/balancing/" + balancing[rando] + ".png"
        balancing_image = ImageTk.PhotoImage(Image.open(balancing))
        show_balancing.config(image=balancing_image)

    answer_list.append(balancing[rando])

    '''random.shuffle(balancing)'''
    count += 1

    random.shuffle(answer_list)

global balancing_radio
balancing_radio = IntVar()

balancing_radio_butto1 = Radiobutton(balancing_frame, text = balancing[answer_list[0]], variable=balancing_radio, value = 1)
balancing_radio_butto1.pack(pady=10)
balancing_radio_butto2 =  Radiobutton(balancing_frame, text = balancing[answer_list[1]], variable=balancing_radio, value = 2).pack()




my_menu = Menu(root)
root.config(menu=my_menu, bg='#B7F7BB')

lesson_menu = Menu(my_menu)
my_menu.add_cascade(label="Lesson", menu=lesson_menu)
lesson_menu.add_command(label="balancing", command=balancing)
lesson_menu.add_separator()
lesson_menu.add_command(label="Exit", command=root.quit)


balancing_frame = Frame(root, width=500, height=500, )



root.mainloop()

... text = balancing[answer_list[0]]...

平衡是一個列表,您正在嘗試從列表中索引一個值。 您將 answer_list[0] 作為索引傳遞。 answer_list 包含來自平衡的隨機字符串。 您正在嘗試使用類似 in 的字符串索引列表

balancing["balanced2"]

也許你可以使用字典?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM