絵は千の言葉を描きます...:
私のPython2.7アプリケーションには、クリックするとメニューがポップアップするボタンがあります。
状況によっては、このリストが画面サイズよりも大きくなります。
Ubuntu 12.04(Gtk 3.4.2を使用)では、スクロール矢印が表示されるため、これは問題ありません(図の右側に表示されています)。
Ubuntu 12.10 /13.04およびFedora17(Gtk 3.6を使用)では、同じメニューが表示されますが、スクロール矢印がなく、マウスを使用して上下にスクロールできません。
奇妙な部分は、ボタンをもう一度クリックすると、スクロール矢印が再び表示されることです。
したがって、ある種のサイズ割り当ての問題のように見えます-最初のポップアップでは計算されませんが、後続のポップアップでは計算されます
したがって、私の質問
新しいGTKライブラリで明らかに何かが変わった-スクロール矢印が確実に表示されるように大きなポップアップメニューを表示する正しい方法は何ですか?
一貫した「最初のクリックで矢印を表示」できるように、異なるGTKバージョン間のこの明らかな違いにどのように取り組むべきかについてのヒントはありますか?
以下は、この問題を示す簡単なPythonテストプログラムです。
GtkParasite自体の[検査]ボタンをクリックするとすぐにポップアップが消えるため、GTKParasiteを使用してこれを診断できませんでした。
#-*-モード:python; コーディング:utf-8; タブ幅:4; インデント-タブ-モード:nil; -*- #!/ usr / bin / env python gi.repositoryimportGtkから def popupclick(self、* args): popup.popup(None、None、None、None、0、 Gtk.get_current_event_time()) window = Gtk.Window() window.connect('delete_event'、Gtk.main_quit) window.set_default_size(200,200) first_item=なし ポップアップ=Gtk.Menu() 範囲(100)のiの場合: label ='アイテム%d'%i first_itemでない場合: new_menu_item = Gtk.RadioMenuItem(label = label) first_item = new_menu_item そうしないと: new_menu_item = Gtk.RadioMenuItem.new_with_label_from_widget( group = first_item、label = label) new_menu_item.show() popup.append(new_menu_item) ボタン=Gtk.Button() button.connect('クリック'、popupclick) mainbox = Gtk.Box() mainbox.pack_start(button、True、True、0) scroller = Gtk.ScrolledWindow() scroller.add_with_viewport(mainbox) window.add(scroller) window.show_all() Gtk.main()