close_callback=self.on_close这是一个意外实参
时间: 2023-12-03 09:02:56 浏览: 78
callback例子
如果您在使用类方法作为`close_callback`参数时遇到了`close_callback=self.on_close`这个错误,可能是因为您没有将`self`作为参数传递给`on_close`方法。
在Python中,类方法的第一个参数通常是`self`,它表示类的实例。当您调用类方法时,Python会自动将该实例作为第一个参数传递给方法。但是,当您将类方法作为回调函数传递给PySimpleGUI时,Python不会自动传递实例参数。因此,您需要将`self`作为参数手动传递给类方法。
以下是一个修正后的示例代码,其中我们将`self`作为参数传递给`on_close`方法:
```python
import PySimpleGUI as sg
class MyGUI:
def __init__(self):
layout = [[sg.Text('Hello from PySimpleGUI')], [sg.Button('Exit')]]
self.window = sg.Window('Window Title', layout, close_callback=self.on_close)
def run(self):
while True:
event, values = self.window.read()
if event in (None, 'Exit'):
break
self.window.close()
def on_close(self, window):
print('Window is closing')
if __name__ == '__main__':
gui = MyGUI()
gui.run()
```
在这个修正后的代码中,我们将`on_close`方法的参数列表中添加了`window`参数,并在创建窗口时将`self`作为第一个参数传递给`on_close`方法。在`on_close`方法中,我们可以使用`window`参数来引用当前窗口对象。
当您需要在类方法中访问类实例时,请始终记得将`self`作为参数手动传递给该方法。
阅读全文