Python Tkinter:如何创建顶级窗口并销毁前一个窗口?

user3500082

我正在用tkinter制作测验应用程序,我希望每个问题都出现在新窗口中,但是在创建新窗口后,我不知道如何销毁上一个窗口。这是我的代码的简化摘要:

from tkinter import *

class q1:
    def __init__(self, master):
        self.master = master
        Label(self.master, text='What is 3 + 3?').grid()
        self.option_1 = Button(self.master, text='5', command = self.incorrect)
        self.option_1.grid()
        self.option_2 = Button(self.master, text='6', command = self.correct)
        self.option_2.grid()

    def correct(self):
        self.option_1.config(state=DISABLED)
        self.option_2.config(state=DISABLED)
        Label(self.master, text='Correct').grid()
        Button(self.master, text='Next Question', command = self.nextq).grid()

    def incorrect(self):
        self.option_1.config(state=DISABLED)
        self.option_2.config(state=DISABLED)
        Label(self.master, text='Incorrect').grid()
        Button(self.master, text='Next Question', command = self.nextq).grid()

    def nextq(self):
        q2(Toplevel(self.master))

class q2:
    def __init__(self, master):
        self.master = master
        Label(self.master, text='Question 2').grid()

def window():
    root = Tk()
    q1(root)
    root.mainloop()

if __name__ == '__main__':
    window()
惊人的

更新后的版本

from Tkinter import *
import random

class Ask:
    def __init__(self, parent,question,right,wrong):
        self.answer=right
        self.top=top=Toplevel(parent)
        Label(self.top, text=question,width=25).grid()
        a1=random.choice([right,wrong])
        self.option_1 = Button(self.top, text=a1, width=25,command = lambda: self.check(1))
        self.option_1.grid()
        a2=right
        if a1==right:
            a2=wrong
        self.option_2 = Button(self.top, text=a2, width=25, command = lambda: self.check(2))
        self.option_2.grid()

    def check(self,pressed):
        if pressed==1:
            ans=self.option_1['text']
        else:
            ans=self.option_2['text']
        if ans==self.answer:
            self.correct()
        else:
            self.incorrect()

    def correct(self):
        self.option_1.config(state=DISABLED)
        self.option_2.config(state=DISABLED)
        Label(self.top, text='Correct').grid()
        Button(self.top, text='Next Question', command = self.top.destroy).grid()

    def incorrect(self):
        self.option_1.config(state=DISABLED)
        self.option_2.config(state=DISABLED)
        Label(self.top, text='Incorrect').grid()
        Button(self.top, text='Next Question', command = self.top.destroy).grid()

class QUIZ:
    def __init__(self, questionsdict):
        self.root=Tk()

        self.root.withdraw()
        self.questions(questionsdict)
        self.root.deiconify()
        c=Button(self.root, text='Click me to exit', command=self.root.destroy, width=30).grid(row=2, sticky='ew')
        Label(self.root, text='Quiz is Complete', width=30, background='red').grid(row=0, sticky='ew')
        mainloop()

    def questions(self,questionsdict):
        for k in questionsdict.keys():
            right=questionsdict[k][0]
            wrong=questionsdict[k][1]
            b=Ask(self.root, k, right,wrong )
            self.root.wait_window(b.top)

以{question:[correctchoice,incorrectchoice]}格式将测验问题放入字典中,并在调用Question Class时将其用作参数

questions={'What is 3+3':['6','8'], 'What is the capital of Alaska': ['Juno','Anchorage']}
QUIZ(questions)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用python tkinter调用一个窗口到另一个窗口

来自分类Dev

Python tkinter:如何确保在单击时仅创建一个子窗口,而不在每次单击按钮时创建一个新窗口?

来自分类Dev

Python tkinter:如何确保在单击时仅创建一个子窗口,而不在每次单击按钮时创建一个新窗口?

来自分类Dev

创建一个复选框数量未知的窗口-Python / tkinter

来自分类Dev

Python Tkinter。仅显示一个窗口副本

来自分类Dev

Python Tkinter:从另一个窗口打开同一窗口时的行为不同

来自分类Dev

python tkinter单击按钮打开新窗口并关闭第一个窗口

来自分类Dev

Python 在销毁 Tkinter 窗口时崩溃

来自分类Dev

在Tkinter 8.5和Python 3.3中单击子窗口的红色X时,如何销毁父窗口

来自分类Dev

