Seite 1 von 1
Verfasst: Montag 21. Februar 2005, 19:23
von mawe
Hi!
Funktioniert das eigentlich?
Code: Alles auswählen
import pygtk
pygtk.require('2.0')
import gtk
def a(widget):
dlg.destroy()
dlg = gtk.Dialog("hallo")
label = gtk.Label("hii")
dlg.vbox.pack_start(label)
button = gtk.Button(stock=gtk.STOCK_OK)
button.connect("clicked", a)
dlg.action_area.add(button)
dlg.show_all()
dlg.run()
Gruß, mawe
Verfasst: Montag 21. Februar 2005, 19:37
von Leonidas
Nun, ich habe jetzt eigentlich auch keine Ideen mehr:
Code: Alles auswählen
#!/usr/bin/env python
# -*- encoding: latin-1 -*-
import pygtk
pygtk.require("2.0")
import gtk
def slg():
print 'called slg'
dlg = gtk.Dialog("rock mich", None, 0,
(gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE))
print 'created dlg'
dlg.connect("delete_event", delete_event)
chosen = dlg.run()
print 'run dlg'
dlg.destroy()
dlg.hide()
print 'destroyed dlg'
return chosen
def delete_event(dialog, event):
dialog.hide()
response = slg()
print 'left slg'
print response == gtk.RESPONSE_CLOSE
Habe noch das delete_event eingebaut. Aber ich kann halt dein Problem bei mir aus irgendwelchen Gründen nicht nachvollziehen.
Verfasst: Montag 21. Februar 2005, 20:20
von hehejo
Und wieder nicht.
Aber ich danke die für deine Mühe.
Ich glaub wir haben beide das gleiche Problem:
Wir sehen "perfekten" Code aber hier bei mir will er einfach nicht.
Vll. fällt Dookie ja noch was auf.
--
Aber noch eine Frage zum gtk.Window.
Was sind denn die richitgen "Close"-Funktionen. Bisher habe ich das immer so:
Code: Alles auswählen
import pygtk; pygtk.require("2.0")
import gtk
class Fenster:
def __init__(self):
self.__window = gtk.Window(gtk.WINDOW_TOPLEVEL)
#bitte jetzt die richtigen Varianten zeigen
self.__window.connect("destroy", lambda widget: gtk.main_quit())
self.__window.connect("delete_event", lambda widget,event:gtk.main_quit())
#delete_event sollte doch eigentlich "False" zurückgeben, oder?
self.__btn_quit = gtk.Button(stock=gtk.STOCK_CLOSE)
self.__btn_quit.connect("clicked", self.__click)
self.__window.add(self.__btn_quit)
self.__btn_quit.show()
self.__window.show()
gtk.main()
def __click(self, widget, event=None, data=None):
if widget = self.__btn_quit:
self.__window.hide()
gtk.main_quit()
Und hier funktioniert das Schließen per Button auch nur, wenn ich
self.__window.hide() ausführe.
Wenn ich "self.__window.hide()" weglasse und statt "self.__btn_quit.connect" "self.__btn_quit.connect_after" nutze, bleibt der Dialog auch hängen..
strange
Verfasst: Samstag 26. Februar 2005, 23:43
von Leonidas
Also bei mir geht schon das:
Code: Alles auswählen
#!/usr/bin/env python
# -*- encoding: latin-1 -*-
import pygtk; pygtk.require("2.0")
import gtk
class Fenster:
def __init__(self):
self.__window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.__window.connect("delete_event", lambda widget,event: gtk.main_quit())
self.__btn_quit = gtk.Button(stock=gtk.STOCK_CLOSE)
self.__btn_quit.connect("clicked", self.__click)
self.__window.add(self.__btn_quit)
self.__window.show_all()
gtk.main()
def __click(self, widget, event=None, data=None):
if widget == self.__btn_quit:
gtk.main_quit()
Fenster()
Also irgendwie ist deine GTK+ Installation seltsam. Vielleicht GTK+2, PyGTK neuinstallieren?
EDIT by mawe: Doppelpost gelöscht
es funktioniert!
Verfasst: Donnerstag 3. März 2005, 22:58
von hehejo
Code: Alles auswählen
#!/usr/bin/env python
# -*- encoding: latin-1 -*-
import pygtk
pygtk.require("2.0")
import gtk
def slg():
print 'called slg'
dlg = gtk.Dialog("rock mich", None, 0,
(gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE))
print 'created dlg'
dlg.connect("delete_event", delete_event)
chosen = dlg.run()
print 'run dlg'
dlg.destroy()
dlg.hide()
print 'destroyed dlg'
return chosen
def delete_event(dialog, event):
dialog.hide()
response = slg()
print 'left slg'
print response == gtk.RESPONSE_CLOSE
bringt nun auch bei mir Folgendes:
Code: Alles auswählen
[tmp] python dialog.py
called slg
created dlg
run dlg
destroyed dlg
left slg
True
[tmp]
Ich habe nichts neu installiert. Beim Update hat sich meine Version von gtk von
auf
erhöht!
Ich freu mich![/code]