Câu hỏi Lỗi chuyển đổi gtk-builder


Tôi đang làm hướng dẫn trong liên kết http://www.micahcarrick.com/gtk-glade-tutorial-part-1.html

Khi tôi chạy tệp tutorial.glade của tệp gtk-builder-convert, tôi nhận được lỗi sau

    Traceback (most recent call last):
    File "/usr/bin/gtk-builder-convert", line 799, in <module>
    sys.exit(main(sys.argv))
    File "/usr/bin/gtk-builder-convert", line 787, in main
    conv.parse_file(input_filename)
    File "/usr/bin/gtk-builder-convert", line 162, in parse_file
    self._parse()
    File "/usr/bin/gtk-builder-convert", line 234, in _parse
    assert glade_iface, ("Badly formed XML, there is "

    AssertionError: Badly formed XML, there is no <glade-interface> tag.

tập tin glade trông như thế này:

<?xml version="1.0" encoding="UTF-8"?>
<interface>
    <!-- interface-requires gtk+ 3.0 -->
    <object class="GtkWindow" id="window">
        <property name="can_focus">False</property>
        <property name="title" translatable="yes">GTK+ Text Editor</property>
        <signal name="destroy" handler="on_window_destroy" swapped="no"/>
        <child>
            <placeholder/>
        </child>
    </object>
</interface>

Lưu ý: tệp glade được tạo bằng Glade 3.14.0 trong ubuntu 12.10


2
2018-01-22 10:40


gốc


nếu tôi thay đổi thẻ <interface> thành <glade-interface> theo cách thủ công trong tệp glade và sau đó chạy lệnh gtk-builder-convert thì tệp xml được tạo. Tôi vẫn muốn biết lý do tại sao thẻ được tạo tự động không hoạt động - Alwin Doss


Các câu trả lời:


Lần cuối tôi lập trình trong Glade / GTK, nó không yêu cầu "gtk-builder-convert". Tệp .glade mà glade cung cấp chính là tệp xml bạn cần. Chỉ cần lập trình mã của bạn như thể bạn đã chuyển đổi tệp thành .xml (btw, tôi đang sử dụng glade 3.12.1). Như:

#include <gtk/gtk.h>

void on_window_destroy (GtkWidget *object, gpointer user_data) {
    gtk_main_quit();
}

int main (int argc, char *argv[]) {
    GtkBuilder *builder;
    GtkWidget *window;

    gtk_init (&argc, &argv);

    builder = gtk_builder_new ();
    gtk_builder_add_from_file (builder, "ui.glade", NULL);

    window = GTK_WIDGET (gtk_builder_get_object (builder, "window1"));
    g_signal_connect (window, "destroy", G_CALLBACK (on_window_destroy), NULL);

    gtk_widget_show (window);       
    gtk_main ();

    return 0;
}

2
2017-09-23 16:06