gpt4 book ai didi

python - 基维理解

转载 作者:太空狗 更新时间:2023-10-29 22:30:19 25 4
gpt4 key购买 nike

我是 Kivy GUI 框架的新手,我有几个与 kvlang 相关的问题:

1.如何将自定义小部件类添加到 kv 文件的根目录?(示例)PS:我在这里使用 clear_widgets() 然后我尝试添加我的自定义小部件但是我在点击按钮后出现错误。

#:kivy 1.8

<HelloWorldForm@BoxLayout>:
orientation: "vertical"
Label:
text:"Hello world"
Button:
text: "Go back"
on_press: app.formGoBack()


<MainForm@BoxLayout>:
orientation: "vertical"
btnOpenForm: btnChangeForm
BoxLayout:
size_hint_y:None
height:"40dp"
Button:
id:btnChangeForm
text:"Go to hello world form"
on_press:
root.clear_widgets()
root.add_widget(HelloWorldForm)
Button:
id:btnExit
text:"Exit"
on_press: app.Exit()


MainForm:

如何使用 add_widget 方法添加 HelloWorldForm 小部件类

2.如何在python代码中使用add_widgetclear_widgets方法?(举例)

主.kv

   <MainForm@BoxLayout>:
orientation: "vertical"
btnOpenForm: btnChangeForm
BoxLayout:
size_hint_y:None
height:"40dp"
Button:
id:btnChangeForm
text:"Go to hello world form"
on_press: app.changeForm()

主.py

#!/usr/bin/python3.4


import kivy

kivy.require('1.8.0')

from kivy.app import App
from kivy.uix import *


class MainApp(App):
def changeForm(self)
/**
TO-DO
**/




app=MainApp()
app.run()

3.如何在 python 中访问 kvlang 属性?例如我想从一个按钮中获取文本。我怎样才能做到这一点?

最佳答案

  1. 问题出在这一行:root.add_widget(HelloWorldForm)。您正在添加一个类而不是类实例。特别是,您可能希望在每次调用时都添加相同的实例,而不是创建一个新实例,因此您应该执行root.add_widget(HelloWorldForm()) .

我建议在你的 python 代码中添加:

class MainApp(App):
def build(self):
self.helloworldform = HelloWorldForm()
self.mainform = MainForm()
return self.mainform

并在你的 kv 中将 root.add_widget(HelloWorldForm) 替换为 root.add_widget(app.helloworldform)这将添加您在构建函数中定义的 HelloWorldForm 实例。

  1. 这与第一个问题有关,您现在可以通过对保存在构建函数中的 helloworldform 和 mainform 的引用来访问 clear_widgets 和 add_widget 函数。:

    self.mainform.clear_widgets()
    self.mainform.add_widget(self.helloworldform)
  2. 例如,获取 btnChangeForm 的文本:

    self.mainform.btnOpenForm.text = 'This will change the text of the button.'

奇怪的是你做btnOpenForm: btnChangeForm。这将保存对 btnChagneForm 的引用,但名称是 btnOpenForm。为什么不让它们同名呢? btnChangeForm: btnChangeForm

关于python - 基维理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25844093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com