Gtk.ResponseType
това е малък набор от предварително дефинирани стойности. Това са отрицателни стойности, докато положителните стойности (включително нула) са оставени за разработчиците на приложения, за да ги използват при необходимост. От документация:
Предварително дефинирани стойности за използване като идентификатори на отговор в Gtk.Dialog.add_button(). Всички предварително дефинирани стойности са отрицателни; GTK+ оставя стойности от 0 или по-големи за идентификатори на отговори, дефинирани от приложението.
Така че, когато добавяте бутони към диалоговия прозорец, вместо да използвате предварително дефинирания Gtk.ResponseType, можете да използвате свой собствен набор от стойности на отговора.
Нека вземем този пример от урок за python-gtk3 и добавете трета опция с нашата собствена стойност на типа отговор :
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
class DialogExample(Gtk.Dialog):
def __init__(self, parent):
Gtk.Dialog.__init__(self, "My Dialog", parent, 0,
(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
Gtk.STOCK_OK, Gtk.ResponseType.OK, "OPTION 3", 1))
self.set_default_size(150, 100)
label = Gtk.Label("This is a dialog to display additional information")
box = self.get_content_area()
box.add(label)
self.show_all()
class DialogWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title="Dialog Example")
self.set_border_width(6)
button = Gtk.Button("Open dialog")
button.connect("clicked", self.on_button_clicked)
self.add(button)
def on_button_clicked(self, widget):
dialog = DialogExample(self)
response = dialog.run()
if response == Gtk.ResponseType.OK:
print("The OK button was clicked")
elif response == Gtk.ResponseType.CANCEL:
print("The Cancel button was clicked")
elif response == 1:
print("OPTION 3 was clicked")
dialog.destroy()
win = DialogWindow()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()
Какво беше направено?
Добавихме трети бутон с етикет ОПЦИЯ 3, който има стойност на идентификатора на отговора 1
:
Gtk.Dialog.__init__(self, "My Dialog", parent, 0,
(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
Gtk.STOCK_OK, Gtk.ResponseType.OK, "OPTION 3", 1))
След това, когато обработваме отговора, можем да проверим за тази стойност на идентификатора на отговора и да направим нещо различно:
...
print("The Cancel button was clicked")
elif response == 1:
print("OPTION 3 was clicked")
...
Можете да създадете свой собствен изброен набор от стойности на положителен отговор и да ги използвате според нуждите (включително нула). Късмет.
РЕДАКТИРАНЕ:
В glade, когато използвате бутони, можете да зададете стойността на response_id
като цяло число. Намира се в раздела с общи настройки на джаджата.
person
José Fonte
schedule
01.12.2017