Tony丶W 发表于 2024-6-22 00:30

广东省车牌问答小程序

# 创作缘由
近期被短视频的山东车牌洗脑后,觉得有必要记一下广东省内的车牌号码来自于哪个城市。所以就出现了这个小玩意。

# 程序玩法
windows双击打开后,根据问题输入对应的答案,回车即可提交答案,答对了会自动下一题,答错了会显示答案。底部会显示正确率和答题数。
题目是随机出现的,也可以手动切换下一题

# 程序截图


# 程序代码

```python
import sys
import random
from collections import deque
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QLineEdit, QPushButton
from PyQt5.QtGui import QFont
from PyQt5.QtCore import Qt, QTimer

class GuangdongPlateGame(QWidget):
    def __init__(self):
      super().__init__()
      self.initUI()
      self.plates = {
            "粤A": "广州", "粤B": "深圳", "粤C": "珠海", "粤D": "汕头", "粤E": "佛山",
            "粤F": "韶关", "粤G": "湛江", "粤H": "肇庆", "粤J": "江门", "粤K": "茂名",
            "粤L": "惠州", "粤M": "梅州", "粤N": "汕尾", "粤P": "河源", "粤Q": "阳江",
            "粤R": "清远", "粤S": "东莞", "粤T": "中山", "粤U": "潮州", "粤V": "揭阳",
            "粤W": "云浮", "粤X": "顺德", "粤Y": "南海", "粤Z": "港澳",
            "粤O": "机关单位"
      }
      self.current_plate = ""
      self.timer = QTimer(self)
      self.timer.setSingleShot(True)
      self.timer.timeout.connect(self.next_question)
      self.total_questions = 0
      self.correct_answers = 0
      self.wrong_answers = 0
      self.recent_plates = deque(maxlen=3)# 用于存储最近3次出现的车牌
      self.next_question()

    def initUI(self):
      layout = QVBoxLayout()

      self.question_label = QLabel()
      self.question_label.setAlignment(Qt.AlignCenter)
      self.question_label.setFont(QFont('Arial', 24))
      layout.addWidget(self.question_label)

      self.answer_input = QLineEdit()
      self.answer_input.setFont(QFont('Arial', 18))
      self.answer_input.returnPressed.connect(self.check_answer)
      layout.addWidget(self.answer_input)

      self.result_label = QLabel()
      self.result_label.setAlignment(Qt.AlignCenter)
      self.result_label.setFont(QFont('Arial', 16))
      layout.addWidget(self.result_label)

      self.stats_label = QLabel()
      self.stats_label.setAlignment(Qt.AlignCenter)
      self.stats_label.setFont(QFont('Arial', 14))
      layout.addWidget(self.stats_label)

      self.next_button = QPushButton('下一题')
      self.next_button.clicked.connect(self.next_question)
      layout.addWidget(self.next_button)

      self.setLayout(layout)
      self.setGeometry(300, 300, 400, 300)
      self.setWindowTitle('广东车牌游戏')
      self.show()

    def next_question(self):
      available_plates =
      if not available_plates:
            available_plates = list(self.plates.keys())
      
      self.current_plate = random.choice(available_plates)
      self.recent_plates.append(self.current_plate)
      
      self.question_label.setText(f"请输入 {self.current_plate} 对应的地区:")
      self.answer_input.clear()
      self.result_label.clear()
      self.answer_input.setEnabled(True)
      self.answer_input.setFocus()
      self.update_stats()

    def check_answer(self):
      user_answer = self.answer_input.text().strip()
      correct_answer = self.plates
      self.total_questions += 1
      if user_answer == correct_answer:
            self.result_label.setText("答对了!")
            self.correct_answers += 1
            self.answer_input.setEnabled(False)
            self.timer.start(1000)
      else:
            self.result_label.setText(f"答错了。正确答案是:{correct_answer}")
            self.wrong_answers += 1
      self.update_stats()

    def update_stats(self):
      accuracy = (self.correct_answers / self.total_questions * 100) if self.total_questions > 0 else 0
      stats_text = f"总题数: {self.total_questions} | 正确: {self.correct_answers} | 错误: {self.wrong_answers} | 正确率: {accuracy:.2f}%"
      self.stats_label.setText(stats_text)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = GuangdongPlateGame()
    sys.exit(app.exec_())
```

# 源码编译步骤
1. Python确认安装了PyQt5和PyInstaller
```cmd
pip install PyQt5 pyinstaller
```
2. 进行编译操作
```cmd
pyinstaller --onefile --windowed guangdong_plate_game.py
```

# 附件
懒人直接下载链接:https://wwk.lanzouj.com/io34622e0uti

小丑恶人 发表于 2024-6-22 10:17

小玩意还可以啊

ZhjhJZ 发表于 2024-6-22 10:47

这个很好,但不够洗脑:lol

天轩科技 发表于 2024-6-22 11:25

ZhjhJZ 发表于 2024-6-22 10:47
这个很好,但不够洗脑

我知道你要说什么。你一定要提山东那首歌

a2811260 发表于 2024-6-22 15:51

这个蛮有意思的。谢谢

ZhjhJZ 发表于 2024-6-22 16:08

天轩科技 发表于 2024-6-22 11:25
我知道你要说什么。你一定要提山东那首歌

洗脑,传播就快,给人印象深刻

NIEMINGYAN95188 发表于 2024-6-22 18:25

不错不错值得拥有,感谢老铁

33088 发表于 2024-6-22 19:39

挺有意思的
页: [1]
查看完整版本: 广东省车牌问答小程序