私はMono&GTK#(Qt / C ++ GUIプログラミングのバックグラウンドから来ました)を使い始めようとしていて、非常に単純なテストGUIから始めることにしました。
MS Windows Mono / GTK#インストーラーをインストールし、Gladeへのスタートメニューリンクが機能しないことを発見すると(パッケージに含まれていないように見えたため)、「GladewithGTK+」Windowsを使用しました。 GladeWebサイトのバイナリインストーラー。
次に、Glade(この投稿の下部)で非常に単純なGUIを作成し、それを表示するためのC#コードの最初のビットを記述しました。ただし、正しく機能していないようです。
「Hello、World!」がコンソールに正しく出力された後、ウィンドウが表示されたりエラーメッセージが出力されたりせずにプログラムがハングします。ウィンドウが作成され、イベントループが開始されたように見えますが、ウィンドウは表示されていません。最初のファイルを行null
から削除しnew Glade.XML
、gladeファイルをリソースとして含めないようにしましたが、違いはありませんでした。
また、Glade GUI xmlをモノラルWebサイトのGtkSharpBeginnersGuideにあるものに置き換えてみました(そしてC#コードでに変更wndTestWindow
しました)。GladeXMLに問題があることを完全に示唆しているようです。window1
ただし、Gladeのインストールによって作成されたXMLの何が問題になっているのかを理解するのは難しいと感じています。誰かが何か提案をすることができますか?
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#テストコード:
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();
}
}
コンパイルおよび実行:
mcs -pkg:glade-sharp-2.0 -resource:test_mono.glade test_mono.cs
mono .\test_mono.exe
バージョン:
Windows:XP Service Pack 3 Glade:3.6.7MCSバージョン2.6.7.0MonoおよびGTK#mono-2.6.7-gtksharp-2.12.10-win32-2.exe
は、MonoWebサイトから使用してインストールされます。
cygwinと「Mono-2.6.7コマンドプロンプト」の両方を使用してコンパイルおよびテストされています。