1

GUIにはウィンドウと垂直ボックスのみが含まれている単純なPerl GtKを試しています。セグメンテーション違反が発生し、その前に次の警告が表示されます:「抽象 (インスタンス化不可能な) 型 `GtkBox' のインスタンスを作成できません」

GUI は次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<interface>
  <!-- interface-requires gtk+ 3.0 -->
  <object class="GtkWindow" id="window1">
    <property name="can_focus">False</property>
    <property name="title" translatable="yes">Text to EPUB</property>
    <child>
      <object class="GtkBox" id="box1">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="orientation">vertical</property>
        <child>
          <placeholder/>
        </child>
        <child>
          <placeholder/>
        </child>
      </object>
    </child>
  </object>
</interface>

コードは次のとおりです。

#!/usr/bin/perl
use warnings;
use strict;

use File::Spec::Functions qw(rel2abs);
use File::Basename;
use File::Copy;
use Glib;
use Gtk2 '-init';

my $basedir = dirname(rel2abs($0));

my $guifile = "$basedir/txt2epub1.gui";

print "GUI file: $guifile\n";
my $builder = Gtk2::Builder->new();
$builder->add_from_file($guifile) or die "Couldn't read $guifile";
$builder->connect_signals( undef );


my $window = $builder->get_object("window1") or die "Can't open main window";

$window->show_all();

Gtk2->main();

# Callbacks
sub cb_window1_destroy {
    Gtk2->main_quit();
    exit;
}
4

1 に答える 1

5

xml ファイルには次の行があります。

<!-- interface-requires gtk+ 3.0 -->

しかし、あなたの Perl スクリプトには次のものがあります。

use Gtk2 '-init';

Gtk3 で作成されたファイルを Gtk2 ライブラリで読み込もうとしているようです。

于 2012-08-11T18:04:17.380 に答える