所以即时返回两个输入并希望在另一个函数中使用它们,当我运行代码时,它表示返回代码的函数未定义。知道问题可能是什么?
棋盘类:
class ChessBoard(tk.Frame):
def __init__(self, parent, rows=8, columns=8, size=70, color1="white", color2="lightgrey"):
self.rows = rows
self.columns = columns
self.size = size
self.color1 = color1
self.color2 = color2
self.pieces = {}
返回两个输入的函数:
def UserInput(self): #Tester Function
count = 0
while count < 2:
KingRow = int(input("Choose Row: ")) #mighht not be needed
KingColumn = int(input("Choose Column: ")) #choose the column
return KingRow, KingColumn
count = count + 1
我想在其中使用的功能:
def KingMoves(self, rows, columns):
FinalMove = []
c = ChessBoard(parent)
KingRow, KingColumn = c.UserInput()
FinalMove.append(((KingRow - 1),(KingColumn)))
FinalMove.append(((KingRow + 1),(KingColumn)))
FinalMove.append(((KingRow),(KingColumn + 1)))
FinalMove.append(((KingRow + 1),(KingColumn + 1)))
FinalMove.append(((KingRow - 1),(KingColumn + 1)))
FinalMove.append(((KingRow + 1),(KingColumn - 1)))
FinalMove.append(((KingRow - 1),(KingColumn - 1)))
return FinalMove;
当前错误:
name 'UserInput' is not defined
答案 0 :(得分:1)
首先尝试:how to use a Python function with keyword “self” in arguments
如果不起作用请尝试:
Python类中的函数称为方法。它们通常在其他参数之前采用self
参数。此外,方法不能直接“看到”彼此;您需要将其称为self.method(args)
,而不仅仅是method(args)
。
请参阅,这是我如何调用类中的另一个函数:
def func1(self):
return "Whoop"
def func2(self):
whoop = self.func1()
return whoop
另外,请尝试使用for
语句而不是while
。你也没有,但它的代码行更少,也更容易。
def UserInput(self): #Tester Function
for x in range(0, 2):
KingRow = int(input("Choose Row: ")) #mighht not be needed
KingColumn = int(input("Choose Column: ")) #choose the column
return KingRow, KingColumn
答案 1 :(得分:1)
除非你调用ChessBoard
类,否则Python不知道UserInput
函数的位置/内容。首先调用该类,然后调用其函数:
c = ChessBoard()
KingRow, KingColumn = c.UserInput()