Heim  >  Artikel  >  Backend-Entwicklung  >  Wie man mit Python+tkinter ein Artefakt mit erzwungenen Geständnissen schreibt

Wie man mit Python+tkinter ein Artefakt mit erzwungenen Geständnissen schreibt

PHPz
PHPznach vorne
2023-05-19 11:31:291274Durchsuche

Obwohl Python mehrere Nachrichtenfelder bereitstellt, die den Anforderungen der meisten normalen Menschen gerecht werden, sind sie nicht flexibel genug, sodass Sie manchmal das Nachrichtenfeld anpassen müssen.

Neues Fenster

Das Nachrichtenfeld besteht im Wesentlichen aus einem Fenster, einer Information und zwei Schaltflächen

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 Es handelt sich um eine globale Variable, die die Schriftart und ihre Größe darstellt. Wenn <code>label und button erstellt werden, werden sie über den fontfestgelegt > Parameter. FONT是一个全局变量,表示字体及其大小,在labelbutton创建的时候,会通过font参数进行设置。

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

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

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

效果如下

Wie man mit Python+tkinter ein Artefakt mit erzwungenen Geständnissen schreibt

关闭窗口

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

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

效果如下

Wie man mit Python+tkinter ein Artefakt mit erzwungenen Geständnissen schreibt

挪动窗口

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

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 ist eine Layoutmethode. Wie der Name schon sagt, handelt es sich um eine Verpackung. Wenn Sie sich das Fenster als eine Kiste vorstellen, dann müssen Sie es überall dort einpacken, wo Sie Zeit haben. Wenn sich beispielsweise unten eine Schicht Kleidung befindet und kein Platz zum Ablegen vorhanden ist, können diese nur auf der zweiten Schicht platziert werden. Wenn nur ein Ziegelstein auf der zweiten Schicht platziert wird, ist in der anderen noch Platz Stellen, so dass ein weiterer Stein neben den Stein gelegt werden kann.

Im obigen Fall drücken Sie das Label von oben nach unten und platzieren dann links und rechts unten einen Knopf.

Wie man mit Python+tkinter ein Artefakt mit erzwungenen Geständnissen schreibt Ob ja oder nein, das Fenster muss bedient werden, daher verwendet die Rückruffunktion lambda Ausdrucksmodus, um das Fenster bedienen zu können. <enter></enter> gibt an, dass es reagiert, wenn die Maus über der Komponente schwebt, und dass seine Rückruffunktion einen Parameter evt eingeben muss.

#🎜🎜#Der Effekt ist wie folgt#🎜🎜##🎜🎜# So schreiben Sie mit Python+tkinter ein Artefakt mit erzwungenem Geständnis#🎜🎜##🎜🎜#Fenster schließen#🎜🎜##🎜🎜#Als nächstes schreiben Sie die Logik von is, also das bestehende Fenster schließen. Danach öffnet sich ein neues Fenster. Das neue Fenster muss nur einen #🎜🎜#rrreee#🎜🎜#destroy haben, um das aktuelle Fenster zu schließen. Erstellen Sie nach dem Schließen des aktuellen Fensters ein neues Fenster an der Position des ursprünglichen Fensters. win_winfo_x, win_winfo_y wird verwendet, um die Fensterposition zu ermitteln. #🎜🎜##🎜🎜#Der Effekt ist wie folgt#🎜🎜##🎜🎜# So schreiben Sie mit Python+tkinter ein Artefakt mit erzwungenem Geständnis#🎜🎜##🎜🎜#Fenster verschieben#🎜🎜##🎜🎜#Dann schreiben Sie die Logik von Nein , wenn die Maus über Nein schwebt, verschiebt sich die Fensterposition, wenn die Schaltfläche aktiviert ist. Da #🎜🎜#rrreee#🎜🎜# die Funktion geometry verwendet, können Sie beim Erstellen des Fensters nicht nur die Fensterposition angeben, sondern diese auch jederzeit und überall ändern. Wenn Sie mit der Maus über die Schaltfläche Nein fahren, wird das Fenster auf diese Weise ausgeblendet, bevor überhaupt darauf geklickt wird. #🎜🎜##🎜🎜#Der Effekt ist wie folgt#🎜🎜##🎜🎜##🎜🎜##🎜🎜#

Das obige ist der detaillierte Inhalt vonWie man mit Python+tkinter ein Artefakt mit erzwungenen Geständnissen schreibt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen