<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # Ruby GTK 中的菜單和工具欄 > 原文: [http://zetcode.com/gui/rubygtk/menustoolbars/](http://zetcode.com/gui/rubygtk/menustoolbars/) 在 Ruby GTK 編程教程的這一部分中,我們將使用菜單和工具欄。 GUI 應用中的常見部分是菜單欄。 菜單欄由稱為菜單的對象組成。 頂層菜單在菜單欄上帶有其標簽。 菜單具有菜單項-在應用內部執行特定操作的命令。 菜單也可以具有子菜單,這些子菜單具有自己的菜單項。 ## 簡單的菜單欄 在第一個示例中,我們將創建一個帶有一個文件菜單的菜單欄。 該菜單將只有一個菜單項。 通過選擇項目,應用退出。 ```rb #!/usr/bin/ruby ''' ZetCode Ruby GTK tutorial This example creates a simple menubar. Author: Jan Bodnar Website: www.zetcode.com Last modified: May 2014 ''' require 'gtk3' class RubyApp < Gtk::Window def initialize super init_ui end def init_ui override_background_color :normal, Gdk::RGBA.new(0.2, 0.2, 0.2, 1) mb = Gtk::MenuBar.new filemenu = Gtk::Menu.new filem = Gtk::MenuItem.new "File" filem.set_submenu filemenu exit = Gtk::MenuItem.new "Exit" exit.signal_connect "activate" do Gtk.main_quit end filemenu.append exit mb.append filem vbox = Gtk::Box.new :vertical, 2 vbox.pack_start mb, :expand => false, :fill => false, :padding => 0 add vbox set_title "Simple menubar" signal_connect "destroy" do Gtk.main_quit end set_default_size 300, 200 set_window_position :center show_all end end Gtk.init window = RubyApp.new Gtk.main ``` 這是一個最小的菜單欄功能示例。 ```rb mb = Gtk::MenuBar.new ``` `Gtk::MenuBar`小部件已創建。 這是菜單的容器。 ```rb filemenu = Gtk::Menu.new filem = Gtk::MenuItem.new "File" filem.set_submenu filemenu ``` 創建包含一個`Gtk::Menu`的頂層`Gtk::MenuItem`。 ```rb exit = Gtk::MenuItem.new "Exit" exit.signal_connect "activate" do Gtk.main_quit end filemenu.append exit ``` 創建出口`Gtk::MenuItem`并將其附加到文件`Gtk::MenuItem`中。 ```rb mb.append filem ``` 頂級`Gtk::MenuItem`被附加到`Gtk::MenuBar`小部件。 ```rb vbox = Gtk::VBox.new false, 2 vbox.pack_start mb, false, false, 0 ``` 我們將菜單欄放入垂直框中。 ![Simple menu](https://img.kancloud.cn/49/24/49246494c86b7b55b99dd2f82f669f46_302x226.jpg) 圖:簡單菜單 ## 子菜單 下面的示例演示如何創建子菜單。 ```rb #!/usr/bin/ruby ''' ZetCode Ruby GTK tutorial This example shows a submenu. Author: Jan Bodnar Website: www.zetcode.com Last modified: May 2014 ''' require 'gtk3' class RubyApp < Gtk::Window def initialize super init_ui end def init_ui override_background_color :normal, Gdk::RGBA.new(0.2, 0.2, 0.2, 1) mb = Gtk::MenuBar.new filemenu = Gtk::Menu.new filem = Gtk::MenuItem.new "File" filem.set_submenu filemenu mb.append filem imenu = Gtk::Menu.new importm = Gtk::MenuItem.new "Import" importm.set_submenu imenu inews = Gtk::MenuItem.new "Import news feed..." ibookmarks = Gtk::MenuItem.new "Import bookmarks..." imail = Gtk::MenuItem.new "Import mail..." imenu.append inews imenu.append ibookmarks imenu.append imail filemenu.append importm exit = Gtk::MenuItem.new "Exit" exit.signal_connect "activate" do Gtk.main_quit end filemenu.append exit vbox = Gtk::Box.new :vertical, 2 vbox.pack_start mb, :expand => false, :fill => false, :padding => 0 add vbox set_title "Submenu" signal_connect "destroy" do Gtk.main_quit end set_default_size 350, 250 set_window_position :center show_all end end Gtk.init window = RubyApp.new Gtk.main ``` 子菜單是另一個菜單中的菜單。 ```rb imenu = Gtk::Menu.new ``` 子菜單是`Gtk::Menu`。 ```rb importm = Gtk::MenuItem.new "Import" importm.set_submenu imenu ... filemenu.append importm ``` 它是菜單項的子菜單,該菜單項會登錄到頂級文件菜單。 ```rb inews = Gtk::MenuItem.new "Import news feed..." ibookmarks = Gtk::MenuItem.new "Import bookmarks..." imail = Gtk::MenuItem.new "Import mail..." imenu.append inews imenu.append ibookmarks imenu.append imail ``` 子菜單有其自己的菜單項。 ![Submenu](https://img.kancloud.cn/1a/bf/1abfe76df15061e0bfe1617b828c6f3a_352x276.jpg) 圖:子菜單 ## 圖像菜單 在下一個示例中,我們將進一步探索菜單。 我們將圖像和加速器添加到我們的菜單項中。 加速器是用于激活菜單項的鍵盤快捷鍵。 ```rb #!/usr/bin/ruby ''' ZetCode Ruby GTK tutorial This example shows a menu with images, accelerators and a separator. Author: Jan Bodnar Website: www.zetcode.com Last modified: May 2014 ''' require 'gtk3' class RubyApp < Gtk::Window def initialize super init_ui end def init_ui override_background_color :normal, Gdk::RGBA.new(0.2, 0.2, 0.2, 1) mb = Gtk::MenuBar.new filemenu = Gtk::Menu.new filem = Gtk::MenuItem.new "File" filem.set_submenu filemenu agr = Gtk::AccelGroup.new add_accel_group agr newi = Gtk::ImageMenuItem.new :stock_id => Gtk::Stock::NEW, :accel_group => agr key, mod = Gtk::Accelerator.parse "N" newi.add_accelerator "activate", agr, key, mod, Gtk::AccelFlags::VISIBLE filemenu.append newi openm = Gtk::ImageMenuItem.new :stock_id => Gtk::Stock::OPEN, :accel_group => agr key, mod = Gtk::Accelerator.parse "O" openm.add_accelerator "activate", agr, key, mod, Gtk::AccelFlags::VISIBLE filemenu.append openm sep = Gtk::SeparatorMenuItem.new filemenu.append sep exit = Gtk::ImageMenuItem.new :stock_id => Gtk::Stock::QUIT, :accel_group => agr key, mod = Gtk::Accelerator.parse "Q" exit.add_accelerator "activate", agr, key, mod, :visible exit.signal_connect "activate" do Gtk.main_quit end filemenu.append exit mb.append filem vbox = Gtk::Box.new :vertical, 2 vbox.pack_start mb, :expand => false, :fill => false, :padding => 0 add vbox set_title "Image menu" signal_connect "destroy" do Gtk.main_quit end set_default_size 300, 200 set_window_position :center show_all end end Gtk.init window = RubyApp.new Gtk.main ``` 我們的示例顯示了具有三個菜單項的頂級菜單項。 每個菜單項都有一個圖像和一個加速器。 退出菜單項的加速器處于活動狀態。 ```rb agr = Gtk::AccelGroup.new add_accel_group agr ``` 要使用加速器,我們創建一個全局`Gtk::AccelGroup`對象。 稍后將使用。 ```rb newi = Gtk::ImageMenuItem.new :stock_id => Gtk::Stock::NEW, :accel_group => agr key, mod = Gtk::Accelerator.parse "N" newi.add_accelerator "activate", agr, key, mod, Gtk::AccelFlags::VISIBLE filemenu.append newi ``` 創建了`Gtk::ImageMenuItem`。 圖片來自圖片庫。 我們還創建了 `Ctrl + N` 加速器。 ```rb sep = Gtk::SeparatorMenuItem.new filemenu.append sep ``` 這些行創建一個分隔符,該分隔符用于將菜單項放入邏輯組中。 ![Image menu](https://img.kancloud.cn/f3/ff/f3ffb3c8f9ca5b4a18b430ebd9af8f16_302x226.jpg) 圖:圖像 menu ## 簡單的工具欄 菜單將我們可以在應用中使用的命令分組。 使用工具欄可以快速訪問最常用的命令。 接下來,我們創建一個簡單的工具欄。 ```rb #!/usr/bin/ruby ''' ZetCode Ruby GTK tutorial This example creates a simple toolbar. Author: Jan Bodnar Website: www.zetcode.com Last modified: May 2014 ''' require 'gtk3' class RubyApp < Gtk::Window def initialize super init_ui end def init_ui toolbar = Gtk::Toolbar.new toolbar.set_toolbar_style Gtk::Toolbar::Style::ICONS newtb = Gtk::ToolButton.new :stock_id => Gtk::Stock::NEW opentb = Gtk::ToolButton.new :stock_id => Gtk::Stock::OPEN savetb = Gtk::ToolButton.new :stock_id => Gtk::Stock::SAVE sep = Gtk::SeparatorToolItem.new quittb = Gtk::ToolButton.new :stock_id => Gtk::Stock::QUIT toolbar.insert newtb, 0 toolbar.insert opentb, 1 toolbar.insert savetb, 2 toolbar.insert sep, 3 toolbar.insert quittb, 4 quittb.signal_connect "clicked" do Gtk.main_quit end vbox = Gtk::Box.new :vertical, 2 vbox.pack_start toolbar, :expand => false, :fill => false, :padding => 0 add vbox set_title "Toolbar" signal_connect "destroy" do Gtk.main_quit end set_default_size 300, 200 set_window_position :center show_all end end Gtk.init window = RubyApp.new Gtk.main ``` 該示例顯示了一個工具欄和四個工具按鈕。 ```rb toolbar = Gtk::Toolbar.new ``` `Gtk::Toolbar`小部件已創建。 ```rb toolbar.set_toolbar_style Gtk::Toolbar::Style::ICONS ``` 在工具欄上,我們僅顯示圖標。 ```rb newtb = Gtk::ToolButton.new :stock_id => Gtk::Stock::NEW ``` 創建帶有庫存圖像的`Gtk::ToolButton`。 該圖像來自圖像的內置庫存。 ```rb sep = Gtk::SeparatorToolItem.new ``` 這是一個分隔符。 它可用于將工具欄按鈕放入邏輯組。 ```rb toolbar.insert newtb, 0 toolbar.insert opentb, 1 ... ``` 工具欄按鈕插入到工具欄小部件中。 ![Toolbar](https://img.kancloud.cn/ad/0a/ad0a861f08acf4f973623b78e1e1a8b8_302x226.jpg) 圖:工具欄 ## 撤銷重做 以下示例演示了如何停用工具欄上的工具欄按鈕。 這是 GUI 編程中的常見做法,例如保存按鈕。 如果我們將文檔的所有更改都保存到磁盤上,則在大多數文本編輯器中,“保存”按鈕將被停用。 這樣,應用會向用戶指示所有更改都已保存。 ```rb #!/usr/bin/ruby ''' ZetCode Ruby GTK tutorial This example shows how to activate/deactivate a Gtk::ToolButton. Author: Jan Bodnar Website: www.zetcode.com Last modified: May 2014 ''' require 'gtk3' class RubyApp < Gtk::Window def initialize super @count = 2 init_ui end def init_ui toolbar = Gtk::Toolbar.new toolbar.set_toolbar_style Gtk::Toolbar::Style::ICONS @undo = Gtk::ToolButton.new :stock_id => Gtk::Stock::UNDO @redo = Gtk::ToolButton.new :stock_id => Gtk::Stock::REDO sep = Gtk::SeparatorToolItem.new quit = Gtk::ToolButton.new :stock_id => Gtk::Stock::QUIT toolbar.insert @undo, 0 toolbar.insert @redo, 1 toolbar.insert sep, 2 toolbar.insert quit, 3 @undo.signal_connect "clicked" do on_undo end @redo.signal_connect "clicked" do on_redo end quit.signal_connect "clicked" do Gtk.main_quit end vbox = Gtk::Box.new :vertical, 2 vbox.pack_start toolbar, :expand => false, :fill => false, :padding => 0 self.add vbox set_default_size 300, 200 set_window_position :center show_all set_title "Undo redo" signal_connect "destroy" do Gtk.main_quit end end def on_undo @count = @count - 1 if @count <= 0 @undo.set_sensitive false @redo.set_sensitive true end end def on_redo @count = @count + 1 if @count >= 5 @redo.set_sensitive false @undo.set_sensitive true end end end Gtk.init window = RubyApp.new Gtk.main ``` 我們的示例從 GTK 庫存資源創建撤消和重做按鈕。 單擊幾下后,每個按鈕均被停用。 按鈕顯示為灰色。 ```rb @count = 2 ``` `@count`變量決定激活或停用哪個按鈕。 ```rb @undo = Gtk::ToolButton.new :stock_id => Gtk::Stock::UNDO @redo = Gtk::ToolButton.new :stock_id => Gtk::Stock::REDO ``` 我們有兩個工具按鈕:撤消和重做工具按鈕。 圖像來自庫存資源。 ```rb @undo.signal_connect "clicked" do on_undo end ``` 單擊撤消按鈕,我們觸發`on_undo`方法。 ```rb if @count <= 0 @undo.set_sensitive false @redo.set_sensitive true end ``` 要激活或停用小部件,我們使用`set_sensitive`方法 ![Undo redo](https://img.kancloud.cn/96/63/9663cf9e5644c9c264c005948f289a42_302x226.jpg) 圖:撤銷和重做 在 Ruby GTK 教程的這一章中,我們展示了如何使用菜單和工具欄。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看