Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

gtk filechooserdialog'da garip hata

Konu, 'Python / Zope' kısmında bsod1 tarafından paylaşıldı.

  1. bsod1

    bsod1 Üye

    Kayıt:
    3 Temmuz 2009
    Mesajlar:
    173
    Beğenilen Mesajlar:
    0
    Kod:
    # -*- coding: utf-8 -*-
    import gtk
    
    class Gui:
        def __init__(self):
            window = gtk.Window()
            window.connect("destroy", lambda w: gtk.main_quit())
            window.move(500, 100)
            window.set_default_size(400, 100)
    
            vbox = gtk.VBox(False, 6)
            hbox = gtk.HBox(False, 2)
            self.scrolledwindow = gtk.ScrolledWindow()
            self.scrolledwindow.set_policy(gtk.POLICY_AUTOMATIC,
                                           gtk.POLICY_AUTOMATIC)
            self.textbuffer = gtk.TextBuffer()
            self.insert_mark = self.textbuffer.get_insert()        
    
            self.entry = gtk.Entry()
            self.entry.set_text("")
            self.browsebutton = gtk.Button(u"Gözat")
            self.browsebutton.connect("clicked", self.browse)
            hbox.pack_start(self.entry, True, True, 0)
            hbox.pack_end(self.browsebutton, False, False, 0)
    
            hbox2 = gtk.HBox(False, 2)
            self.new_folder = gtk.Entry()
            self.new_folder.set_text("")
            self.new_folder.set_sensitive(False)
            
            self.browse_new_folder = gtk.Button(u"Gözat")
            self.browse_new_folder.connect("clicked", self.browse)
            self.browse_new_folder.set_sensitive(False)
            hbox2.pack_start(self.new_folder, True, True, 0)
            hbox2.pack_end(self.browse_new_folder, False, False, 0)
            
            
            self.check_ayniKlasor = gtk.CheckButton(
                u"Aynı klasörde düzenle")
            self.check_ayniKlasor.set_active(True)
            self.check_ayniKlasor.connect("toggled", self.toggled)
            self.baslaButton = gtk.Button(u"Başla")
            self.baslaButton.connect("clicked", self.basla)
            self.textview = gtk.TextView(self.textbuffer)
            self.textview.set_cursor_visible(False)
            self.textview.set_editable(False)
            #self.textview.set_border_window_size(gtk.TEXT_WINDOW_LEFT, 50)
    
            self.filechooserdialog = gtk.FileChooserDialog("FileChooserDialog",
                                                           None,
                                                           gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,
                                                           (gtk.STOCK_CANCEL,
                                                            gtk.RESPONSE_CANCEL,
                                                            gtk.STOCK_OK,
                                                            gtk.RESPONSE_OK))
            #self.filechooserdialog.connect()
    
            vbox.pack_start(hbox, False, False, 0)
            vbox.pack_start(self.check_ayniKlasor, False, False, 0)
            vbox.pack_start(hbox2, False, False, 0)
            vbox.pack_start(self.scrolledwindow, True, True, 0)
            #vbox.pack_start(self.textview, False, False, 0)
            vbox.pack_end(self.baslaButton, False, False, 0)
            self.scrolledwindow.add(self.textview)
            
            window.add(vbox)
            window.show_all()
    
        def browse(self, widget):
            response = self.filechooserdialog.run()
            if response == gtk.RESPONSE_OK:
                folder = self.filechooserdialog.get_filename()
                if widget == self.browsebutton:
                    self.entry.set_text(folder)
                elif widget == self.browse_new_folder:
                    self.new_folder.set_text(folder)
                self.filechooserdialog.destroy()
    
        def toggled(self, widget):            
            if self.new_folder.get_sensitive():
                self.new_folder.set_sensitive(False)
                self.browse_new_folder.set_sensitive(False)
            else:
                self.new_folder.set_sensitive(True)
                self.browse_new_folder.set_sensitive(True)
    
        def basla(self, widget):
            self.textbuffer.place_cursor(
                self.textbuffer.get_end_iter())
            self.textbuffer.insert_at_cursor(
                "%s klasorunde isleme baslaniyor..\n" % self.entry.get_text())
            self.textview.scroll_to_mark(self.insert_mark, 0.4)
    
    Gui()
    gtk.main()
    yukarıdaki kodda filechooserdialog'u açtıktan sonra, ok veya cancel tuşuyla kapadıktan sonra bir daha açmaya(gözat) tıklayınca program herhangi bir mesaj veya exception vermeden kapanıyor, bir fikri olan var mı?
     
  2. bsod1

    bsod1 Üye

    Kayıt:
    3 Temmuz 2009
    Mesajlar:
    173
    Beğenilen Mesajlar:
    0
    Neyse, gtk kullanan yok herhalde, irc.gnome.org daki #pygtk kanalından birisi çözdü sorunu. filechooserdialog.destroy() yaptığımda, bir daha onu çağıramıyormuşum, dolayısıyla destroy() yerine hide()'ı çağırmalıymışım.