J'ai essayé de démarrer avec Mono & GTK # (je viens d'un arrière-plan de programmation GUI Qt/C++) et j'ai décidé de commencer avec une interface graphique de test très simple. J'ai installé le programme d'installation MS Windows Mono/GTK # puis, en constatant que le lien du menu Démarrer de Glade ne fonctionnait pas (car il ne semblait pas être inclus dans le paquet), j'ai utilisé le "Glade" avec GTK + "Windows installateur binaire à partir du site Web de Glade. J'ai ensuite créé une interface graphique très simple dans Glade (en bas de ce post) et écrit mon premier bit de code C# pour l'afficher. Cependant, cela ne semble pas fonctionner correctement.Premiers pas avec Mono, C# et Glade #: Comment faire apparaître une fenêtre?
Le "Bonjour, le monde!" est imprimé correctement sur la console, puis le programme se bloque sans que la fenêtre n'apparaisse ou que des messages d'erreur soient imprimés. Il semble que la fenêtre a été créée et que la boucle d'événements a démarré mais qu'elle n'est pas rendue visible. J'ai essayé de supprimer le premier null
de la ligne new Glade.XML
et ne pas inclure le fichier glade comme une ressource, mais cela n'a fait aucune différence.
J'ai aussi essayé de remplacer l'interface XML Glade avec celui sur the GtkSharpBeginnersGuide on the mono website (et le changement wndTestWindow
-window1
dans le code C#) et il semble fonctionner parfaitement ce qui implique qu'il ya un problème avec mon XML Glade. Cependant, j'ai du mal à comprendre ce qui ne va pas avec le XML créé par mon installation Glade. Quelqu'un peut-il offrir des suggestions?
GUI Glade:
<?xml version="1.0"?>
<glade-interface>
<!-- interface-requires gtk+ 2.12 -->
<!-- interface-naming-policy project-wide -->
<widget class="GtkWindow" id="wndTestWindow">
<property name="title" translatable="yes">Test Window</property>
<property name="window_position">center</property>
<child>
<widget class="GtkVBox" id="vboxTopLevel">
<property name="visible">True</property>
<property name="orientation">vertical</property>
<child>
<widget class="GtkHBox" id="hboxComboList">
<property name="visible">True</property>
<child>
<widget class="GtkLabel" id="lblList">
<property name="visible">True</property>
<property name="label" translatable="yes">Here's a list:</property>
</widget>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkComboBox" id="cmbList">
<property name="visible">True</property>
</widget>
<packing>
<property name="position">1</property>
</packing>
</child>
<child>
<widget class="GtkButton" id="btnList">
<property name="label" translatable="yes">Do something</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
</widget>
<packing>
<property name="position">2</property>
</packing>
</child>
</widget>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkHButtonBox" id="hbtnboxButtonRow">
<property name="visible">True</property>
<child>
<widget class="GtkButton" id="btnOK">
<property name="label">gtk-ok</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_stock">True</property>
</widget>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkButton" id="btnCancel">
<property name="label">gtk-cancel</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_stock">True</property>
</widget>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
</widget>
<packing>
<property name="position">1</property>
</packing>
</child>
</widget>
</child>
</widget>
</glade-interface>
C# Code d'essai:
using Glade;
using Gtk;
using System;
class TestApplication
{
static void Main(string[] args)
{
System.Console.Write("Hello, World!\n");
new TestApplication(args);
}
public TestApplication(string[] args)
{
Gtk.Application.Init();
Glade.XML gxml = new Glade.XML(null, "test_mono.glade", "wndTestWindow", null);
gxml.Autoconnect(this);
Gtk.Application.Run();
}
}
compilé et exécuté avec:
mcs -pkg:glade-sharp-2.0 -resource:test_mono.glade test_mono.cs
mono .\test_mono.exe
Versions:
de Windows: XP Service Pack 3 Glade: 3.6.7 MCS Version 2.6.7.0 Mono & GTK # installé en utilisant mono-2.6.7-gtksharp-2.12.10-win32-2.exe
à partir du site web Mono.
Compilé & testé à la fois en utilisant cygwin et le "Mono-2.6.7 Invite de commandes".
Brillant, c'était ça: merci.Je n'ai pas assez de réputation pour voter, mais j'ai accepté la réponse. – NPB