一 代码
import tkinter import tkinter.filedialog import os from PIL importImageGrab from time import sleep root = tkinter.Tk() root.geometry('100x40+400+300') root.resizable(False,False) classMyCapture: def __init__(self, png): #变量X和Y用来记录鼠标左键按下的位置 self.X = tkinter.IntVar(value=0) self.Y = tkinter.IntVar(value=0) #屏幕尺寸 screenWidth = root.winfo_screenwidth() screenHeight = root.winfo_screenheight() #创建顶级组件容器 self.top = tkinter.Toplevel(root, width=screenWidth, height=screenHeight) #不显示最大化、最小化按钮 self.top.overrideredirect(True) self.canvas = tkinter.Canvas(self.top,bg='white', width=screenWidth, height=screenHeight) #显示全屏截图,在全屏截图上进行区域截图 self.image = tkinter.PhotoImage(file=png) self.canvas.create_image(screenWidth//2, screenHeight//2, image=self.image) #鼠标左键按下的位置 def onLeftButtonDown(event): self.X.set(event.x) self.Y.set(event.y) #开始截图 self.sel =True self.canvas.bind('<Button-1>', onLeftButtonDown) #鼠标左键移动,显示选取的区域 def onLeftButtonMove(event): ifnot self.sel: return global lastDraw try: #删除刚画完的图形,要不然鼠标移动的时候是黑乎乎的一片矩形 self.canvas.delete(lastDraw) exceptExceptionas e: pass lastDraw = self.canvas.create_rectangle(self.X.get(), self.Y.get(), event.x, event.y, outline='black') self.canvas.bind('<B1-Motion>', onLeftButtonMove) #获取鼠标左键抬起的位置,保存区域截图 def onLeftButtonUp(event): self.sel =False try: self.canvas.delete(lastDraw) exceptExceptionas e: pass sleep(0.1) #考虑鼠标左键从右下方按下而从左上方抬起的截图 left, right = sorted([self.X.get(), event.x]) top, bottom = sorted([self.Y.get(), event.y]) pic =ImageGrab.grab((left+1, top+1, right, bottom)) #弹出保存截图对话框 fileName = tkinter.filedialog.asksaveasfilename(title='保存截图', filetypes=[('image','*.jpg *.png')]) if fileName: pic.save(fileName) #关闭当前窗口 self.top.destroy() self.canvas.bind('<ButtonRelease-1>', onLeftButtonUp) self.canvas.pack(fill=tkinter.BOTH, expand=tkinter.YES) #开始截图 def buttonCaptureClick(): #最小化主窗口 root.state('icon') sleep(0.2) filename ='temp.png' im =ImageGrab.grab() im.save(filename) im.close() #显示全屏幕截图 w =MyCapture(filename) buttonCapture.wait_window(w.top) #截图结束,恢复主窗口,并删除临时的全屏幕截图文件 root.state('normal') os.remove(filename) buttonCapture = tkinter.Button(root, text='截图', command=buttonCaptureClick) buttonCapture.place(x=10, y=10, width=80, height=20) #启动消息主循环 root.mainloop()
二 运行结果
相关推荐
使用tkinter实现抽奖式提问程序目的是通过随机抽取学生或参与者来回答问题或进行演讲,以促进参与度、激发学习兴趣和培养团队合作意识。抽奖提问的好处有:活跃气氛:抽奖提问可以帮助营造积极、活跃的学习氛围。...
代码功能介绍代码实现了一个屏幕截图应用程序,可以定时截取屏幕,并将截图通过电子邮件发送给指定的收件人。以下是代码的主要功能:通过使用pyautogui库来进行屏幕截图。使用smtplib库来发送电子邮件,以将截图发送...
当使用pyperclip和tkinter库来实现密码生成器时,可以按照以下步骤进行:导入所需的库:导入pyperclip和tkinter库,以便使用它们的功能。创建一个函数来生成密码:编写一个函数,用于生成密码。可以根据需要确定密码...
想做看图工具的,必然要支持jpg、png等常见格式,但tkinter是个纯粹的GUI库,不像GTK、QT那样大而全,所以只支持gif和ppm两种格式,局限很大,必须搭配图像处理库,才能实现基本的看图功能 在python生态系统里,最...
在本教程中,我们将探讨如何创建一个简易的屏幕截图工具,模仿QQ截图的功能,以实现区域选择、即时编辑和快速分享等特性。 首先,我们需要了解屏幕截图的基本原理。在Windows系统中,我们可以利用`GetDC`函数获取...
当使用Python的Plyer和tkinter库实现跨平台窗口通知程序时,您可以首先利用tkinter库创建一个简单的GUI界面。在这个界面上,您可以添加一个按钮或其他交互元素,用于触发窗口通知的显示。当用户点击按钮时,您可以...
【Python使用Tkinter实现滚动抽奖器效果】 Tkinter是Python的标准GUI库,它允许开发者创建图形用户界面(GUI)应用程序。在Python2中,Tkinter是内置库,而在Python3中,库的名字变为tkinter(小写首字母)。尽管...
在本文中,我们将深入探讨一个高级屏幕截图例程的源码,旨在理解其工作原理,学习如何实现自定义的截图工具,并从中获取编程技巧。 高级屏幕截图例程通常包括以下关键组成部分: 1. **捕获图像**:首先,我们需要...
【编程作业】-QQ屏幕截图工具的设计与实现 在计算机科学和信息技术领域,软件开发是一项核心技能,而设计和实现一款实用的工具是提升这项技能的重要途径。本资源专区内提供的"QQ屏幕截图工具的设计与实现"课程设计...
本文适用场景:想用Tkinter开发界面程序并屏幕居中,但没找到相应的API。 这两天玩了玩Tkinter,感觉不错,就是屏幕居中这个问题在网上搜了很长时间也没 找到答案,最后没办法,看它的文档,用自己的方法实现了。 ...
在Tkinter中,这通常通过bind方法实现,开发者可以为不同的控件绑定不同的事件处理函数。 Tkinter的编程还涉及到控件属性的设置,比如字体、颜色、尺寸等,以及通过控件的属性和方法来动态改变界面。例如,我们可以...
本文实例为大家分享了python3.6 tkinter实现屏保小程序,供大家参考,具体内容如下 该小程序是在闲着没事的时候,随便写的,就当打发无聊了。 该程序是用python3.6写的,调用了python中的tkinter的库(*python2x与...
《Python tkinter实现的2048游戏详解》 2048是一款广受欢迎的数字合成游戏,玩家通过上下左右滑动屏幕,使相同数字的方块合并,目标是合成一个2048方块。本篇文章将深入探讨如何使用Python的tkinter库来创建这个...
在Python中,利用Tkinter实现屏保的思路大致如下: 1. 创建一个透明窗口覆盖整个屏幕。 2. 在该窗口上绘制移动的图形,如球体、线条等。 3. 为图形添加移动动画效果。 4. 捕捉鼠标和键盘事件,实现屏保的启动和退出...
综上所述,开发一个简单的屏幕截图器涉及到多方面的编程技能和知识,从图像处理到用户界面设计,再到错误处理和扩展性考虑,都需要精心设计和实现。在这个过程中,持续学习和实践将有助于提升开发者的能力。提供的...
在这个实例中,我们将讨论如何使用tkinter来实现窗口的屏幕居中、设置窗口的最大和最小尺寸。首先,让我们深入理解这些概念。 **屏幕居中** 屏幕居中的实现通常涉及获取屏幕的宽度和高度,以及窗口自身的宽度和高度...