약간 개선 된 버전 :
public bool show_question(string primary_markup,
string? secondary_markup = null,
Gtk.Window? parent = null,
Gtk.MessageType message_type = Gtk.MessageType.QUESTION)
{
var m = new Gtk.MessageDialog.with_markup(parent,
Gtk.DialogFlags.MODAL,
message_type,
Gtk.ButtonsType.OK_CANCEL,
primary_markup);
m.format_secondary_markup(secondary_markup);
var result = (Gtk.ResponseType) m.run();
m.destroy();
return (result == Gtk.ResponseType.OK);
}
이 새 버전은 Vala의 기본 매개 변수를 사용하므로 가장 단순한 경우 show_question("Is this OK?");
으로 전화하면됩니다. 또한, 당신은 또한 지금 예를 들어, 훨씬 좋네요보고 대화 상자를 생성하는 Pango Markup를 사용할 수 있습니다
show_question("<b><big>Overwrite File?</big></b>",
"<small>The file <i>\"%s\"</i> will be overwritten if you proceed</small>".printf(my_filename),
parent_window,
Gtk.MessageType.WARNING);
그것은 그가 GTK 이와 같이 일반 "확인/취소"응답을 사용하는 것이 일반적으로 눈살을 찌푸리게한다 그러나 주목할 가치가있다. 그 대신 권장되는 것은 해당 동작과 관련된 동사를 포함하는 버튼 레이블을 사용하는 것입니다. 그래서 위의 예제에서 "Cancel"과 "Overwrite"가 훨씬 더 좋은 옵션이 될 것입니다 (물론 Cancel으로 기본값 설정). 이것은 프로그래머에게 조금 더 많은 작업을 요구하지만 더 나은 사용자 경험을 제공합니다.
'Gtk.Dialog'가 도움이 될 수 있습니다 : http://valadoc.org/#!api=gtk+-3.0/Gtk.Dialog –
여기 파이썬에서 관련된 질문입니다 : http://stackoverflow.com/questions/13970445/python-gtk3-how-to-add-a-gtk-entry-to-a-gtk-messagedialog –