抽獎系統(基于Tkinter)

一、抽獎規則及使用方法

抽獎規則: 從1-138個號碼中隨機抽獎,共進行n輪抽獎,每個號碼僅有一次中獎機會,即已中獎的號碼不會再次中獎。
使用方法: 要求開始抽獎后屏幕上隨機滾動顯示中獎號碼,點擊“STOP”之后,滾動停止,此時所顯示的號碼為本輪中獎號碼;點擊“清空內容”后方可再次抽獎。

二、實現代碼

from tkinter import *import numpy as np
from PIL import Image, ImageTk
import random
import pandas as pd
from time import sleep
import threading#線程class Application():def __init__(self,app=None):self.app=appself.application()self.n=0#執行次數self.flag=Truedef application(self):#農行logoself.image=Image.open('abc300.png')self.abc_logo=ImageTk.PhotoImage(self.image)self.label0=Label(self.app,image=self.abc_logo)self.label0.pack()# 抽獎系統self.label1 = Label(self.app, text='抽獎系統', font=('黑體', 30), bg='white').pack()#開始抽獎按鈕global number_poolnumber_pool=[i for i in range(1,139)]def raffle():self.flag=Trueif self.n==0:#第一輪抽獎while self.flag:luck_numbers = []number_pool2=number_pool.copy()for i in range(50):re=random.choice(number_pool2)number_pool2.remove(re)luck_numbers.append(re)arr=np.array(luck_numbers).reshape(5,10)printf(arr)#從獎池中刪除已中獎號碼for i in luck_numbers:number_pool.remove(i)print('luck_numbers=',luck_numbers)print('number_pool=', number_pool)self.n += 1elif self.n==1:#第二輪抽獎while self.flag:luck_numbers = []number_pool2=number_pool.copy()for i in range(20):re=random.choice(number_pool2)number_pool2.remove(re)luck_numbers.append(re)arr=np.array(luck_numbers).reshape(2,10)printf(arr)#從獎池中刪除已中獎號碼for i in luck_numbers:number_pool.remove(i)print('luck_numbers=',luck_numbers)print('number_pool=', number_pool)self.n += 1elif self.n==2:#第三輪抽獎while self.flag:luck_numbers = []number_pool2=number_pool.copy()for i in range(10):re=random.choice(number_pool2)number_pool2.remove(re)luck_numbers.append(re)arr=np.array(luck_numbers).reshape(1,10)printf(arr)#從獎池中刪除已中獎號碼for i in luck_numbers:number_pool.remove(i)print('luck_numbers=',luck_numbers)print('number_pool=', number_pool)self.n += 1elif self.n==3:#第四輪抽獎while self.flag:luck_numbers = []number_pool2=number_pool.copy()for i in range(10):re=random.choice(number_pool2)number_pool2.remove(re)luck_numbers.append(re)arr=np.array(luck_numbers).reshape(1,10)printf(arr)#從獎池中刪除已中獎號碼for i in luck_numbers:number_pool.remove(i)print('luck_numbers=',luck_numbers)print('number_pool=', number_pool)self.n += 1else:self.label0 = Label(self.app, text='本次抽獎結束。', font=('黑體', 20), bg='white')def printf(arr):#顯示中獎結果arr = pd.DataFrame(arr)  # 將numpy.array轉換為pandas.dataframearr = arr.set_index(0)  # 將第一列設置為行索引arr.index.name = None  # 將行索引名稱設置為Nonearr = arr.to_string(header=False)  # 轉化為字符形式,并去掉列索引print('arr=',arr)self.label0 = Label(self.app, text='第%d輪抽獎中獎號碼'%(self.n+1), font=('黑體', 20), bg='white')self.label0.pack()self.label1 = Label(self.app, text=arr, font=('黑體', 20), bg='white')self.label1.pack()self.app.update()sleep(0.02)if self.flag==True:delete_content()#def get_start(arr):#   T1 = threading.Thread(name='label0',#                          target=printf(arr),#                          daemon=True)#    T1.start()def delete_content():self.app.after(0, self.label0.destroy)self.app.after(0,self.label1.destroy)def stop_run():self.flag=Falseself.bt = Button(self.app, text='開始抽獎', command=raffle, font=('黑體', 14), bg='white').pack()self.bt = Button(self.app, text='S T O P', command=stop_run, font=('黑體', 14), bg='white').pack()self.bt = Button(self.app, text='清除內容', command=delete_content, font=('黑體', 14), fg='red', bg='white',activebackground='red').pack()
if __name__ == '__main__':app = Tk()app.title('中國農業銀行抽獎系統')app.config(bg="white")App = Application(app)app.geometry('800x600+300+150')  # 窗口大小設置app.mainloop()

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/79605.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/79605.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/79605.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

