📌  相关文章
📜  Python| Kivy 中的 AnchorLayout 使用 .kv 文件

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

Python| Kivy 中的 AnchorLayout 使用 .kv 文件

Kivy 是Python中一个独立于平台的 GUI 工具。因为它可以在Android、IOS、linux和Windows等平台上运行。它基本上是用来开发Android应用程序的,但这并不意味着它不能在桌面应用程序上使用。

锚点布局:

AnchorLayout 将其子项与边框(上、下、左、右)或中心对齐。下面给出的类用于实现锚布局。

kivy.uix.anchorlayout.AnchorLayout

AnchorLayout 可以用参数初始化:

anchor_x
Parameters can be passed: “left”, “right” and “center”.

anchor_y
Parameters can be passed:“top”,  “bottom” and “center”.

选择小部件在父容器中的放置位置。

Basic Approach:

1) import kivy
2) import kivyApp
3) import gridlayout(not necessary according to requirement)
4) import Anchorlayout
5) Set minimum version(optional)
6) create Layout class
7) create App class
8) Set up .kv file
9) Return the instance of layout class
10) Run an instance of the Appclass

在下面的示例代码中,我们使用了GridLayout作为我们的根小部件类。 GridLayout 将是 9 个 AnchorLayouts 的父级。 9 个 AnchorLayouts 将锚定在 9 个不同的锚定位置,即我们在 9 个按钮的帮助下在单个程序中使用所有 9 个 Anchorlayout 位置。方法的实施:

main.py 文件——
# Sample Python application demonstrating the
# working of AnchorLayout in Kivy using .kv file
  
###################################################
  
# base Class of your App inherits from the App class.  
# app:always refers to the instance of your application  
from kivy.app import App
  
# GridLayout arranges children in a matrix.
# It takes the available space and
# divides it into columns and rows, 
# then adds widgets to the resulting “cells”.
from kivy.uix.gridlayout import GridLayout
  
# to change the kivy default settings
# we use this module config
from kivy.config import Config
   
# 0 being off 1 being on as in true / false
# you can use 0 or 1 && True or False
Config.set('graphics', 'resizable', True)
   
  
# creating the root widget used in .kv file 
class Anchor_Layout(GridLayout):
    pass
  
# class in which name .kv file must be named Anchor_Layout.kv   
class Anchor_LayoutApp(App):
    def build(self):
        # returning the instance of root class
        return Anchor_Layout()
  
# run the app
if __name__=='__main__':
    Anchor_LayoutApp().run()

.kv 文件 –

# Implementation of .kv file of Anchor layout
  
################################################
  
  
# creating the features of Button
:
    size_hint: [None, None]
    size: [100, 100]
  
# creating the root of .kv
:
  
    # Assigning grids
    rows: 3
  
    # Anchor Layout 1
    AnchorLayout:
          
        # position of Anchor Layout 
        anchor_x: 'left'
        anchor_y: 'top'
  
        # creating Canvas 
        canvas:
            Color:
                rgb: [.5, .324, .384]
            Rectangle:
                pos: self.pos
                size: self.size
  
        # creating Button
        MyButton:
            text: 'B1'
  
    # Anchor Layout 2
    AnchorLayout:
        anchor_x: 'center'
        anchor_y: 'top'
        canvas:
            Color:
                rgb: [.5, .692, .498]
            Rectangle:
                pos: self.pos
                size: self.size
        MyButton:
            text: 'B2'
  
    # Anchor Layout 3
    AnchorLayout:
        anchor_x: 'right'
        anchor_y: 'top'
        canvas:
            Color:
                rgb: [.5, .692, 1]
            Rectangle:
                pos: self.pos
                size: self.size
        MyButton:
            text: 'B3'
  
    # Anchor Layout 4
    AnchorLayout:
        anchor_x: 'left'
        anchor_y: 'center'
        canvas:
            Color:
                rgb: [.789, .5, .699]
            Rectangle:
                pos: self.pos
                size: self.size
        MyButton:
            text: 'B4'
  
    # Anchor Layout 5
    AnchorLayout:
        anchor_x: 'center'
        anchor_y: 'center'
        canvas:
            Color:
                rgb: [.333, .5, .673]
            Rectangle:
                pos: self.pos
                size: self.size
        MyButton:
            text: 'B5'
              
    # Anchor Layout 6
    AnchorLayout:
        anchor_x: 'right'
        anchor_y: 'center'
        canvas:
            Color:
                rgb: [.180, .5, .310]
            Rectangle:
                pos: self.pos
                size: self.size
        MyButton:
            text: 'B6'
  
    # Anchor Layout 7
    AnchorLayout:
        anchor_x: 'left'
        anchor_y: 'bottom'
        canvas:
            Color:
                rgb: [.180, .398, .5]
            Rectangle:
                pos: self.pos
                size: self.size
        MyButton:
            text: 'B7'
  
    # Anchor Layout 8
    AnchorLayout:
        anchor_x: 'center'
        anchor_y: 'bottom'
        canvas:
            Color:
                rgb: [.438, .329, .5]
            Rectangle:
                pos: self.pos
                size: self.size
        MyButton:
            text: 'B8'
  
    # Anchor Layout 9
    AnchorLayout:
        anchor_x: 'right'
        anchor_y: 'bottom'
        canvas:
            Color:
                rgb: [.611, .021, .5]
            Rectangle:
                pos: self.pos
                size: self.size
        MyButton:
            text: 'B9'      

输出: