PyGObject MessageDialog - PyGTKDeprecationWarning - Не уверен, что делать - PullRequest
0 голосов
/ 24 сентября 2018

Я использую PyGObject 3.30 и хочу отобразить простой MessageDialog.Это мой исходный код:

def report_error(self, reason):
    dialog = Gtk.MessageDialog(Gtk.Window(), 0, Gtk.MessageType.INFO, Gtk.ButtonsType.OK, "Something went wrong")
    dialog.format_secondary_text(reason)
    dialog.run()
    dialog.destroy()

Это работает, и MessageDialog всплывает и может быть отклонен, нажав на кнопку.Однако в моем терминале я получаю это сообщение об ошибке:

.../main.py:84: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "parent, flags, message_type, buttons, message_format" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
      dialog = Gtk.MessageDialog(Gtk.Window(), 0, Gtk.MessageType.INFO, Gtk.ButtonsType.OK, "Something went wrong")
...main.py:84: PyGTKDeprecationWarning: The keyword(s) "message_format" have been deprecated in favor of "text" respectively. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
      dialog = Gtk.MessageDialog(Gtk.Window(), 0, Gtk.MessageType.INFO, Gtk.ButtonsType.OK, "Something went wrong")

Так что же это значит?Я не знаю никакого C. Я понятия не имею, что это значит?Я даже не использую "message_format", например.Почему он жалуется на это?Как я могу исправить ошибку устаревания?Я полностью потерян здесь, абсолютно не имея возможности узнать, что делатьВ каком направлении смотреть.

Я даже посмотрел пример исходного кода PyGObject, и диалог был сделан так же, как у меня.В примере использовалось «self» вместо «Gtk.Window ()», но «self» просто выдало мне ошибку, поэтому я использовал «Gtk.Window ()».

Может кто-нибудь дать мнеболее подробное описание проблемы?

Большое спасибо заранее!

1 Ответ

0 голосов
/ 25 сентября 2018

Ответ - это все в предупреждающем сообщении, он говорит вам, что используя позиционный аргумент, он устарел и что вы должны «назвать» каждый аргумент

def report_error(self, reason):
    dialog = Gtk.MessageDialog(parent=Gtk.Window(), flags=0, message_type=Gtk.MessageType.INFO, buttons=Gtk.ButtonsType.OK, text="Something went wrong")
    dialog.format_secondary_text(reason)
    dialog.run()
    dialog.destroy()
...