<p>建议使用以下方法之一。详情请参考示例。在</p>
<h2>片段</h2>
<h2>Lambda函数</h2>
<pre><code>button = Button(text="Update Label's text", on_press=lambda number: self.method(number=1))
</code></pre>
<p>或者</p>
<h2>偏函数</h2>
^{pr2}$
<h2>示例-使用Lambda函数</h2>
<h2>在主.py在</h2>
<pre><code>from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.popup import Popup
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import ObjectProperty
class ScreenManagement(ScreenManager):
pass
class TestScreen(Screen):
label = ObjectProperty(None)
def openpopup(self):
content = BoxLayout(orientation="vertical")
self.popup = Popup(title="Popup", size_hint=(None, None),
size=(400, 400), auto_dismiss=False, content=content)
button = Button(text="Update Label's text", on_press=lambda x: self.method(x=1))
close_btn = Button(text="Close", on_press=self.popup.dismiss)
content.add_widget(button)
content.add_widget(close_btn)
self.popup.open()
def method(self, number):
self.label.text = str(number)
class TestApp(App):
title = "Kivy Passing Arguments to Method - Using Lambda"
def build(self):
return ScreenManagement()
if __name__ == "__main__":
TestApp().run()
</code></pre>
<h2>在试验电压在</h2>
<pre><code>#:kivy 1.10.0
<ScreenManagement>:
TestScreen:
name: "testscreen"
<TestScreen>:
label: label
BoxLayout:
orientation: "vertical"
Button:
size_hint: 1, 0.2
text: "Show Popup"
on_release: root.openpopup()
Label:
id: label
text: "Test Screen"
</code></pre>
<h2>输出-使用Lambda函数</h2>
<p><a href="https://i.stack.imgur.com/ygbHP.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/ygbHP.png" alt="enter image description here"/></a>
<a href="https://i.stack.imgur.com/gr8ci.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/gr8ci.png" alt="enter image description here"/></a>
<a href="https://i.stack.imgur.com/kCkpC.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/kCkpC.png" alt="enter image description here"/></a></p>
<h2>示例-使用部分函数</h2>
<h2>在主.py在</h2>
<pre><code>from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.popup import Popup
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import ObjectProperty
from functools import partial
class ScreenManagement(ScreenManager):
pass
class TestScreen (Screen):
label = ObjectProperty(None)
def openpopup(self):
content = BoxLayout(orientation="vertical")
self.popup = Popup(title="Popup", size_hint=(None, None),
size=(400, 400), auto_dismiss=False, content=content)
button = Button(text="Update Label's text", on_press=partial(self.method, number=1))
close_btn = Button(text="Close", on_press=self.popup.dismiss)
content.add_widget(button)
content.add_widget(close_btn)
self.popup.open()
def method(self, *args, number):
self.label.text = str(number)
class TestApp(App):
title = "Kivy Passing Arguments to Method - Using Partial"
def build(self):
return ScreenManagement()
if __name__ == "__main__":
TestApp().run()
</code></pre>
<h2>输出-使用部分函数</h2>
<p><a href="https://i.stack.imgur.com/CyZNc.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/CyZNc.png" alt="enter image description here"/></a>
<a href="https://i.stack.imgur.com/Mudn5.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/Mudn5.png" alt="enter image description here"/></a>
<a href="https://i.stack.imgur.com/Ivf3r.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/Ivf3r.png" alt="enter image description here"/></a></p>