Может ли диалог выбора файлов GTK быть частью окна?

Диалоги выбора файлов выглядят так:

введите описание изображения здесь

Но возможно ли иметь полноэкранное окно, чтобы оно занимало, скажем, половину этого окна, а не было его собственным окном?

0

Решение

Ты можешь использовать GtkFileChooserWidget (Гткмм 2,24).

Это основной виджет, который использует GtkFileChooserDialog. Как сказано в описании:

GtkFileChooserWidget — это виджет, подходящий для выбора файлов. это
основной строительный блок GtkFileChooserDialog. Большинство приложений
нужно будет только использовать последний; Вы можете использовать GtkFileChooserWidget как
часть большего окна, если у вас есть особые потребности.

Обратите внимание, что GtkFileChooserWidget не имеет собственных методов.
Вместо этого вы должны использовать функции, которые работают на GtkFileChooser.

1

Другие решения

Обратите внимание, что если вы хотите добавить в FileChooserDialog не слишком сложно, вы можете рассмотреть возможность добавления дополнительной функциональности к самому диалогу вместо создания нового окна (со всей бюрократией).

Вы можете получить доступ к верхней части диалога (над кнопками Ok / Cancel), вызвав get_content_area (), Вы получите ссылку на VBox, к которому вы можете добавить дополнительные элементы, такие как параметры загрузки или сохранения, форматы и т. Д.

Вот очень простой пример, который добавляет кнопку проверки в диалог:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
#  test_filechooser_extension.py
#
#  Copyright 2017 John Coppens <[email protected]>
#
#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with this program; if not, write to the Free Software
#  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
#  MA 02110-1301, USA.
#
#from gi.repository import Gtk

class MainWindow(Gtk.Window):
def __init__(self):
super(MainWindow, self).__init__()
self.connect("destroy", lambda x: Gtk.main_quit())

btn = Gtk.Button("Click to activate file chooser")
btn.connect("clicked", self.button_clicked)

self.add(btn)
self.show_all()

def run(self):
Gtk.main()

def button_clicked(self, btn):
fc = Gtk.FileChooserDialog(
parent = self,
action = Gtk.FileChooserAction.OPEN,
buttons = ("Open", Gtk.ResponseType.OK,
"Cancel", Gtk.ResponseType.CANCEL))
area = fc.get_content_area()
option = Gtk.CheckButton("This could be an extra option")
area.pack_start(option, False, False, 0)
option.show()

fc.run()
fc.destroy()def main(args):
mainwdw = MainWindow()
mainwdw.run()

return 0

if __name__ == '__main__':
import sys
sys.exit(main(sys.argv))

Обратите внимание, что необходимо добавить .show() к добавленным виджетам.

1

По вопросам рекламы [email protected]