ホームページ  >  記事  >  バックエンド開発  >  Python + tkinter を使用して強制自白アーティファクトを作成する方法

Python + tkinter を使用して強制自白アーティファクトを作成する方法

PHPz
PHPz転載
2023-05-19 11:31:291217ブラウズ

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 はグローバル変数ですフォントを表します。そのサイズは、labelbutton の作成時に font パラメーターを通じて設定されます。

pack はレイアウトメソッドで、その名の通りパッケージングです。窓を箱と考えると、時間があるときにどこでも梱包する必要があります。たとえば、一番下に衣類の層があり、それを置くスペースがない場合、それらは 2 層目にのみ配置できます。2 層目にレンガが 1 つだけ配置されている場合、他の層にはまだスペースがあります。レンガの隣に別のレンガを配置できるようにします。

上記の場合、ラベルを上から押し、その下の左右にボタンを配置します。

であっても、 でなくても、ウィンドウを操作する必要があるため、コールバック関数は lambda 式を使用して、操作する窓。 <enter></enter> は、マウスがコンポーネント上にあるときに応答することを意味し、そのコールバック関数はパラメータ evt を入力する必要があります。

結果は次のとおりです。

Python + tkinter を使用して強制自白アーティファクトを作成する方法

ウィンドウを閉じます

次の のロジックです。 , 既存のウィンドウを閉じた後、新しいウィンドウが表示されます。新しいウィンドウには

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 を使用してウィンドウの位置を取得します。

結果は次のとおりです。

Python + tkinter を使用して強制自白アーティファクトを作成する方法

ウィンドウを移動します。

次に、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 を使用して強制自白アーティファクトを作成する方法

以上がPython + tkinter を使用して強制自白アーティファクトを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。