随机点名_图形界面_excel处理(Python)

 介绍

一个令广大学生畏惧的程序——随机点名器

开发语言:Python

# 可交互

# 图形界面

# 极简

本来想玩得花一点,但——emmmm,you  know.

 

对文件的要求

您的名单应为xls格式,并且您在输入时请不要带上后缀名,否则会导致程序无法找到您的名单。

您的名单应与程序在同一文件夹下。4bc1f0afb5424292b095624d05e666cf.png

您的名单应位于文件的Sheet1内。209a541b50dc4f6b9ecc784c344ddd0d.png

 名字只能位于“姓名”之下的单元格。

 关于程序

 本程序由一只萌新开发,比较简陋,bug比较多,实在用不了就不要用,以免对您的PC造成损害

程序会报错,解决方案未找到,再者,程序还是可以跑的,那只萌新就懒得弄了。

 对您的要求

c1de5e808b654067aabc699bf7a07bda.png

实现效果

166bdb6f847d462691bb1245fdfcab8f.pnga859f68370f54d35bd8462e6549ab091.png

代码

import tkinter
import time
import xlrd
import random
import tkinter.messagebox

color = '#A7D6C4'  # 淡绿色


def window_1():
    window = tkinter.Tk()
    window.title('随机点名器')  # 窗口名称
    window.config(background=color)  # 颜色
    screenwidth = window.winfo_screenwidth()  # 获取屏幕宽度
    screenheight = window.winfo_screenheight()  # 获取屏幕长度
    width, height = 1024, 512  # 设置窗口长宽
    size_geo = '%dx%d+%d+%d' % (width, height, (screenwidth - width) / 2, (screenheight - height) / 2)
    window.geometry(size_geo)  # 设置窗口属性
    window.iconbitmap('.\\mark.ico')  # 窗口图标
    greeting = tkinter.Label(window, text='一个令广大学生畏惧的程序', bg=color, fg='#ffffff',
                             font=('华文行楷', 42))  # 用来show off的标签
    greeting.pack()

    def get_time():
        time2 = time.strftime('%Y-%m-%d %H:%M:%S')
        clock = tkinter.Label(window, text=time2, font=20, bg=color, fg='#173F3F')
        clock.place(relx=0.01, rely=0.935)
        clock.after(1000, get_time)  # 1000ms=1s

    label_prompt = tkinter.Label(window,
                                 text='请输入xls文件的名称',
                                 font=('微软雅黑', 15),
                                 width=20,
                                 compound='center',
                                 fg='#000000',
                                 bg=color)
    label_prompt.place(relx=512 / 1024,
                       rely=150 / 512,
                       anchor='center')

    file_name = tkinter.StringVar()
    entery = tkinter.Entry(window,
                           width=30,
                           textvariable=file_name)
    entery.place(relx=512 / 1024,
                 rely=200 / 512,
                 anchor='center')
    label_warning = tkinter.Label(window,
                                  text='⚠️ 注意:请认真阅读说明书后再开始,否则程序可能无法正常运行。',
                                  font=('微软雅黑', 10), width=50,
                                  compound='center',
                                  fg='#EB3324',
                                  bg=color)
    label_warning.place(relx=512 / 1024,
                        rely=230 / 512,
                        anchor='center')

    def fuc(window_none):
        global colum_number, row_number, luck_student, row_num, row_start
        file = str(entery.get())
        print(file)  # 已获得user输入的文件名
        # 抽取名字
        target_excel = xlrd.open_workbook(f'.\\{file}.xls')
        my_target = target_excel.sheet_by_index(0)
        for row in range(my_target.nrows):
            for colum in range(my_target.ncols):
                # print(f'my_target({row},{colum}) is ', my_target.cell_value(row, colum))
                if str(my_target.cell_value(row, colum)) == '姓名':
                    colum_number = colum  # 获取目标列
                    row_start = row
                    # print(row, colum)
                    row_number = my_target.nrows  # 获取目标行数
                    # print(row_number)
        row_num = random.randint(row_start + 1, row_number)
        luck_student = my_target.cell_value(row_num, colum_number)
        # print(luck_student)

        new_window(window_none)

    btn = tkinter.Button(window,
                         text='开始',
                         fg="#000000",
                         width=7,
                         compound='center',
                         bg="#ffffff",
                         command=lambda: fuc(window))
    btn.place(relx=512 / 1024,
              rely=400 / 512,
              anchor='center')

    get_time()
    window.mainloop()


def new_window(window):
    window_one = tkinter.Toplevel(window)
    window_one.geometry('512x256+512+256')
    window_one.config(background="#314E4F")
    window_one.title('幸运学生')
    window_one.iconbitmap('.\\mark.ico')
    label_welcome = tkinter.Label(window_one,
                                  text='就是你啦',
                                  font=('微软雅黑', 30),
                                  fg='#D4FCFF',
                                  bg='#314E4F', )
    label_name = tkinter.Label(window_one,
                               text=luck_student,
                               font=('华文行楷', 40),
                               fg='#ffffff',
                               bg='#314E4F',
                               width=150)
    label_welcome.place(relx=256 / 512, rely=100 / 256, anchor='center')
    label_name.place(relx=256 / 512, rely=180 / 256, anchor='center')
    # button_exit = tkinter.Button(window_one,
    #                              text='关闭',
    #                              fg="#000000",
    #                              width=7,
    #                              bg="#ffffff",
    #                              compound=tkinter.CENTER,
    #                              Command=window_one.quit())
    # button_exit.place(relx=256 / 512, rely=90 / 256, anchor='center')

    print('行号', row_num, luck_student)


window_1()

参考文章

Python 的Tkinter包系列之五:事件

Python 的Tkinter包系列之一:窗口初步

python线程 tkinter gui界面 | lambada函数在tkinter中的应用

记录 python-tkinter包 Entry做(用户名-密码)登陆界面

python图形界面教程(tkinter)

python如何做出图形界面,用python做图形用户界面

运用windows自带取色器功能拾取RGB

Label控件、Button控件和TextBox控件的知识总结

python 使用 openpyxl 处理 Excel 教程

python查找某个值所在的单元格位置

通过使用xlrd读取excel

Python之excel内容查找

【办公自动化】用Python在Excel中查找并替换数据

python中全局变量_python如何使用全局变量

 客套话

感谢使用,本程序开源,有谬误还请指教!

留言在此文下即可。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值