0

ペイン(セパレータ)オブジェクトを使用してフチなしウィンドウのサイズを変更したいのですが、ターミナルアプリケーションのguakeがmotion-notify-eventでこれを行うことがわかっている場合

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

self.resizer.connect('motion-notify-event', self.on_resizer_drag)

def on_resizer_drag(self, widget, event):
    """Method that handles the resize drag. It does not actuall
    moves the main window. It just set the new window size in
    gconf.
    """
    (x, y), mod = event.device.get_state(widget.window)
    if not 'GDK_BUTTON1_MASK' in mod.value_names:
        return

    max_height = self.window.get_screen().get_height()
    percent = y / (max_height / 100)

    if percent < 1:
        percent = 1

    self.client.set_int(KEY('/general/window_height'), int(percent))

Resizerはペインオブジェクトですが、pygtk(gtk2)を使用するこのコードは、gtk3でpython-gobjectを使用しています。event.device.get_state(window)メソッドは非推奨または変更されています。これは私にはうまくいきません、オブジェクトドラッグでウィンドウのフチなしウィンドウのサイズを変更することについてのアドバイスや解決策はありますか?

4

1 に答える 1

0

Guakeのコードを自分でGtk3に実装しました。

最初にモーション通知イベントを接続します。リサイザーはペインオブジェクトです。

self.resizer.connect('motion-notify-event', self.on_resize)

次の書き込みサイズ変更イベント

def on_resize(self, widget, event):
    if Gdk.ModifierType.BUTTON1_MASK & event.get_state() != 0:
        mouse_y = event.device.get_position()[2]
        new_height = mouse_y - self.get_position()[1]
        if new_height > 0:
            self.resize(self.get_allocation().width, new_height)
            self.show()

これで、ガターを使用してウィンドウを拡張できます。

于 2012-12-01T01:37:27.537 に答える