第一篇博客                                                         2018-07-15


笔者是一名学生,见到很多教师会选择用抽号的方式点名、收作业,甚至来确定期末口语考试的背诵文章,特花了几天时间,查阅了大量资料,完成了此抽号器。闲话不多说,进入正题。

界面是这样的:

功能是这样的:

  1. 随机抽取学号
  2. 结果保存至本地
  3. 修改字体及大小

代码是这样的:

  • 首先画出一个窗口:
 1  def __init__(self):
 2         chuangkou= Tk()
 3         chuangkou.title("随机抽取学号")
 4         chuangkou.geometry('800x500')
 5
 6         menu=Menu(chuangkou)
 7
 8         submenuwenjian=Menu(menu,tearoff=0)
 9         submenuwenjian.add_command(label="保存到",command=self.lingcunwei,font=("宋体",12,"normal"))
10         menu.add_cascade(label="文件",menu=submenuwenjian,font=("宋体",12,"normal"))
11
12         geshi=Menu(menu,tearoff=0)
13         geshi.add_command(label="字体",command=self.zitichuang,font=("宋体",12,"normal"))
14         menu.add_cascade(label="格式",menu=geshi,font=("宋体",12,"normal"))
15
16         submenubangzhu=Menu(menu,tearoff=0)
17         submenubangzhu.add_command(label="使用说明",command=self.shiyongshuoming,font=("宋体",12,"normal"))
18         submenubangzhu.add_command(label="关于",command=self.guanyu,font=("宋体",12,"normal"))
19         menu.add_cascade(label="帮助",menu=submenubangzhu,font=("宋体",12,"normal"))
20
21         menu.add_command(label="退出",command=chuangkou.quit,font=("宋体",12,"normal"))
22
23         chuangkou.config(menu=menu)
24
25         frame1 = Frame(chuangkou)
26         frame1.pack()
27         zhanghaolabel = Label(frame1, text = "总人数:",font=("宋体",20,"normal"))
28         self.name1 = StringVar()
29         zhanghaoEntry = Entry(frame1, textvariable = self.name1,font=("宋体",18,"normal"))
30         mimalabel = Label(frame1, text = "抽取人数:",font=("宋体",20,"normal"))
31         self.name2 = StringVar()
32         mimaEntry = Entry(frame1, textvariable = self.name2,font=("宋体",18,"normal"))
33         zhucebutton = Button(frame1, text = "随机抽取",font=("宋体",20,"normal"),command = self.chouqu)
34         zhanghaolabel.grid(row = 1, column = 1)
35         zhanghaoEntry.grid(row = 1, column = 2)
36         mimalabel.grid(row = 2, column = 1)
37         mimaEntry.grid(row = 2, column = 2)
38         zhucebutton.grid(row = 3, column = 2)
39
40         frame2 = Frame(chuangkou)
41         frame2.pack(fill=BOTH,expand=1)
42         self.xianshibeichouquText=Text(frame2,font=("宋体",24,"bold"))
43         self.xianshibeichouquText.pack(fill=BOTH,expand=1)
44
45         gundongtiaoY=Scrollbar(self.xianshibeichouquText)
46         self.xianshibeichouquText['yscrollcommand']=gundongtiaoY.set
47
48         gundongtiaoY.pack(side=RIGHT,fill=Y)
49         gundongtiaoY.config(command=self.xianshibeichouquText.yview)
50
51         chuangkou.mainloop()

接着就是每个模块的方法:

抽取号码模块:

 1  def chouqu(self):
 2         self.xianshibeichouquText.delete(1.0,tkinter.END)
 3         liebiao = [ ]
 4         count=1
 5         try:
 6             renshu=int(self.name1.get())
 7             chouqurenshu=int(self.name2.get())
 8             if renshu<chouqurenshu:
 9                 chouqurenshu=renshu
10         except ValueError:
11             tkinter.messagebox.showerror("错误", "请输入整数")
12         while count <= chouqurenshu:
13             a=randint(1,renshu)
14             if a not in liebiao:
15                 liebiao.append(a)
16                 count=count+1
17         self.xianshibeichouquText.insert(END,"本次共随机抽取"+str(chouqurenshu)+"人\n")
18         self.xianshibeichouquText.insert(END,"随机抽到学号如下:\n")
19         for b in str(sorted(liebiao)):
20             if b != "[" and b!="]" :
21                 if b==",":
22                     self.xianshibeichouquText.insert(END,"号\n")
23                 else:
24                     self.xianshibeichouquText.insert(END,b)
25         self.xianshibeichouquText.insert(END,"号\n")
26         liebiao = [ ]   

结果存入本地模块:

    def lingcunwei(self): global filenamef=asksaveasfilename(initialfile="抽取名单.txt",defaultextension=".txt")filename=ffh=open(f,'w')msg=self.xianshibeichouquText.get(1.0,END)fh.write(msg)fh.close()  

