Ich wollte eigentlich eine Frage zum Vererben schreiben, und zwar ob dass nicht einfacher geht wenn ich mir wir unten zu sehen verschiedene Klassen schreiben will die von Gtk.MessageDialog erben. Ziele sind Hinweise, Fragen und Warnungen wie ich mit einem einfachen aufruf starte statt in jedem Skript wieder neu zu definieren.
Nun bekomme ich des leider nicht mehr ans laufen wegen dieser Fehlermeldung und ich komme nicht dahinter:
Code: Alles auswählen
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import logging
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
logger = logging.getLogger("Dialog")
class Dialog(Gtk.MessageDialog):
def __init__(self,
title=None,
text="",
parent=Gtk.Window(), #bad
flags=Gtk.DialogFlags.MODAL,
widget=Gtk.MessageType.QUESTION,
response_buttons=(Gtk.ButtonsType.YES_NO),
buttons=[],
icon=None
):
Gtk.MessageDialog.__init__(
self,
parent,
flags,
widget,
response_buttons,
text)
if title:
self.set_title(title)
if icon:
self.set_icon(icon)
if buttons:
content_area = self.get_content_area()
for b in buttons:
content_area.pack_start(b, True, True, 0)
content_area.show()
b.show()
class GetTextDialog(Dialog):
def __init__(self,
title=None,
text="",
parent=Gtk.Window(), #bad
flags=Gtk.DialogFlags.MODAL,
widget=Gtk.MessageType.QUESTION,
buttons=[],
icon=None
):
response_buttons = (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
Gtk.STOCK_OK, Gtk.ResponseType.OK)
Gtk.Dialog.__init__(
self,
title=title,
text=text,
parent=parent,
flags=flags,
widget=widget,
response_buttons=response_buttons,
buttons=buttons,
icon=icon
)
self.set_default_response(Gtk.ResponseType.OK)
self.ok_button = self.get_widget_for_response(Gtk.ResponseType.OK)
label = Gtk.Label(label=text)
self.entry = Gtk.Entry()
self.entry.set_activates_default(True)
box = self.get_content_area()
box.add(label)
box.add(self.entry)
self.show_all()
def get_text(self):
response = self.run()
entry_text = self.entry.get_text()
self.hide()
if response == Gtk.ResponseType.OK:
return entry_text
Traceback (most recent call last):
File "Dialog.py", line 250, in <module>
GetTextDialog(text="some text")
File "Dialog.py", line 117, in __init__
icon=icon
File "/usr/lib/python2.7/dist-packages/gi/overrides/Gtk.py", line 537, in __init__
self._init(*args, **new_kwargs)
File "/usr/lib/python2.7/dist-packages/gi/overrides/__init__.py", line 326, in new_init
return super_init_func(self, **new_kwargs)
File "/usr/lib/python2.7/dist-packages/gi/overrides/__init__.py", line 326, in new_init
return super_init_func(self, **new_kwargs)
TypeError: gobject `__main__+GetTextDialog' doesn't support property `widget'