2014-03-31 64 views
0

不能導入名稱glReadPixels錯誤時要採取一個窗口的屏幕截圖在kivy我們可以使用截圖(NAME =「截圖{:04D} png格式」)按照文檔截圖()給出:導入錯誤:在kivy

http://kivy.org/docs/api-kivy.core.window.html?highlight=screenshot#kivy.core.window.WindowBase.screenshot

但是我得到以下錯誤,當我嘗試:

回溯(最後最近一次調用): 文件「d:/ Paarth/Google_Drive /谷歌驅動器/代碼/ Python的/工作/ kivy/kivyBasics /Screenshots_SaveImage.py「,第26行,在 MyApp()。run() 文件」C:\ Kivy-1.8 .0-py2.7-win32 \ Python27 \ lib \ kivy \ app.py「,行766,運行 root = self.build() 文件」D:/ Paarth/Google_Drive/Google Drive/Codes/Python/Work/kivy/kivyBasics/Screenshots_SaveImage.py「,第19行,在build Window.screenshot(name ='screenshot {:04d} .png') 文件」C:\ Kivy-1.8.0-py2.7-win32 \ Python27 \ LIB \ kivy \核心\從kivy.core.gl進口glReadPixels,GL_RGBA,GL_UNSIGNED_BYTE 導入錯誤窗口\ window_pygame.py」,線250,在屏幕截圖 :不能導入名稱glReadPixels

使用代碼:

import kivy 
kivy.require ('1.8.0 ') 
from kivy.app import App 
from kivy.uix.widget import Widget 
from kivy.uix.button import Button 
from kivy.core.window import WindowBase 
from kivy.core.window import Window 


class MyWidget(Widget): 
    pass 

class MyApp(App): 
    def build(self): 
     parent = MyWidget() 

     a = Button(text="hello") 
     parent.add_widget(a) 
     Window.screenshot(name='screenshot{:04d}.png') 

     return parent 


if __name__ == '__main__': 
    MyApp().run() 
+0

你是如何安裝kivy的?你下載了分發zip文件嗎?這是Windows 7嗎? – Matt

+0

是下載壓縮和是它的Windows 7。 –

+0

你是如何運行它的?你從kivy提供的kivy.bat文件運行它嗎?如果沒有,嘗試從那裏運行它,看看你是否得到同樣的問題。 – Matt

回答

0

這似乎是一個錯誤,我已經報道了一個問題。

與此同時(並與您先前的問題相關),您可以通過將其代碼複製到您自己的小部件中,使用新的export_to_png方法,您可以找到代碼on github

+0

好的..謝謝你提出的錯誤,並在我的函數作品中取出export_to_png的代碼 –

1

要澄清由於惡意的答案,您需要執行以下操作,並在您的python文件中包含export_to_png。這

from kivy.graphics import Canvas, Translate, Fbo, ClearColor, ClearBuffers 
kv = ''' 
cameraWidget: 
    orientation: 'vertical' 
    Camera: 
     id: camera 
     resolution: (640, 480) 
     play: False 
    ToggleButton: 
     text: 'Play' 
     on_press: camera.play = not camera.play 
     size_hint_y: None 
     height: '48dp' 
    Button: 
     text: "Take picture" 
     on_press: root.TakePicture() 
     height: '48dp' 

''' 
class cameraWidget(BoxLayout): 
    def TakePicture(self, *args): 
     self.export_to_png = export_to_png 
     self.export_to_png(self.ids.camera, filename='test2.png') 

class MyApp(App): 
    def build(self): 
     return Builder.load_string(kv) 

if __name__ == '__main__': 
    MyApp().run() 
0

你可以在kivy.graphics.opengl找到glReadPixels。 在Python解釋器中嘗試以下操作:

>>> from kivy.graphics.opengl import glReadPixels