2013-12-24 2 views
0

я пытаюсь сделать функцию скриншота, , но каждый раз я стараюсь, это дает мне эту ошибку:Ошибка на Panda3D

Traceback (most recent call last): 
    File "C:\Panda3D-1.8.1\direct\showbase\EventManager.py", line 61, in eventLoop 
Task 
    self.doEvents() 
    File "C:\Panda3D-1.8.1\direct\showbase\EventManager.py", line 55, in doEvents 
    processFunc(self.eventQueue.dequeueEvent()) 
    File "C:\Panda3D-1.8.1\direct\showbase\EventManager.py", line 122, in processE 
vent 
    messenger.send(eventName, paramList) 
    File "C:\Panda3D-1.8.1\direct\showbase\Messenger.py", line 397, in send 
    self.__dispatch(acceptorDict, event, sentArgs, foundWatch) 
    File "C:\Panda3D-1.8.1\direct\showbase\Messenger.py", line 482, in __dispatch 
    method (*(extraArgs + sentArgs)) 
    File "C:\Panda3D-1.8.1\direct\showbase\ShowBase.py", line 2317, in __oobeButto 
n 
    messenger.send(button + suffix) 
    File "C:\Panda3D-1.8.1\direct\showbase\Messenger.py", line 397, in send 
    self.__dispatch(acceptorDict, event, sentArgs, foundWatch) 
    File "C:\Panda3D-1.8.1\direct\showbase\Messenger.py", line 482, in __dispatch 
    method (*(extraArgs + sentArgs)) 
TypeError: Screenie() takes exactly 1 argument (0 given) 
:task(error): Exception occurred in PythonTask eventManager 
Traceback (most recent call last): 
    File "Play.py", line 791, in <module> 
    run() 
    File "C:\Panda3D-1.8.1\direct\showbase\ShowBase.py", line 2921, in run 
    self.taskMgr.run() 
    File "C:\Panda3D-1.8.1\direct\task\Task.py", line 502, in run 
    self.step() 
    File "C:\Panda3D-1.8.1\direct\task\Task.py", line 460, in step 
    self.mgr.poll() 
    File "C:\Panda3D-1.8.1\direct\showbase\EventManager.py", line 61, in eventLoop 
Task 
    self.doEvents() 
    File "C:\Panda3D-1.8.1\direct\showbase\EventManager.py", line 55, in doEvents 
    processFunc(self.eventQueue.dequeueEvent()) 
    File "C:\Panda3D-1.8.1\direct\showbase\EventManager.py", line 122, in processE 
vent 
    messenger.send(eventName, paramList) 
    File "C:\Panda3D-1.8.1\direct\showbase\Messenger.py", line 397, in send 
    self.__dispatch(acceptorDict, event, sentArgs, foundWatch) 
    File "C:\Panda3D-1.8.1\direct\showbase\Messenger.py", line 482, in __dispatch 
    method (*(extraArgs + sentArgs)) 
    File "C:\Panda3D-1.8.1\direct\showbase\ShowBase.py", line 2317, in __oobeButto 
n 
    messenger.send(button + suffix) 
    File "C:\Panda3D-1.8.1\direct\showbase\Messenger.py", line 397, in send 
    self.__dispatch(acceptorDict, event, sentArgs, foundWatch) 
    File "C:\Panda3D-1.8.1\direct\showbase\Messenger.py", line 482, in __dispatch 
    method (*(extraArgs + sentArgs)) 
TypeError: Screenie() takes exactly 1 argument (0 given) 

Heres часть, которая делает скриншоты

def Screenie(self): 
file_name = Filename('whatever.png') 

self.win.saveScreenshot(file_name) 

    base.accept('f9', Screenie) 
Может

кого-то скажи мне, что с этим не так? Я пытаюсь исправить это, но не могу понять, что делать ...

ответ

2

ошибка вполне ясно

TypeError: Screenie() takes exactly 1 argument (0 given)

Ваш Screenie функция принимает один аргумент (self), но все, что называя это, сделал это, не давая никаких аргументов (то есть Screenie() вместо Screenie(obj)).

Ваш выбор self как аргумент Screenie заставляет меня думать, что это метод класса. В таком случае у вас должно быть что-то вроде этого.

class SomeCLass(object): 
    # <snip> 
    def Screenie(self): 
     file_name = Filename('whatever.png') 
     self.win.saveScreenshot(file_name) 

# Create instance 
instance = SomeClass() 

# Bind keypress to bound method on instance 
base.accept('f9', instance.Screenie) 

Это гарантирует, что self аргумент Screenie связан с instance объекта, и ваш код должен работать.

+0

Это сработало. Большое спасибо! – user3109748

+0

Тогда, пожалуйста, примите это как ответ, и счастливые праздники! –

Смежные вопросы