diff --git a/modules/gui/pymod/export_widget.cc b/modules/gui/pymod/export_widget.cc
index 7eca6987c0d7c6db6dc31a86077cb43046b59dae..0834cec320d4fbe31425328066c3ad6b66d35529 100644
--- a/modules/gui/pymod/export_widget.cc
+++ b/modules/gui/pymod/export_widget.cc
@@ -37,8 +37,12 @@ using namespace ost::gui;
 
 struct WrappedWidget : public Widget
 {
-  WrappedWidget(PyObject *p, QObject* object):
-       Widget(dynamic_cast<QWidget*>(object)){ }
+  WrappedWidget(PyObject *p, object py_object):
+       Widget(NULL,NULL){
+    if(QWidget* widget = get_cpp_qobject<QWidget>(py_object)){
+      this->SetInternalWidget(widget);
+    }
+  }
 
   virtual bool Restore(const QString& prefix){return true;}
 
@@ -50,11 +54,13 @@ struct WrappedWidget : public Widget
 
 void export_Widget()
 {
-  class_<Widget, WrappedWidget, boost::noncopyable>("WrappedWidget",init<QObject*>())
+  class_<Widget, WrappedWidget, boost::noncopyable>("WrappedWidget",init<object>())
     .def("Save", &WrappedWidget::Save)
     .def("Restore", &WrappedWidget::Restore)
     .def("SetDestroyOnClose", &WrappedWidget::SetDestroyOnClose)
     .def("DestroyOnClose", &WrappedWidget::DestroyOnClose)
+    .def("GetQObject",&get_py_qobject<Widget>)
+    .add_property("qobject", &get_py_qobject<Widget>)
   ;
 }