You need to enable JavaScript to run this app. Kivy/Python中random.choice放在哪可重启重选且全代码访问一致
优惠活动
大模型
产品
解决方案
定价
更多

Kivy/Python中random.choice放在哪可重启重选且全代码访问一致

解决方案

你遇到的问题核心是全局变量仅在程序初始化时生成一次,且没有在实例层面存储当前使用的单词,只需两步即可解决:

  1. 去掉全局word变量,改用实例属性self.current_word存储当前轮次使用的单词,每次重启时重新为该属性赋值
  2. 把重复的UI渲染逻辑抽成公共方法,避免冗余代码,提交逻辑里直接读取self.current_word即可保证顶部展示和提交后显示的单词完全一致

修改后完整代码

import random
from kivy.uix.gridlayout import GridLayout
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button

# 此处替换为你实际从文本文件读取得到的单词列表
words = []

class Mygridlayout(GridLayout):
    def __init__(self, **kwargs):
        super(Mygridlayout, self).__init__(**kwargs)
        self.cols = 1
        # 初始化时生成第一个单词
        self.current_word = random.choice(words)
        # 调用公共方法渲染UI
        self.build_ui()

    def build_ui(self):
        """公共UI渲染逻辑,避免__init__和restart重复写代码"""
        self.clear_widgets()
        self.Top_Grid = GridLayout()
        self.Top_Grid.cols = 2
        self.add_widget(self.Top_Grid)
        # 读取实例属性存储的当前单词展示
        self.Top_Grid.add_widget(Label(text=self.current_word))
        self.definition = TextInput(multiline=True)
        self.Top_Grid.add_widget(self.definition)
        self.submit = Button(text='submit')
        self.submit.bind(on_press=self.press)
        self.add_widget(self.submit)

    def press(self, instance):
        """提交按钮逻辑,读取同一个实例属性保证单词一致"""
        self.clear_widgets()
        # 结果展示用self.current_word,和顶部展示的完全相同
        self.add_widget(Label(text=f"{self.current_word} defined as: {self.definition.text}"))
        # 添加重启按钮
        self.restart_btn = Button(text='restart')
        self.restart_btn.bind(on_press=self.restart)
        self.add_widget(self.restart_btn)

    def restart (self, instance):
        # 重启时先随机生成新单词
        self.current_word = random.choice(words)
        # 重新渲染UI
        self.build_ui()

修改后每一轮的单词都存储在实例的current_word属性里,顶部标签和提交后的提示文本读取的是同一个值,不会出现不一致问题;每次点击重启按钮时都会重新随机选取单词,不会再出现重复单词的问题。

内容的提问来源于stack exchange,提问作者Tooluser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 03:36:05