ホームページ >バックエンド開発 >Python チュートリアル >Python + tkinter を使用して強制自白アーティファクトを作成する方法
Python には、ほとんどの一般人のニーズを満たすことができる複数のメッセージ ボックスが用意されていますが、柔軟性が十分ではないため、場合によってはメッセージ ボックスをカスタマイズする必要があります。
メッセージ ボックスの本質は、ウィンドウ、情報、および 2 つのボタンです
import tkinter as tk FONT= ("微软雅黑", 20) def msgBox(txt, yesFunc=None, noFunc=None): win = tk.Tk() win.title("started") win.geometry("400x200+300+100") label = tk.Label(win,text=txt, font=FONT) label.pack(side=tk.TOP,expand=tk.YES,fill=tk.BOTH) btnYes = tk.Button(win, text="是", width=8, font=FONT, command = lambda : yesFunc(win)) btnYes.pack(side=tk.LEFT,expand=tk.YES,fill=tk.Y) btnNo = tk.Button(win, text="否", width=8,font=FONT) btnNo.bind("<Enter>", lambda evt: noFunc(evt, win)) btnNo.pack(side=tk.RIGHT,expand=tk.YES,fill=tk.Y) msgBox("你是不是喜欢我?")
FONT
はグローバル変数ですフォントを表します。そのサイズは、label
と button
の作成時に font
パラメーターを通じて設定されます。
pack
はレイアウトメソッドで、その名の通りパッケージングです。窓を箱と考えると、時間があるときにどこでも梱包する必要があります。たとえば、一番下に衣類の層があり、それを置くスペースがない場合、それらは 2 層目にのみ配置できます。2 層目にレンガが 1 つだけ配置されている場合、他の層にはまだスペースがあります。レンガの隣に別のレンガを配置できるようにします。
上記の場合、ラベル
を上から押し、その下の左右にボタンを配置します。
が
であっても、 が
でなくても、ウィンドウを操作する必要があるため、コールバック関数は lambda
式を使用して、操作する窓。 <enter></enter>
は、マウスがコンポーネント上にあるときに応答することを意味し、そのコールバック関数はパラメータ evt
を入力する必要があります。
結果は次のとおりです。
次の は
のロジックです。 , 既存のウィンドウを閉じた後、新しいウィンドウが表示されます。新しいウィンドウには
def yesFunc(win): x, y = win.winfo_x(), win.winfo_x() win.destroy() win = tk.Tk() win.geometry(f"400x200+{x}+{y}") txt = "放学去房后小树林\n不见不散\n嘿嘿嘿" label = tk.Label(win,text=txt, font=FONT) label.pack(side=tk.TOP,expand=tk.YES,fill=tk.BOTH) btn = tk.Button(win, text="好的呀", width=12, font=FONT, command=lambda:win.destroy()) btn.pack(side=tk.TOP) msgBox("你是不是喜欢我?", yesFunc)
destroy
のみが必要です。これは、現在のウィンドウを閉じることを意味します。現在のウィンドウを閉じた後、元のウィンドウの位置に新しいウィンドウを作成します。win_winfo_x、win_winfo_y
を使用してウィンドウの位置を取得します。
結果は次のとおりです。
次に、No
のロジックを記述します。マウスを 上に置くと、ボタンがオンになっているときにウィンドウの位置が移動します。
import random def randInt(a, b): r = random.randint(-a, a) while abs(r) < abs(b): r = random.randint(-a, a) return r def noFunc(evt, win): x, y = win.winfo_x(), win.winfo_x() x += randInt(100, 80) y += randInt(30, 20) win.geometry(f"400x200+{x}+{y}") msgBox("你是不是喜欢我?", yesFunc, noFunc)は
geometry 関数を使用しているため、ウィンドウの作成時にウィンドウの位置を宣言できるだけでなく、いつでもどこでもウィンドウの位置を変更できます。このようにして、マウスが
No ボタン上にあるとき、ウィンドウはクリックされる前に非表示になります。
以上がPython + tkinter を使用して強制自白アーティファクトを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。