繁体   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