Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PythonKivy:如何使widgets Kivy文件加载后执行一个方法_Python_User Interface_Kivy_Kivy Language - Fatal编程技术网

PythonKivy:如何使widgets Kivy文件加载后执行一个方法

PythonKivy:如何使widgets Kivy文件加载后执行一个方法,python,user-interface,kivy,kivy-language,Python,User Interface,Kivy,Kivy Language,我正在尝试使用Kivy建立一个交互式的学校时间表。我的逻辑是在Python和所有布局中编写的,而一般的estetic是在Kivy文件中编写的。我想在Kivy文件加载后立即运行一个特定的方法,以便它更改按钮的文本以显示 以下是启动后的情况: 以下是我希望我的应用程序启动后的外观: 日期和课程的名称是波兰语 这是planchart.py的代码 class Okienko(按钮): 定义初始(自我,**kwargs): 超级() self.lessons=[] f=开放(“/interaktywn

我正在尝试使用Kivy建立一个交互式的学校时间表。我的逻辑是在Python和所有布局中编写的,而一般的estetic是在Kivy文件中编写的。我想在Kivy文件加载后立即运行一个特定的方法,以便它更改按钮的文本以显示

以下是启动后的情况:

以下是我希望我的应用程序启动后的外观:

日期和课程的名称是波兰语

这是planchart.py的代码

class Okienko(按钮):
定义初始(自我,**kwargs):
超级()
self.lessons=[]
f=开放(“/interaktywny\u plan/classes.dat”,“rb”)
pon=酸洗负荷(f)
wto=酸洗负荷(f)
sro=酸洗负荷(f)
czw=酸洗负荷(f)
pt=酸洗负荷(f)
f、 关闭()
self.lessons.append(pon)
self.lessons.append(wto)
self.lessons.append(sro)
self.lessons.append(czw)
self.lessons.append(pt)
self.lesson=“”
self.sub_press=“”
def on_释放(自):
self.text=self.lesson
def on_按下(自):
self.text=self.sub_按
def更新按钮(自身):
如果self.name==“一个”:
self.lesson=self.lessons[0][0][0]
self.sub_press=self.lessons[0][0][1]+“\n”+self.lessons[0][0][2]
elif self.name==“两个”:
self.lesson=self.lessons[0][1][0]
self.sub_press=self.lessons[0][1][1]+“\n”+self.lessons[0][1][2]
elif self.name==“三方”:
self.lesson=self.lessons[0][2][0]
self.sub_press=self.lessons[0][2][1]+“\n”+self.lessons[0][2][2]
elif self.name==“四点”:
self.lesson=self.lessons[0][3][0]
self.sub_press=self.lessons[0][3][1]+“\n”+self.lessons[0][3][2]
.............
以下是Kivy代码:

<Okienko>:
    background_color: [.5, .9, 1, 1]
    halign: "center"
    size_hint: None, None
    font_size: 24
    size: 96, 96
    on_press: self.on_press()
    on_release: self.on_release()

<PlanChart>:
    cols: 11
    padding: 2
    Dzien:
        id: pon
        text: "Pon"
    Okienko:
        id: one_pon
        name_: "one_pon"
    Okienko:
        id: two_pon
        name_: "two_pon"
    Okienko:
        id: three_pon
        name_: "three_pon"
    Okienko:
        id: four_pon
        name_: "four_pon"
    Okienko:
        id: five_pon
        name_: "five_pon"

     ..............

:
背景颜色:[.5,9,1,1]
哈利恩:“中心”
大小提示:无,无
字体大小:24
尺码:96,96
on_press:self.on_press()
on_release:self.on_release()
:
科尔斯:11
填充:2
哲恩:
id:pon
文本:“Pon”
奥坚科:
身份证号码:一张
姓名:“一方”
奥坚科:
身份证号码:两张
姓名:“两个”
奥坚科:
id:three_pon
姓名:“三方”
奥坚科:
id:four_pon
姓名:“四方”
奥坚科:
id:five_pon
姓名:“五方”
..............
我尝试使用
@mainthread
并将
self.update\u button()
放入
\uuuu init\uuuu
中,但它仍然会以空开头。我试着把
self.update\u button()
放在
\uu init\uuuu
中,但是我会得到
AtributeError
,因为Kivy文件没有加载。在那之后,我读了关于
Clock
模块的书,但我不知道如何正确使用它

加载Kivy文件后,您可以使用模块为安排方法调用:

从kivy.clock导入时钟
时钟。计划一次(self.update_按钮,.1)

非常感谢!我把它放在
\uuuu init\uuuu
的末尾,并添加了
(self,*args)
来更新按钮类,它工作得非常好!选项2:与上面相同,但没有
,.1
。这将调用回调“尽快(通常是下一帧)”()。哪个选项更好?选项3:在App类的
和build()下添加一个
id:foo
,调用类似
self.screen.ids.foo.update\u按钮()
。当然,没有
,.1
,更新速度更快,更好看。;o) 我添加它,只是为了指出它的存在(如果有人不熟悉它的话)。。