【发布时间】:2022-09-28 03:49:06
【问题描述】:
我正在尝试通过在堆栈布局中创建的按钮更改带有 id:text_output 的文本标签。这应该发生在 \'def get_text()\' 但我不知道如何在 Player1 的 Boxlayout 中调用标签。 我只能访问 LetterButtons。 谷歌了几个小时,无法解决。
py文件
from kivy.lang import Builder
from kivy.properties import StringProperty, ObjectProperty
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
import random
from wortliste import wortliste
from kivy.uix.stacklayout import StackLayout
from kivy.core.window import Window
letter_list = [\"A\", \"B\", \"C\", \"D\", \"E\",\"F\",\"G\",\"H\",\'I\',\'J\',\'K\',\'L\',\'M\',\'N\',\'O\',\'P\',\'Q\',\'R\',\'S\',\'T\',\'U\',\'V\',\'W\',\'X\',\'Y\',\'\',\'\',\'Z\',\'\',\'Enter\']
Builder.load_file(\"page_p1.kv\")
rate_wort = random.choice(wortliste)
tipp_liste: list = []
tippsammlung: str = \"\"
class Player1(BoxLayout):
stroke_text = StringProperty(\"\")
output_text = ObjectProperty(\"Guess\")
status = StringProperty(\"0\")
text_input_str = StringProperty(\"word status\")
input_status = StringProperty(\"\")
lives = 6
points = 0
class LetterButtons(StackLayout):
letter = StringProperty(\"0\")
def __init__(self, max_but=30, **kwargs):
super().__init__(**kwargs)
for i in range (0,max_but):
size_width = Window.width / (max_but/2)
b = (Button(text=letter_list[i], on_press=self.get_text, disabled=False, size_hint=(0.2, None), border=(16, 16, 16, 16), background_color=(0, 0, 0, 1)))
self.add_widget(b)
def get_text(self, button):
#print(button.text)
if button.text in tipp_liste:
Player1.output_text = StringProperty(\"Already guessed that letter!\")
kv 文件
#:import page_p1 page_p1
<Player1>
id: player1
orientation: \"vertical\"
BoxLayout:
id: box
orientation: \"vertical\"
BoxLayout:
orientation: \"horizontal\"
size_hint: 1, None
height: \"40dp\"
Label:
text: \"Lives: \" + str(root.lives)
Label:
text: \"Points: \" + str(root.points)
Button:
text: \"settings\"
Image:
source: \"images/s_\" + root.status +\".jpg\"
allow_stretch: True
keep_ratio: True
#size_hint: 0.8, None
pos_hint: { \"center_y\": 0.5 }
Label:
id: text_output
size_hint: 1, 0.3
font_size: \"40dp\"
valign: \"center\"
focus: True
multiline: False
text: root.output_text
Label:
id: text_status
size_hint: 1, 0.3
font_size: \"40dp\"
valign: \"center\"
focus: True
multiline: False
text: root.stroke_text
LetterButtons:
id: letter_buttons1
background_normal: \'\'
background_color: 1, .3, .4, 1