window 系統 使用ollama + docker + deepseek R1+ Dify 搭建本地個人助手

1. 下載ollama ,官網 下載地址:Download Ollama on macOS,選擇 Window 下載完成后,可在終端 使用 ollama --version 2. 下載 本地大模型,這里下載deepseek r1 7b 3.下載Embed模型 Embed模型 是文本工具向量化的核心工…

【學習筆記】 強化學習:實用方法論

作者選擇了由 Ian Goodfellow、Yoshua Bengio 和 Aaron Courville 三位大佬撰寫的《Deep Learning》(人工智能領域的經典教程,深度學習領域研究生必讀教材),開始深度學習領域學習,深入全面的理解深度學習的理論知識。 之前的文章參考下面的鏈接&#xf…

益鑫通汽車連接器可替代Molex,JST

# 探秘優質車規連接器 在汽車向新能源和智能化發展的進程中,車規連接器對汽車電子系統的穩定運行至關重要。有企業憑借技術與創新,在該領域表現出色。其車規連接器類型多樣,能滿足汽車不同系統連接需求。 一款2.54Pitch線對板連接器&#xff…

【WPF】將Bitmap圖像轉換為BitmapImage,并給Image控件顯示圖像

1.C#將Bitmap圖像轉換為BitmapImage,并給Image控件顯示圖像后臺實現 public void InitImage(Bitmap bitmap){try{// 將Bitmap轉換為WPF的BitmapImageBitmapImage bitmapImage;using (MemoryStream memory new MemoryStream()){bitmap.Save(memory, System.Drawing.…

Python從入門到高手8.2節-元組的常用操作符

目錄 ?8.2.1 元組的常用操作符 8.2.2 []操作符: 索引訪問元組 8.2.3 [:]操作符:元組的切片 8.2.4 操作符:元組的加法 8.2.5 *操作符:元組的乘法 8.2.6 元組的關系運算 8.2.7 in操作符:查找元素 8.2.8 五一她玩了個狗吃…

Vue3源碼學習4-effect中為什么使用WeakMap,Set?

文章目錄 前言1. 精細化依賴追蹤2. 高效的依賴收集與觸發3. 自動內存管理,防止內存泄漏4. 支持復雜場景 前言 在 mini vue - effect 實現中 設計(WeakMap → Map → Set → effect函數)有以下幾個重要原因: 1. 精細化依賴追蹤 W…

TinyML 邊緣智能:在資源受限 MCU 上部署 AI

前言 在物聯網(IoT)和智能邊緣計算的時代浪潮下,TinyML(微型機器學習)正以前所未有的速度改變著我們與設備交互的方式。它將 AI 推理能力放在資源極度受限的 MCU(微控制器)上,兼顧實時性、低功耗和數據隱私,成為智能家居、可穿戴設備、工業檢測等場景的核心技術。盡管…

技術白皮書:Oracle GoldenGate 優勢

本文為技術白皮書Oracle GoldenGate 優勢的翻譯及閱讀筆記。以下注釋中GoldenGate為OGG。 副標題為:Oracle 數據庫的變更數據捕獲 (CDC) 技術比較。版本為July, 2021, Version 2.1。 Oracle GoldenGate 被客戶和分析師公認為功能最齊全、性能最高、最值得信賴的數…

Android控件VideoView用法

一 控件UI <VideoViewandroid:id="@+id/videoView"android:layout_width="match_parent"android:layout_height="match_parent"android:scaleType="fitCenter" /> 二 配置 <?xml version="1.0" encoding="u…

React 第三十六節 Router 中 useParams 的具體使用及詳細介紹

一、useParams 的基本用法 用途&#xff1a;用于在組件中獲取當前 URL 的動態路由參數&#xff08;如 /user/:id 中的 id&#xff09;。 import { Routes, Route, useParams } from react-router-dom;// 定義路由 function App() {return (<Routes><Route path"…

