pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

    <tfoot id='kj57C'></tfoot>

  1. <i id='kj57C'><tr id='kj57C'><dt id='kj57C'><q id='kj57C'><span id='kj57C'><b id='kj57C'><form id='kj57C'><ins id='kj57C'></ins><ul id='kj57C'></ul><sub id='kj57C'></sub></form><legend id='kj57C'></legend><bdo id='kj57C'><pre id='kj57C'><center id='kj57C'></center></pre></bdo></b><th id='kj57C'></th></span></q></dt></tr></i><div class="5p5rtnv" id='kj57C'><tfoot id='kj57C'></tfoot><dl id='kj57C'><fieldset id='kj57C'></fieldset></dl></div>
      <bdo id='kj57C'></bdo><ul id='kj57C'></ul>
  2. <legend id='kj57C'><style id='kj57C'><dir id='kj57C'><q id='kj57C'></q></dir></style></legend>

      <small id='kj57C'></small><noframes id='kj57C'>

      Kivy ObjectProperty 更新標簽文本

      Kivy ObjectProperty to update label text(Kivy ObjectProperty 更新標簽文本)
      <legend id='UKqoM'><style id='UKqoM'><dir id='UKqoM'><q id='UKqoM'></q></dir></style></legend>

      <i id='UKqoM'><tr id='UKqoM'><dt id='UKqoM'><q id='UKqoM'><span id='UKqoM'><b id='UKqoM'><form id='UKqoM'><ins id='UKqoM'></ins><ul id='UKqoM'></ul><sub id='UKqoM'></sub></form><legend id='UKqoM'></legend><bdo id='UKqoM'><pre id='UKqoM'><center id='UKqoM'></center></pre></bdo></b><th id='UKqoM'></th></span></q></dt></tr></i><div class="3rfxf57" id='UKqoM'><tfoot id='UKqoM'></tfoot><dl id='UKqoM'><fieldset id='UKqoM'></fieldset></dl></div>
      • <tfoot id='UKqoM'></tfoot>

          <tbody id='UKqoM'></tbody>

          <small id='UKqoM'></small><noframes id='UKqoM'>

              • <bdo id='UKqoM'></bdo><ul id='UKqoM'></ul>
              • 本文介紹了Kivy ObjectProperty 更新標簽文本的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

                問題描述

                我正在創建一個 kivy 用戶界面來顯示由我作為標準 python 對象編寫的數據模型生成的值.本質上,我希望用戶能夠按下一個按鈕,這將改變底層數據模型,并且這種改變的結果將自動更新和顯示.據我了解,這可以使用 kivy 屬性(在本例中為 ObjectProperty)來實現.

                I am working on creating a kivy user interface to display the values generated by a data model I've written as a standard python object. In essence, I would like the user to be able to press a button, which would change the underlying data model and the results of this change would be automatically updated and displayed. It is my understanding that this can be implemented using kivy properties (in this case, 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 + ' and ' + self.b
                
                class RootWidget(GridLayout):
                    data_model = ObjectProperty(DataModel())
                
                    def button_press(self, *args):
                        self.data_model.a = 'This is a and it is really long now'
                        print self.data_model.c
                
                    def button_press2(self, *args):
                        self.data_model.b = 'B'
                        print self.data_model.c
                
                class TestApp(App):
                    def build(self):
                        return RootWidget()
                
                app = TestApp()
                app.run()
                

                所需的結果是當用戶按下任一按鈕時,標簽會自動更新以顯示新屬性.從打印語句可以看出,data_model 正在正確更新.但是,沒有一個標簽正在更新.有人可以澄清如何做到這一點嗎?

                The desired result is for when user presses either button, the labels would automatically update to show the new properties. As can be seen by the print statements, the data_model is getting updated correctly. However, none of the labels are updating. Can someone clarify how to do this?

                推薦答案

                但是,所有標簽都沒有更新.有人可以澄清如何做到這一點嗎?

                However, none of the labels are updating. Can someone clarify how to do this?

                你引用的屬性需要是Kivy屬性,但是你引用的abc都是python屬性所以Kivy無法綁定到他們的更改.

                The attributes you reference need to be Kivy properties, but the a, b and c you reference are all just python attributes so Kivy has no way to bind to their changes.

                要使用屬性,您需要您的對象從 EventDispatcher 繼承(Kivy 小部件會自動執行此操作,這就是它們的屬性起作用的原因).

                To work with properties you need your object to inherit from EventDispatcher (Kivy widgets do this automatically, which is why their properties work).

                from kivy.event import EventDispatcher
                
                class DataModel(EventDispatcher):
                    a = StringProperty('')
                    b = StringProperty('')
                    c = StringProperty('')
                
                    def __init__(self, *args, **kwargs):
                        super(DataModel, self).__init__(*args, **kwargs)
                        self.a = 'This is a'
                        self.b ='This is b'
                        self.bind(a=self.set_c)
                        self.bind(b=self.set_c)
                
                    def set_c(self, instance, value):
                        self.c = self.a + ' and ' + self.b        
                

                請注意,這不是獲得你想要的 c 行為的唯一方法(甚至不一定是最好的方法).您可以使用 kv 語言創建綁定(我通常會這樣做),或者您可以查看 Kivy 的 AliasProperty 以獲得更類似于您的原始定義的內容.

                Note that this is not the only way (or even necessarily the best way) to get the behaviour you wanted for c. You could create the binding in kv language (I'd usually do it that way) or you can look at Kivy's AliasProperty for something more like your original definition.

                當然你也可以在聲明屬性時設置 a 和 b 的值.

                Of course you could also set the values of a and b when the properties are declared.

                這篇關于Kivy ObjectProperty 更新標簽文本的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

                【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

                相關文檔推薦

                How to make a discord bot that gives roles in Python?(如何制作一個在 Python 中提供角色的不和諧機器人?)
                Discord bot isn#39;t responding to commands(Discord 機器人沒有響應命令)
                Can you Get the quot;About mequot; feature on Discord bot#39;s? (Discord.py)(你能得到“關于我嗎?Discord 機器人的功能?(不和諧.py))
                message.channel.id Discord PY(message.channel.id Discord PY)
                How do I host my discord.py bot on heroku?(如何在 heroku 上托管我的 discord.py 機器人?)
                discord.py - Automaticaly Change an Role Color(discord.py - 自動更改角色顏色)
                  <tbody id='apgWA'></tbody>

                  <i id='apgWA'><tr id='apgWA'><dt id='apgWA'><q id='apgWA'><span id='apgWA'><b id='apgWA'><form id='apgWA'><ins id='apgWA'></ins><ul id='apgWA'></ul><sub id='apgWA'></sub></form><legend id='apgWA'></legend><bdo id='apgWA'><pre id='apgWA'><center id='apgWA'></center></pre></bdo></b><th id='apgWA'></th></span></q></dt></tr></i><div class="hrfjbf5" id='apgWA'><tfoot id='apgWA'></tfoot><dl id='apgWA'><fieldset id='apgWA'></fieldset></dl></div>
                1. <small id='apgWA'></small><noframes id='apgWA'>

                  <tfoot id='apgWA'></tfoot>
                    • <bdo id='apgWA'></bdo><ul id='apgWA'></ul>
                      <legend id='apgWA'><style id='apgWA'><dir id='apgWA'><q id='apgWA'></q></dir></style></legend>

                        • 主站蜘蛛池模板: 低浓度恒温恒湿称量系统,强光光照培养箱-上海三腾仪器有限公司 | 小港信息港-鹤壁信息港 鹤壁老百姓便民生活信息网站 | 无线联网门锁|校园联网门锁|学校智能门锁|公租房智能门锁|保障房管理系统-KEENZY中科易安 | 变频器维修公司_plc维修_伺服驱动器维修_工控机维修 - 夫唯科技 变位机,焊接变位机,焊接变位器,小型变位机,小型焊接变位机-济南上弘机电设备有限公司 | 四合院设计_四合院装修_四合院会所设计-四合院古建设计与建造中心1 | 接地电阻测试仪[厂家直销]_电缆故障测试仪[精准定位]_耐压测试仪-武汉南电至诚电力设备 | 户外-组合-幼儿园-不锈钢-儿童-滑滑梯-床-玩具-淘气堡-厂家-价格 | 布袋式除尘器|木工除尘器|螺旋输送机|斗式提升机|刮板输送机|除尘器配件-泊头市德佳环保设备 | 青岛侦探_青岛侦探事务所_青岛劝退小三_青岛调查出轨取证公司_青岛婚外情取证-青岛探真调查事务所 | 菏泽商标注册_菏泽版权登记_商标申请代理_菏泽商标注册去哪里 | 纯水电导率测定仪-万用气体检测仪-低钠测定仪-米沃奇科技(北京)有限公司www.milwaukeeinst.cn 锂辉石检测仪器,水泥成分快速分析仪-湘潭宇科分析仪器有限公司 手术室净化装修-手术室净化工程公司-华锐手术室净化厂家 | 磁力加热搅拌器-多工位|大功率|数显恒温磁力搅拌器-司乐仪器官网 | 纸张环压仪-纸张平滑度仪-杭州纸邦自动化技术有限公司 | elisa试剂盒价格-酶联免疫试剂盒-猪elisa试剂盒-上海恒远生物科技有限公司 | 北京翻译公司-专业合同翻译-医学标书翻译收费标准-慕迪灵 | 天津市能谱科技有限公司-专业的红外光谱仪_红外测油仪_紫外测油仪_红外制样附件_傅里叶红外光谱技术生产服务厂商 | 注塑机-压铸机-塑料注塑机-卧式注塑机-高速注塑机-单缸注塑机厂家-广东联升精密智能装备科技有限公司 | 照相馆预约系统,微信公众号摄影门店系统,影楼管理软件-盟百网络 | 南京泽朗生物科技有限公司-液体饮料代加工_果汁饮料代加工_固体饮料代加工 | 通风天窗,通风气楼,屋顶通风天窗,屋顶通风天窗公司 | 净气型药品柜-试剂柜-无管道净气型通风柜-苏州毕恩思 | 【电子厂招聘_普工招工网_工厂招聘信息平台】-工立方打工网 | 净化板-洁净板-净化板价格-净化板生产厂家-山东鸿星新材料科技股份有限公司 | 传动滚筒,改向滚筒-淄博建凯机械科技有限公司 | 昆山新莱洁净应用材料股份有限公司-卫生级蝶阀,无菌取样阀,不锈钢隔膜阀,换向阀,离心泵 | SEO网站优化,关键词排名优化,苏州网站推广-江苏森歌网络 | 高压油管,液压接头,液压附件-烟台市正诚液压附件 | 臭氧实验装置_实验室臭氧发生器-北京同林臭氧装置网 | 便携式高压氧舱-微压氧舱-核生化洗消系统-公众洗消站-洗消帐篷-北京利盟救援 | 蒸压釜_蒸养釜_蒸压釜厂家-山东鑫泰鑫智能装备有限公司 | 冷藏车-东风吸污车-纯电动环卫车-污水净化车-应急特勤保障车-程力专汽厂家-程力专用汽车股份有限公司销售二十一分公司 | 济南玻璃安装_济南玻璃门_济南感应门_济南玻璃隔断_济南玻璃门维修_济南镜片安装_济南肯德基门_济南高隔间-济南凯轩鹏宇玻璃有限公司 | 消泡剂_水处理消泡剂_切削液消泡剂_涂料消泡剂_有机硅消泡剂_广州中万新材料生产厂家 | 广州番禺搬家公司_天河黄埔搬家公司_企业工厂搬迁_日式搬家_广州搬家公司_厚道搬迁搬家公司 | 钢格板|镀锌钢格板|热镀锌钢格板|格栅板|钢格板|钢格栅板|热浸锌钢格板|平台钢格板|镀锌钢格栅板|热镀锌钢格栅板|平台钢格栅板|不锈钢钢格栅板 - 专业钢格板厂家 | 陕西华春网络科技股份有限公司 | 工业电炉,台车式电炉_厂家-淄博申华工业电炉有限公司 | 氟氨基酮、氯硝柳胺、2-氟苯甲酸、异香兰素-新晨化工 | 诺冠气动元件,诺冠电磁阀,海隆防爆阀,norgren气缸-山东锦隆自动化科技有限公司 | 耐火砖厂家,异形耐火砖-山东瑞耐耐火材料厂 | 工业CT-无锡璟能智能仪器有限公司 |