Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.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
Python 不使用kv语言创建Kivy小部件?_Python_Widget_Kivy - Fatal编程技术网

Python 不使用kv语言创建Kivy小部件?

Python 不使用kv语言创建Kivy小部件?,python,widget,kivy,Python,Widget,Kivy,如何在不使用kv语言和.kv文件的情况下创建Kivy小部件?我是新来的基维。我通常使用Tkinter,但我发现Kivy很适合创建Android应用程序,所以我正在学习如何使用它。 我知道Kivy小部件是使用.kv文件制作的,但我想像Tkinter中的小部件一样创建它们 # Creating widgets in tkinter: # We'll assume tkinter is imported as tk label_1 = tk.Label(text='Hello World',

如何在不使用kv语言和.kv文件的情况下创建Kivy小部件?我是新来的基维。我通常使用Tkinter,但我发现Kivy很适合创建Android应用程序,所以我正在学习如何使用它。 我知道Kivy小部件是使用.kv文件制作的,但我想像Tkinter中的小部件一样创建它们

# Creating widgets in tkinter:
# We'll assume tkinter is imported as tk    

label_1 = tk.Label(text='Hello World', bg='white')
label_1.pack()

# Creating widgets using Kivy in .py file

label_1 = Label(text='Hello World')  # eg. Not able to set color!
add_widget(label_1)

# Creating widgets using kv language

Label:
    text: "Hello World"
    color: 1,0,0,1  
那么,有没有办法完全用python制作Kivy小部件?如何在python中直接设置Kivy标签颜色


谢谢

以下是一个不使用kv lang的Kivy应用程序示例:

from kivy.app import App
from kivy.uix.label import Label


class TestApp(App):
    def build(self):
        return Label(
            text='Hello, world',
            color=(1, 0, 0, 1)
        )


TestApp().run()
基本上,
kivy.app.app
实例的
build
方法返回了一个主小部件对象,在本例中是一个
kivy.uix.Label
实例。要拥有更复杂的小部件,您应该创建某个布局类的子类,然后使用
add\u widget
方法添加小部件

from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.boxlayout import BoxLayout


class TestWidget(BoxLayout):
    def __init__(self, **args):
        super(TestWidget, self).__init__(**args)
        label = Label(
            text='Hello, world',
            color=(1, 0, 0, 1))
        self.add_widget(label)


class TestApp(App):
    def build(self):
        return TestWidget()


TestApp().run()

无论如何,我鼓励您使用kv lang,因为它使代码更简单。

完全可以使用python专门编写kivy应用程序。我大约6个月前开始使用kivy,很快就放弃了kv文件。我不喜欢在后台制作绑定的“神奇”代码。我知道这是一种偏好,现在我知道小部件和布局是如何工作的,使用kv语言可能会更快。您需要手动执行的操作是在整个小部件树中保持小部件之间的句柄,并使用kivy属性设置绑定。有很多东西要学,但一旦你开始学习,可能性是无穷的。您发现的大多数示例都非常简单,我觉得文档非常有限。我觉得,如果您对python感到满意,那么如果您继续使用python,您将实际了解更多关于kivy如何工作的信息

我认为尼卡金的回答是正确的,但我只是想分享一些细节