python-3.x - 如何将参数传递给屏幕类
问题描述
什么等价于这个
def name(first):
print(first)
name(first = "hello")
以课堂形式?
我正在处理一个kivy screen(s)
在循环中创建的脚本。由于屏幕不是硬编码的,而是从同一个类调用的,所以它们最终都是同一个屏幕。
我所拥有的是
class Account(Screen):
coord = somedict["account_1"]["coordinate_x"]
for i in range(2):
screenmanager.add_widget(Account())
我想做的是,
class Account(Screen, acc):
coord = somedict[acc]["coordinate_x"]
for i in range(2):
screenmanager.add_widget(Account(acc=str(i)))
解决方案
解决方案
- 在类级别定义一个 Kivy 属性,例如 StringProperty。
- 添加一个构造函数来接收参数并将其分配给该实例属性。
片段
class Account(Screen):
coord = StringProperty('')
def __init__(self, acc, **kwargs)
super(Account, self).__init__(**kwargs)
self.coord = somedict[acc]["coordinate_x"]
...
for i in range(2):
screenmanager.add_widget(Account(acc=str(i)))
例子
主文件
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.properties import StringProperty
from morsecode import morse
# Create both screens. Please note the root.manager.current: this is how
# you can control the ScreenManager from kv. Each screen has by default a
# property manager that gives you the instance of the ScreenManager used.
Builder.load_string("""
#:import choice random.choice
<MorseCode>:
BoxLayout:
orientation: 'vertical'
Label:
text: root.code
Button:
text: 'Random Morsecode'
on_release:
root.manager.current = choice(root.manager.screen_names)
""")
class MorseCode(Screen):
code = StringProperty('')
def __init__(self, acc, **kwargs):
super(MorseCode, self).__init__(**kwargs)
self.code = morse[acc]
# Create the screen manager
sm = ScreenManager()
for i in range(1, 9):
sm.add_widget(MorseCode(str(i), name='morsecode'+str(i)))
class TestApp(App):
def build(self):
return sm
if __name__ == '__main__':
TestApp().run()
输出
推荐阅读
- laravel - 重定向到 POST 路由 Laravel 的解决方案
- firebase-realtime-database - 如何使用命令行分别从 Firebase 实时数据库中导出每个变量中的数据
- javascript - React 中的自定义 Service Worker
- openapi - 将字段设置为模式类型,即 OpenAPI 中定义的模式
- xcode - 包含来自其他目录的 cpp 代码文件时是否是 Xcode 错误?
- php - PHP Soap 客户端处理多部分/相关
- c# - 找不到实体框架插入字段时出错
- java - BCFIPS - org.bouncycastle.crypto.fips.FipsOperationError:模块校验和失败:预期这得到了
- javascript - 使用 CSS-in-JS 时,我应该为 CSS 类使用哪种大小写?
- python - 如何将参数传递给 scipy.optimize 中的非线性约束?