Проблема при создании единой логики при создании единого файла для сетки. Сетка 2х2, 4х4 и 6х6 для головоломки Судоку с использованием киви - PullRequest
0 голосов
/ 24 августа 2018

Ошибка при создании единой логики при создании отдельного файла сетки 2х2, 4х4 и 6х6 для головоломки Судоку с использованием kivy.поля также должны принимать данные от пользователя, но не изменяться динамически.

class SudokuGrid(GridLayout):

def __init__(self, **kwargs):
    super(SudokuGrid, self).__init__(**kwargs)
    self.spacing = (5, 5)
    for row in range(self.rows):
        for col in range(self.cols):
            self.add_widget(SudokuGridCell())

образец класса для продолжения.

** Встроенный файл KIVY для SudokuGridCell: Class **

class SudokuGridCell(AnchorLayout):
    pass

Builder.load_string('''
<SudokuCell@AnchorLayout>:
    anchor_x: 'center'
    anchor_y: 'center'
    canvas:
        Color:
            rgb: .6, .6, .6
        Rectangle:
            pos: self.pos
            size: self.size
    TextInput:
        multiline: False
        size_hint: (0.2, 0.2)
        text: '23'
''')

1 Ответ

0 голосов
/ 27 августа 2018

Я не должен этого делать, но вот пример для начала:

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.anchorlayout import AnchorLayout
from kivy.uix.gridlayout import GridLayout

class SudokuCell(AnchorLayout):
    pass

Builder.load_string('''
<SudokuCell@AnchorLayout>:
    anchor_x: 'center'
    anchor_y: 'center'
    canvas:
        Color:
            rgb: .6, .6, .6
        Rectangle:
            pos: self.pos
            size: self.size
    TextInput:
        multiline: False
        size_hint: (0.2, 0.2)
        text: '23'
''')

class SudokuGrid(GridLayout):

    def __init__(self, **kwargs):
        super(SudokuGrid, self).__init__(**kwargs)
        self.spacing = (3, 3)
        for row in range(self.rows):
            for col in range(self.cols):
                self.add_widget(SudokuCell())


class SudokuApp(App):
    def build(self):
        return SudokuGrid(rows=4, cols=4)

if __name__ == '__main__':
    SudokuApp().run()
...