更改子体模块:

 1     def yingyongziti(self):
 2         self.xianshibeichouquText['font']=(self.zitichosen.get(),self.daxiaochosen.get(),self.getchuandizixing())
 3
 4     def getchuandizixing(self):
 5         zixing=["常规","normal","粗体","bold","倾斜","italic"]
 6         self.b="normal"
 7         for a in enumerate(zixing):
 8             if self.zixingchosen.get()==a[1]:
 9                 self.b=zixing[a[0]+1]
10         return self.b

以上就是主要源代码,完整源代码稍后上传

下篇文章将写一下如何将写好的抽号器打包为.exe应用程序。

转载于:https://www.cnblogs.com/tanjiawei/p/9313702.html

Python学习随记 ————随机抽号器(一)相关推荐

  1. 基于C#实现的简单的随机抽号器

    由于老师需要,让我写一个随机抽号器,,就很简单的写一个,用C#写的.主要依靠random来实现一个随机数以及list可变长数组实现的. 由于项目难度不大,我就直接放代码了. using System; ...

  2. python随机抽号器_python 随机抽取数据

    #!/usr/bin/env python # -*- coding: UTF-8 -*- ''' @author: carry @contact: 864140438@qq.com @file: m ...

  3. 基于Python pyqt5的随机抽号机源代码 ,可设置抽号器的人数及刷新间隔

    基于Python pyqt5的随机抽号机源代码 ,可设置抽号器的人数及刷新间隔,直接运行main.py即可 完整代码下载地址: pyqt5的随机抽号机源代码 main.py import sys fr ...

  4. 用MFC写一个随机抽号的软件(VS2013)

    自学了C++一段时间了,感觉还是什么都不会,所以就想开始找点东西来写,才好学习东西. 所以就突然想到写一个随机抽号的软件. 刚开始写好的时候生成的文件在其他电脑执行不了,所以我就查了一下,在MFC的使 ...

  5. java 随机点名器和随机摇号器

    java实训20210810 java 随机点名器 和 随机摇号器 随机点名器,即在全班同学中随机的打印出一名同学名字. 要做的随机点名器,它具备以下3个内容:  存储所有同学姓名  总览全班同学 ...

  6. python实现雪花动态图_如何通过雪花算法用Python实现一个简单的发号器

    实现一个简单的发号器 根据snowflake算法的原理实现一个简单的发号器,产生不重复.自增的id. 1.snowflake算法的简单描述 这里的snowflake算法是用二进制的,有64位.其中41 ...

  7. C语言学生随机抽号演讲计分系统

    C语言学生随机抽号演讲计分系统 6.学生随机抽号演讲计分系统(★★★★) 设计一款用于课程大作业检查或比赛计分的软件,基本功能: (1)设置本课程的学生总数 (2)根据本次参与的学生总数,随机抽取一个 ...

  8. 用JavaScript制作随机选号器

    这是用JS来实现的随机选号器,从0到99个数中,随机生成一个整数. HTML代码 <!DOCTYPE html> <html><head><meta char ...

  9. 小蜘蛛 七乐彩随机选号器 官网

    Welcome to my blog! <script language="javascript" src="http://avss.b15.cnwg.cn/cou ...

最新文章

  1. mysql主从以及读写分离(科普)
  2. 关于流水线中剪裁的疑问
  3. DNS 与BIND(第五版)
  4. Spring @Bean和PropertyPlaceHolderConfigurer
  5. idea代码样式模板_阿里p3c(代码规范,eclipse插件、模版,idea插件)
  6. “先粗后精”的实例分割,BPR:使用Crop-then-Refine的性能提高方法
  7. 在OLT上查看SLAN
  8. 竞态条件的赋值_Go 译文之竞态检测器 race
  9. 感情诉求的微博营销,基金公司也玩转微博营销
  10. 【蓝桥杯】~C语言数组排序
  11. 戴维斯分校 计算机硕士,2017年美国加州大学戴维斯分校研究生申请之计算机......
  12. 《C语言及程序设计》实践参考——定期存款利息计算器
  13. //css 层叠样式表(Cascading Style Sheets)
  14. 科学研究是有闲人群的玩艺———读爱因斯坦的短文有感
  15. eclipse中的图片路径 image
  16. java单例模式的应用场景_java项目中单列模式适用于什么场景?
  17. java短信登录_JAVA短信验证登录
  18. 配置服务器映射时提示接口地址不支持UNR
  19. 节点中心性:度中心性、特征向量中心性、Katz中心性、介数中心性
  20. 【ug903】Xilinx XDC约束的序(Order)

热门文章

  1. wma转mp3怎么弄_WMA格式如何转换成MP3格式
  2. win7系统一键还原功能怎么进行禁用教学分享
  3. 如何快速的向数据库中插入已知的1000万条数据
  4. 中国最早的计算机课程,寻找中国计算机历史
  5. 嵌入式linux设计报告,[嵌入式linux课程设计报告.doc
  6. 高通820A在5G时代来临的表现
  7. 转载 揭穿号称内存占用极低的软件的诡计
  8. 不动产登记中心计算机岗位,武汉市不动产登记中心属事业单位2019年招聘人员岗位一览表...
  9. Python的回溯算法
  10. CentOS 7 安装Google Chrome