GUI för RUBY

Här diskuteras programmering och utveckling
toddyd
Inlägg: 97
Blev medlem: 03 jun 2006, 22:33

GUI för RUBY

Inlägg av toddyd »

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
Senast redigerad av 1 DrMegahertz, redigerad totalt 30 gånger.
ddevil
Inlägg: 63
Blev medlem: 08 maj 2007, 20:02
Kontakt:

SV: GUI för RUBY

Inlägg av ddevil »

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.
Användarvisningsbild
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

Inlägg av DrMegahertz »

libgtk2-ruby - GTK+ bindings for the Ruby language

Lät ju annars väldans bra, har du provat med det?
BildAre you shpongled? Bild
toddyd
Inlägg: 97
Blev medlem: 03 jun 2006, 22:33

SV: GUI för RUBY

Inlägg av toddyd »

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
Användarvisningsbild
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

Inlägg av DrMegahertz »

Men du :P
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. :)
BildAre you shpongled? Bild
toddyd
Inlägg: 97
Blev medlem: 03 jun 2006, 22:33

SV: GUI för RUBY

Inlägg av toddyd »

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
Användarvisningsbild
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

Inlägg av DrMegahertz »

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..
BildAre you shpongled? Bild
toddyd
Inlägg: 97
Blev medlem: 03 jun 2006, 22:33

SV: GUI för RUBY

Inlägg av toddyd »

Tack som fn det var det som skulle till! ;D
Användarvisningsbild
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

Inlägg av DrMegahertz »

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 :D

Problemet [LÖST]
BildAre you shpongled? Bild
toddyd
Inlägg: 97
Blev medlem: 03 jun 2006, 22:33

SV: GUI för RUBY

Inlägg av toddyd »

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?
Skriv svar

Återgå till "Programmering och webbdesign"