最近、私はこのウィジェットをGeditで見ました:
を押すと表示されますCtrl + F
。私が興味を持っているのは、スライド効果を得るための方法です。任意の提案をいただければ幸いです。
最近、私はこのウィジェットをGeditで見ました:
を押すと表示されますCtrl + F
。私が興味を持っているのは、スライド効果を得るための方法です。任意の提案をいただければ幸いです。
回答:
純粋な GTKとCSS を使用してフェードアウト効果を実現しました。
GTK 3.6でのみ機能し、スライドイン/アウト効果が可能かどうかはわかりませんが、必要に応じて、launchpad.net / uberwriterでソースを確認できます。
状態の変更とGTKトランジションを介して動作します...多分高さ//幅も可能です。
人々は明らかに私に反対票を投じているので、ここに別のより詳細な説明があります:
これは私が使用したCSSです。
GtkLabel:insensitive {
color: rgba(255,255,255,0);
transition: 500ms ease-in-out;
}
これをCSSとして使用する場合(自分から説明を参照することを許可されていると思います。その方法:http : //wolfvollprecht.de/blog/gtk-python-and-css-are-an-awesome-combo/)次にGtk.StateFlags
、ラベルをフェードアウトするために使用できます。
例えば:
label.set_state_flags(Gtk.StateFlags.INSENSITIVE, True)
次に、不透明度がゼロに移行します。
ただし、気づいたように、CSSで配置/幅に影響を与えるオプションは多くないので、色/不透明度などに制限されていると思います。
楽しい。
PS:これはUbuntu 12.10以降、Gtk 3.6でのみ機能することに注意してください。
GtkRevealer
は両方ができるがあります。私の答えを見てください。
このようなアニメーションは、純粋なGTK +では実現できません。それを処理するメカニズムはありません。
geditのソースコードをざっと見てみましたが、彼らがこのアニメーションを自分で処理していることは明らかです。アニメーションに関連するコードは非常に拡張されているため、詳細については調べていませんが、アニメーション検索ウィジェット用のCairo描画機能が組み込まれていることに注意しました。ほとんどの場合、ウィジェットはフレームごとに位置を移動し、単一のテキスト表示領域で使用されるオーバーレイの別の場所にウィジェットを再描画することによってアニメーション化されます。
それが最も簡単な解決策のようです。(geditのコードは、同じコードベースを共有する多くのアニメーション用に準備されているようです。そのため、単純なアプリケーションで正確なアプローチを使用するのはやり過ぎかもしれません。)
この効果を再現するには、次のことを行う必要があります。
簡単な解決策は思いつきません。ただし、gedit開発者がGTK +を知っているのはおそらくごくわずかであるという事実を考慮すると、そのような効果を達成するためのより簡単なトリックはないかもしれません。
Gtk.fixed()、GObject.timeout_addと関数moveの組み合わせを使用できます。これはpythonの例です。
#!/ usr / bin / python * gi.repositoryからインポートGtk、GObject クラスTestWindow(Gtk.Window): def animateImage(self): GObject.timeout_add(150、self.slideImage) def slideImage(self): self.positionX + = 50; if(self.positionX> 800): self.fixedWidget.move(self.logo、self.positionX、200) Trueを返す そうしないと: Falseを返す def __init __(self): Gtk.Window .__ init __(self、title = 'Registration') self.positionX = 500 self.fixedWidget = Gtk.Fixed() self.fixedWidget.set_size_request(1920,1080) self.fixedWidget.show() self.logo = Gtk.Image.new_from_file( 'picture.png') self.logo.show() self.fixedWidget.put(self.logo、self.positionX、200) self.button1 = Gtk.Button( 'クリックして画像をスライドさせてください!') self.button1.show() self.button1.connect( 'clicked'、self.animateImage) self.button1.set_size_request(75,30) self.fixedWidget.put(self.button1,750,750) self.add(self.fixedWidget) testWindow = TestWindow() testWindow.set_size_request(1920,1080) testWindow.set_name( 'testWindow') testWindow.show() Gtk.main()
今日、この質問に対する本当の答えがあります。もともと質問と回答があったため、ウィジェットlibgd
を公開するためのコード(私がその時点でGEditが使用していたものと思われます)は、次のようにGTK +にアップストリームされていますGtkRevealer
。
https://developer.gnome.org/gtk3/stable/GtkRevealer.html
GtkRevealer
スライドの基本的な方向や不透明度のフェードなど、さまざまな形式の遷移をサポートしています。
したがって、最近では、遷移先のウィジェットを追加し、GtkRevealer
そのプロパティ:transition-(type|duration)
と:reveal-child
プロパティを使用するだけの簡単さです。