2017-03-04 4 views
0

ich ein gtkglarea zu verwenden Ich versuche ein 3D-Visualizer mit diesem Code zu erstellen:Kein glcontext für gtkglarea in gtk3 Python

import gi 
gi.require_version('Gtk', '3.0') 
from gi.repository import Gtk, GdkPixbuf, Gdk 
import os, sys 

UI_FILE = "src/pygtk_gtkglarea.ui" 

class GUI: 
    def __init__(self): 

     self.builder = Gtk.Builder() 
     self.builder.add_from_file(UI_FILE) 
     self.builder.connect_signals(self) 

     gl_area = Gtk.GLArea() 
     gl_area.connect('render', self.area_render) 
     box = self.builder.get_object('box1') 
     box.pack_end(gl_area, True, True, 0) 

     window = self.builder.get_object('window') 
     window.show_all() 

    def area_render(self, gl_area, gl_context): 
     print gl_area 
     print gl_context 
     return True 

    def on_window_destroy(self, window): 
     Gtk.main_quit() 

def main(): 
    app = GUI() 
    Gtk.main() 

if __name__ == "__main__": 
    sys.exit(main()) 

und die ui-Datei:

<?xml version="1.0" encoding="UTF-8"?> 
<!-- Generated with glade 3.18.3 --> 
<interface> 
    <requires lib="gtk+" version="3.0"/> 
    <object class="GtkWindow" id="window"> 
    <property name="visible">True</property> 
    <property name="can_focus">False</property> 
    <property name="title" translatable="yes">window</property> 
    <property name="default_width">500</property> 
    <property name="default_height">400</property> 
    <signal name="destroy" handler="on_window_destroy" swapped="no"/> 
    <child> 
     <object class="GtkBox" id="box1"> 
     <property name="visible">True</property> 
     <property name="can_focus">False</property> 
     <property name="orientation">vertical</property> 
     <child> 
      <placeholder/> 
     </child> 
     </object> 
    </child> 
    </object> 
</interface> 

Allerdings, wenn ich laufen die App zeigt ein Fenster mit dem Text Konnte keinen GL Kontext darin erstellen. Irgendwelche Vorschläge?

Antwort

0

So fand ich die Antwort von Googeln Konnte kein GL Kontext erstellen. Es scheint, dass die meisten Leute, die diesen Fehler haben, alte Hardware laufen lassen. Also habe ich meinen neueren Computer ausprobiert (den ich nicht mag). Voila! Jetzt bekomme ich ein Fenster, das funktioniert.

+2

Sie benötigen mindestens GTK + 3.20, um eine Fallback-Unterstützung für ältere GL-Kontexte zu ermöglichen. – ebassi

Verwandte Themen