Erste Schritte mit Mono, C # und Glade # gestartet: Wie machen Fenster erscheinen?

StackOverflow https://stackoverflow.com/questions/3608157

  •  25-09-2019
  •  | 
  •  

Frage

Ich habe versucht, mit Mono & GTK # loszulegen (ich komme aus einem Hintergrund von Qt / C ++ GUI-Programmierung) und entschied mit einem sehr einfachen Test GUI zu starten.

ich den MS Windows Mono / GTK # Installer installiert und dann, nachdem er festgestellt, dass das Startmenü Link zu Glade funktioniert nicht (wie es nicht im Paket enthalten zu sein schien), habe ich die „Glade mit GTK +“Windows binäres Installationsprogramm von der Glade Website.

ich dann eine sehr einfache GUI in Glade (am unteren Ende dieses Beitrags) erstellt und schrieb mein erstes Bit von C # -Code, um sie anzuzeigen. Allerdings scheint es nicht richtig zu funktionieren.

Die "Hallo, Welt!" gedruckt wird, an die Konsole korrekt und dann geht das Programm hängt, ohne das Fenster erscheinen, oder Fehlermeldungen gedruckt werden. Es scheint, als ob das Fenster und die Ereignisschleife gestartet wird erstellt wurde, aber dass es nicht sichtbar gemacht wird. Ich habe versucht, den ersten null aus der new Glade.XML Linie zu entfernen und nicht die Lichtung Datei als eine Ressource, einschließlich, aber das machte keinen Unterschied.

Ich habe mit dem man auch versucht, die Glade GUI xml ersetzt auf die GtkSharpBeginnersGuide auf der Mono-Webseite (und wndTestWindow zu window1 im C # -Code zu ändern) und es scheint zu funktionieren perfekt was bedeutet, dass es ein Problem mit meiner XML Glade. Aber ich finde es schwer, herauszufinden, was mit der XML falsch ist durch meine Glade Installation erstellt. Kann jemand bieten Anregungen?

Glade GUI:

<?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 # Testcode:

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();
    }
}

kompiliert und ausgeführt mit:

mcs -pkg:glade-sharp-2.0 -resource:test_mono.glade test_mono.cs
mono .\test_mono.exe

Versionen:

Windows-: XP Service Pack 3 Glade: 3.6.7 MCS Version 2.6.7.0 Mono & GTK # installiert mono-2.6.7-gtksharp-2.12.10-win32-2.exe von der Mono Website.

Zusammengestellt und getestet sowohl mit Cygwin und die "Mono-2.6.7 Eingabeaufforderung".

War es hilfreich?

Lösung

Versuchen Sie, Ihre Wurzel Hinzufügen <property name="visible">True</property> Widget, so dass es lautet:

<?xml version="1.0"?>
<glade-interface>
  <!-- interface-requires gtk+ 2.12 -->
  <!-- interface-naming-policy project-wide -->
  <widget class="GtkWindow" id="wndTestWindow">
    <property name="visible">True</property>
    <property name="title" translatable="yes">Test Window</property>
    <property name="window_position">center</property>
    <child>

In Glade die Eigenschaft kann im Rahmen der gemeinsamen Register Eigenschaften des Fensters zu finden.

Andere Tipps

Sie könnten das Herunterladen MonoDevelop für Windows suchen. Gtk # hat sich nicht wirklich Glade in eine lange Zeit verwendet. Im Allgemeinen nutzt Stetic, die einen Designer in MonoDevelop gebaut hat.

http://monodevelop.com/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top