Я пытаюсь кодировать игру тральщика в Python. Я создал класс Cell, который по сути является объектом Frame tkinter и объектом Button, помещенным в Frame (чтобы форма кнопки была квадратной).
У меня проблемы с кодированием инициализатора для этого класса. До сих пор я пытался
def __init__(self, i, j):
self.n = i*w+j
Frame(root, height=50, width=50)
Frame.grid(row=i, column=j)
Frame.grid_propagate(0)
Frame.columnconfigure(0, weight=1)
Frame.rowconfigure(0, weight=1)
Button(Frame, width=50, height=50, command=self.find_numbers())
, где find_numbers определяется позже. Затем я создаю C0, экземпляр Cell. Тем не менее, я получил это сообщение об ошибке:
Traceback (most recent call last):
File "C:/Users/ssbol/Documents/Python Scripts/Minesweeper.py", line 56, in <module>
C0 = Cell(0,0)
File "C:/Users/ssbol/Documents/Python Scripts/Minesweeper.py", line 40, in __init__
Frame.grid(row=i, column=j)
TypeError: grid_configure() missing 1 required positional argument: 'self'
Я не был уверен, как это исправить, поэтому я просто попытался возиться и изменил Frame на self.frame
def __init__(self, i, j):
self.n = i*w+j
self.frame = Frame(root, height=50, width=50)
self.frame.grid(row=i, column=j)
self.frame.grid_propagate(0)
self.frame.columnconfigure(0, weight=1)
self.frame.rowconfigure(0, weight=1)
self.button = Button(Frame, width=50, height=50, command=self.find_numbers())
This время, я получил это сообщение об ошибке:
Traceback (most recent call last):
File "C:/Users/ssbol/Documents/Python Scripts/Minesweeper.py", line 56, in <module>
C0 = Cell(0,0)
File "C:/Users/ssbol/Documents/Python Scripts/Minesweeper.py", line 44, in __init__
self.button = Button(Frame, width=50, height=50, command=self.find_numbers())
File "C:\Users\ssbol\AppData\Local\Programs\Python\Python36\lib\tkinter\__init__.py", line 2369, in __init__
Widget.__init__(self, master, 'button', cnf, kw)
File "C:\Users\ssbol\AppData\Local\Programs\Python\Python36\lib\tkinter\__init__.py", line 2292, in __init__
BaseWidget._setup(self, master, cnf)
File "C:\Users\ssbol\AppData\Local\Programs\Python\Python36\lib\tkinter\__init__.py", line 2262, in _setup
self.tk = master.tk
AttributeError: type object 'Frame' has no attribute 'tk'
Я думаю, что я над головой и не очень понимаю, что влекут за собой эти сообщения об ошибках. Может кто-нибудь объяснить, что это значит и / или предложить решение? Спасибо!