我想知道如何在布局的多個類之間進行通信。我正在嘗試使 MainLayout 上的按鈕稱為 add,將另一個按鈕添加到作為其子項之一的 stacklayout 中。在這樣做時,我必須在它們之間共享一個變數和一個功能,以在堆疊布局上實作 add_widget 函式。無論我做什么,我都找不到解決方案
代碼 main.py:
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.metrics import dp
from kivy.uix.stacklayout import StackLayout
class Buttons_layout(StackLayout):
def __init__(self,**kwargs):
super().__init__(**kwargs)
self.number = 0
for _ in range(5):
self.number = 1
self.add_widget(Button(text=str(self.number),color=(200,100,100),size_hint=(0.2,None),height=dp(100)))
class MainWidget(BoxLayout):
def __init__(self,**kwargs):
super().__init__(**kwargs)
def add_button(self):
#dont know what to do here..................
pass
class CanvosExampleApp(App):
pass
if __name__ == '__main__':
CanvosExampleApp().run()
和 kv 檔案:
MainWidget:
<Buttons_layout>:
<Scroll_layout@ScrollView>:
Buttons_layout:
size_hint: 1,None
height:self.minimum_height
<MainWidget>:
Button:
text:'add'
on_press: root.add_button()
size_hint:None,1
width:dp(50)
Scroll_layout:
uj5u.com熱心網友回復:
要在 GUI 中輕松導航,您可以使用ids. 這是您的修改版本,kv其中包含兩個新版本ids:
MainWidget:
<Buttons_layout>:
<Scroll_layout@ScrollView>:
Buttons_layout:
id: butts # new id
size_hint: 1,None
height:self.minimum_height
<MainWidget>:
Button:
text:'add'
on_press: root.add_button()
size_hint:None,1
width:dp(50)
Scroll_layout:
id: scroll # new id
然后,您的add_button()方法可以是:
def add_button(self):
scroll = self.ids.scroll # get reference to the Scroll_layout
butts = scroll.ids.butts # get reference to the Buttons_layout
butts.add_widget(Button(text='Added',color=(200,100,100),size_hint=(0.2,None),height=dp(100)))
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/496776.html
上一篇:類互動方法php
下一篇:如何更改字典值中字串中的數字?
