您在下面找到的代码已缩短,因此您无需阅读我的整个代码。我提供了一些代码,我觉得这些代码能够解决我的问题。
所以这是我的一个课程:
class Terminal(Pane):
def setText(self, text):
self.text = text
self.text_changed = True
mac = "bobbyli"
Application.monitorInput(mac)
这是另一个类:
class Application(Terminal):
def monitorInput(self, text):
clock = pygame.time.Clock()
RUNNING = True
while RUNNING:
for event in pygame.event.get():
if event.type == pygame.QUIT:
RUNNING = False
break
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
self.show_keyboard = not self.show_keyboard
self.show_panes = not self.show_panes
if event.type == pygame.MOUSEBUTTONUP:
#took away bits you didn't need
elif textSelected == "OK":
with open("setPhrases.txt", 'r') as infile:
data = infile.read()
print(data)
print("Bob")
print(text)
print("Bob")
self.deletePanes()
self.createPhrases()
# --- draws terminal to reflect the additions ---
if self.show_terminal:
self.terminal.draw()
self.close()
这就是我运行代码的方式:
myApp = Application()
#start the monitoring of events on screen
myApp.monitorInput('')
所以我的问题是,每当我尝试将mac
传递到Application
,并尝试从代码的这一行打印时,我最终打印Bob\n (empty space)\n Bob
:
elif textSelected == "OK":
with open("setPhrases.txt", 'r') as infile:
data = infile.read()
print(data)
print("Bob")
print(text)
print("Bob")
self.deletePanes()
self.createPhrases()
为什么它没有传递给text
。我究竟做错了什么?请帮我解决问题。老实说,我不知道我做错了什么。我以前在我的代码的另一部分中已经完成了这个并且它工作正常但是我确信我必须做出错误/不同的事情,而不是代码的那部分。
答案 0 :(得分:0)
致电myApp.monitorInput('')
后,方法text
的本地变量Application.monitorInput
将设置为''
,且不会更改。对monitorInput
的后续调用只是重新运行相同的函数(在不同的帧上使用不同的本地),但如果第一个仍然在运行(由于循环),那么第一个方法text
内部仍然是''
。
顺便说一句Application.monitorInput(mac)
应该引发错误,因为它错过了一个位置参数(因为你在类上运行而不是在实例上运行,因此self
没有绑定)。
为了说明这一点:
class Application:
def monitorInput(self, text):
print ('here be dragons')
myApp = Application()
myApp.monitorInput ('bobby')
Application.monitorInput ('bobby') #exception here
引发:
Traceback (most recent call last):
File "./amt.py", line 9, in <module>
Application.monitorInput ('bobby')
TypeError: monitorInput() missing 1 required positional argument: 'text'