在创建单个逻辑的同时创建单个文件的问题,使用kivy为Sudoku拼图创建2x2、4x4和6x6网格。 框也应接受用户输入,但不能动态更改。
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())
要继续的示例课程。
** SudokuGridCell的内置Kivy文件: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'
''')
答案 0 :(得分:0)
我不应该这样做,但这是一个示例,可以帮助您入门:
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()