Python
 Computer >> コンピューター >  >> プログラミング >> Python

Tkinter Pythonのクリックイベントでキャンバスにドットを描画するにはどうすればよいですか?


マウスボタンでウィンドウをクリックすると、座標が保存されてドットが描画されるようなGUIアプリケーションを作成する場合を考えてみます。 Tkinterは、ユーザーがキーまたはボタンを関数にバインドできるようにするイベントを提供します。

クリックイベントにドットを描画するには、次の一般的な手順に従います-

  • キャンバスウィジェットを作成し、ウィンドウに表示するためにパックします。

  • 関数を定義するdraw_dot() これは、ユーザーがクリックイベントを実行したときにイベントとして機能します。

  • キャンバスのクリック数をカウントするグローバル変数を作成します。

  • カウントが2になった場合は、1番目と2番目の座標の間に線を引きます。

  • マウスボタンをコールバック関数にバインドして、関数を完全に制御します。

# Import the required libraries
from tkinter import *
from tkinter import ttk

# Create an instance of tkinter frame or window
win=Tk()

# Set the size of the window
win.geometry("700x350")

# Define a function to draw the line between two points
def draw_line(event):
   x1=event.x
   y1=event.y
   x2=event.x
   y2=event.y
   # Draw an oval in the given co-ordinates
   canvas.create_oval(x1,y1,x2,y2,fill="black", width=20)

# Create a canvas widget
canvas=Canvas(win, width=700, height=350, background="white")
canvas.grid(row=0, column=0)
canvas.bind('<Button-1>', draw_line)
click_num=0

win.mainloop()

出力

上記のコードを実行してウィンドウを表示します。キャンバス内の任意の場所をクリックすると、そのポイントにドットが描画されます。

Tkinter Pythonのクリックイベントでキャンバスにドットを描画するにはどうすればよいですか?


  1. Tkinter Pythonでスレッドを使用する方法は?

    Tkinterでは、スレッド化を使用して一度に複数の関数を呼び出すことができます 。アプリケーション内の一部の機能の非同期実行を提供します。 Pythonでスレッドを使用するために、スレッドというモジュールをインポートできます。 スレッドをサブクラス化します クラス。新しいクラス内で、実行を上書きする必要があります メソッドを実行し、そこでロジックを実行します。 したがって、基本的にスレッドを使用すると、一度に複数の作業を行うことができます。アプリケーションでスレッド化を実現するために、Tkinterは Thread()を提供します 機能。 例を挙げて、しばらくスリープしてから別の関数を

  2. キャンバスで画像を中央に配置する方法PythonTkinter

    Tkinterを使用してGUIベースのアプリケーションを作成していて、Tkinterキャンバスに画像をロードしたいとします。 デフォルトでは、キャンバスはその幅と高さに応じて画像をロードしますが、「方向」を渡すことで、画像の位置を任意の方向(N、S、E、W、NS、EWなど)に操作できます。アンカーパラメータの値。アンカーは、画像関数とともに呼び出されるパラメータです。キャンバス内の画像の方向または位置を定義します。 アンカーパラメータを使用することで、テキストと画像を任意の方向に揃えることができます。今のところ、ラベルを使用して画像ラベルを作成します そのような機能、 Label(root