Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan Python+tkinter untuk menulis artifak pengakuan paksa

Cara menggunakan Python+tkinter untuk menulis artifak pengakuan paksa

PHPz
PHPzke hadapan
2023-05-19 11:31:291266semak imbas

Walaupun Python menyediakan berbilang kotak mesej yang boleh memenuhi keperluan kebanyakan orang biasa, ia tidak cukup fleksibel, jadi kadangkala anda perlu menyesuaikan kotak mesej.

Tetingkap baharu

Intipati kotak mesej ialah tetingkap, sekeping maklumat dan dua butang

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 ialah pembolehubah global yang mewakili fon dan saiznya apabila label dan button dibuat, ia akan ditetapkan melalui parameter font.

pack ialah kaedah susun atur Seperti namanya, ia adalah pembungkusan. Jika anda menganggap tetingkap sebagai kotak, maka anda mesti membungkusnya di mana sahaja anda mempunyai masa. Sebagai contoh, jika terdapat lapisan pakaian di bahagian bawah, dan tidak ada ruang untuk meletakkannya, mereka hanya boleh diletakkan pada lapisan kedua; tempat, jadi bata lain boleh diletakkan di sebelah bata.

Dalam kes di atas, tekan label ke bawah dari atas, dan kemudian letakkan butang di sebelah kiri dan kanan di bawah.

Antaranya, kedua-dua dan perlu beroperasi pada tetingkap, jadi fungsi panggil balik menggunakan ungkapan lambda untuk boleh beroperasi pada tetingkap. <enter></enter> menunjukkan bahawa ia bertindak balas apabila tetikus terapung di atas komponen, dan fungsi panggil baliknya perlu memasukkan parameter evt.

Kesannya adalah seperti berikut

Cara menggunakan Python+tkinter untuk menulis artifak pengakuan paksa

Tutup tetingkap

Seterusnya tulis logik iaitu selepas menutup tetingkap sedia ada, tetingkap baharu akan muncul, tetingkap baharu hanya perlu mempunyai

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 untuk menutup tetingkap semasa. Selepas tetingkap semasa ditutup, buat tetingkap baharu pada kedudukan tetingkap asal win_winfo_x, win_winfo_y digunakan untuk mendapatkan kedudukan tetingkap.

Kesannya adalah seperti berikut

Cara menggunakan Python+tkinter untuk menulis artifak pengakuan paksa

Alihkan tetingkap

dan kemudian tulis logik apabila tetikus melayang di atas butang , gerakkan kedudukan tetingkap. Kerana

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)

menggunakan fungsi geometry, anda bukan sahaja boleh mengisytiharkan kedudukan tetingkap semasa mencipta tetingkap, tetapi juga mengubah suai kedudukan tetingkap pada bila-bila masa dan di mana-mana sahaja. Dengan cara ini, apabila tetikus terapung pada butang , tetingkap akan disembunyikan sebelum mengklik.

Kesannya adalah seperti berikut

Cara menggunakan Python+tkinter untuk menulis artifak pengakuan paksa

Atas ialah kandungan terperinci Cara menggunakan Python+tkinter untuk menulis artifak pengakuan paksa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam