文章目录

  • 一.准备工作
  • 二.预览
  • 三.设计流程
  • 四.源代码
  • 五.总结

过年GUI博客二连发,本打算出去玩玩,奈何空气,天气实在差,遂使用tkinter开发一款GUI刷屏器,写此博客记录一下我的开发思路。

一.准备工作

本次使用除tkinter库之外还使用了pynput库,可以使用

pip install pynput

pip install pyperclip

二.预览


在长文本框中输入要刷屏的内容,通过设置刷屏频率(单位:秒)即可实现刷屏。

三.设计流程

四.源代码

import re
import time
import pyperclip
from tkinter import *
from tkinter import messagebox
from tkinter import ttk
from pynput.keyboard import Key, Controller
import threading
from PIL import Image ,ImageTk'''
难点
按键复用
'''imgs=["./rely/logo.png",'./rely/favicon.ico']
class App:def __init__(self):self.flag=Trueself.window = Tk()width = 230height = 260screenWidth = self.window.winfo_screenwidth()  # 获取显示区域的宽度screenHeight = self.window.winfo_screenheight()  # 获取显示区域的高度left = (screenWidth - width) / 2top = (screenHeight - height) / 2self.window.geometry("%dx%d+%d+%d" % (width, height, left, top))self.window.title('刷一刷-v1.0')self.window.iconbitmap(imgs[1])self.window.resizable(0, 0)self.create_widget()self.config_widget()self.place_widget()self.window.mainloop()def create_widget(self):self.paned=PanedWindow(self.window)self.img=imgsphoto = Image.open(self.img[0])  # 括号里为需要显示在图形化界面里的图片photo = photo.resize((150, 50))  # 规定图片大小self.paned.img = ImageTk.PhotoImage(photo)self.l0 = Label(self.window, image=self.paned.img, justify='center')self.l1 = ttk.Label(self.window, text='内容:')self.l1 = ttk.Label(self.window, text='频率:')self.t1 = Text(self.window)self.c1 = ttk.Combobox(self.window, width=13)self.l2=ttk.Label(self.window,text='秒/次')self.b1 = ttk.Button(self.window, text='开始', )self.b2 = ttk.Button(self.window, text='退出',)self.m=Menu(self.window)self.window['menu']=self.mself.s1=Menu(self.m,tearoff=False)self.s2=Menu(self.m,tearoff=False)self.s3=Menu(self.m,tearoff=False)def place_widget(self):self.l0.pack()self.l1.place(x=20, y=90)self.t1.place(x=40, y=60, width=150, height=80)self.l1.place(x=20, y=162)self.c1.place(x=65, y=160,width=80)self.l2.place(x=160,y=160)self.b1.place(x=20, y=200)self.b2.place(x=125, y=200)def config_widget(self):self.b1.config(command=lambda: self.thread_it(self.start))self.b2.config( command=self.window_quit)rate_list=['1','0.1','0.01']self.c1.config(value=rate_list)self.m.add_cascade(label='文件',menu=self.s1)self.s1.add_command(label='退出',command=self.window_quit)self.m.add_cascade(label='操作',menu=self.s2)self.m.add_cascade(label='关于',menu=self.s3)self.s2.add_command(label='开始 F9',command=lambda: self.thread_it(self.start))self.s2.add_command(label='停止 F10',command=lambda: self.thread_it(self.start))self.s3.add_command(label='说明',command=self.show_infos)#设置热键self.window.bind('<F9>',lambda: self.thread_it(self.pre_start))self.window.bind('<F10>',lambda: self.thread_it(self.pre_start))self.window.bind('<Escape>',self.escape)self.window.bind('<FocusIn>',self.clear_content)self.window.protocol('WM_DELETE_WINDOW',self.window_quit)def clear_content(self,event):self.t1.delete(0.0,END)def pre_start(self,event):self.start()def start(self):if self.b1['text']=='开始':self.flag=Truet1_content = self.t1.get(1.0, 'end').strip()if len(t1_content) != 0:gap = self.c1.get()try:if re.match('(^0|^1)\.{0,1}\d+$', gap) or int(gap) > 0:# 将t1内容复制到剪切板pyperclip.copy(t1_content)keyboard = Controller()self.b1.config(text='停止')self.t1.config(state='disable')while True:# 使用control+v组合键进行粘贴if self.flag:keyboard.press(Key.ctrl.value)keyboard.press('v')keyboard.release('v')keyboard.release(Key.ctrl.value)keyboard.press(Key.enter.value)keyboard.release(Key.enter.value)print(t1_content)time.sleep(float(gap))else:breakelse:messagebox.showerror('错误', '请输入正确的数值!')self.c1.delete(0, END)except ValueError:messagebox.showerror('错误', '请输入正确的数值!')self.c1.delete(0, END)else:messagebox.showerror('错误', '还没有输入内容')else:self.flag=Falseself.b1.config(text='开始')def thread_it(self,func,*args):t=threading.Thread(target=func,args=args)t.setDaemon(True)#设置守护线程,即主线程结束,子线程也结束t.start()def show_infos(self):messagebox.showinfo('说明','***本软件完全免费***\n\n1.输入刷屏内容\n2.选择(输入)刷屏频率\n3.开始(F9)刷屏\n4.停止(F10)刷屏')def window_quit(self):ret=messagebox.askyesno('退出','是否要退出?')if ret:self.window.destroy()def escape(self,event):self.window_quit()if __name__ == '__main__':a=App()

五.总结

