教你用Python实现一个轮盘抽奖小游戏

一、Python GUI 编程简介

Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 Windows 和 Macintosh 系统里。Tk8.0 的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。

wxPython 是一款开源软件,是 Python 语言的一套优秀的 GUI 图形库,允许 Python 程序员很方便的创建完整的、功能健全的 GUI 用户界面。

pyqt5是一套Python绑定Digia QT5应用的框架。它可用于Python 2和3。pyqt5作为Python的一个模块,它有620多个类和6000个函数和方法。这是一个跨平台的工具包,它可以运行在所有主要的操作系统,包括UNIX,Windows,Mac OS。

pyqt5是双重许可,开发者可以在LGPL协议和商业许可之间进行选择,也就是开源免费版本或者收费版本,商业版的 Qt 通常包含有一些开源版本所没有的库。

QT给我们带来最方便的好处,就是它有一个QT Desiginer,这个设计器可以方便我们进行页面的布局,可以说在Tkinter里面需要一坨坨的代码完成的页面布局,在QT里面只要拖一拖控件就搞定了。

二、流行GUI框架总结

QT的优点是有一个关于页面布局设计的设计器QT Desiginer,拖动控件就可以进行页面的布局设计、美化等, 界面美观,多个平台可使用,文档和教程丰富,但是有商业化使用版权问题,需要授权,体积较大。而Tkinter要设计这种页面,需要自己写代码定义按钮,使用代码完成的页面布局,因为Tkinter没有提供一个图形界面设计器,但是Tikinter的优点是容易学习、性能好。

QT可能是最强大的,但也许它也是最复杂的。如果你要在商业上推销使用Pyqt5设计的软件,那么你需要确保你有正确理解QT许可证或准备支付一笔不小的费用,但是研究学习的话,可以选择开源版本的QT。

wxPython可以说是QT和Tkinter的折衷,它是免费的,源代码是开放的,允许其应用在商业产品上,你可以免费使用它和共享它。同时它也提供类似QT Designer的设计器wxFormbuilder。可以说是压缩版的QT,但是该有的功能却完全不缺失, 拥有成熟和丰富的包,跨平台,可在Unix,windows,MAC下运行,入门简单,文档资料很详细,又有官方Demo。

这三种主流界面GUI设计框架,在实际应用中大家可以根据自己的实际需求来进行选择使用。

三、代码演示

下面就用Tkinter定义界面控件,实现一个简单的轮盘抽奖游戏界面的设计,然后就进行游戏抽奖,如下所示:

import tkinter
import time
import threading
from random import random
from tkinter import messagebox as tkMessageBox

class choujiang:
    # 初始化魔术方法
    def __init__(self):
        # 准备好界面
        self.root = tkinter.Tk()
        self.root.title('lowB版转盘')
        self.root.minsize(300, 300)
        # 声明一个是否按下开始的变量
        self.isloop = False
        self.newloop = False
        self.value = []
        # 调用设置界面的方法
        self.setwindow()
        self.root.mainloop()

    # 界面布局方法
    def setwindow(self):
        # 开始停止按钮
     self.btn_start = tkinter.Button(self.root, text='start/stop', command=self.newtask)
     self.btn_start.place(x=125, y=125, width=70, height=70)

     self.btn1 = tkinter.Button(self.root, text='1', bg='red')
     self.btn1.place(x=20, y=20, width=50, height=50)

     self.btn2 = tkinter.Button(self.root, text='2', bg='white')
     self.btn2.place(x=90, y=20, width=50, height=50)

     self.btn3 = tkinter.Button(self.root, text='3', bg='white')
     self.btn3.place(x=160, y=20, width=50, height=50)

     self.btn4 = tkinter.Button(self.root, text='3', bg='white')
     self.btn4.place(x=230, y=20, width=50, height=50)

     self.btn5 = tkinter.Button(self.root, text='3', bg='white')
     self.btn5.place(x=230, y=90, width=50, height=50)

     self.btn6 = tkinter.Button(self.root, text='2', bg='white')
     self.btn6.place(x=230, y=160, width=50, height=50)

     self.btn7 = tkinter.Button(self.root, text='1', bg='white')
     self.btn7.place(x=230, y=230, width=50, height=50)

     self.btn8 = tkinter.Button(self.root, text='3', bg='white')
     self.btn8.place(x=160, y=230, width=50, height=50)

     self.btn9 = tkinter.Button(self.root, text='2', bg='white')
     self.btn9.place(x=90, y=230, width=50, height=50)

     self.btn10 = tkinter.Button(self.root, text='3', bg='white')
     self.btn10.place(x=20, y=230, width=50, height=50)

     self.btn11 = tkinter.Button(self.root, text='1', bg='white')
     self.btn11.place(x=20, y=160, width=50, height=50)

     self.btn12 = tkinter.Button(self.root, text='3', bg='white')
     self.btn12.place(x=20, y=90, width=50, height=50)

      # 将所有选项组成列表
     self.girlfrends = [self.btn1, self.btn2, self.btn3, self.btn4, self.btn5, self.btn6, self.btn7, self.btn8,
                         self.btn9, self.btn10, self.btn11, self.btn12]

    def rounds(self):
        # 判断是否开始循环
        if self.isloop == True:
            return
        # 初始化计数 变量
        i = 0
        # 死循环
        while True:
            if self.newloop == True:
                self.newloop = False
                self.value = self.girlfrends[i - 1]['text']
                if self.value =='1':
                    tkMessageBox.showinfo( "Winning Result", "恭喜获得一等奖 !'")
                if self.value == '2':
                    tkMessageBox.showinfo("Winning Result", "恭喜获得二等奖 !")
                if self.value == '3':
                    tkMessageBox.showinfo("Winning Result", '恭喜获得三等奖!')
                return
            # 延时操作
            time.sleep(0.1)
            # 将所有的组件背景变为白色
            for x in self.girlfrends:
                x['bg'] = 'white'
            # 将当前数值对应的组件变色
            self.girlfrends[i]['bg'] = 'red'
            # 变量+1
            i += 1
            # 如果i大于最大索引直接归零
            if i >= len(self.girlfrends):
                i = 0
    # 建立一个新线程的函数
    def newtask(self):
        if self.isloop == False:
            # 建立线程
            t = threading.Thread(target=self.rounds)
            # 开启线程运行
            t.start()
            # 设置循环开始标志
            self.isloop = True
        elif self.isloop == True:
            self.isloop = False
            self.newloop = True
#转盘效果
c = choujiang()

四、界面

