GTK 中的 GUI 设计
GUI design in GTK
我正在尝试将 GTK 与 Ruby 2.0.0 结合使用来设计如下所示的用户界面:
ColHead1 ColHead2
(box for user number input) (box for user number input)
SubmitBtn
根据我阅读的 GTK 教程,我走到了这一步:
require 'gtk3'
class RubyApp < Gtk::Window
def initialize
super
init_ui
end
def init_ui
table = Gtk::Table.new 2, 2, true
submit = Gtk::Button.new :label => "Submit Btn"
submit.signal_connect "clicked" do
on_submit
end
label = Gtk::Label.new "ColHead1"
entry = Gtk::Entry.new
entry.signal_connect "key-release-event" do |w, e|
on_key_release w, e, label
end
set_title "Gtk::Entry"
signal_connect "destroy" do
Gtk.main_quit
end
table.attach label, 0,1,0,1
table.attach submit, 1, 0, 1, 0
add table
set_default_size 250, 200
set_window_position :center
show_all
end
=begin
def on_key_release sender, event, label
label.set_text sender.text
end
=end
end
Gtk.init
window = RubyApp.new
Gtk.main
谁能解释一下如何正确实现上面显示的示例 gui?
我认为你有两个选择:
- 封装不同的容器:
创建一个垂直框 (Gtk::Box),向其中添加一个水平框,您可以在其中添加 Col1 小部件和 Col2 小部件。
然后将您的提交按钮添加到垂直框。
应将垂直 Box 添加到主 window。这样,您可以轻松配置每个小部件将如何填充它们分配的空间。
- 使用 Gtk 网格(它是 Gtk 的替代品 Table)
我正在尝试将 GTK 与 Ruby 2.0.0 结合使用来设计如下所示的用户界面:
ColHead1 ColHead2
(box for user number input) (box for user number input)
SubmitBtn
根据我阅读的 GTK 教程,我走到了这一步:
require 'gtk3'
class RubyApp < Gtk::Window
def initialize
super
init_ui
end
def init_ui
table = Gtk::Table.new 2, 2, true
submit = Gtk::Button.new :label => "Submit Btn"
submit.signal_connect "clicked" do
on_submit
end
label = Gtk::Label.new "ColHead1"
entry = Gtk::Entry.new
entry.signal_connect "key-release-event" do |w, e|
on_key_release w, e, label
end
set_title "Gtk::Entry"
signal_connect "destroy" do
Gtk.main_quit
end
table.attach label, 0,1,0,1
table.attach submit, 1, 0, 1, 0
add table
set_default_size 250, 200
set_window_position :center
show_all
end
=begin
def on_key_release sender, event, label
label.set_text sender.text
end
=end
end
Gtk.init
window = RubyApp.new
Gtk.main
谁能解释一下如何正确实现上面显示的示例 gui?
我认为你有两个选择:
- 封装不同的容器:
创建一个垂直框 (Gtk::Box),向其中添加一个水平框,您可以在其中添加 Col1 小部件和 Col2 小部件。 然后将您的提交按钮添加到垂直框。
应将垂直 Box 添加到主 window。这样,您可以轻松配置每个小部件将如何填充它们分配的空间。
- 使用 Gtk 网格(它是 Gtk 的替代品 Table)