C++戰勝白蟻 2024年信息素養大賽復賽 C++小學/初中組 算法創意實踐挑戰賽 真題詳細解析

目錄 C++戰勝白蟻 一、題目要求 1、編程實現 2、輸入輸出 二、算法分析 三、程序編寫 四、運行結果 五、考點分析 六、 推薦資料 1、C++資料 2、Scratch資料 3、Python資料 C++戰勝白蟻 2024年信息素養大賽 C++復賽真題 一、題目要求 1、編程實現 小明因為很長…

Linux網絡編程 day4

inet_pton&#xff1a;IP 字符串 → 網絡字節序地址 ntohl&#xff1a;網絡字節序 → 主機字節序 TCP狀態轉換圖(重點) 可以通過下面這行代碼查看目前網絡狀態 netstat -apn | grep client 1、主動發起請求端 close-->SYN-->SYN_SENT-->接收ACK、SYN-->SYN_SEN…

基于springboot+vue的個人財務管理系統

開發語言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服務器&#xff1a;tomcat7數據庫&#xff1a;mysql 5.7數據庫工具&#xff1a;Navicat12開發軟件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;Maven3.3.9 系統展示 用戶信息管理 賬…

ffmpeg 元數據-avformatcontext字段 AVDictionary *metadata;

ffmpeg 元數據 1. 解釋什么是ffmpeg元數據 ffmpeg元數據是指與音視頻文件相關的附加信息&#xff0c;這些信息不直接影響音視頻內容的播放&#xff0c;但提供了關于文件內容、創作者、版權、播放參數等的有用信息。元數據在音視頻文件的處理、管理和共享中起著重要作用。 2.…

55.[前端開發-前端工程化]Day02-包管理工具npm等

包管理工具詳解 npm、yarn、cnpm、npx、pnpm 1 npm包管理工具 代碼共享方案 包管理工具npm 2 package配置文件 npm的配置文件 方式二 常見的配置文件 常見的屬性 常見的屬性 常見的屬性 依賴的版本管理 常見屬性 npm install 命令 項目安裝 3 npm install原理 npm instal…

Spring MVC @RequestBody 注解怎么用?接收什么格式的數據?

RequestBody 注解的作用 RequestBody 將方法上的參數綁定到 HTTP 請求的 Body&#xff08;請求體&#xff09;的內容上。 當客戶端發送一個包含數據的請求體&#xff08;通常在 POST, PUT, PATCH 請求中&#xff09;時&#xff0c;RequestBody 告訴 Spring MVC 讀取這個請求體…

海外平臺短劇批量混剪自動剪輯智能去重與多語言適配方案解析

一、引言&#xff1a;全球化內容分發的技術挑戰 在短劇出海的浪潮中&#xff0c;如何通過標準化技術流程實現「高效生產 合規分發」成為行業關鍵課題。本文結合 TikTok、YouTube 等平臺的運營經驗&#xff0c;解析基于智能去重算法、多語言字幕生成、動態元素疊加的全流程解決…

stm32 hal庫 SPI使用(二)硬件SPI的HAL庫函數調用

使用硬件SPI1&#xff0c;開啟DMA&#xff0c;軟件NSS。 1.使用硬件spi后&#xff0c;spi.c文件里會自動生成SPI_HandleTypeDef hspi1句柄&#xff0c;并且在main.c中自動使用MX_SPI1_Init&#xff08;&#xff09;函數對hsp1句柄賦值和SPI初始化 void MX_SPI1_Init(void) {h…

ES類的索引輪換

通過以下請求方法創建一個名為 “tiered-storage-policy” 的 ISM policy&#xff1a; PUT _plugins/_ism/policies/tiered-storage-policy {"policy": {"description": "Changes replica count and deletes.","schema_version": 1,…

51LA使用方法與悟空統計,網站數據分析的雙重選擇

在網站運營與數據分析領域&#xff0c;51LA作為國內較早的流量統計工具&#xff0c;曾為許多用戶提供基礎的訪問數據監測服務。然而&#xff0c;隨著技術的發展和用戶需求的升級&#xff0c;越來越多的企業開始尋求功能更全面、體驗更優的統計工具。小編今天將給大家介紹一款更…