Blame platform-demos/ko/menubutton.py.page

Packit 1470ea
Packit 1470ea
<page xmlns="http://projectmallard.org/1.0/" xmlns:its="http://www.w3.org/2005/11/its" xmlns:xi="http://www.w3.org/2001/XInclude" type="guide" style="task" id="menubutton.py" xml:lang="ko">
Packit 1470ea
  <info>
Packit 1470ea
  <title type="text">MenuButton</title>
Packit 1470ea
    <link type="guide" xref="beginner.py#buttons"/>
Packit 1470ea
    <link type="next" xref="toolbar.py"/>
Packit 1470ea
    <revision version="0.1" date="2012-08-19" status="draft"/>
Packit 1470ea
Packit 1470ea
    <credit type="author copyright">
Packit 1470ea
      <name>Tiffany Antopolski</name>
Packit 1470ea
      <email its:translate="no">tiffany.antopolski@gmail.com</email>
Packit 1470ea
      <years>2012</years>
Packit 1470ea
    </credit>
Packit 1470ea
Packit 1470ea
    <credit type="author copyright">
Packit 1470ea
      <name>Marta Maria Casetti</name>
Packit 1470ea
      <email its:translate="no">mmcasetti@gmail.com</email>
Packit 1470ea
      <years>2012</years>
Packit 1470ea
    </credit>
Packit 1470ea
Packit 1470ea
    <desc>누르면 메뉴를 보여주는 위젯입니다</desc>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>조성호</mal:name>
Packit 1470ea
      <mal:email>shcho@gnome.org</mal:email>
Packit 1470ea
      <mal:years>2017</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  </info>
Packit 1470ea
Packit 1470ea
  <title>MenuButton</title>
Packit 1470ea
  <media type="image" mime="image/png" src="media/menubutton.png"/>
Packit 1470ea
  

GtkMenuButton 위젯은 눌렀을 때 메뉴를 띄울 목적으로 활용합니다. 이 메뉴는 GtkMenu로 또는 GMenuModel로도 제공합니다. GtkMenuButton 위젯은 제대로 된 하위 위젯을 지니고 있을 수 있습니다. 즉, GtkMenuButton으로 대부분의 다른 표준 GtkWidget을 붙들어둘 수 있습니다. 가장 널리 활용하는 하위 요소는 GtkArrow입니다.

Packit 1470ea
Packit 1470ea
  <note>

MenuButton을 동작하게 하려면 그놈 3.6이 필요합니다.

</note>
Packit 1470ea
Packit 1470ea
  <links type="section"/>
Packit 1470ea
    
Packit 1470ea
  <section id="code">
Packit 1470ea
  <title>예제 결과를 만드는 코드</title>
Packit 1470ea
    from gi.repository import Gtk
Packit 1470ea
from gi.repository import Gio
Packit 1470ea
import sys
Packit 1470ea
Packit 1470ea
Packit 1470ea
class MyWindow(Gtk.ApplicationWindow):
Packit 1470ea
Packit 1470ea
    def __init__(self, app):
Packit 1470ea
        Gtk.Window.__init__(self, title="Menubutton Example", application=app)
Packit 1470ea
        self.set_default_size(600, 400)
Packit 1470ea
Packit 1470ea
        grid = Gtk.Grid()
Packit 1470ea
Packit 1470ea
        # a menubutton
Packit 1470ea
        menubutton = Gtk.MenuButton()
Packit 1470ea
        menubutton.set_size_request(80, 35)
Packit 1470ea
Packit 1470ea
        grid.attach(menubutton, 0, 0, 1, 1)
Packit 1470ea
Packit 1470ea
        # a menu with two actions
Packit 1470ea
        menumodel = Gio.Menu()
Packit 1470ea
        menumodel.append("New", "app.new")
Packit 1470ea
        menumodel.append("About", "win.about")
Packit 1470ea
Packit 1470ea
        # a submenu with one action for the menu
Packit 1470ea
        submenu = Gio.Menu()
Packit 1470ea
        submenu.append("Quit", "app.quit")
Packit 1470ea
        menumodel.append_submenu("Other", submenu)
Packit 1470ea
Packit 1470ea
        # the menu is set as the menu of the menubutton
Packit 1470ea
        menubutton.set_menu_model(menumodel)
