Kivy 如何访问子窗口小部件中的窗口小部件
Kivy How to Access Widgets inside Child Widgets
在此代码中,有一个按钮,我在主按钮内制作了一个切换按钮。在按下主按钮时,我希望切换按钮的状态为“向下”。我该怎么做?
主要代码:
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.togglebutton import ToggleButton
from kivy.uix.floatlayout import FloatLayout
from kivy.lang import Builder
from kivy.uix.widget import Widget
from kivy.uix.screenmanager import Screen,ScreenManager
class Main(Screen):
def onbtn(self,widget):
for child in self.ids.Fl.children:
if isinstance(child, ToggleButton): # This part is wrong... How to access Widgets inside child Widgets?
child.state='down'
class Manager(ScreenManager):
pass
kv=Builder.load_file("test2.kv")
screen=Manager()
screen.add_widget(Main(name="main"))
class Test(App):
def build(self):
return screen
Test().run()
Kv代码:
<Main>:
name: "main"
FloatLayout:
id: Fl
Button:
id: btn1
text: "BTN 1"
size_hint: (.5,.3)
pos_hint: {"center_x":.5,"center_y":.6}
on_press:
root.onbtn(self)
ToggleButton:
id: tglbtn1 # How to Access this button to change its state to down
size: 80,80
text: "TGL BTN 1"
pos: 500,400
只需更改:
class Main(Screen):
def onbtn(self,widget):
for child in self.ids.Fl.children:
if isinstance(child, ToggleButton): # This part is wrong... How to access Widgets inside child Widgets?
child.state='down'
至:
class Main(Screen):
def onbtn(self,widget):
for child in widget.children:
if isinstance(child, ToggleButton):
child.state='down'
传递给onbtn()
方法的widget
是Button
.
在此代码中,有一个按钮,我在主按钮内制作了一个切换按钮。在按下主按钮时,我希望切换按钮的状态为“向下”。我该怎么做?
主要代码:
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.togglebutton import ToggleButton
from kivy.uix.floatlayout import FloatLayout
from kivy.lang import Builder
from kivy.uix.widget import Widget
from kivy.uix.screenmanager import Screen,ScreenManager
class Main(Screen):
def onbtn(self,widget):
for child in self.ids.Fl.children:
if isinstance(child, ToggleButton): # This part is wrong... How to access Widgets inside child Widgets?
child.state='down'
class Manager(ScreenManager):
pass
kv=Builder.load_file("test2.kv")
screen=Manager()
screen.add_widget(Main(name="main"))
class Test(App):
def build(self):
return screen
Test().run()
Kv代码:
<Main>:
name: "main"
FloatLayout:
id: Fl
Button:
id: btn1
text: "BTN 1"
size_hint: (.5,.3)
pos_hint: {"center_x":.5,"center_y":.6}
on_press:
root.onbtn(self)
ToggleButton:
id: tglbtn1 # How to Access this button to change its state to down
size: 80,80
text: "TGL BTN 1"
pos: 500,400
只需更改:
class Main(Screen):
def onbtn(self,widget):
for child in self.ids.Fl.children:
if isinstance(child, ToggleButton): # This part is wrong... How to access Widgets inside child Widgets?
child.state='down'
至:
class Main(Screen):
def onbtn(self,widget):
for child in widget.children:
if isinstance(child, ToggleButton):
child.state='down'
传递给onbtn()
方法的widget
是Button
.