本次使用tkinter写了一款刷屏器,能够实现短时间内相同文本的发送,继而实现刷屏的目的。在代码的撰写上,模拟键盘输入主要参考了:

Python模拟键盘输入

实现了组合键Ctrl+V的操作。本篇技术含量不多,重点在代码逻辑思路上。
思路、代码方面有什么不足欢迎各位大佬指正、批评!

python3GUI--刷屏器(附源码)相关推荐

  1. php网页播放器源码免费,基于Flowplayer打造一款免费的WEB视频播放器附源码

    Flowplayer 是一个开源(GPL 3的)WEB视频播放器.您可以将该播放器嵌入您的网页中,如果您是开发人员,您还可以自由订制跟配置播放器相关参数以达到您要的播放疗效.本文主要介绍Flowpla ...

  2. 【Python工具】Python实现一款支持各大平台的视频下载器 | 附源码

    相关文件 想学Python的小伙伴可以关注小编的公众号[Python日志] 有很多的资源可以白嫖的哈,不定时会更新一下Python的小知识的哈!! 需要源码的小伙伴可以在公众号回复视频下载器 简介 一 ...

  3. 【博主推荐】html好看的音乐播放器(附源码)

    html好看的音乐播放器 文章目录 1.主界面列表效果 2.主界面详情效果 3.背景风格1-背景色轮动 4.背景风格2-图片轮动 5.MP3免费下载 5.1 MyFreeMP3 5.2.铜钟音乐 源码 ...

  4. 360player全景图播放器-附源码

    开发了一个全景图播放器,自带全景展示.背景音乐.重力感应等功能,不用写代码,通过配置文件就可以展示全景图片. 360plyaer使用说明 1.360player是基于浏览器的全景图播放器,浏览器需要支 ...

  5. WPF实现Windows资源管理器(附源码)

      今天我来写一篇关于利用WPF来实现Windows的资源管理器功能,当然只是局部实现这个功能,因为在很多时候我们需要来实现对本机资源的管理,当然我们可以使用OpenFileDialog dialog ...

  6. web player html5源码,基于Flowplayer打造一款免费的WEB视频播放器附源码

    Flowplayer 是一个开源(GPL 3的)WEB视频播放器.您可以将该播放器嵌入您的网页中,如果您是开发人员,您还可以自由定制和配置播放器相关参数以达到您要的播放效果.本文主要介绍Flowpla ...

  7. MFC Windows 程序设计[315]之磁盘文件列举器(附源码)

    MFC Windows 程序设计[315]之磁盘文件列举器 程序之美 前言 主体 运行效果 核心代码 逻辑分析 结束语 程序之美 前言 MFC是微软公司提供的一个类库(class libraries) ...

  8. 用Python制作一个相册播放器(附源码)

    对于相册播放器,大家应该都不陌生(用于浏览多张图片的一个应用). 当然还有视频.音乐播放器,同样是用来播放多个视频.音乐文件的. 在Win10系统下,用[照片]这个应用打开一张图片,就可以浏览该图片所 ...

  9. MFC Windows 程序设计[108]之取色器(附源码)

    MFC Windows 程序设计[108]之取色器 程序之美 前言 主体 运行效果 核心代码 逻辑分析 结束语 程序之美 前言 MFC是微软公司提供的一个类库(class libraries),以C+ ...

  10. 教你实现仿酷狗播放器(附源码)

    文章目录 教你实现仿酷狗播放器 CSS HTML & JavaScript 后记 教你实现仿酷狗播放器 CSS <style>@charset "utf-8"; ...

最新文章

  1. LeetCode简单题之通过翻转子数组使两个数组相等
  2. 向类脑芯片迈进!科学家制造出光基人工神经元网络芯片
  3. 我所犯的JavaScript引用错误
  4. 关于.net Microsoft.Office.Interop.Word组建操作word的问题,如何控制word表格单元格内部段落的样式。...
  5. 台湾大学林轩田机器学习技法课程学习笔记3 -- Kernel Support Vector Machine
  6. 测试私有方法 重构_一个全栈工程师重构之路:中小公司 DevOps 落地实践
  7. 开源运维管理软件排名_企业运维监控平台架构设计与实现(ganglia篇)
  8. 声纹技术:让智能语音助手真正“认得”自己
  9. 关于四川2019ACM省赛热身赛B题的一个证明
  10. 数据库推荐,qPCR引物设计与评价
  11. 蓝牙bluetooth
  12. electron设置淘宝镜像
  13. mybatis多表操作(一对一、一对多、多对多)
  14. 【google】解决google浏览器不弹出账号密码保存框且无法保存登录信息问题
  15. opencv——图片找不同
  16. 【阿里云资讯】作战指挥系统碾压美军?!阿里双11破千亿背后的重大机密......
  17. python飞机大战任务报告_Python飞机大战实战项目案例
  18. ECNU计科复试机试(2021)
  19. 今天这个日子,来拜一拜祖师爷丨视频
  20. 系统结构-延迟禁止表、冲突向量、状态转移图、最小平均延迟周期性、调度方案

热门文章

  1. vc2013使用经验
  2. 耶鲁博弈论 第2节 学会换位思考
  3. Robot Framework(十四):使用RF进行接口测试(上)
  4. SAE J1939协议(一)
  5. 数字系统设计与制作报告——双向流水灯控制电路
  6. 背包九讲(例题+代码)
  7. KETTLE-JDBC连接池参数介绍以及使用
  8. dd模式和iso模式_ISO的完整形式是什么?
  9. 电脑无法安装SecoClient
  10. 考研数学一【高数】 第18讲多元函数积分学