我在从另一个类更新kivy标签文本运行时时遇到了一些问题。 我从类似的问题中试过各种可能的解决办法,但没能得到结果。 在我的应用程序中,我有一个主类和另一个弹出类。我想从弹出类更新主类小部件的文本标签。在
主电压kv文件
<JKmain>:
the_time: _id_lbl_time
AnchorLayout:
anchor_x: 'left'
anchor_y: 'top'
BoxLayout:
orientation: 'vertical'
id: _tool_box
size_hint: None,0.75
width: 300
Label:
id: _id_lbl_time
text: "Total Layers : "
AnchorLayout:
anchor_x: 'right'
anchor_y: 'top'
GridLayout:
rows:2
...
...
BoxLayout:
orientation: 'horizontal'
Button:
on_release: app.root.current = "main"
text: "SELECT"
size_hint: 1,0.2
background_color: (1.0, 1.0, 0.0, 1.0)
on_release: root.popup_func(self)
Button:
text: "START"
size_hint: 1,0.2
background_color: (1.0, 0.0, 1.0, 1.0)
on_release: root.change_text(100)
Button:
text: "EXIT"
size_hint: 1,0.2
background_color: (1.0, 0.0, 1.0, 1.0)
on_release: root.exit_app(self)
<ConfirmPopup>:
BoxLayout:
orientation: 'vertical'
FileChooserIconView:
id: filechooser
filters: ['*.zip']
GridLayout:
cols: 2
size_hint: 1,0.2
Button:
text: 'OK'
on_release: root.dispatch('on_answer',filechooser.selection)
size_hint: 1,0.2
Button:
text: 'Cancel'
on_release: root.dispatch('on_answer', 'Cancel')
size_hint: 1,0.2
ConfirmPopup类:
^{pr2}$主类:
class JKMain(AnchorLayout):
def __init__(self, **kwargs):
super(JKMain, self).__init__(**kwargs)
def change_text(self,layers):
self.the_time.text = "Total Layers : " + str(layers)
print "Total Layers = " + str(layers)
def popup_func(self, instance):
content = ConfirmPopup()
content.bind(on_answer=self._on_answer)
self.popup = Popup(title="Select .zip file",
content=content,
size_hint=(None, None),
size=(500,500),
auto_dismiss= False)
self.popup.open()
def _on_answer(self, instance, answer):
self.popup.dismiss()
我可以使用change_text
函数更新文本。在ConfirmPopup类中,我正在创建JKMain的实例并访问change_text
函数来更改标签,但它不起作用
问题
它不起作用,因为通过创建另一个JKMain的实例,现在您有了两个JKMain的实例,而您没有访问第一个实例,即根。在
解决方案
作为解决方案正在工作的演示,self.total_图像在方法中设置方法。在
kv文件
Python脚本
片段
在主电压kv
在主.py
^{pr2}$示例
在主.py在
在主电压kv在
输出
相关问题 更多 >
编程相关推荐