文本小部件不显示列表中内容的内容

时间:2019-02-07 19:11:21

标签: python tkinter

我希望程序中的页面显示由函数创建的列表的内容,但是当我将列表的地址放在“插入”函数中时,它不起作用,并且每当我单击时都会显示错误消息在开始时,“ TypeError:列表索引必须是整数或分片,而不是元组”,尝试进入下一页。

这是代码:

from tkinter import *
import tkinter as tk
import random

title_font= ("Microsoft Jhenghei UI Light", 35)


class MathsApp(tk.Tk):
    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)

        container = tk.Frame(self)
        container.pack(side="top", fill="both", expand= True)
        container.grid_rowconfigure(0, weight=1)
        container.grid_columnconfigure(0, weight=1)

        self.title("Maths Revision App")
        self.geometry("800x500")
        self.frames = {}
        for F in (StartPage, q1):

            frame = F(container, self)

            self.frames[F] = frame

            frame.grid(row=0, column=0, sticky="nsew")

        self.show_frame(StartPage)

    def show_frame(self, cont):
        #funtion that displays different pages

        frame = self.frames[cont]
        frame.tkraise()

class StartPage(tk.Frame):

    def __init__(self, parent, controller):
        tk.Frame.__init__(self,parent)

        self.configure(bg ="white")
        lbl = tk.Label(self, text="Welcome!", font=title_font, bg="white", fg="#004d99")
        lbl.place(x=30, y=20)        
        rtbtn=tk.Button(self, text="Start", height=3, width=15, fg="white", bg="#004d99", command=lambda:controller.show_frame(q1))
        rtbtn.place(x=350, y=200)    

class q1(tk.Frame):

    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)

        self.configure(bg="white")        
        lbl=Label(self, text="Question 1", font=("Microsoft Jhenghei UI Light", 35), bg="white", fg="#004d99")
        lbl.place(x=30, y=20)
        txt=Text(self, height=5, width=70)
        txt.config(state="normal")
        #where I am trying to display the contents of the list
        txt.insert(tk.INSERT,qlist[0,0])
        txt.config(state="disabled")
        txt.place(x=35,y=125)
        nxt=Button(self, text="Next", height=3, width=15, fg="white", bg="#004d99")
        nxt.place(x=650, y=400)
        ans=Entry(self)
        ans.place(x=650, y=350,height=25)

#function for creating the list
qlist=0
def getQuestions():
    global qlist
    qlist=[0,0,0,0,0]
    noschosen=[]
    with open("questiontest.txt","r") as f:
        lines=f.read().strip().split("\n")
    i=0
    while i<len(qlist):
        chosen=False
        n=random.randint(1,20)
        while n in noschosen:
            n=random.randint(1,20)
        qline=2*n-1
        noschosen.append(n)
        qlist[i]=(lines[qline],lines[qline+1])
        i=i+1
getQuestions()



print (qlist)
app = MathsApp()
app.mainloop()

该txt文件称为“ questiontest”,其中包含:

.
Question1
Answer1
Question2
Answer2
Question3
Answer3
Question4
Answer4
Question5
Answer5
Question6
Answer6
Question7
Answer7
Question8
Answer8
Question9
Answer9
Question10
Answer10
Question11
Answer11
Question12
Answer12
Question13
Answer13
Question14
Answer14
Question15
Answer15
Question16
Answer16
Question17
Answer17
Question18
Answer18
Question19
Answer19
Question20
Answer20

在第二页上,它应该在文本框中显示“ QuestionX”(X代表任何数字)。我知道地址中有东西,因为我在运行GUI之前使代码打印了整个列表。

0 个答案:

没有答案