Я новичок в kivy и мне нужна помощь. Я пытаюсь добавить макет, который я сделал в python классе, который является клавиатурой для файла kv. Я могу сделать кнопки в файле kv, но это включает создание отдельных кнопок для каждой кнопки. В python я могу сделать это легко с помощью для l oop и добавить событие нажатия клавиши. Я просто не знаю, как заставить его отображаться в файле kv, который, скажем, просто экран для отображения клавиатуры. Любая помощь будет оценена. Мой проект должен быть в конце месяца, и я застрял на нем некоторое время.
#!/usr/bin/python3.6
import kivy
# base Class of your App inherits from the App class.
# app:always refers to the instance of your application
from kivy.app import App
# The 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.button import Button
from kivy.uix.gridlayout import GridLayout
# Builder is a global Kivy instance used
# in widgets that you can use to load other
# kv files in addition to the default ones.
from kivy.lang import Builder
# Loading Multiple .kv files
from kivy.uix.screenmanager import Screen
from menulibre.MenulibreApplication import root
Builder.load_file('run.kv')
Builder.load_file('keypad.kv')
Builder.load_file('box3.kv')
class keypad(Screen):
def __init__(self, **kwargs):
super(keypad, self). __init__(**kwargs)
view = self.root.ids.my_grid
grid = GridLayout(cols=3, size_hint_y=None, spacing='1dp')
keys = [1,2,3,4,5,6,7,8,9,'Del',0,'Ent']
for num in keys:
grid.add_widget(Button(text=str(num)))
view.add_widget(grid)
# Creating main kv file class
class main_kv(GridLayout):
pass
# Create App class
class MainApp(App):
def build(self):
self.x = 150
self.y = 400
return main_kv()
# run the App
if __name__=='__main__':
MainApp().run()
<Box3@BoxLayout>:
GridLayout:
id: my_grid
size_hint_y: None
height: '200dp'