Python GTK+ 3 открывает только диалоговое окно выбора файла?Python

Программы на Python
Ответить
Anonymous
 Python GTK+ 3 открывает только диалоговое окно выбора файла?

Сообщение Anonymous »

Я пытаюсь создать программу, использующую диалог Gtk FileChooserDialog. Я следовал инструкциям здесь, и это работает. Однако мне бы хотелось, чтобы просто появлялось диалоговое окно и не приходилось иметь дело с самим окном Gtk.

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

Код: Выделить всё

class FileChooserWindow(Gtk.Window):

def __init__(self):
global path

dialog = Gtk.FileChooserDialog("Please choose a file", self,
Gtk.FileChooserAction.OPEN,
(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
Gtk.STOCK_OPEN, Gtk.ResponseType.OK))

self.add_filters(dialog)

response = dialog.run()
if response == Gtk.ResponseType.OK:
print("Open clicked")
print("File selected: " + dialog.get_filename())
path = dialog.get_filename()
dialog.destroy()
elif response == Gtk.ResponseType.CANCEL:
print("Cancel clicked")
dialog.destroy()

def add_filters(self, dialog):
filter_any = Gtk.FileFilter()
filter_any.set_name("Any files")
filter_any.add_pattern("*")
dialog.add_filter(filter_any)

filter_text = Gtk.FileFilter()
filter_text.set_name('Text files')
filter_text.add_mime_type('text/plain')
dialog.add_filter(filter_text)

filter_py = Gtk.FileFilter()
filter_py.set_name('Python files')
filter_py.add_mime_type('text/x-python')
dialog.add_filter(filter_py)

filter_img = Gtk.FileFilter()
filter_img.set_name('Image')
filter_img.add_mime_type('image/*')
dialog.add_filter(filter_img)

win = FileChooserWindow()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()
но он просто возвращает эту ошибку:

Код: Выделить всё

Traceback (most recent call last):
File "base.py", line 152, in 
win = FileChooserWindow()
File "base.py", line 38, in __init__
Gtk.STOCK_OPEN, Gtk.ResponseType.OK))
File "/usr/lib/python3/dist-packages/gi/overrides/__init__.py", line 175, in new_init
return super_init_func(self, **new_kwargs)
File "/usr/lib/python3/dist-packages/gi/overrides/Gtk.py", line 500, in __init__
self._init(*args, **new_kwargs)
File "/usr/lib/python3/dist-packages/gi/overrides/__init__.py", line 175, in new_init
return super_init_func(self, **new_kwargs)
File "/usr/lib/python3/dist-packages/gi/overrides/__init__.py", line 175, in new_init
return super_init_func(self, **new_kwargs)
TypeError: could not convert value for property `transient_for' from FileChooserWindow to GtkWindow
Кто-нибудь знает правильный метод вызова просто диалогового окна Gtk FileChooserDialog?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»