>백엔드 개발 >파이썬 튜토리얼 >Python+tkinter를 사용하여 강제 고백 아티팩트를 작성하는 방법

Python+tkinter를 사용하여 강제 고백 아티팩트를 작성하는 방법

PHPz
PHPz앞으로
2023-05-19 11:31:291293검색

Python은 대부분의 일반 사람들의 요구를 충족할 수 있는 여러 메시지 상자를 제공하지만 유연성이 충분하지 않으므로 메시지 상자를 사용자 정의해야 하는 경우가 있습니다.

새 창

메시지 상자의 본질은 창과 정보, 두 개의 버튼입니다

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 code>와 <code>button이 생성되면 font 매개변수를 통해 설정됩니다. FONT是一个全局变量,表示字体及其大小,在labelbutton创建的时候,会通过font参数进行设置。

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

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

其中,无论还是,都需要对窗口进行操作,所以回调函数使用了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를 사용하여 강제 고백 아티팩트를 작성하는 방법

挪动窗口

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

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은 이름에서 알 수 있듯이 포장을 의미하는 레이아웃 방법입니다. 창문을 상자로 생각한다면 시간이 날 때마다 포장해야 합니다. 예를 들어, 맨 아래에 옷 한 겹이 있고 그것을 놓을 공간이 없으면 두 번째 층에만 놓을 수 있습니다. 두 번째 층에 벽돌이 하나만 있으면 다른 층에도 여전히 공간이 있습니다. 다른 벽돌을 벽돌 옆에 놓을 수 있도록 배치합니다.

위의 경우, 위에서 아래로 라벨을 누른 뒤, 아래 좌우에 버튼을 배치해주세요.

Python+tkinter를 사용하여 강제 고백 아티팩트를 작성하는 방법그 중 yesno든 윈도우가 동작해야 하므로 콜백 함수는 lambda 표현식을 사용하여 이를 수행할 수 있습니다. 창을 조작하십시오. 조작을 수행하십시오. <enter></enter>는 마우스가 구성요소 위에 떠 있을 때 응답하며 콜백 함수에 evt 매개변수를 입력해야 함을 의미합니다.

🎜효과는 다음과 같습니다🎜🎜Python+tkinter를 사용하여 작성하는 방법 강요된 자백 유물🎜🎜창 닫기🎜🎜다음으로 is 로직을 작성해 주세요. 즉 기존 창을 닫으면 새 창이 뜹니다. 새 창은 have one🎜rrreee🎜destroy code>즉, 현재 창을 닫습니다. 현재 창이 닫힌 후 원래 창 위치에 새 창을 만듭니다. <code>win_winfo_x, win_winfo_y는 창 위치를 얻는 데 사용됩니다. 🎜🎜효과는 다음과 같습니다🎜🎜Python+tkinter를 사용하여 작성하는 방법 강제고백 유물🎜🎜창 이동🎜🎜그 다음 No 논리를 작성합니다. No 버튼 위에 마우스를 올리면 창 위치를 이동합니다. . 🎜rrreee🎜는 geometry 함수를 사용하기 때문에 창 생성 시 창 위치를 선언할 수 있을 뿐만 아니라 언제 어디서나 창 위치를 수정할 수 있습니다. 이런 방식으로 마우스를 No 버튼 위로 가져가면 창을 클릭하기도 전에 숨겨집니다. 🎜🎜효과는 다음과 같습니다🎜🎜🎜🎜

위 내용은 Python+tkinter를 사용하여 강제 고백 아티팩트를 작성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제