Toolbar (Python) Marta Maria Casetti mmcasetti@gmail.com 2012 단추 및 기타 위젯 표시줄 조성호 shcho@gnome.org 2017 Toolbar

(스톡 아이콘에서 온)단추를 Toolbar에 넣은 예제입니다.

예제 결과를 만드는 코드 from gi.repository import Gtk from gi.repository import Gdk from gi.repository import Gio import sys class MyWindow(Gtk.ApplicationWindow): def __init__(self, app): Gtk.Window.__init__(self, title="Toolbar Example", application=app) self.set_default_size(400, 200) # a grid to attach the toolbar grid = Gtk.Grid() # a toolbar created in the method create_toolbar (see below) toolbar = self.create_toolbar() # with extra horizontal space toolbar.set_hexpand(True) # show the toolbar toolbar.show() # attach the toolbar to the grid grid.attach(toolbar, 0, 0, 1, 1) # add the grid to the window self.add(grid) # create the actions that control the window and connect their signal to a # callback method (see below): # undo undo_action = Gio.SimpleAction.new("undo", None) undo_action.connect("activate", self.undo_callback) self.add_action(undo_action) # fullscreen fullscreen_action = Gio.SimpleAction.new("fullscreen", None) fullscreen_action.connect("activate", self.fullscreen_callback) self.add_action(fullscreen_action) # a method to create the toolbar def create_toolbar(self): # a toolbar toolbar = Gtk.Toolbar() # which is the primary toolbar of the application toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR) # create a button for the "new" action, with a stock image new_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_NEW) # label is shown new_button.set_is_important(True) # insert the button at position in the toolbar toolbar.insert(new_button, 0) # show the button new_button.show() # set the name of the action associated with the button. # The action controls the application (app) new_button.set_action_name("app.new") # button for the "open" action open_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_OPEN) open_button.set_is_important(True) toolbar.insert(open_button, 1) open_button.show() open_button.set_action_name("app.open") # button for the "undo" action undo_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_UNDO) undo_button.set_is_important(True) toolbar.insert(undo_button, 2) undo_button.show() undo_button.set_action_name("win.undo") # button for the "fullscreen/leave fullscreen" action self.fullscreen_button = Gtk.ToolButton.new_from_stock( Gtk.STOCK_FULLSCREEN) self.fullscreen_button.set_is_important(True) toolbar.insert(self.fullscreen_button, 3) self.fullscreen_button.set_action_name("win.fullscreen") # return the complete toolbar return toolbar # callback method for undo def undo_callback(self, action, parameter): print("You clicked \"Undo\".") # callback method for fullscreen / leave fullscreen def fullscreen_callback(self, action, parameter): # check if the state is the same as Gdk.WindowState.FULLSCREEN, which # is a bit flag is_fullscreen = self.get_window().get_state( ) & Gdk.WindowState.FULLSCREEN != 0 if not is_fullscreen: self.fullscreen_button.set_stock_id(Gtk.STOCK_LEAVE_FULLSCREEN) self.fullscreen() else: self.fullscreen_button.set_stock_id(Gtk.STOCK_FULLSCREEN) self.unfullscreen() class MyApplication(Gtk.Application): def __init__(self): Gtk.Application.__init__(self) def do_activate(self): win = MyWindow(self) win.show_all() def do_startup(self): Gtk.Application.do_startup(self) # create the actions that control the window and connect their signal to a # callback method (see below): # new new_action = Gio.SimpleAction.new("new", None) new_action.connect("activate", self.new_callback) app.add_action(new_action) # open open_action = Gio.SimpleAction.new("open", None) open_action.connect("activate", self.open_callback) app.add_action(open_action) # callback method for new def new_callback(self, action, parameter): print("You clicked \"New\".") # callback method for open def open_callback(self, action, parameter): print("You clicked \"Open\".") app = MyApplication() exit_status = app.run(sys.argv) sys.exit(exit_status)
Toolbar 위젯에 쓸만한 메서드

32번째 줄에서 undo_action 동작의 "activate" 시그널은 action.connect(signal, callback function) 함수로 undo_callback() 콜백 함수에 연결했습니다. 더 자세한 설명은 를 참조하십시오.

position 위치에 tool_item을 넣으려면 insert(tool_item, position) 함수를 사용하십시오. position 값이 음수면 해당 항목을 도구 모음 마지막에 붙여넣습니다.

get_item_index(tool_item) 함수는 도구 모음에서 tool_item 항목의 위치를 가져옵니다.

get_n_items() 함수는 도구 모음의 항목 갯수를 가져옵니다. get_nth_item(position) 함수는 position 위치의 항목을 반환합니다.

모든 메뉴 항목에 대해 ToolBar에서 공간을 가지고 있지 않고, set_show_arrow(True) 함수를 실행했다면, 공간이 없는 항목은 오버플로우 메뉴에 나타납니다.

set_icon_size(icon_size) 함수는 도구 모음의 아이콘 크기를 설정합니다. icon_size 값은 Gtk.IconSize.INVALID, Gtk.IconSize.MENU, Gtk.IconSize.SMALL_TOOLBAR, Gtk.IconSize.LARGE_TOOLBAR, Gtk.IconSize.BUTTON, Gtk.IconSize.DND, Gtk.IconSize.DIALOG 중 하나가 될 수 있습니다. 도구 모음에 지정 목적을 위해서만 사용해야 하며 일반 프로그램 도구 모음에서는 사용자가 원하는 아이콘 크기 설정을 따라야합니다. unset_icon_size() 함수는 set_icon_size(icon_size) 함수로 설정한 항목의 설정을 취소하므로 아이콘 크기를 결정할 때 사용자 설정 값을 사용합니다.

style 값을 Gtk.ToolbarStyle.ICONS, Gtk.ToolbarStyle.TEXT, Gtk.ToolbarStyle.BOTH, Gtk.ToolbarStyle.BOTH_HORIZ 중 하나로 사용하는 set_style(style) 함수는 도구 모음에 아이콘만 나타낼 지, 텍스트만 나타낼 지, 아니면 둘 다(수직 방향, 수평 방향) 나타낼 지를 설정합니다. 사용자 설정으로 도구 모음 모양새를 결정하게 하고, 도구 모음 모양새 설정을 취소하려면 unset_style() 함수를 사용하십시오.

API 참고서

이 예제는 다음 참고자료가 필요합니다:

GtkToolbar

GtkToolButton

GtkToolItem

스톡 항목

GtkActionable

GtkWidget

이벤트 구조체