检测用户是否单击了“最大化”按钮

时间:2019-08-17 05:14:01

标签: python python-3.x user-interface tkinter

我想检测用户是否单击了“最大化”按钮:

Maximize Button

当然是在tkInter中,但是我不知道如何。

我尝试搜索StackOverflow,Web和tkInter文档(主要是effbot的tkinterbook),但是没有找到与我要获取的内容相关的任何内容。

1 个答案:

答案 0 :(得分:1)

有一种使用.bind()的好方法,让我们开始吧!

我们知道,我们可以使用命令.state('zoomed')来最大化窗口。

root.state('zoomed')

我们可以通过.bind("<Configure>", my_function)

获得任何窗口事件

因此,我们可以创建一个简单的函数来捕获最大化窗口事件,该事件不一定是单击事件,但是它可以工作。

这是一个例子:

import tkinter

def window_event(event):
    if root.state() == 'zoomed':
        print("My window is maximized")

if __name__ == '__main__':

    root = tkinter.Tk()
    root.title("Maximized")

    root.bind("<Configure>", window_event)

    root.mainloop()

编辑1:新功能

import tkinter

def window_event(event):

    if root.state() == 'zoomed':
        print("My window is maximized")

    #GET A NORMAL WINDOW EVENT
    #You can easily do this by a conditional statement, but remember if you even move the window position,
    #this conditional statement will be true, because move the window is a window event
    if root.state() == 'normal':
        print("My window is normal")

if __name__ == '__main__':

    root = tkinter.Tk()
    root.title("Window")
    root.geometry("620x480")

    root.bind("<Configure>", window_event)

    root.mainloop()

编辑2:新功能

import tkinter

count = 0

def window_event(event):
    global count 

    if root.state() == 'zoomed':
        print("My window is maximized")
        count = 0

    if root.state() == 'normal' and count < 1:
        print("My window is normal")
        count +=1

if __name__ == '__main__':

    root = tkinter.Tk()
    root.title("Window")
    root.geometry("620x480")

    root.bind("<Configure>", window_event)

    root.mainloop()

看看这个链接,它们是使用Python GUI的另一种方式: