2

タイトルにあることを行う方法についての例を検索しました。基本的に、gobject と Gtk を使用して Python プログラムを作成しました。メイン ウィンドウ内に 4 ページのノートブックがあります。

<ALT>+1 <ALT>+2 <ALT>+3 <ALT>+4マウスのスクロールだけでなく、ノートブックのページを変更するのも大好きです。しばらくグーグルで検索しましたが、適切な例が見つかりませんでした。

誰かがこの件についてアドバイスをしてくれたら、私は本当に助けてくれることに感謝します

PS: どの言語の例でも問題ありません

4

2 に答える 2

2

最初にグーグルで検索したところ、あなたの質問が見つかりました。

それから私はさらにググった。このリソースGtkWidget'scroll-event'を示しています。そこには次のように書かれています。

このシグナルを受信するには、ウィジェットに関連付けられた GdkWindow で GDK_SCROLL_MASK マスクを有効にする必要があります。

へのリンクをたどって、GDK_SCROLL_MASKもう1つのマスクを見つけましたGDK_SMOOTH_SCROLL_MASK

だからここに解決策があります:

from gi.repository import Gtk, Gdk

...


class MainWindow(Gtk.Window):

    def __init__(self):
        ...
        self.notebook = Gtk.Notebook()
        self.notebook.add_events(Gdk.EventMask.SCROLL_MASK |\
                                 Gdk.EventMask.SMOOTH_SCROLL_MASK)
        self.notebook.connect('scroll-event', self.aaa)

    def aaa(self, widget, event):
        # I used `dir(event)` to find out `get_scroll_deltas()`
        if event.get_scroll_deltas()[2] < 0:
            self.notebook.prev_page()
        else:
            self.notebook.next_page()

良い1日を :-)

于 2013-11-26T16:14:51.743 に答える
2

これにより、タブ番号の切り替えの問題が解決されます。

from gi.repository import Gtk

tabs = Gtk.Notebook()
tabs.set_scrollable(True)

button = Gtk.Button()
button.set_label('hi!')
button.set_relief(Gtk.ReliefStyle.NONE)
#here we use a grid to allow more widgets in the tab label.
box = Gtk.Grid(orientation=Gtk.Orientation.HORIZONTAL)
box.add(button)
box.show_all()

#a general tab number switcher
def on_this_tab_clicked(button, tabs, pagenum):
    tabs.set_current_page(pagenum)
#any button on a tab needs numbers in its callback argument
#as well as a argument for the tab object(Gtk.Notebook)
button.connect("clicked", on_this_tab_clicked, tabs, 0)

#Here we add  the acclerator.
accels = Gtk.AccelGroup()
#parse it so it's easy to read
key, mod = Gtk.accelerator_parse("<Alt>1")
button.add_accelerator("activate", accels, key, mod, Gtk.AccelFlags.VISIBLE)

tab_content = Gtk.Label()
tab_content.set_text('hi!')
#place the box(Gtk.Grid) in the second argument of append_page
tabs.append_page(tab_content, box)
tabs.set_tab_reorderable(tab_content, True)

#do everything with successive buttons exactly like the first button
button2 = Gtk.Button()
button2.set_label('bye!')
button2.set_relief(Gtk.ReliefStyle.NONE)
box2 = Gtk.Grid(orientation=Gtk.Orientation.HORIZONTAL)
box2.add(button2)
box2.show_all()

button2.connect("clicked", on_this_tab_clicked, tabs, 1)
key2, mod2 = Gtk.accelerator_parse("<Alt>2")
button2.add_accelerator("activate", accels, key2, mod2, Gtk.AccelFlags.VISIBLE)

tab_content2 = Gtk.Label()
tab_content2.set_text('bye!')
tabs.append_page(tab_content2, box2)
tabs.set_tab_reorderable(tab_content2, True)

window = Gtk.Window()
window.set_default_size(200, 200)
window.add(tabs)

window.add_accel_group(accels)
window.connect("delete-event", Gtk.main_quit)
window.show_all()
Gtk.main()

これについては、より良いリンクがいくつかあります。 Gtk.Notebook set_current_page Gtk アクセラレータ これらのリンクは適切です。次のようなものを使用して翻訳するだけです。

gtk_function_name(オブジェクト、引数)

の中へ:

gtk.object.function(引数)

于 2012-08-04T20:39:23.087 に答える