ACHTUNG. Das ist ein Archiv des alten forum.ruby-portal.de. Die aktuelle Mailingliste gibt es auf lists.ruby-lang.org/pipermail/ruby-de.

NOTICE. This is a ready-only copy of the old forum.ruby-portal.de. You can find the current mailing list at lists.ruby-lang.org/pipermail/ruby-de.

Die Programmiersprache Ruby

Blog|

Forum|

Wiki  


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]

Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Fragen zu FXRuby
BeitragVerfasst: 20 Jun 2009, 15:58 
Offline
Geselle
Benutzeravatar

Registriert: 10 Mai 2009, 22:59
Beiträge: 199
Wohnort: Barcelona
Hallo,

ich versuche noch immer zu erlernen, wie man Benutzeroberflächen mit FxRuby erstellt...

Hab' mir ein kleines Ratespiel a la Wer wird Millionär geschrieben, doch bisher ist alles noch im DOS-Fenster.
Ich würde also gerne ein Fenster mit FXRuby erstellen indem die Fragen angezeigt werden, also 4 String-Variablen angezeigt werden
und darunter ein Feld ist, in das man die Antwort eintippen kann. Daraufhin müsste die Antwort als String-Variable an das Programm zurückgeschickt werden...

Fenster-Code bisher: # eröffnet ein Fenster, ich weiß leider nur wie man in der "title bar" schreibt...
# wie schreibe ich denn wohl in dem eigentlichen Fenster? bzw wie zeige ich dort die String-Variablen an?
# und wie kann ich ein Feld erzeugen zum Einlesen?
# Vielen Dank für jede Hilfe!

require 'fox16'

include Fox

app = FXApp.new
main = FXMainWindow.new(app, "Frage:", # text in title bar
:width => 200, :height => 100) # breite und höhe des Fensters bei start
app.create
main.show(PLACEMENT_SCREEN) # centers the main window on the screen
app.run


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Fragen zu FXRuby
BeitragVerfasst: 20 Jun 2009, 16:52 
Offline
Geselle
Benutzeravatar

Registriert: 10 Mai 2009, 22:59
Beiträge: 199
Wohnort: Barcelona
ein 2. Code-Versuch:

application = FXApp.new("Hello", "FoxTest")
main = FXMainWindow.new(application, "Hello", nil, nil, DECOR_ALL)
FXButton.new(main, frage, nil, application, FXApp::ID_QUIT)
FXButton.new(main, p1, nil, application, FXApp::ID_QUIT)
FXButton.new(main, p2, nil, application, FXApp::ID_QUIT)
FXButton.new(main, p3, nil, application, FXApp::ID_QUIT)
FXButton.new(main, p4, nil, application, FXApp::ID_QUIT)
application.create()
main.show(PLACEMENT_SCREEN)
application.run()

p1,p2,p3,p4 sind die 4 Antwortmöglichkeiten...
Fenster geht auch, aber wie kann ich da nur ein leeres Feld drunter setzen, in das die
Lösung geschrieben werden kann?
Und die Lösung müsste dann als Variable antwort an das Hauptprogramm gesendet werden zur Überprüfung...

anderes Problem:
Das ganze befindet sich in einer Schleife, nach beantworten der 1.Frage stürzt das Programm mit der
Fehlermeldung: "attempted to create more than one FXApp instance (RunTimeError)" ab.
Wieso? Jemand eine Ahnung? :?


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Fragen zu FXRuby
BeitragVerfasst: 21 Jun 2009, 20:04 
Offline
Geselle
Benutzeravatar

Registriert: 10 Mai 2009, 22:59
Beiträge: 199
Wohnort: Barcelona
Arbeitet hier eigentlich irgendwer aus dem Forum regelmäßig mit FXRuby?


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Fragen zu FXRuby
BeitragVerfasst: 22 Jun 2009, 10:24 
Offline
Obfuscator
Benutzeravatar

Registriert: 12 Sep 2003, 11:18
Beiträge: 509
Wohnort: Aachen
Naja, "regelmäßig" ist vielleicht übertrieben.
Aber hin und wieder mache ich was damit.

Dein Problem ist scheinbar, dass du derzeit alles im Hauptprogramm abfackelst.
Buttons alleine helfen dir auch nicht, du suchst noch FXTextField für deine Eingabe.

Schau dir mal die Beispielprogramme zu FXRuby an, insbesondere dialog.rb, datatarget.rb und groupbox.rb.

Da siehst du wie man Dialogboxen macht, Variablen an GUI-Elemente bindet und welche Elemente es alles gibt.

Gruß
pi


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Fragen zu FXRuby
BeitragVerfasst: 22 Jun 2009, 17:04 
Offline
Lehrling
Benutzeravatar

Registriert: 22 Jun 2009, 13:55
Beiträge: 82
Wohnort: Ostthüringen
Hiho, mein erster Beitrag aber ich hoff ich kann dir gleich helfen :-D

Also ich arbeite grad an ner Applikation mit FX kann also bisl mit umgehen.
Also erstmal würde ich dir empfehlen das Tutorial zu machen auf
http://www.fxruby.org/doc/book.html
und dann die API zur Hand zur haben http://www.fxruby.org/api/

Generell würde ich alles erstmal in OO manier in eine Klasse und Methoden unterteilen.
Hier helfen für den Grundaufbau sehr die examples vom fx-gem im ruby-Verzeichnis

Nu aber zu deinem Problem. Vllt hilft folgender Grundaufbau:



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
require 'fox16'
include Fox

