Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Разработка GUI > PyGTK + Диалог открытия файла с предпросмотром


Автор: pento 4.8.2007, 14:27
Делаю менеджер обоев для рабочего стола. PyGTK. 
Интерфейс рисую в Glade.
Не совсем понимаю как в диалоге выбора фала сделать предпросмотр, дабы сразу можно было показать уменьшенную копию картинки.

Автор: pythonwin 7.8.2007, 08:15
стандартный не нашел...
сделай так:
- в glade возьми виджет окна файлов
- к нему добавь страва рисунок
- и на selected повесь событие, а в коде на событие законекть метод, который будет брать имя файла и пытаться отобразить в рисунке в окне файлов

Автор: pento 7.8.2007, 08:23
pythonwin, ну в принципе так и предлологал, но не был уверен. Спасибо!

Автор: pythonwin 7.8.2007, 08:29
Цитата(pento @  7.8.2007,  11:23 Найти цитируемый пост)
pythonwin, ну в принципе так и предлологал, но не был уверен. Спасибо! 

как решишь проблему выложи, пожалуйста, код smile

Автор: pento 8.8.2007, 20:02
pythonwin, проблему решил smile
http://pygtk.org/docs/pygtk/class-gtkfilechooser.html
См методы
Код

def set_preview_widget(preview_widget)
def get_preview_widget()
def set_preview_widget_active(active)
def get_preview_widget_active()
def get_preview_filename()


Получилось что-то типа 
Код

# ....
    self.chooser = gtk.FileChooserDialog(title=None,action=gtk.FILE_CHOOSER_ACTION_OPEN, 
                buttons=(gtk.STOCK_CANCEL,gtk.RESPONSE_CANCEL,gtk.STOCK_OPEN,gtk.RESPONSE_OK))
        self.chooser.set_current_folder(os.environ['HOME'])
        self.chooser.set_default_response(gtk.RESPONSE_OK)

        filter = gtk.FileFilter()
        filter.set_name("Images")
        filter.add_mime_type("image/png")
        filter.add_mime_type("image/jpeg")
        filter.add_mime_type("image/gif")
        filter.add_pattern("*.png")
        filter.add_pattern("*.jpg")
        filter.add_pattern("*.gif")
        filter.add_pattern("*.tif")
        filter.add_pattern("*.xpm")
        self.chooser.add_filter(filter)
        # preview of selected file
        self.previewBox = gtk.VBox(False, 0)
        self.previewImage = gtk.Image()
        self.previewBox.pack_start(self.previewImage, True, False, 0)
        self.previewBox.show_all()
        self.chooser.set_preview_widget_active(False)

        self.chooser.set_preview_widget(self.previewBox)
        self.chooser.set_use_preview_label(False)
        self.chooser.connect("selection-changed", self.onSelection)
# ....
    def onSelection(self, widget):
        pathname = widget.get_preview_filename()
        if (os.path.isfile(pathname)):
            self.previewImage.set_from_file(pathname)
            self.chooser.set_preview_widget_active(True)
        else:
            self.chooser.set_preview_widget_active(False)



P.S. Переделал код. Оказалось всё ещё проще и по ссылке даже пример есть smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)