ウィンドウ内に画像があるGtk.Frame
があります。今、Gtk.Frame
がクリックされたときにメッセージを表示する必要があります。ここに私のコードです。button-press-eventとGtk.Frame
グレイドのXML:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.18.3 -->
<interface>
<requires lib="gtk+" version="3.12"/>
<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>
<child>
<object class="GtkFrame" id="frame1">
<property name="can_focus">False</property>
<property name="tooltip_text" translatable="yes">Clique para imprimir</property>
<property name="halign">start</property>
<property name="valign">start</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<signal name="button-press-event" handler="onFrameClicked" swapped="no"/>
<child>
<object class="GtkAlignment" id="alignment1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="left_padding">12</property>
<signal name="button-press-event" handler="onFrameClicked" swapped="no"/>
<child>
<object class="GtkImage" id="image1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="stock">gtk-home</property>
<signal name="button-press-event" handler="onFrameClicked" swapped="no"/>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">frame1</property>
<signal name="button-press-event" handler="onFrameClicked" swapped="no"/>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">label</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="entry1">
<property name="visible">True</property>
<property name="can_focus">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
</child>
</object>
</interface>
Pythonコードは:Gtk.Frame
何も起こらない上
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, Gdk
def on_frame_clicked(widget, event):
print('Clicked!')
builder = Gtk.Builder.new()
builder.add_from_file('frame_event.glade')
window = builder.get_object('window1')
handlers = {'onFrameClicked': on_frame_clicked}
builder.connect_signals(handlers)
window.show_all()
Gtk.main()
しかし、私がクリックしたとき。私はまた、image
との同じハンドラをframe
に使ってみました。まだ動作しません。 ダブルクリックイベントをキャプチャする必要がありますが、開始点がbutton-press-event
であることがわかりました。
私は間違っていますか?
フレームをクリックするとどうなりますか? – andlabs
@andlabs それは何でもかまいません。単純な 'print'でもかまいません。それは単なるテストです。 関数 'on_frame_clicked'が呼び出されていないことに気づきました。 –