Python|使用 kivy 制作一个简单的窗口
Kivy 是一个独立于平台的平台,可以在 Android、IOS、linux 和 Windows 等平台上运行。Kivy 为您提供了一次编写代码并在不同平台上运行的功能。基本上是用来开发Android应用的,但不代表不能用在Desktops应用上。
使用此命令安装 kivy:
pip install kivy
现在在这篇文章中,我们将讨论如何在 kivy 中构建一个窗口,就像一个登录屏幕,它能够从用户那里获取用户名和密码,而无需仅此布局的功能。
???????? Kivy Tutorial – Learn Kivy with Examples.
要制作登录页面,我们首先要导入 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 类。
最好的部分是尝试重新调整窗口大小,您会看到屏幕上的小部件会根据窗口的大小自行调整,因为小部件默认使用大小提示(调整)。
例如 :