我正在创建一个kivy用户界面来显示由我编写为标准python对象的数据模型生成的值.本质上,我希望用户能够按下一个按钮,这将改变底层数据模型,并且将自动更新和显示此更改的结果.我的理解是,这可以使用kivy属性(在本例中为ObjectProperty)来实现.
这是一些示例代码:
import kivy
kivy.require('1.7.0')
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.properties import ObjectProperty
from kivy.lang import Builder
Builder.load_string("""
<RootWidget>:
cols: 2
Label:
text: "Attribute a:"
Label:
text: root.data_model.a
Label:
text: "Attribute b:"
Label:
text: root.data_model.b
Label:
text: "Attribute c:"
Label:
text: root.data_model.c
Button:
text: "Make data_model.a longer"
on_press: root.button_press()
Button:
text: "Make data_model.b shorter"
on_press: root.button_press2()
""")
class DataModel(object):
def __init__(self):
self.a = 'This is a'
self.b ='This is b'
@property
def c(self):
return self.a + …Run Code Online (Sandbox Code Playgroud) 我确信这是由于我对不同精度的浮点数之间的转换如何工作的理解上的失误,但有人可以解释为什么该值在 32 位与 64 位表示中被转换为比其真实值小 3 的值吗?
>>> a = np.array([83734315])
>>> a.astype('f')
array([ 83734312.], dtype=float32)
>>> a.astype('float64')
array([ 83734315.])
Run Code Online (Sandbox Code Playgroud) 我已经观察到涉及对象“ AuditResult”的怪异现象,希望有人可以帮助我理解。我有这样一个模块设置:
模型\ __init__.py common.py(AuditResult是从audit.py导入的) audit.py(AuditResult所在的位置) objects.py test.py
在test.py中,如果我使用导入了AuditResult对象from common import AuditResult,则会出现以下结果:
>>> isinstance(audit_obj, AuditResult)
False
>>> type(audit_obj)
<class 'model.audit.AuditResult'>
>>> AuditResult
<class 'audit.AuditResult'>
Run Code Online (Sandbox Code Playgroud)
但是,如果使用from model.common import AuditResult,代码将按预期运行。
>>> isinstance(audit_obj, AuditResult)
True
>>> type(audit_obj)
<class 'model.audit.AuditResult'>
>>> AuditResult
<class 'model.audit.AuditResult'>
Run Code Online (Sandbox Code Playgroud)