ツールチップがボタンに表示されません。私はおそらくこれをクリアする必要があります:彼らは私の通常のボタンに表示されますが、私のオーバーレイオブジェクトに追加されたボタンはツールチップを表示しません。Gtk + 3ツールチップがボタンに表示されない
# Overlay
self.overlay = Gtk.Overlay()
self.overlay.show()
# Image
self.image_pixbuf = GdkPixbuf.Pixbuf.new_from_file("pics/sgcity.png")
self.image_pixbuf = self.image_pixbuf.scale_simple(1200, 720, GdkPixbuf.InterpType.BILINEAR)
self.image = Gtk.Image()
self.image.set_from_pixbuf(self.image_pixbuf)
self.overlay.add(self.image)
self.image.show()
# Printer Buttons
for i in range(len(self.printbuttons)):
self.printbuttons[i].destroy()
self.printbuttons = []
self.button_attribs = []
self.logic.create_printer_button_attributes()
self.button_attribs = self.logic.get_printer_button_attributes()
for i in range(len(printer_store)):
self.printbuttons.append(Gtk.Button(None))
self.printerimg = Gtk.Image()
self.printerimg.set_from_file("pics/printer.png")
self.printbuttons[i].set_image(self.printerimg)
self.overlay.add_overlay(self.printbuttons[i])
self.printbuttons[i].set_name('printbuttons')
self.printbuttons[i].set_opacity(0.8)
self.printbuttons[i].set_tooltip_text(printer_store[i][0])
self.printbuttons[i].show()
for i in range(len(self.printbuttons)):
self.printbuttons[i].connect("enter", self.on_printer_image_entered)
self.printbuttons[i].connect("leave", self.on_printer_image_left)
self.printbuttons[i].connect("clicked", self.on_printer_button_clicked, printer_store[i])
# Quit Button
self.quit_button = Gtk.Button("Quit")
self.quit_button.show()
self.quit_button.set_tooltip_text("GET OUTTA HERE!!!")
def register_handlers(self):
self.department_combo.connect("changed", self.on_department_combo_changed)
self.building_combo.connect("changed", self.on_building_combo_changed)
self.floor_combo.connect("changed", self.on_floor_combo_changed)
self.printer_combo.connect("changed", self.on_printer_combo_changed)
self.update_button.connect('clicked', self.update_floor_plan)
self.install_button.connect('clicked', self.on_install_button_clicked)
self.uninstall_button.connect('clicked', self.on_uninstall_button_clicked)
self.help_button.connect('clicked', self.on_help_button_clicked)
self.quit_button.connect('clicked', self.destroy_handler)
self.main_window.connect('delete-event', self.delete_event_handler)
self.main_window.connect('destroy', self.destroy_handler)
return
def run(self):
Gtk.main()
# This method is called by the 'X' button on the window,
# or as a result of Gtk.main_quit()
def delete_event_handler(self, widget, event, data=None):
# return False to indicate that we agree with the window
# being deleted.
self.helpWindow.destroy_handler()
return False
# This method is called by the 'quit' button
def destroy_handler(self, widget, data=None):
self.helpWindow.destroy_handler()
Gtk.main_quit()
return
def get_child_position(self, overlay, widget, allocation):
for i in range(len(self.printbuttons)):
if widget == self.printbuttons[i]:
allocation.x = self.button_attribs[i][0]
allocation.y = self.button_attribs[i][1]
allocation.height = self.button_attribs[i][2]
allocation.width = self.button_attribs[i][3]
print "changed"
return True
def on_printer_image_entered(self, button, tip):
button.set_opacity(1)
button.set_tooltip_text(tip)
return
def on_printer_image_left(self, button):
button.set_opacity(0.8)
return
def on_printer_button_clicked(self, button, printer):
for i in range(len(self.printer_combo.get_model())):
if printer[0] == self.printer_combo.get_model()[i][0]:
active_printer = i
self.printer_combo.set_active(active_printer)
print printer[0]
return
明らかに、これは私のプログラム全体ではありませんが、すべての重要な要素があります。終了ボタンにはツールチップが表示されますが、印刷ボタンは表示されません。私が言ったように、彼らはオーバーレイの一部だからと思うが、本当にわからない。誰もが洞察力を持っている場合、それは非常に感謝される!
注:私はオーバーレイにツールチップを設定した場合、それは関係なく、私がボタンの上かないんだかの現れここ
が登場ツールチップのためのスクリーンショットです。 – TheEggSample
コードを実際に動作させる最小限のコードを追加できれば、テストすることができます(私たちにとって)はるかに簡単です。とにかく、私は 'leaveと' enter'イベントへの接続があなたの問題を引き起こしていると考えています - 私は彼らがツールチップを無効にしていると思っています。 – jcoppens
よろしくお願いします。私は出入りに関してあなたと同じ考えを持っていたので、オーバーレイにないボタンでテストしたところ、うまくいきました... – TheEggSample