自己在开发过程中,有个需求是点击按钮后,生成一个文件,但是发现如果重复点击,就会重复在文件中插入内容,导致内容混乱。因此希望在对话框中,增加个限制,在点击生成按钮后生成一个文件后,按钮就灰显,防止重复点击导致文档内容混乱。
思路是:增加个自定义函数计数器,当点击数达到1次后,将按钮置为灰显(disable)、具体代码如下:
from tkinter import *
import tkinter as tk
import sys
import docx
from docx import Document
from docx.enum.text import WD_ALIGN_PARAGRAPH,WD_PARAGRAPH_ALIGNMENT
from docx.shared import Cm,RGBColor,Pt,Inches
root = tk.Tk() #创建一个窗口
root.title("文件生成工具") #窗口标题
root.geometry('500x500+700+200') #窗口位置及尺寸
def creat_doc1(): #第一个函数,生成一个文件,里边只有一个标题
doc = Document()
HEAD=doc.add_heading('',level = 0)
HEAD.alignment = WD_ALIGN_PARAGRAPH.CENTER
run=HEAD.add_run('第一句话')
run.font.name=u'华文中宋'
run.font.color.rgb = RGBColor(0,0,0)
doc.save('测试.docx')
counter = 0
def DIS(cd,button): #DIS函数,计数器,嵌套调用cd、button
cd = cd()
global counter
counter +=1
if counter == 1:
button.config(stat='disabled') #当点击次数为1时,按钮状态变为disabled,不可点击
button_2 = Button(root, text='生成文件', command = lambda:DIS(creat_doc1,button_2)) #点击按钮,调用creat_doc1,当生成一次日报后,按钮灰显
button_2.place(relx=0.35, rely=0.38, relwidth=0.3, relheight=0.1) #button_2的位置参数
root.mainloop()
运行效果:
点击按钮后