Packit 1470ea
Packit 1470ea
        # the action related to the window (about)
Packit 1470ea
        about_action = Gio.SimpleAction.new("about", None)
Packit 1470ea
        about_action.connect("activate", self.about_callback)
Packit 1470ea
        self.add_action(about_action)
Packit 1470ea
Packit 1470ea
        self.add(grid)
Packit 1470ea
Packit 1470ea
    # callback for "about"
Packit 1470ea
    def about_callback(self, action, parameter):
Packit 1470ea
        print("You clicked \"About\"")
Packit 1470ea
Packit 1470ea
Packit 1470ea
class MyApplication(Gtk.Application):
Packit 1470ea
Packit 1470ea
    def __init__(self):
Packit 1470ea
        Gtk.Application.__init__(self)
Packit 1470ea
Packit 1470ea
    def do_activate(self):
Packit 1470ea
        win = MyWindow(self)
Packit 1470ea
        win.show_all()
Packit 1470ea
Packit 1470ea
    def do_startup(self):
Packit 1470ea
        Gtk.Application.do_startup(self)
Packit 1470ea
Packit 1470ea
        #  the actions related to the application
Packit 1470ea
        new_action = Gio.SimpleAction.new("new", None)
Packit 1470ea
        new_action.connect("activate", self.new_callback)
Packit 1470ea
        self.add_action(new_action)
Packit 1470ea
Packit 1470ea
        quit_action = Gio.SimpleAction.new("quit", None)
Packit 1470ea
        quit_action.connect("activate", self.quit_callback)
Packit 1470ea
        self.add_action(quit_action)
Packit 1470ea
Packit 1470ea
    # callback functions for the actions related to the application
Packit 1470ea
    def new_callback(self, action, parameter):
Packit 1470ea
        print("You clicked \"New\"")
Packit 1470ea
Packit 1470ea
    def quit_callback(self, action, parameter):
Packit 1470ea
        print("You clicked \"Quit\"")
Packit 1470ea
        self.quit()
Packit 1470ea
Packit 1470ea
app = MyApplication()
Packit 1470ea
exit_status = app.run(sys.argv)
Packit 1470ea
sys.exit(exit_status)
Packit 1470ea
Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="methods">
Packit 1470ea
  <title>MenuButton 위젯에 쓸만한 메서드</title>
Packit 1470ea
      

33번째 줄에서 "activate" 시그널은 widget.connect(signal, callback function) 함수로 about_callback() 콜백 함수에 연결했습니다. 더 자세한 설명은 <link xref="signals-callbacks.py"/>를 참조하십시오.

Packit 1470ea
Packit 1470ea
    

메뉴 배치는 메뉴 단추의 "direction" 속성과 메뉴의 "halign" 속성 또는 "valign" 속성으로 결정합니다. 예를 들어 direction 값이 Gtk.ArrowType.DOWN(다른 옵션: UP)이고, 수평 정렬을 Gtk.Align.START로(다른 옵션: CENTER, END) 했다면 메뉴는, 시작 모서리(텍스트 방향에 따라)를 따라 정렬한 메뉴의 시작 모서리로 단추 아래에 들어갑니다. 단추 아래에 공간이 충분치 않다면 단추 위로 대신 메뉴를 띄웁니다. 정렬 상태가 메뉴 바깥 부분을 움직인다면 '눌러넣은' 상태입니다.

Packit 1470ea
    
Packit 1470ea
    

수직으로 정렬하는 경우 적용할 수 있는 ArrowType 방향은 LEFTRIGHT 이며, START, CENTER, END 중 한 가지 방식으로 수직 정렬합니다.나입니다.

Packit 1470ea
    
Packit 1470ea
    

이 속성을 설정할 때 set_align_widget(alignment) 메서드와 set_direction(direction) 메서드를 사용할 수 있습니다.

Packit 1470ea
  </section>
Packit 1470ea
  
Packit 1470ea
  <section id="references">
Packit 1470ea
  <title>API 참고서</title>
Packit 1470ea
    

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

Packit 1470ea
    <list>
Packit 1470ea
      <item>

<link href="http://developer.gnome.org/gtk3/unstable/GtkMenuButton.html">MenuButton</link>

</item>
Packit 1470ea
    </list>
Packit 1470ea
  </section>
Packit 1470ea
</page>