GUI för RUBY
GUI för RUBY
Har just gjort mitt första lilla program i Ruby och jag skulle vilja ha ett GUI för det. Jag hörde talas om att Qt kunde vara något så jag laddade hem det och testade lite men eftersom det var väldigt svårt att hitta någon information om just Ruby/Qt sa fick jag lägga ner. Nu tänkte jag testa med Ruby/Gtk istället men efter att har laddat hem "paketet ruby-gnome2" som tydligen skulle innehålla allt man behöver vad det gäller Gtk bindings för ruby så får jag följande felmeddelande när jag kör hello.rb
Felmeddelande:
hello.rb:1:in `require': no such file to load -- gtk (LoadError)
Är det något mer jag behöver?
Är otroligt tacksam om någon vill hjälpa mig med det här. Programmet jag testar med finns nedan.
testprogrammet är från en tutorial som är korrekt se nedan----------------------------------------------------
require 'gtk'
window = Gtk::Window.new(Gtk::WINDOW_TOPLEVEL)
button = Gtk::Button.new("Hello World")
window.set_title("Hello Ruby")
window.border_width(10)
# Connect the button to a callback.
button.signal_connect('clicked') { puts "Hello Ruby" }
# Connect the signals 'delete_event' and 'destroy'
window.signal_connect('delete_event') {
puts "delete_event received"
false
}
window.signal_connect('destroy') {
puts "destroy event received"
Gtk.main_quit
}
window.add button
window.show_all
Gtk.main
Felmeddelande:
hello.rb:1:in `require': no such file to load -- gtk (LoadError)
Är det något mer jag behöver?
Är otroligt tacksam om någon vill hjälpa mig med det här. Programmet jag testar med finns nedan.
testprogrammet är från en tutorial som är korrekt se nedan----------------------------------------------------
require 'gtk'
window = Gtk::Window.new(Gtk::WINDOW_TOPLEVEL)
button = Gtk::Button.new("Hello World")
window.set_title("Hello Ruby")
window.border_width(10)
# Connect the button to a callback.
button.signal_connect('clicked') { puts "Hello Ruby" }
# Connect the signals 'delete_event' and 'destroy'
window.signal_connect('delete_event') {
puts "delete_event received"
false
}
window.signal_connect('destroy') {
puts "destroy event received"
Gtk.main_quit
}
window.add button
window.show_all
Gtk.main
Senast redigerad av 1 DrMegahertz, redigerad totalt 30 gånger.
SV: GUI för RUBY
Prova med FXruby, det fungerade väldigt bra när jag körde windows... Ser ingen anledning till varför det inte skulle fungera på ubuntu.
JABBER: MasterExploder@jabber.se
- DrMegahertz
- Inlägg: 296
- Blev medlem: 06 maj 2006, 14:37
- OS: Ubuntu
- Utgåva: 14.04 Trusty Tahr LTS
- Ort: Södra Dalarna
SV: GUI för RUBY
libgtk2-ruby - GTK+ bindings for the Ruby language
Lät ju annars väldans bra, har du provat med det?
Lät ju annars väldans bra, har du provat med det?