# Klasse vom Fenster abgeleitet, erleichtert hie und da die Arbeit
class RateSpiel < FXMainWindow
# Normaler Aufruf
def initialize(app)
super(app, 'Werd Wird Rubynaer?', :width=>800, :height=>600)
init_quiz_fenster
end

# Alles Eigene - dient nur der ��bersichtlichkeit
def init_quiz_fenster
end

# Einfach ��bernehmen
def create
super
show(PLACEMENT_SCREEN)
end
end

# Bei Ausf��hrung der *.rb starten
if __FILE__ == $0
FXApp.new{|app|
RateSpiel.new(app)
app.create
app.run
}
end


Das ist eig immer mein Template wenn ich im Fox was erstellen will.
So zu deiner speziellen Frage. So wie du es stehen hast, wolltest du pro Frage immer ein neues Fenster aufbauen, bzw eine komplette Applikation. Überflüssig. Man erstelle ein Fenster und passe nur zur Laufzeit den Inhalt an.

Bsp:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def init_quiz_fenster
#Zur Gestaltung des Layouts gibts verschiedene M��glichkeiten. Ich bevorzuge Vertical/HorizontalFrames
# Einmal Senkrecht
main = FXVerticalFrame.new(self, :opts=>LAYOUT_FILL_X|LAYOUT_FILL_Y)
# 2 mal Waage
@frage = FXLabel.new(main, 'Mit welchem Buchstaben beginnt Apfel?' ,:opts=>LAYOUT_FILL_X|LAYOUT_FILL_Y)
zeile1 = FXHorizontalFrame.new(main, :opts=>LAYOUT_FILL_X|LAYOUT_FILL_Y)
zeile2 = FXHorizontalFrame.new(main, :opts=>LAYOUT_FILL_X|LAYOUT_FILL_Y)
@antwort = FXTextField.new(main, 50, :opts=>LAYOUT_FILL_X)
## so nun Die Teile Bef��llen
@antw_a = FXLabel.new(zeile1, 'A' ,:opts=>LAYOUT_FILL_X|LAYOUT_FILL_Y)
@antw_b = FXLabel.new(zeile1, 'B' ,:opts=>LAYOUT_FILL_X|LAYOUT_FILL_Y)
@antw_c = FXLabel.new(zeile2, 'C' ,:opts=>LAYOUT_FILL_X|LAYOUT_FILL_Y)
@antw_d = FXLabel.new(zeile2, 'D' ,:opts=>LAYOUT_FILL_X|LAYOUT_FILL_Y)
#Eventhandler um die Antwort zu pr��fen
@antwort.connect(SEL_COMMAND){ bei_enter_mache_das }
end

Das sollte erstmal das Grundsätzliche sein.
Nun füllst du die Labels je nach aktueller Frage mit deinem Text.


1
2
3
4
5
6
7
8

def frage_ihn_was
@frage.text = extern.frage
@antw_a.text = extern.a
@antw_b.text = extern.b
@antw_c.text = extern.c
@antw_d.text = extern.d
end


Viel Geschwafel und ich hoffe es ist auch ein Teelöffel voll brauchbarem für dich dabei.
Wenn du noch Fragen hast. Her damit. Ich versuch sie zu beantworten.

Grüße,
Kjarrigan

PS: Hab das beim Essen getippt, hatte so viel Hunger ;-) Hoffe da sind keine Fehler drin. Werd ich noch ggf Korrigieren

_________________
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning. - Rick Cook, The Wizardry Compiled


Zuletzt geändert von Kjarrigan am 22 Jun 2009, 19:51, insgesamt 1-mal geändert.

Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Fragen zu FXRuby
BeitragVerfasst: 22 Jun 2009, 18:51 
Offline
Geselle
Benutzeravatar

Registriert: 10 Mai 2009, 22:59
Beiträge: 199
Wohnort: Barcelona
Vielen Dank für die ausführliche Antwort, hab' auf Anhieb bisher noch nicht alles verstanden, aber werd' mich mal versuchen durch das Beispiel zu "kämpfen". :)


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Fragen zu FXRuby
BeitragVerfasst: 22 Jun 2009, 21:38 
Offline
Lehrling
Benutzeravatar

Registriert: 22 Jun 2009, 13:55
Beiträge: 82
Wohnort: Ostthüringen
Kann geschlossen werden, wir einigen uns außer Gerichtlich :-D

_________________
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning. - Rick Cook, The Wizardry Compiled


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Fragen zu FXRuby
BeitragVerfasst: 18 Jul 2009, 18:55 
Offline
Geselle
Benutzeravatar

Registriert: 10 Mai 2009, 22:59
Beiträge: 199
Wohnort: Barcelona
Ich hab' ein Programm geschrieben, dass normalerweise im DOS-Fenster läuft, und wollte
FX-Ruby benutzen, um gelegentlich ein Fenster mit den Resultaten auftauchen zu lassen.
Das erste Fenster klappt auch sehr gut.

Nur wenn ich dann im DOS-Fenster weiterarbeite und dann das zweite Fenster kommen müsste, bekomme ich eine Fehlermeldung von FXRuby, dass nur EIN Fenster erstellt werden kann.

Weiß jemand warum?

Und ob es einen Befehl zum Schließen oder "Zerstören" des ersten Fensters nach Benutzung gibt?
(geschlossen wird das Fenster ja manuell durch den User... aber vielleicht ist es für Ruby noch aktiv?!?)

Danke!


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
cron