如何在tkinter中使用python 3.5的滚动条打开和关闭另一个窗口?

来自分类Dev

无法在tkinter python中的另一个窗口中访问列表

来自分类Dev

使用Tkinter窗口运行另一个显示摄像机预览的python文件

来自分类Dev

python-tkinter:在另一个窗口中打开另一个图像?

来自分类Dev

KivyMD // Python如何创建一个加载对话框(弹出窗口),该对话框在后台运行代码的同时显示一个旋转的轮子

来自分类Dev

R相当于Python中的Shiny吗?创建一个基于窗口的工具

来自分类Dev

Python 3 Tkinter,如果尚未创建窗口,则创建窗口

来自分类Dev

如何避免一个Spark Streaming窗口同时运行本机Python代码而阻塞另一个窗口

来自分类Dev

如何在python中选择一个弹出式窗口?

来自分类Dev

你如何在 Python 中制作一个基本的全屏窗口?

来自分类Dev

Python:调用父类方法来解密一个窗口(Tkinter)会导致窗口中有两组小部件

来自分类Dev

一个Python脚本的多个控制台窗口

来自分类Dev

在一个窗口中显示基于输出的图像 (Python)

来自分类Dev

Tkinter-我如何在新窗口中创建按钮,该窗口是由调用函数创建的?的Python 3

来自分类Dev

如何从python的弹出窗口中关闭Tkinter主窗口?

来自分类Dev

封装窗口对象时,如何关闭python-tkinter窗口?

来自分类Dev

居中窗口python tkinter

来自分类Dev

居中窗口python tkinter

来自分类Dev

单击一个按钮时如何仅创建一个新窗口?Tkinter

来自分类Dev

Tkinter。如何在顶级窗口等待变量时销毁根窗口

Related 相关文章

  1. 1

    如何使用python tkinter调用一个窗口到另一个窗口

  2. 2

    Python tkinter:如何确保在单击时仅创建一个子窗口,而不在每次单击按钮时创建一个新窗口?

  3. 3

    Python tkinter:如何确保在单击时仅创建一个子窗口,而不在每次单击按钮时创建一个新窗口?

  4. 4

    创建一个复选框数量未知的窗口-Python / tkinter

  5. 5

    Python Tkinter。仅显示一个窗口副本

  6. 6

    Python Tkinter:从另一个窗口打开同一窗口时的行为不同

  7. 7

    python tkinter单击按钮打开新窗口并关闭第一个窗口

  8. 8

    Python 在销毁 Tkinter 窗口时崩溃

  9. 9

    在Tkinter 8.5和Python 3.3中单击子窗口的红色X时,如何销毁父窗口

  10. 10

    如何在tkinter中使用python 3.5的滚动条打开和关闭另一个窗口?

  11. 11

    无法在tkinter python中的另一个窗口中访问列表

  12. 12

    使用Tkinter窗口运行另一个显示摄像机预览的python文件

  13. 13

    python-tkinter:在另一个窗口中打开另一个图像?

  14. 14

    KivyMD // Python如何创建一个加载对话框(弹出窗口),该对话框在后台运行代码的同时显示一个旋转的轮子

  15. 15

    R相当于Python中的Shiny吗?创建一个基于窗口的工具

  16. 16

    Python 3 Tkinter,如果尚未创建窗口,则创建窗口

  17. 17

    如何避免一个Spark Streaming窗口同时运行本机Python代码而阻塞另一个窗口

  18. 18

    如何在python中选择一个弹出式窗口?

  19. 19

    你如何在 Python 中制作一个基本的全屏窗口?

  20. 20

    Python:调用父类方法来解密一个窗口(Tkinter)会导致窗口中有两组小部件

  21. 21

    一个Python脚本的多个控制台窗口

  22. 22

    在一个窗口中显示基于输出的图像 (Python)

  23. 23

    Tkinter-我如何在新窗口中创建按钮,该窗口是由调用函数创建的?的Python 3

  24. 24

    如何从python的弹出窗口中关闭Tkinter主窗口?

  25. 25

    封装窗口对象时,如何关闭python-tkinter窗口?

  26. 26

    居中窗口python tkinter

  27. 27

    居中窗口python tkinter

  28. 28

    单击一个按钮时如何仅创建一个新窗口?Tkinter

  29. 29

    Tkinter。如何在顶级窗口等待变量时销毁根窗口

热门标签

归档