Tôi không chắc mình có nên nói hay không, đây là bài đăng đầu tiên của tôi ở đây.Không thể sử dụng tệp glade xml với haskell
Dù sao, tôi đang theo dõi hướng dẫn thanh toán từ gtk2hs website. Mã được biên dịch đúng cách nhưng khi tôi cố thực hiện nó, tôi nhận được lỗi này.
(hellogtk2hs:8670): libglade-WARNING **: Expected <glade-interface>. Got <interface>.
(hellogtk2hs:8670): libglade-WARNING **: did not finish in PARSER_FINISH state
hellogtk2hs: user error (Pattern match failure in do expression at HelloGtk2Hs.hs:8:8-15)
Đây là tệp glade của tôi.
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<!-- interface-requires gtk+ 3.0 -->
<object class="GtkWindow" id="window1">
<property name="can_focus">False</property>
<child>
<object class="GtkBox" id="box1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="homogeneous">True</property>
<child>
<object class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Write your name here: </property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="entry1">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="invisible_char">●</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkBox" id="box2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="homogeneous">True</property>
<child>
<object class="GtkButton" id="button1">
<property name="label">gtk-apply</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_stock">True</property>
<property name="always_show_image">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="button2">
<property name="label">gtk-close</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_stock">True</property>
<property name="always_show_image">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
</child>
</object>
</interface>
Tệp glade nằm trong cùng thư mục với mã nguồn của tôi. Mã nguồn là một bản sao chính xác từ một trong hướng dẫn. Tôi chưa bao giờ làm việc với glade trước đây, vì vậy tôi không có ý tưởng về những gì đang xảy ra.
Tôi phải hạ cấp ghc từ 7,6 xuống 7,4,2. Tôi đang sử dụng glade 3.14.1, tất cả các gói khác đã được cài đặt thông qua cabal để họ đang ở trên phiên bản hiện tại của họ.
Nếu tôi chuyển đổi giao diện bằng giao diện glade, lúc đầu và cuối cùng, nó vẫn than phiền.
(hellogtk2hs:9636): libglade-WARNING **: Unexpected element <object> inside <glade-interface>.
hellogtk2hs: user error (glade.xmlGetWidget: no object named "window1" in the glade file)
Và nếu thay đổi tất cả các đối tượng thẻ với phụ tùng tôi có được điều này
(hellogtk2hs:9668): GLib-GObject-ERROR **: cannot create instance of abstract (non-instantiatable) type `GtkBox'
`trap' para punto de parada/seguimiento
tôi nhận được lỗi ít bằng cách thực hiện điều này, nhưng nó vẫn không hoạt động.
Bạn có phiên bản nào của các thành phần khác nhau? – huon
Tôi đoán vấn đề là ở đây: ''; gtk2hs là liên kết gtk2. –
(Nếu bạn đã tìm thấy giải pháp, bạn nên đặt câu trả lời và chấp nhận giải pháp, để câu hỏi không được trả lời là chưa được trả lời. Hoặc @MatveyAksenov, bạn có thể đặt nhận xét của mình làm câu trả lời.) – huon