到此这篇关于教你用Python实现一个轮盘抽奖小游戏的文章就介绍到这了,更多相关Python轮盘抽奖小游戏内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python反编译教程之2048小游戏实例

    目录 一.背景 二.工具准备 1.pyinstxtractor.py脚本用于反编译python 2.winhex用于编辑16进制的软件 三.反编译 1.放置脚本 2.运行脚本 3.找到软件名文件和struct文件 4.托入winhex进行对比 5.将struct多出的那一行复制到puzzle前面 6.更改其后缀为.pyc 7.安装第三方库uncompyle 8.python版本为3.8以下可以调用uncompyle 9.python版本为3.8以上可以选择在线工具(.pyc>.py) 10.最后

  • python编写实现抽奖器

    本文实例为大家分享了python编写实现抽奖器的具体代码,供大家参考,具体内容如下 # coding=utf-8 import sys import os import openpyxl if sys.version_info[0] == 2: import Tkinter from Tkinter import * else: import tkinter as Tkinter from tkinter import * from tkinter import messagebox impor

  • 编写python代码实现简单抽奖器

    这篇文章主要为大家详细介绍了python编写实现抽奖器,文中代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 # coding=utf-8 import sys import os import openpyxl if sys.version_info[0] == 2: import Tkinter from Tkinter import * else: import tkinter as Tkinter from tkinter import * from tkinter

  • python制作抽奖程序代码详解

    实现制作抽奖程序,需要认知到我们可以看到一般抽奖程序界面上是有很多按钮的,比如中奖区域,按键开始区域等等,所以我们先要设置界面,然后把这些按钮添加到界面中去,想必这对于学过tkinter的同学应该不难.下面结合实现步骤:设计界面.利用循环.多线程来完成抽奖程序设置吧. 实现代码: import random #导入内置的random模块 list1=list(range(0,15)) #将range元素进行列表转换并赋值给列表list1 print("抽奖号码是:",list1) #打

  • 教你用Python写一个植物大战僵尸小游戏

    一.前言 上次写了一个俄罗斯方块,感觉好像大家都看懂了,这次就更新一个植物大战僵尸吧 二.引入模块 import pygame import random 三.完整代码 配置图片地址 IMAGE_PATH = 'imgs/' 设置页面宽高 scrrr_width = 800 scrrr_height = 560 创建控制游戏结束的状态 GAMEOVER = False 图片加载报错处理 LOG = '文件:{}中的方法:{}出错'.format(__file__, __name__) 创建地图类

  • python实现转盘效果 python实现轮盘抽奖游戏

    本文实例为大家分享了python实现转盘效果的具体代码,供大家参考,具体内容如下 #抽奖 面向对象版本 import tkinter import time import threading class choujiang: #初始化魔术方法 def __init__(self): #准备好界面 self.root = tkinter.Tk() self.root.title('lowB版转盘') self.root.minsize(300, 300) # 声明一个是否按下开始的变量 self.

  • 详解python--模拟轮盘抽奖游戏

    题目: 轮盘分为三部分: 一等奖, 二等奖和三等奖; 轮盘转的时候是随机的, 如果范围在[0,0.08)之间,代表一等奖, 如果范围在[0.08,0.3)之间,代表2等奖, 如果范围在[0.3, 1.0)之间,代表3等奖, 模拟本次活动1000人参加, 模拟游戏时需要准备各等级奖品的个数. import random RewardCount = { '一等奖':(0,0.08), '二等奖':(0.08,0.3), '三等奖':(0.3,1.0) } def RewardGet(): num =

  • 使用 Python 写一个简易的抽奖程序

    不知道有多少人是被这个头图骗进来的:) 事情的起因是这样的,上周有同学问小编,看着小编的示例代码敲代码,感觉自己也会写了,如果不看的话,七七八八可能也写的出来,但是一旦自己独立写一段程序,感觉到无从下手. 其实这个很正常,刚开始学习写代码,都是跟着别人的套路往下写,看的套路少,很难形成自己的套路,这就和做数学题是一样的,做一道题就想会所有的题目,这个可能性微乎其微,都是通过大量的练习来摸索到自己的套路. 正好快过年了,各个公司都会搞一些抽奖活动,小编今天就来聊一下,如果要写一个简单的抽奖程序,小

  • Python趣味实例,实现一个简单的抽奖刮刮卡

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:黑白之道 刮刮卡通常指卡上的一种覆盖数字和字母密码等的涂层,通常包括纸质和电子两种类型,刮刮卡在市场上有着比较广泛的应用,我们见到最多的应该是各类抽奖活动了,本文我们使用 Python 来做一个简单的抽奖刮刮卡. 实现 首先,我们弄几张图片做底板,如下所示: 从图中我们可以看到底图包括:一等奖.二等奖.谢谢惠顾三种,如果我们参与过刮刮卡抽奖的话,会发现几乎刮开都是谢

  • 如何基于python实现年会抽奖工具

    用python来实现一个抽奖程序,供大家参考,具体内容如下 主要功能有 1.从一个csv文件中读入所有员工工号 2.将这些工号初始到一个列表中 3.用random模块下的choice函数来随机选择列表中的一个工号 4.抽到的奖项的工号要从列表中进行删除,以免再次抽到 初级版 这个比较简单,缺少定制性,如没法设置一等奖有几名,二等奖有几名 import csv #创建一个员工列表 emplist = [] #用with自动关闭文件 with open('c://emps.csv') as f: e

  • 教你如何用python开发一款数字推盘小游戏

    今年年初,新一季的<最强大脑>开播了,第一集选拔的时候大家做了一个数字游戏,名叫<数字华容道>,当时何猷君以二十几秒的成绩夺得该项目的冠军,看了这个游戏之后我决定要写一个<数字华容道>的程序,过去了半年,我终于记起了这件事,今天就来实现. 数字推盘游戏(n-puzzle)是一种智力游戏,常见的类型有十五数字推盘游戏和八数字推盘游戏等.十五数字推盘游戏的板上会有十五个方块和一个大小相当于一个方块的空位(供方块移动之用),当15个数字依次排序并且最后一个格子为空位即代表挑战

  • python实现21点小游戏

    用python实现21点小游戏,供大家参考,具体内容如下 from random import shuffle import random import numpy as np from sys import exit # 初始化扑克牌 playing_cards = { "黑桃A": 1, "黑桃2": 2, "黑桃3": 3, "黑桃4": 4, "黑桃5": 5, "黑桃6": 6

随机推荐