我正在尝试遵循 Mark Vasilkov 的《Kivy Blueprints》一书。在第 21 页,他介绍了一个更新标签文本的函数。
项目文件夹中有两个文件(参见下面的代码)。在 ClockApp 类内部定义了函数 update_time(self, nap)
。我正在使用 Intellij Idea Community 和 python 插件,集成开发环境 (IDE) 告诉我 nap
是一个未使用的参数。如果我删除 nap
作为参数,我会收到错误 update_time() gets 1positional argument but 2 were returned
。我怎样才能摆脱这个虚拟参数?
# Source: Chapter 1 of Kivy Blueprints
# File: main.py
from time import strftime
from kivy.app import App
from kivy.clock import Clock
from kivy.core.window import Window
from kivy.utils import get_color_from_hex
Window.clearcolor = get_color_from_hex("#101216")
# from kivy.core.text import LabelBase
class ClockApp(App):
def update_time(self, nap):
self.root.ids.time.text = strftime("[b]%H[/b]:%M:%S")
def on_start(self):
Clock.schedule_interval(self.update_time, 1)
if __name__ == "__main__":
ClockApp().run()
还有一个额外的clock.kv文件
# File: clock.kv
BoxLayout:
orientation: "vertical"
Label:
id: time
text: "[b]00[/b]:00:00"
font_name: "Roboto"
font_size: 60
markup: True
最佳答案
绑定(bind)总是传递附加信息,例如在本例中,它向我们发送调用函数的确切时间段。如果您不想使用它,您可以使用 lambda 方法:
class ClockApp(App):
def update_time(self):
self.root.ids.time.text = strftime("[b]%H[/b]:%M:%S")
def on_start(self):
Clock.schedule_interval(lambda *args: self.update_time(), 1)
如果您只想消除警告:“未使用的参数”,您可以使用_
:
class ClockApp(App):
def update_time(self, _):
self.root.ids.time.text = strftime("[b]%H[/b]:%M:%S")
def on_start(self):
Clock.schedule_interval(self.update_time, 1)
关于来自《Kivy Blueprints》一书的 Python kivy 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51761130/