基于Python实现随机点名系统的示例代码
目录
- 效果展示
- 代码展示
- 导入模块
- 子线程调用
- 应用初始化信息
- 姓名信息布局
- 开始信息布局
- 数据信息布局
- 整体布局
- 运行
大家好,我是了不起!
在某些难以抉择得时候,我们经常要用外力来帮助我们做出选择
比如,梁山出征方腊前沙场点兵,挑选先锋的场景
这个时候,有一个随机点名系统就非常好啦,毕竟我水泊梁山的名号~
效果展示
创建一个这样的文件夹,然后把要随机点名的名字写在里面
导入后,这里就显示你导入了多少人员信息
点击开始点名后,会随机从导入名字里挑选一位幸运儿~
效果大概就是这样,下面我们来看看代码吧
代码展示
导入模块
里面有第三方模块,需要大家自己安装一下
fromPyQt5.QtWidgetsimport* fromPyQt5.QtGuiimport* fromPyQt5.QtCoreimport* fromqdarks编程客栈tyleimportload_stylesheet_pyqt5 importos importsys importtime importrandjsom
classWorkThread(QThread): trigger=pyqtSignal(str) finished=pyqtSignal(bool) def__init__(self,parent=None): super(WorkThread,self).__init__(parent) self.parent=parent self.working=True def__del__(self): self.working=False self.wait() defrun(self): data_list=self.parent.data_list iflen(data_list)>=1: ran=random.randint(6,10) print('遍历次数:',ran) forainrange(ran): name=random.choice(data_list) self.trigger.emit(name) print(name) time.sleep(0.6) self.finished.emit(True) else: self.trigger.emit('无数据') classClassCollSystem(QWidget): def__init__(self): super(ClassCollSystem,self).__init__() self.data_list=[] self.init_ui()
子线程调用
definit_ui(self): self.thread_=WorkThread(self) self.thread_.trigger.connect(self.set_name) self.thread_.finished.connect(self.finished)
应用初始化信息
self.setWindowTitle('课堂点名系统') self.setWindowIcon(QIcon('课堂点名.ico')) self.setFixedSize(500,350)
姓名信息布局
vbox_name=QVBoxLayout() self.current_name=QLabel() self.current_name.setText('随机点名啦') self.current_name.setStyleSheet( 'font-size:50px;text-align:center;font-weight:bold;font-family:"MicrosoftJhengHei";') vbox_name.addwidget(self.current_name) vbox_name.setAlignment(Qt.AlignCenter)
开始信息布局
vbox_start=QVBoxLayout() self.start_btn=QPushButton() self.start_btn.setText('开始点名') self.start_btn.setFixedSize(160,50) self.start_btn.setStyleSheet( 'font-size:30px;font-weight:bold;text-align:center;font-family:"MicrosoftJhengHei";') self.start_btn.clicked.connect(self.start_btn_click) vbox_start.addWidget(self.start_btn) vbox_start.setAlignment(Qt.AlignCenter) vbox_start.addSpacing(80)
数据信息布局
vbox_data=QHBoxLayout() aAImcRWWaiself.message=QLabel() self.message.setText('信息提示') self.message.setStyleSheet( 'font-size:12px;') self.import_btn=QPushButton() self.import_btn.setText('导入数据') self.import_btn.setFixedSize(90,25) self.import_btn.clicked.connect(self.import_btn_click) vbox_data.addWidget(self.message) vbox_data.addStretch(1) vbox_data.addWidget(self.import_btn)
整体布局
vbox=QVBoxLayout() vbox.addLayout(vbox_name) vbox.addLayout(vbox_start) vbox.addLayout(vbox_data) self.setLayout(vbox) defstart_btn_clichttp://www.devze.comk(self): ifself.start_btn.text().strip()=='开始点名': self.thread_.start() else: self.start_btn.setText('开始点名') defset_name(self,name): self.current_name.setText(name) deffinished(self,finished): iffinishedisTrue: self.start_btn.setText('就是你了') defimport_btn_click(self): file=QFileDialog.getOpenFileName(self,'选择文件',os.getcwd(),'TextFile(*.txt)') file_path=开发者_Go培训file[0] print(file_path) fpythonl=open(str(file_path),'r',encoding='utf-8') self.data_list=fl.read().strip().split('\n') print(self.data_list) self.message.setText('信息提示|成功导入['+str(len(self.data_list))+']条人员信息')
运行
if__name__=='__main__': app=QApplication(sys.argv) app.setStyleSheet(load_stylesheet_pyqt5()) main=ClassCollSystem() main.show() sys.exit(app.exec_())
到此这篇关于基于python实现随机点名系统的示例代码的文章就介绍到这了,更多相关Python随机点名内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
精彩评论