本文主要思路:使用tkinter编写界面,使用3个Label组件和多线程技术实现学生名单的滚动显示。

import tkinter

import tkinter.messagebox

import random

import threading

import itertools

import time

root = tkinter.Tk()

#窗口标题

root.title('随机提问')

#窗口初始大小和位置

root.geometry('260x180+400+300')

#不允许改变窗口大小

root.resizable(False, False)

#关闭程序时执行的函数代码,停止滚动显示学生名单

def closeWindow():

root.flag = False

time.sleep(0.1)

root.destroy()

root.protocol('WM_DELETE_WINDOW', closeWindow)

# 模拟学生名单,可以加上数据库访问接口,从数据库中读取学生名单

students = ['张三', '李四', '王五', '赵六', '周七', '钱八']

# 变量,用来控制是否滚动显示学生名单

root.flag = False

def switch():

root.flag = True

while root.flag:

# 随机打乱学生名单

t = students[:]

random.shuffle(t)

t = itertools.cycle(t)

# 滚动显示

lbFirst['text'] = lbSecond['text']

lbSecond['text'] = lbThird['text']

lbThird['text'] = next(t)

# 数字可以修改,控制滚动速度

time.sleep(0.1)

def btnStartClick():

# 每次单击“开始”按钮启动新线程

t = threading.Thread(target=switch)

t.start()

btnStart = tkinter.Button(root, text='开始', command=btnStartClick)

btnStart.place(x=30, y=10, width=80, height=20)

def btnStopClick():

# 单击“停”按钮结束滚动显示

root.flag = False

time.sleep(0.3)

tkinter.messagebox.showinfo('恭喜', '本次中奖:'+lbSecond['text'])

btnStop = tkinter.Button(root, text='停', command=btnStopClick)

btnStop.place(x=150, y=10, width=80, height=20)

# 用来滚动显示学生名单的3个Label组件

# 可以根据需要进行添加,但要修改上面的线程函数代码

lbFirst = tkinter.Label(root, text='')

lbFirst.place(x=80, y=60, width=100, height=20)

# 红色Label组件,表示中奖名单

lbSecond = tkinter.Label(root, text='')

lbSecond['fg'] = 'red'

lbSecond.place(x=80, y=90, width=100, height=20)

lbThird = tkinter.Label(root, text='')

lbThird.place(x=80, y=120, width=100, height=20)

# 启动tkinter主程序

root.mainloop()

运行视频:

Python编写抽奖式随机提问程序相关推荐

  1. python抽奖程序_Python编写抽奖式随机提问程序

    本文主要思路:使用tkinter编写界面,使用3个Label组件和多线程技术实现学生名单的滚动显示. import tkinter import tkinter.messagebox import r ...

  2. python漂亮界面 数独游戏源代码_使用Python编写数独游戏自动出题程序

    原标题:使用Python编写数独游戏自动出题程序 数独是一个很好玩的游戏,可以锻炼推理能力.下面的代码可以自动生成数独游戏题目. fromrandom importshuffle, randrange ...

  3. Python编写的桌面图形界面程序实现更新检测和下载安装

    在Python中我们有很多种方案来编写桌面图形用户界面程序,譬如内置的 Tkinter .强大的 PyQt5 和 PySide2 ,还有 wxPython .借助这些或内置或第三方的模块,我们可以轻松 ...

  4. 使用python编写一个简易的打折程序

    使用python编写一个简易的打折程序

  5. 利用Python编写一个高斯正反算程序

    一.前言 这次的高斯正反算程序是使用的Python编写的. 环境信息是:Win10.PyCharm 2021.3.1.PySide6 6.3.1.Python 3.9.9,基于QT Designer设 ...

  6. 使用Python编写数独游戏自动出题程序

    数独是一个很好玩的游戏,可以锻炼推理能力.下面的代码可以自动生成数独游戏题目. from random import shuffle, randrange def generate():     # ...

  7. 用python 编写100内加减乘除的程序

    可以使用Python编写一个简单的程序,来实现在100以内的加减乘除. 下面是一个例子,实现了在100以内两个数字的加减乘除: importrandom# 随机生成两个数字 a = random.ra ...

  8. 基于python的天气预报系统,基于python编写的天气抓取程序

    以前一直使用中国天气网的天气预报组件都挺好,可是自从他们升级组件后数据加载变得非常不稳定,因为JS的阻塞常常导致网站打开速度很慢.为了解决这个问题决定现学现用python编写一个抓取程序,每天定时抓取 ...

  9. python编写抢座位软件_程序员硬核Python抢票教程”,帮你抢回家车票

    盼望着,盼望着,春节的脚步近了,然而,每年到这个时候,最难的,莫过于一张回家的火车票. 据悉,今年春运期间,全国铁路发送旅客人次同比将增长8.0%,达到4.4亿人次,2020年铁路春运自1月10日开始 ...

最新文章

  1. fatal error LNK1123: 转换到 COFF 期间失败
  2. .NET 不规则、可改变大小、边框半透明窗体设计
  3. 76 从OpenCV学习C++ 高级语言特性
  4. REM重复制造MFBF功能
  5. 44、生鲜电商平台-Java后端生成Token架构与设计详解
  6. lvm 多个硬盘合成一个_「ECS最佳实践」基于多块云盘构建LVM逻辑卷
  7. smarty模板概念及应用场合
  8. 博世豪掷10亿欧元德国建半导体工厂,要掌握自动驾驶芯片化核心竞争力?
  9. 【youcans 的 OpenCV 例程 200 篇】104. 运动模糊退化模型
  10. CSS 元素的定位之相对定位 position: relative
  11. git钩子放服务器_如何使用Git 钩子来自动化开发和部署任务
  12. c++获取macos中的uuid的两种方式
  13. hive中的lateral view的解析
  14. 用74l138实现一个一位全减器_用react实现一个仿ionic button组件
  15. 【Delphi】Delphi11.1 版本 Android SDK 更新步骤
  16. ETERM操作和错误集合
  17. ios 打包证书.p12 .mobileprovision 制作详细流程
  18. 联机(脱机)手写汉字识别
  19. 4.19@深圳 | 品牌出海正当时,如何更有方向感?
  20. 知识点(1):OSI网络模型

热门文章

  1. oracle存储怎么调试tord,接口_数据交换应用指导(20页)-原创力文档
  2. yolo系列外文翻译_Yolo系列其三:Yolo_v3
  3. qt 二次开发 研华daq_研华DAQ数据采集卡编程
  4. dense sift matlab,一个 Dense SIFT 算法的 matlab 实现 | 学步园
  5. php连接access带密码,phpadodb连接带密码access数据库实例,测试成功
  6. vuex获取php数据,Nuxt中如何使用Vuex-Store异步获取数据
  7. ORACLE 正值表达式
  8. MySQL索引类型及创建
  9. org.mariadb.jdbc.internal.com.send.authentication.SendGssApiAuthPacket could not be instantiated
  10. mysql导出数据不锁表_mysqldump锁表出错及解决方法