基于Python實現(xiàn)隨機點名系統(tǒng)的示例代碼
大家好,我是了不起!
在某些難以抉擇得時候,我們經(jīng)常要用外力來幫助我們做出選擇
比如,梁山出征方臘前沙場點兵,挑選先鋒的場景

這個時候,有一個隨機點名系統(tǒng)就非常好啦,畢竟我水泊梁山的名號~

效果展示

創(chuàng)建一個這樣的文件夾,然后把要隨機點名的名字寫在里面

導(dǎo)入后,這里就顯示你導(dǎo)入了多少人員信息
點擊開始點名后,會隨機從導(dǎo)入名字里挑選一位幸運兒~

效果大概就是這樣,下面我們來看看代碼吧
代碼展示
導(dǎo)入模塊
里面有第三方模塊,需要大家自己安裝一下
from?PyQt5.QtWidgets?import?* from?PyQt5.QtGui?import?* from?PyQt5.QtCore?import?* from?qdarkstyle?import?load_stylesheet_pyqt5 import?os import?sys import?time import?random
class?WorkThread(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()
????def?run(self):
????????data_list?=?self.parent.data_list
????????if?len(data_list)?>=?1:
????????????ran?=?random.randint(6,?10)
????????????print('遍歷次數(shù):',?ran)
????????????for?a?in?range(ran):
????????????????name?=?random.choice(data_list)
????????????????self.trigger.emit(name)
????????????????print(name)
????????????????time.sleep(0.6)
????????????self.finished.emit(True)
????????else:
????????????self.trigger.emit('無數(shù)據(jù)')
class?ClassCollSystem(QWidget):
????def?__init__(self):
????????super(ClassCollSystem,?self).__init__()
????????self.data_list?=?[]
????????self.init_ui()
子線程調(diào)用
????def?init_ui(self): ????????self.thread_?=?WorkThread(self) ????????self.thread_.trigger.connect(self.set_name) ????????self.thread_.finished.connect(self.finished)
應(yīng)用初始化信息
????????self.setWindowTitle('課堂點名系統(tǒng)')
????????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:"Microsoft?JhengHei";')
????????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:"Microsoft?JhengHei";')
????????self.start_btn.clicked.connect(self.start_btn_click)
????????vbox_start.addWidget(self.start_btn)
????????vbox_start.setAlignment(Qt.AlignCenter)
????????vbox_start.addSpacing(80)數(shù)據(jù)信息布局
????????vbox_data?=?QHBoxLayout()
????????self.message?=?QLabel()
????????self.message.setText('信息提示')
????????self.message.setStyleSheet(
????????????'font-size:12px;')
????????self.import_btn?=?QPushButton()
????????self.import_btn.setText('導(dǎo)入數(shù)據(jù)')
????????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)
????def?start_btn_click(self):
????????if?self.start_btn.text().strip()?==?'開始點名':
????????????self.thread_.start()
????????else:
????????????self.start_btn.setText('開始點名')
????def?set_name(self,?name):
????????self.current_name.setText(name)
????def?finished(self,?finished):
????????if?finished?is?True:
????????????self.start_btn.setText('就是你了')
????def?import_btn_click(self):
????????file?=?QFileDialog.getOpenFileName(self,?'選擇文件',?os.getcwd(),?'Text?File(*.txt)')
????????file_path?=?file[0]
????????print(file_path)
????????fl?=?open(str(file_path),?'r',?encoding='utf-8')
????????self.data_list?=?fl.read().strip().split('\n')
????????print(self.data_list)
????????self.message.setText('信息提示?|?成功導(dǎo)入['?+?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_())
到此這篇關(guān)于基于Python實現(xiàn)隨機點名系統(tǒng)的示例代碼的文章就介紹到這了,更多相關(guān)Python隨機點名內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
深入探討Python中的內(nèi)置類屬性`__repr__`
在Python中,__repr__是一個特殊的內(nèi)置類屬性,用于定義類的字符串表示形式,本文將深入探討__repr__的作用、用法以及一些實際應(yīng)用場景,希望對大家有所幫助2023-12-12
講解如何利用 Python完成 Saga 分布式事務(wù)
這篇文章主要介紹了如何利用 Python 完成一個 Saga 的分布式事務(wù),需要的朋友可以參考下面文章具體的內(nèi)容2021-09-09
如何利用python web框架做文件流下載的實現(xiàn)示例
這篇文章主要介紹了如何利用python web框架做文件流下載的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06

