問題タブ [tkinter-canvas]
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.
python - tkinter ルート ウィンドウのサイズが適切ではありません
私は tkinter キャンバスを作成しています。ユーザーがいつウィンドウのサイズを変更したかを確認する必要があります。問題は、最初はウィンドウが本来あるべきサイズではないことです。私は次のものを持っています:
これを実行すると、次のようになります。
そして1秒後:
tkinter が 6 ピクセルを追加するという事実を無視すると、サイズが最初に 1 になり、次に 306 になるのはなぜですか? 私はそれを間違って設定していますか?
python - キャンバス上の Tkinter で PIL イメージを開く方法
PIL イメージをキャンバス上で動作させることができないようです。コード:
エラー:
画像のサイズを変更したいので、PhotoImages ではなく PIL 画像を使用する必要があります。私は Tkinter を使いたいので、Pygame に切り替えることを提案しないでください。
python - tkinter Canvas ウィジェットを使用してボタンを作成するには?
Canvas からボタンを取得したい。pack
ボタンウィジェットでキャンバスを試してみましたが、うまくいきませんでした。少しグーグルで調べてみると (ここ: How do you create a Button on a tkinter Canvas? ) Canvas メソッドcreate_window
が役立つかもしれないことがわかりました。しかし、私がそれを使用している方法には何か問題があるはずです。
線を消せばcreate_window
絵を見ることはできますが、(明らかに) クリックすることはできません。しかし、この方法では、ボタン ウィジェットが私の円を覆い、悲しい空のボタンが表示されます。
基本的には、赤い丸が内側に描かれたボタンを作成したいと考えています。
python - TKinter キャンバスの線を破線から実線に変更するにはどうすればよいですか?
私の Python スクリプトでは、最初にキャンバス ラインを実線で作成しました。次に、特定のイベントの下で、以下の構文を使用して線をダッシュに変更しました。
実線に戻すコマンドは?
python - マウスで tkinter キャンバスを移動する
Canvas
マウスクリック(ホールド)+マウスのモーションでtkinter全体を動かしたいと思います。で試しましcanvas.move
たが、残念ながらうまくいきません。
キャンバス全体をスクロールするにはどうすればよいですか? (キャンバスの各要素を移動するのではなく、キャンバスの表示領域をスクロールします)
python - Tkinter で円のログをすばやく作成する
Tkinter Canvas に 86,000 個 (小さな円) を描画したいと考えています。平均すると、8,600 円ほどになります。一度に描かれる円はすべて同じ (サイズ、色) です。円の半径は、描画される円の数 (描画する円が多数ある場合は 1 ~ 2 ピクセル) に関連していますが、半径の違いによる全体的な影響はほとんどありません。
canvas.create_oval(px+r,py+r,px-r,py-r,fill='green')
計算時間にかなりのコストがかかります。円を事前に作成し、必要に応じてそのコピーをキャンバスに貼り付けるのが理想的です。
現時点では、canvas.create_oval(...)
86,000 回の呼び出しに約 20 秒かかります。(描画する円を決定するロジック自体は 100 ミリ秒未満で実行されます。)
円をすべて個別に作成するのではなく、1 つの円をコピーするにはどうすればよいですか?
python - tkinter キャンバス内の matplotlib のズーム機能
GUI の背後にあるスクリプトを (Tkinter を使用して) 転送しようとしてきましたが、これまでのところ、開いているデータはすべて Tkinter キャンバスに表示されます (matplotlib を使用して描画します)。
これに関する唯一の問題は、matplotlib にある標準のズーム/スクロール (マウスの左ボタンを使用してプロットを「移動」し、マウスの右ボタンを使用して「ズーム」する) がキャンバスでアクセスできないことです。 matplotlib プロット ウィンドウの「4 点の十字」。
これには独自のハンドラーを作成する必要があると思いますが、matplotlib のデフォルトのハンドラーを使用する方法が必要だと思いますか? この質問で述べたように、「スクロール」キャンバス オプションも確認しましたが、データをズームイン/ズームアウトするのではなく、プロット エリアのサイズを変更するだけのように見えます。また、操作するためだけにボタンを追加したくありません。プロット エリア。
私が現在持っている最低限のコード:
python - Tkinter Python でグローバル キャンバスを作成する
学校の課題として簡単なゲームをやっていますが、キャンバスの更新に問題があります。いくつかのループとスリープ コマンドを試しましたが、うまくいかないようです。これで、キャンバスを更新するコードができましたが、キャンバスを updateCanvas 関数に渡す方法がわかりません。
基本的に私は2つの機能を持っています:
次に、キャンバスを更新するメソッドがあります
ボタンを押すとキャンバスが更新されますが、キャンバスはグローバルではないと表示されます。それは理にかなっている。私は以前にJavaプログラミングを行ったことがあります。何らかの理由でキャンバスを次のように変更します。
これにより、「構文エラー:無効な構文」が表示されます
私は何をすべきか?ループを使用しますか?クラス内にグローバル変数を作成できませんか? ゲームをチェッカーまたはチェスのように考えてください。チェッカーまたは駒が移動したときに画面を更新する必要があります。