先分析下需求:
我们需要一个GUI界面,这个用tkinter实现,界面需要一个标签显示辞职内容,两个按钮同意和不同意,同时当鼠标放到不同意的按钮上的时候,窗口界面随机移动,使不同意按钮怎么也点击不上,另外我们要去掉窗口的关闭按钮,让辞职小程序无法通过点击X关闭。界面如下:
import tkinter as tk
from tkinter import ttk
from tkinter import messagebox
import random
import threading
import time
#导入需要的模块,然后我们需要先把界面搭建起来。
top = tk.Tk()
top.title('辞职信')
top.geometry("300x100+500+200")#设置初始窗口大小和显示位置
top.resizable(False,False)#让窗口无法调整大小
top.overrideredirect(1)#不显示标题栏
#标签辞职信内容
text_var=tk.StringVar()#字符串变量
message=self.top,textvariable=self.text_var,font=('微软雅黑',10))
#这样简单的布局直接用grid可以少用很多frame。
messgae.grid(column=0,row=0,columnspan=6,rowspan=3,padx=10,pady=15)
#设置标签内容
text_var.set('天天加班,头都秃了,老子要辞职')
#两个按钮如下
bt_yes=ttk.Button(top,text='同意',command=yes)
bt_yes.grid(column=2,columnspan=3,row=5,padx=20)
bt_no=ttk.Button(top,text='不同意',command='')
bt_no.grid(column=5,columnspan=3,row=5,padx=30)
以上为窗口布局完成,下面实现核心事件监听
#不同意按钮监听鼠标进入事件,绑定函数
bt_no.bind('<Enter>',change)
#由于没有标题栏,无法关闭窗口所以监听热键,方便退出程序
top.bind_all("<Alt-o>",quit)
#接下来实现函数
def change(event):
#为了防止窗口随机移动超出屏幕范围,留出随机移动的边距
width=top.winfo_screenwidth()-300
height=top.winfo_screenheight()-200
#用random.choice实现随机移动
top.geometry("300x100+{}+{}".format(random.choice(range(0,width)),
random.choice(range(0,height))))
#改变标签内容
text_var.set('不同意,想都别想')
def quit(event):#快捷键退出
top.destroy()
def yes():
messagebox.showinfo('','江湖再见')
#你还可以做一些其他的事情,比如运用cmd命令关机等等
以上就是满屏飞舞的辞职信,喜欢的给点个赞吧!!
完整版代码如下:
import tkinter as tk
from tkinter import ttk
from tkinter import messagebox
import random
top = tk.Tk()
def change(event):
#为了防止窗口随机移动超出屏幕范围,留出随机移动的边距
width=top.winfo_screenwidth()-300
height=top.winfo_screenheight()-200
#用random.choice实现随机移动
top.geometry("300x100+{}+{}".format(random.choice(range(0,width)),
random.choice(range(0,height))))
#改变标签内容
text_var.set('不同意,想都别想')
def quit(event):#快捷键退出
top.destroy()
def yes():
messagebox.showinfo('','江湖再见')
#你还可以做一些其他的事情,比如运用cmd命令关机等等
top.title('辞职信')
top.geometry("300x100+500+200")#设置初始窗口大小和显示位置
top.resizable(False,False)#让窗口无法调整大小
top.overrideredirect(1)#不显示标题栏
#标签辞职信内容
text_var=tk.StringVar()#字符串变量
message=tk.Label(top,textvariable=text_var,font=('微软雅黑',10))
#这样简单的布局直接用grid可以少用很多frame。
message.grid(column=0,row=0,columnspan=6,rowspan=3,padx=10,pady=15)
#设置标签内容
text_var.set('天天加班,头都秃了,老子要辞职')
#两个按钮如下
bt_yes=ttk.Button(top,text='同意',command=yes)
bt_yes.grid(column=2,columnspan=3,row=5,padx=20)
bt_no=ttk.Button(top,text='不同意',command='')
bt_no.grid(column=5,columnspan=3,row=5,padx=30)
bt_no.bind('<Enter>',change)
#由于没有标题栏,无法关闭窗口所以监听热键,方便退出程序
top.bind_all("<Alt-o>",quit)
top.mainloop()