朝问正觉 2021-03-08 21:29 采纳率: 50%
浏览 46
已结题

python tkinter 该如何让一个loop里的问题一个接一个显示

想用tkinter做一个从两个list里面出题的问卷

因为有12道题,都是大同小异,就想用一个loop来循环出12次。目前的问题是一下子12题同时出来了。。。有没有什么办法能让他们依次出来,一道题点了next按钮后下一道题才会出现,试了time,os.pause 都没用。。。

万分感谢!

import tkinter as tk
import random
import time
import os

Englis=['Jan','Feb','March','April','May','June','July','August','Sept','Oct','Nov','Dec']
Spalis=['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre']

def next():
    a=0

def test():
    cholis=Englis
    sollis=Spalis

    for i in range (0,12):
        num=random.randint(0,len(cholis)-1)
        
        EnglishWord=tk.StringVar()
        EnglishWord.set('Please print out the Spanish word of '+cholis[num]+': ')
        
        SpanishWord=tk.StringVar()
        SpanishWord.set(sollis[num])
        Question=tk.Label(window,textvariable=EnglishWord,font=('Arial', 25), width=15,height=3)
        Question.pack()        
        
        e2 = tk.Entry(window, show=None, font=('Arial', 14))
        e2.pack()
        
        NextQButton=tk.Button(window, text="Next", command=next)
        NextQButton.pack()   

        
        
window=tk.Tk()
window.title('My Window')
window.geometry('1920x1080')
test()
window.mainloop()
  • 写回答

2条回答 默认 最新

  • coagenth 2021-03-08 23:15
    关注

    问题是用for循环会全部一次性显示在窗口中,要实现你想要的效果,把代码作如下修改:

    import tkinter as tk
    import random
    import time
    import os
    
    Englis = ['Jan', 'Feb', 'March', 'April', 'May', 'June',
              'July', 'August', 'Sept', 'Oct', 'Nov', 'Dec']
    Spalis = ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio',
              'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre']
    window = tk.Tk()
    window.title('My Window')
    window.geometry('1920x1080')
    cholis = Englis
    sollis = Spalis
    def test():
        num = random.randint(0, len(cholis)-1)
    
        EnglishWord = tk.StringVar()
        EnglishWord.set(
            'Please print out the Spanish word of '+cholis[num]+': ')
        SpanishWord = tk.StringVar()
        SpanishWord.set(sollis[num])
        Question = tk.Label(window, textvariable=EnglishWord,
                            font=('Arial', 14), width=40, height=3)
        Question.pack()
    
        e2 = tk.Label(window, text=SpanishWord.get(), font=('Arial', 14))
        e2.pack()
        
        def next():
            test()
            Question.destroy()
            e2.destroy()
            NextQButton.destroy()
            QuitButton.destroy()
        NextQButton = tk.Button(window, text="Next", command=next)
        NextQButton.pack()
        QuitButton = tk.Button(window,text='Quit',command=window.quit)
        QuitButton.pack()
        
    test()
    window.mainloop()
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月10日
  • 已采纳回答 6月2日

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?