📜  Python|使用 kivy 制作一个简单的窗口

📅  最后修改于: 2022-05-13 01:55:03.174000             🧑  作者: Mango

Python|使用 kivy 制作一个简单的窗口

Kivy 是一个独立于平台的平台,可以在 Android、IOS、linux 和 Windows 等平台上运行。Kivy 为您提供了一次编写代码并在不同平台上运行的功能。基本上是用来开发Android应用的,但不代表不能用在Desktops应用上。
使用此命令安装 kivy:

pip install kivy

现在在这篇文章中,我们将讨论如何在 kivy 中构建一个窗口,就像一个登录屏幕,它能够从用户那里获取用户名和密码,而无需仅此布局的功能。

要制作登录页面,我们首先要导入 kivy 的一些特性——widgets、gridlayout。

Python3
# base Class of your App inherits from the App class.
from kivy.app import App
# GridLayout arranges children in a matrix.
from kivy.uix.gridlayout import GridLayout
# Label is used to label something
from kivy.uix.label import Label
# used to take input from users
from kivy.uix.textinput import TextInput
 
 
 
class LoginScreen(GridLayout):
    def __init__(self, **var_args):
         
        super(LoginScreen, self).__init__(**var_args)
        # super function can be used to gain access
        # to inherited methods from a parent or sibling class
        # that has been overwritten in a class object.
        self.cols = 2     # You can change it accordingly
        self.add_widget(Label(text ='User Name'))
        self.username = TextInput(multiline = True)
         
        # multiline is used to take
        # multiline input if it is true
        self.add_widget(self.username)
        self.add_widget(Label(text ='password'))
        self.password = TextInput(password = True, multiline = False)
         
        # password true is used to hide it
        # by * self.add_widget(self.password)
        self.add_widget(Label(text ='Comfirm password'))
        self.password = TextInput(password = True, multiline = False)
        self.add_widget(self.password)
 
 
# the Base Class of our Kivy App
class MyApp(App):
    def build(self):
        # return a LoginScreen() as a root widget
        return LoginScreen()
 
 
if __name__ == '__main__':
    MyApp().run()


Python3
def __init__(self, **kwargs):
super(LoginScreen, self).__init__(**kwargs)


Python
self.cols = 2
self.add_widget(Label(text='User Name'))
self.username = TextInput(multiline=False)
self.add_widget(self.username)
 
self.add_widget(Label(text='password'))
self.password = TextInput(password=True, multiline=False)
self.add_widget(self.password)


输出:

代码说明:
类登录屏幕(网格布局):

  • 在本课程中,我们制作了网格和用户名、密码等块,并提供了文本输入功能。现在让我们看看详细的描述。
    在类 LoginScreen 中,我们重写方法 __init__() 以便添加小部件并定义它们的行为。

Python3

def __init__(self, **kwargs):
super(LoginScreen, self).__init__(**kwargs)
  • 不要忘记调用 super 以实现原始类的功能
    超载。另请注意,最好不要在调用 super 时省略 **kwargs,因为它们有时会在内部使用。
  • 我们要求 GridLayout 在两列中管理其子项,并为
    用户名和密码。

Python

self.cols = 2
self.add_widget(Label(text='User Name'))
self.username = TextInput(multiline=False)
self.add_widget(self.username)
 
self.add_widget(Label(text='password'))
self.password = TextInput(password=True, multiline=False)
self.add_widget(self.password)


MyApp 类:

  • 该类派生自kivy.app的 App() 类。这个类是创建 kivy 应用程序的基类。它基本上是 kivy 运行循环的主要入口点。
    在大多数情况下,我们将这个类子类化并制作我们自己的 App。我们创建特定 App() 类的实例,当我们准备好启动时,我们调用实例 App().run() 方法。
    这里的 build() 方法“初始化应用程序;它只会被调用一次。如果此方法返回一个小部件(树),它将用作根小部件并添加到窗口中。
    如果不存在self.root ,则返回:None 或根 Widget 实例。”
  • MyApp.run()是 run() 方法以独立模式启动应用程序并调用返回 Loginscreen() 类的 MyApp 类。

最好的部分是尝试重新调整窗口大小,您会看到屏幕上的小部件会根据窗口的大小自行调整,因为小部件默认使用大小提示(调整)。
例如 :