SV: GUI för RUBY
Tack för tipsen! FXRuby verkar ju också schysst men det funkar inte heller så bra för mig.
Installerade alla libfox paketen från repositorys och testar sedan med ett litet program från deras hemsida.
Program:--------------------------------------
#include <fx.h>
#include "mywindow.h"
int main(int argc,char ** argv) {
FXApp application("Tutorial #1","FOX Tutorials");
application.init(argc,argv);
new MyWindow(&application);
application.create();
return application.run();
}
-------------------------------------------------------------
Får output:
hello.rb:4: warning: parenthesize argument(s) for future version
hello.rb:4: undefined local variable or method `argc' for main:Object (NameError
----------------------------------------------------------------
Shit, ska man behöva återvända till windows=(
Allt jag vill uppnå är att få ett GUI att funka till ruby i Ubuntu + några tutorials på hur man använder GUI toolkittet.
DrMegahertz, jag har installerat "libgtk2-ruby - GTK+ bindings for the Ruby language
" , kankse är det bara någon syntax knorr som ska till för den senaset versionen eller något?
l
Installerade alla libfox paketen från repositorys och testar sedan med ett litet program från deras hemsida.
Program:--------------------------------------
#include <fx.h>
#include "mywindow.h"
int main(int argc,char ** argv) {
FXApp application("Tutorial #1","FOX Tutorials");
application.init(argc,argv);
new MyWindow(&application);
application.create();
return application.run();
}
-------------------------------------------------------------
Får output:
hello.rb:4: warning: parenthesize argument(s) for future version
hello.rb:4: undefined local variable or method `argc' for main:Object (NameError
----------------------------------------------------------------
Shit, ska man behöva återvända till windows=(
Allt jag vill uppnå är att få ett GUI att funka till ruby i Ubuntu + några tutorials på hur man använder GUI toolkittet.
DrMegahertz, jag har installerat "libgtk2-ruby - GTK+ bindings for the Ruby language
" , kankse är det bara någon syntax knorr som ska till för den senaset versionen eller något?
l
- DrMegahertz
- Inlägg: 296
- Blev medlem: 06 maj 2006, 14:37
- OS: Ubuntu
- Utgåva: 14.04 Trusty Tahr LTS
- Ort: Södra Dalarna
SV: GUI för RUBY
Men du 
Eftersom du har installerat både ruby-gnome2 och libgtk2-ruby kanske du ska inkludera gtk2 istället för gtk.
Och testprogrammet du försöker köra är inget ruby-skript utan snarare C-kod, därav problemet med att det inte går att köra genom ruby-tolken.

Eftersom du har installerat både ruby-gnome2 och libgtk2-ruby kanske du ska inkludera gtk2 istället för gtk.
Och testprogrammet du försöker köra är inget ruby-skript utan snarare C-kod, därav problemet med att det inte går att köra genom ruby-tolken.



SV: GUI för RUBY
Jo, jag kom på att jag körde fel program och testade istället med programmet:
-------------------------------------------------------------------------
#!/usr/bin/env ruby
require 'gtk2'
button = Gtk::Button.new("Hello World")
button.signal_connect("clicked") {
puts "Hello World"
}
window = Gtk::Window.new
window.signal_connect("delete_event") {
puts "delete event occurred"
#true
false
}
window.signal_connect("destroy") {
puts "destroy event occurred"
Gtk.main_quit
}
window.border_width = 10
window.add(button)
window.show_all
Gtk.main
------------------------
då blir det då här istället plus ca hundra felmeddelanden till:
Gtk-WARNING **:Screen for GtkWindow not set; you must always set
a screen for a GtkWindow before using the window
hello.rb: line 4
Gdk-CRITICAL **:gdk_pango_context_get_for_screen: assertion `GDK_IS_SCREEN (screen)' failed
hello.rb: line 4
Pango-CRITICAL **:pango_context_set_font_description: assertion `context != NULL' failed
-------------------------------------------------------------------------
#!/usr/bin/env ruby
require 'gtk2'
button = Gtk::Button.new("Hello World")
button.signal_connect("clicked") {
puts "Hello World"
}
window = Gtk::Window.new
window.signal_connect("delete_event") {
puts "delete event occurred"
#true
false
}
window.signal_connect("destroy") {
puts "destroy event occurred"
Gtk.main_quit
}
window.border_width = 10
window.add(button)
window.show_all
Gtk.main
------------------------
då blir det då här istället plus ca hundra felmeddelanden till:
Gtk-WARNING **:Screen for GtkWindow not set; you must always set
a screen for a GtkWindow before using the window
hello.rb: line 4
Gdk-CRITICAL **:gdk_pango_context_get_for_screen: assertion `GDK_IS_SCREEN (screen)' failed
hello.rb: line 4
Pango-CRITICAL **:pango_context_set_font_description: assertion `context != NULL' failed
- DrMegahertz
- Inlägg: 296
- Blev medlem: 06 maj 2006, 14:37
- OS: Ubuntu
- Utgåva: 14.04 Trusty Tahr LTS
- Ort: Södra Dalarna
SV: GUI för RUBY
Testa att skriva Gtk.init under require 'gtk2', hittade några ställen där just det löste problemen, men så vitt jag vet så ska Gtk.init inte behövas längre..


SV: GUI för RUBY
Tack som fn det var det som skulle till! 

- DrMegahertz
- Inlägg: 296
- Blev medlem: 06 maj 2006, 14:37
- OS: Ubuntu
- Utgåva: 14.04 Trusty Tahr LTS
- Ort: Södra Dalarna
SV: GUI för RUBY
Skumt att det var det som krånglade.. Eftersom man sedan länge arbetat för att inte behöva initiera gtk på det sättet.. Aja, det löste sig i allafall 
Problemet [LÖST]

Problemet [LÖST]


SV: GUI för RUBY
Du har rätt. På just det programmet så funkar det om jag lägger till Gtk.init men på det kommande tutorialsen så uppkommer samma fel trots att jag skriver Gtk.init så jag vete sjutton.
Installerade FXRuby på min windows maskin och det går smärtfritt ett tag men efter de första enklaste tutorialsen så börjar även det att trilskas.
Får följande felmeddelande på många av tutsen.
testa.rb:8:in `initialize': wrong argument type Hash (expected Data) (TypeError)
from testa.rb:8:in `initialize'
from testa.rb:25:in `new'
from testa.rb:25
from testa.rb:24:in `initialize'
from testa.rb:24:in `new'
from testa.rb:24
Ett av programmen som inte vill--------------------------------------------------------
require 'fox16'
include Fox
class DropSite < FXMainWindow
def initialize(anApp)
# Initialize base class
super(anApp, "Drop Site", :opts => DECOR_ALL, :width => 400, :height => 300)
# Fill main window with canvas
@canvas = FXCanvas.new(self, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y)
end
def create
# Create the main window and canvas
super
# Show the main window
show(PLACEMENT_SCREEN)
end
end
if __FILE__ == $0
FXApp.new("DropSite", "FXRuby") do |theApp|
DropSite.new(theApp)
theApp.create
theApp.run
end
end
Har du någon aning om vad det betyder?
Installerade FXRuby på min windows maskin och det går smärtfritt ett tag men efter de första enklaste tutorialsen så börjar även det att trilskas.
Får följande felmeddelande på många av tutsen.
testa.rb:8:in `initialize': wrong argument type Hash (expected Data) (TypeError)
from testa.rb:8:in `initialize'
from testa.rb:25:in `new'
from testa.rb:25
from testa.rb:24:in `initialize'
from testa.rb:24:in `new'
from testa.rb:24
Ett av programmen som inte vill--------------------------------------------------------
require 'fox16'
include Fox
class DropSite < FXMainWindow
def initialize(anApp)
# Initialize base class
super(anApp, "Drop Site", :opts => DECOR_ALL, :width => 400, :height => 300)
# Fill main window with canvas
@canvas = FXCanvas.new(self, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y)
end
def create
# Create the main window and canvas
super
# Show the main window
show(PLACEMENT_SCREEN)
end
end
if __FILE__ == $0
FXApp.new("DropSite", "FXRuby") do |theApp|
DropSite.new(theApp)
theApp.create
theApp.run
end
end
Har du någon aning om vad det betyder?