問題タブ [drawingarea]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
574 参照

grid - Gtk.Grid にアタッチされている場合、Gtk.DrawingArea は空白です

(初投稿です、間違っていたらすみません…)

私はValaで教室をデザインできるプログラムを書いています。GUI には GTK を使用し (Vala はこれとうまく統合されています)、教室の図を描くには Cairo を使用することにしました (GTK にはデフォルトで付属しています)。

「教室」クラス (Gtk.DrawingArea のサブクラス) を作成しましたが、現在は正方形を表示するだけです:

アプリケーション用のクラスも作成しました。

そして、これが私の主な機能です:

classroomウィジェットをGtk.Grid、選択したレイアウト ウィジェットに配置しました。コードをコンパイルして実行すると、空白のウィンドウが表示されます。

私の空白の窓

ただし、 を使用せず、使用(コメントアウトした) をGtk.Grid追加するだけで、ウィジェットは正しく表示されます。classroomroot.add()classroom

Gtk.Gridを使用せずに動作する場合

Gtk.Grid を使用してウィジェットを追加すると、ウィジェットが表示されないのはなぜですか?

これを修正するにはどうすればよいですか?

0 投票する
1 に答える
142 参照

python-3.x - PyGtk3 - Gtk.DrawingArea がスクロールしない

私の問題は、GtkDrawingArea ウィジェットの GtkImage を置き換えたことと、GtkImage のようにスクロールしないことです。

これは、GtkImage と GtkDrawingArea (一度に 1 つずつ) の両方を配置する方法です。

  • GtkScrolledWindow
    • GtkViewPort
      • GtkImage / GtkDrawingArea

これで十分だろうと思いました。

GtkImage の場合:水平方向と垂直方向にスクロールすると、GtkImageViewport が表示すべき PixBuf の一部を読み込みます。

ここに画像の説明を入力

GtkDrawingArea の場合:スクロール バーが使用可能なすべての領域を占有するため、画像は移動しません。

ここに画像の説明を入力

ウィンドウのサイズを変更すると、スクロール時に表示されず、表示されるはずの画像の部分が表示されます。

ここに画像の説明を入力

注1 :画像に描画してピクセル座標を操作できるようにしたいので、Gtk.DrawingAreaとCairoを使用するのは良い考えだと思います。

注2: Gladeとscrolledwindow.add_with_viewport(drawing_area)を使用したコードの両方を試しました

0 投票する
1 に答える
665 参照

python-3.x - PyGtk3 での Gtk.DrawingArea のサイズ変更

以下のコードを実行して、次のようなものを取得してください。

ここに画像の説明を入力

基本的に、Gtk.Scrolledwindow にもある Gtk.Viewport 内にある Gtk.DrawingArea をセットアップしました。上記のDrawingAreaで画像を描画し、2つのボタンを使用して画像を拡大縮小できます。

アプリケーションを実行します。また、いくつかのコールバックを設定したので、マウス ポインターを画像の上に置くと、次のことがわかります。

i) DrawingArea に入ると

ii) DrawingArea から出るとき

iii) DrawingArea の (x, y) と画像のピクセル強度

私が直面している問題は、十分な回数ズームアウトすると、画像が次のようになることです。

ここに画像の説明を入力

しかし、'mouse enter' および 'mouse leave' 信号と 'mouse motion' 信号は、DrawingArea が作成されたときと同じサイズのままであるように送信されます。マウスを画像の上に置き、画像の外側で DrawingArea の内側に移動して、ターミナルで出力を確認してください。

画像の外にホバリングしているときに信号が送信されないようにしたいと思います。つまり、可能であれば、DrawingArea のサイズを表示される画像のサイズに合わせます。