Maison >développement back-end >Tutoriel Python >Comment utiliser Python+tkinter pour écrire un artefact de confession forcée

Comment utiliser Python+tkinter pour écrire un artefact de confession forcée

PHPz
PHPzavant
2023-05-19 11:31:291314parcourir

Bien que Python propose plusieurs boîtes de message qui peuvent répondre aux besoins de la plupart des personnes normales, elles ne sont pas assez flexibles, vous devez donc parfois personnaliser la boîte de message.

Nouvelle fenêtre

L'essence de la boîte de message est une fenêtre, une information et deux boutons

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 C'est une variable globale qui représente la police et sa taille Lorsque <code>label et button sont créés, ils seront définis via la font paramètre. <code>FONT是一个全局变量,表示字体及其大小,在labelbutton创建的时候,会通过font参数进行设置。

pack是一种布局方式,顾名思义,就是打包。如果把窗口想象成是一个箱子,那么打包肯定是哪里有空打哪里。比如最下面放了一层衣服,没地方放了只能放在第二层;如果第二层只放了一个砖头,那么其他位置还有空间,于是可以贴着砖头再放一个砖头。

在上面的案例中,将label从上面压下来,然后下面左右两侧分别放置一个按钮。

其中,无论还是,都需要对窗口进行操作,所以回调函数使用了lambda表达式,从而能够对窗口进行操作。<enter></enter>表示当鼠标浮动在组件上方时响应,其回调函数需要输入一个参数evt

效果如下

Comment utiliser Python+tkinter pour écrire un artefact de confession forcée

关闭窗口

接下来写的逻辑,即关闭现有窗口后,弹出一个新的窗口,新的窗口只需要有一个

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用于获取窗口位置。

效果如下

Comment utiliser Python+tkinter pour écrire un artefact de confession forcée

挪动窗口

然后写的逻辑,当鼠标悬浮在的按钮上时,挪动窗口的位置。由于

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函数,不仅可以再创建窗口的时候声明窗口位置,而且可以随时随地修改窗口的位置。这样一来,当鼠标浮动在

pack est une méthode de mise en page Comme son nom l'indique, il s'agit d'un packaging. Si vous considérez la fenêtre comme une boîte, vous devez alors l'emballer partout où vous en avez le temps. Par exemple, s'il y a une couche de vêtements en bas et qu'il n'y a pas de place pour les mettre, ils ne peuvent être placés que sur la deuxième couche ; s'il n'y a qu'une seule brique sur la deuxième couche, il y a encore de la place dans les autres ; endroits, donc une autre brique peut être placée à côté de la brique.

Dans le cas ci-dessus, appuyez sur le étiquette du haut vers le bas, puis placez un bouton sur les côtés gauche et droit en dessous.

Comment utiliser Python+tkinter pour écrire un artefact de confession forcéeParmi eux, que ce soit oui ou non, la fenêtre doit être actionnée, donc la fonction de rappel utilise lambda mode expression pour pouvoir faire fonctionner la fenêtre. <enter></enter> indique qu'il répond lorsque la souris flotte sur le composant et que sa fonction de rappel doit saisir un paramètre evt.

#🎜🎜#L'effet est le suivant#🎜🎜##🎜🎜#Comment utiliser Python+tkinter pour écrire un artefact de confession forcée#🎜🎜##🎜🎜#Fermez la fenêtre#🎜🎜##🎜🎜#Ensuite, écrivez la logique de is, c'est-à-dire fermer la fenêtre existante. Après cela, une nouvelle fenêtre apparaît. La nouvelle fenêtre n'a besoin que d'un #🎜🎜#rrreee#🎜🎜#destroy pour fermer la fenêtre actuelle. Une fois la fenêtre actuelle fermée, créez une nouvelle fenêtre à l'emplacement de la fenêtre d'origine. win_winfo_x, win_winfo_y est utilisé pour obtenir la position de la fenêtre. #🎜🎜##🎜🎜#L'effet est le suivant#🎜🎜##🎜🎜#Comment utiliser Python+tkinter pour écrire un artefact de confession forcée#🎜🎜##🎜🎜#Déplacez la fenêtre#🎜🎜##🎜🎜#Ensuite, écrivez la logique de Non , lorsque la souris survole No déplace la position de la fenêtre lorsque le bouton est activé. Parce que #🎜🎜#rrreee#🎜🎜# utilise la fonction geometry, vous pouvez non seulement déclarer la position de la fenêtre lors de la création de la fenêtre, mais également modifier la position de la fenêtre à tout moment et n'importe où. De cette façon, lorsque la souris survole le bouton Non, la fenêtre est masquée avant même que vous cliquiez dessus. #🎜🎜##🎜🎜#L'effet est le suivant#🎜🎜##🎜🎜##🎜🎜##🎜🎜#

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer