Определить кнопку ОК в Dialog.action_area - PullRequest
1 голос
/ 19 сентября 2011

Я создаю диалог, и в какой-то момент мне нужно переключить чувствительный флаг кнопки ОК (gtk.STOCK_OK). Я успешно получаю доступ к action_area и кнопкам в нем, но как мне определить кнопку OK? Кроме того, есть ли более простой способ включить / отключить кнопку ОК?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 30 сентября 2011

Использование ярлыка должно работать, но оно очень хрупкое;переводы, вероятно, сломают его, и ваши кнопки положительного ответа не всегда будут называться «ОК» в любом случае.Вам следует рассмотреть возможность использования идентификатора ответа для определения соответствующей кнопки.Например, типичная кнопка ОК может быть создана с помощью:

dialog.add_button(gtk.STOCK_OK, gtk.RESPONSE_OK)

Затем вы можете получить свою кнопку ОК позже с помощью вызова get_widget_for_response, который, кажется, идеально разработан для того, чтобы делать именно то, что вы хотите:1005 *

dialog.get_widget_for_response(gtk.RESPONSE_OK)

Я бы предположил, что, вероятно, именно так следует сделать это;это похоже на то, как работает set_alternative_button_order() API, что говорит о том, что это то, что было задумано.

1 голос
/ 19 сентября 2011

должно быть примерно так:

for child in action_area.get_children():
    label = child.get_children()[0]
    if label.get_label() == "OK":
        child.set_sensitive(False)
...