精华内容
下载资源
问答
  • PyQt5制作屏幕实时获取界面,采用matplotlib库实现波形图
      最近,帮一个同学的忙制作一个GUI程序。由于他使用到了Python的matplotlib第三方库,用于显示波形,而使用Duilib内嵌这个界面存在较大的困难,需要加上python的支持,还要内嵌界面,而外界用户与之交互的按钮又涉及到了一定的麻烦,所以最终决定还是使用python来做这个GUI应用程序。

      由于之前有过C++Qt的基础,加上简单比较python的几个GUI库,最终决定采用PyQt5库。

      本程序采用了Python3进行编写,用了PyQt5、matplotlib、pandas等第三方库,其中有一个小功能是实现实时获取放大当前波形图。

      话不多说,首先需要安装第三方库的支持,由于使用pip安装像matplotlib库之类的会比较麻烦,安装后将发现使用的时候会报错,网上也找了很多办法,但大部分都是比较麻烦的,哈哈,博主比较nan,就直接装了anaconda3,里面包含了大部分需要使用到的,具体可以百度这个软件,下载安装,安装后大概会占用1个g的内容。

      对于PyQt5,就可以简单地使用pip install PyQt5命令直接安装啦!

      安装完后,开始入正题,编写程序:

      首先编写matplotlib相关的基础父类

    class BaseOscillograph(FigureCanvas):
        # 定义信号
        PosChangeSignal = QtCore.pyqtSignal(int,int)
        WheelChangSignal = QtCore.pyqtSignal(int)
        def __init__(self, parent=None, width=5, height=4, dpi=100):
    
            self.WheelValue = 0 #Wheel Default Value
    
            #Matble实现
            fig = Figure(figsize=(width, height), dpi=dpi)
            self.axes = fig.add_subplot(111)
            self.axes.hold(False) 
            FigureCanvas.__init__(self, fig)
            self.setParent(parent) # 设置父窗口,添加入窗口容器
            FigureCanvas.setSizePolicy(self,QSizePolicy.Expanding,QSizePolicy.Expanding)
            FigureCanvas.updateGeometry(self)
    
            # 改变样式
            self.pixmap = QPixmap("./img/border.png")
            self.scaledPixmap = self.pixmap.scaled(QSize(100, 100), Qt.KeepAspectRatio)  # 定义大小 按比例缩放图片
            newCursor = QCursor(self.scaledPixmap, -1, -1)
            self.setCursor(newCursor)
    
        def wheelEvent(self, event):
            delta = event.angleDelta()
            oriention = delta.y() / 8
        
            if oriention > 0:
                self.WheelValue -=10
            else:
                self.WheelValue +=10
            #Fix Value
            if self.WheelValue > 100:
                self.WheelValue =100
            if self.WheelValue <-40:
                self.WheelValue = -40
            self.scaledPixmap = self.pixmap.scaled(QSize(120+self.WheelValue, 120+self.WheelValue), Qt.KeepAspectRatio)
            newCursor = QCursor(self.scaledPixmap, -1, -1)
            self.setCursor(newCursor)
    
            self.WheelChangSignal.emit(self.WheelValue) # Send Signal To Provide Current WhellValue
    
        def mouseMoveEvent(self, event):
            pos =event.globalPos()
    
            self.curX = pos.x()
            self.curY = pos.y()
            self.PosChangeSignal.emit(self.curX,self.curY)
            super().mouseMoveEvent(event)
    

    大部分本文讨论的核心功能将在父类实现,重载wheelEvent方法,用于获取鼠标滚动事件,采用self.WheelValue属性用于记录当前鼠标滚轮的值,用于发送到主窗体,主窗体获取后动态改变显示大小的倍率,实现放大缩小的效果。每次滚动增减值为10,读者也可以自行添加个全局变量,或后期使用读取配置文件的方式,动态改变这一值。

      每次改变后,使用emit将这个值发送出去,供主窗口程序获取并作出改变。

      同样的方式,采用复写mouseMoveEvent的方法,将获取的当前鼠标位置保存起来,并发送给主界面

    接下来就需要编写子类功能实现窗口了,继承自BaseOscillograph

    #全局变量
    i=0
    j=200
    data = pd.read_excel(r'./data/signalData.xlsx')
    data = np.array(data)
    
    class MatplotOscillograph(BaseOscillograph):
        def __init__(self, *args, **kwargs):
            BaseOscillograph.__init__(self, *args, **kwargs)  #调用父类的构造器
            self.timer = QtCore.QTimer(self)
            self.timer.timeout.connect(self.update_figure) # FIXME : 改用开启线程的方式
            self.timer.start(100)
        def update_figure(self):
            # TODO : 此代码需要放在线程上 涉及线程通信
            global i,j
            self.axes.plot(data[i,j-200:j], 'r')
            self.axes.set_ylim([data[i,:].min(),data[i,:].max()])
            j = j + 5
            if j > 4096:
                j = 0
                i = i + 1
            self.draw()
        def stopRun(self):
            self.timer.stop()
        def beginRun(self):
            self.timer.start(100)
    

    这里首先采用简单的测试方法,将excel文件里面的内容当做仪器发送过来的信号,进行读取(这里的读取只是测试用,后期需要采用线程的方式进行动态获取,动态改变波形图,不在本文章详细介绍),子类使用简单的定时器功能,定时获取数据,并将数据读取显示成为波形图,当然,这里是需要修改的,只做测试用。


    excel的数据内容很简单,其实就是仿到时候仪器发送过来的数据。由于没有开启线程动态获取,开启程序的时候会因为读取过长,显示界面比较缓慢。后续采用动态获取仪器发送过来的数据将不会有这种现象。



    主程序类实现:

    class ApplicationWindow(QMainWindow):
        def __init__(self):
            QMainWindow.__init__(self)
            self.Init()
    
        def Init(self):
            # InitWindowAttribute
            self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
            self.setWindowFlags(Qt.FramelessWindowHint)  #去掉标题栏
            # 添加状态栏  重载,参数二为状态持续时间
            self.statusBar().showMessage(u"心电信号波形图")
            #
            self.SetStyle()
            self.InitData()
            self.InitProperty()
            self.InitLayout()
    
        def SetStyle(self):
            qssFile = open("qss\style.qss").read()
            self.setStyleSheet(qssFile)
            self.setWindowIcon(QIcon("img/15d.ico"))
    
        def InitData(self):
            # Param
            self.WheelValue = 0 #默认为0
            self.FitstMove = 1
            self.bImgRun = 1
            self.curX = -1
            self.curY = -1
    
            # Control
            self.image = QPixmap()
            self.picture = QLabel()
            self.minBtn = QPushButton()
            self.exitBtn = QPushButton()
            self.aboutBtn = QPushButton()
            self.analyResText = QTextEdit()
    
            # Others
            self.timer = QtCore.QTimer(self)  # 定时器
    
        def InitProperty(self):
            self.image.scaled(QSize(300, 300), Qt.KeepAspectRatio)
            #
            self.picture.setFixedSize(300, 300)
            self.picture.setScaledContents(1)
            #
            self.analyResText.setAttribute(Qt.WA_TranslucentBackground, 1)
            # Updata
            self.timer.timeout.connect(self.updateCurImg)
            #
            ####
            # Init ToolBar
            self.minBtn.setIcon(QIcon("img/btn_mini_normal.png"))
            self.minBtn.setMaximumSize(20, 20)
            self.minBtn.setIconSize(QSize(30, 30))
            self.minBtn.clicked.connect(self.windowMin)
            #
            self.exitBtn.setIcon(QIcon("img/btn_close_normal.png"))
            self.exitBtn.setMaximumSize(20, 20)
            self.exitBtn.setIconSize(QSize(30, 30))
            self.exitBtn.clicked.connect(self.fileQuit)
            #
            self.aboutBtn.setIcon(QIcon("img/list_icon_b.png"))
            self.aboutBtn.setMaximumSize(20, 20)
            self.aboutBtn.setIconSize(QSize(30, 30))
            self.aboutBtn.clicked.connect(self.about)
            #
            ####
            #
        def InitLayout(self):
            ###
            # Main Frame And Layout
            frame = QWidget()
            frameLayout = QVBoxLayout(frame)
            #
            ###
            #  TitleLayout
            titleLayout = QHBoxLayout()
            toolBarLayout = QHBoxLayout()
            #
            ico = QToolButton()
            ico.setIcon(QIcon("img/15d.ico"))
            title = QLabel(u"心电信号波形界面")
            #
            toolBarLayout.addWidget(QLabel())
            toolBarLayout.addWidget(self.aboutBtn, 1)
            toolBarLayout.addWidget(self.minBtn, 1)
            toolBarLayout.addWidget(self.exitBtn, 1)
            #
            titleLayout.addWidget(ico)
            titleLayout.addWidget(title)
            titleLayout.addLayout(toolBarLayout)
            #
            ###
            # CenterLayout
            centerLayout = QHBoxLayout()
            rightLayout = QVBoxLayout()
            # MatbalWindow
            matplotWindow = MatplotOscillograph(frame, width=5, height=4, dpi=100)
            matplotWindow.PosChangeSignal.connect(self.showCurImg)
            matplotWindow.WheelChangSignal.connect(self.wheelChange)
            #
            rightLayout.addWidget(self.picture)
            rightLayout.addWidget(QLabel(u"分析结果:"))
            rightLayout.addWidget(self.analyResText)
            #
            centerLayout.addWidget(matplotWindow, 2)
            centerLayout.addLayout(rightLayout, 1)
            #
            ###
            # ButtonLayout
            bottonLayout = QHBoxLayout()
            # Buttons
            stopBtn = QPushButton(u"暂停波形图")
            beginBtn = QPushButton(u"波形图运动")
            self.beginImgBtn = QPushButton(u"观察动图")
            self.analyCom = QComboBox()
            #
            # TODO : 改模式名称
            self.analyCom.addItem(u"分析1")
            self.analyCom.addItem(u"分析2")
            self.analyCom.addItem(u"分析3")
            self.analyCom.addItem(u"分析4")
            self.analyCom.addItem(u"分析5")
    
    
            # Signals and slots
            stopBtn.clicked.connect(matplotWindow.stopRun)
            beginBtn.clicked.connect(matplotWindow.beginRun)
            self.beginImgBtn.clicked.connect(self.beginImgRun)
            self.analyCom.currentIndexChanged.connect(self.analyFunction)
            #
            bottonLayout.addWidget(stopBtn)
            bottonLayout.addWidget(beginBtn)
            bottonLayout.addWidget(self.beginImgBtn)
            bottonLayout.addWidget(self.analyCom)
            #
            ###
            # MainLayout
            frameLayout.addLayout(titleLayout)
            frameLayout.addWidget(QLabel().setMaximumHeight(20))
            frameLayout.addLayout(centerLayout)
            frameLayout.addLayout(bottonLayout)
            #
            ### Others
            # setFocus And CentralWindow
            frame.setFocus()
            self.setCentralWidget(frame)
            #
            ###
    
        # # Slot Functions # #
        def fileQuit(self):
            self.close()
    
        def windowMin(self):
            self.showMinimized( )
    
        def closeEvent(self, ce):
            self.fileQuit()
    
        def about(self):
            QMessageBox.about(self, u"心电信号波形图",
            """心电信号波形图使用程序
            旨为医生提供更便捷的服务
            """
            )
    
        def mousePressEvent(self, event):
            if event.button() == Qt.LeftButton:
                self.dragPosition = event.globalPos() - self.frameGeometry().topLeft()
                QApplication.postEvent(self, QEvent(174))
                event.accept()
    
        def mouseMoveEvent(self, event):
            if event.buttons() == Qt.LeftButton:
                self.move(event.globalPos() - self.dragPosition)
                event.accept()
    
        def showCurImg(self,x,y):
            self.curX = x
            self.curY = y
            screen = QGuiApplication.primaryScreen()
            distance = self.WheelValue + 80
            self.image = QPixmap(screen.grabWindow(0, x-distance,y-distance,distance*2, distance*2))
            self.picture.setPixmap(self.image)
            self.picture.update()
    
        def wheelChange(self,wheelValue):
            self.WheelValue = wheelValue
    
        def updateCurImg(self):
            self.showCurImg(self.curX,self.curY)
    
        def beginImgRun(self):
            if(self.bImgRun):
                if self.curX == -1:
                    self.statusBar().showMessage(u"请先用鼠标获取波形图再尝试",2000)
                    return
                self.bImgRun = 0
                self.beginImgBtn.setText(u"停止动图")
                self.timer.start(500) # Don't Too Quick. It is important for CPU
            else:
                self.bImgRun =1
                self.beginImgBtn.setText(u"观察动图")
                self.timer.stop()

    哈哈,由于受到了Duilib的影响,现在做界面什么的都喜欢采用自绘的方式,同样的思想被我应用到了PyQt中,采用

            self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
            self.setWindowFlags(Qt.FramelessWindowHint)  #去掉标题栏
    去掉标题栏,然后重写下面两个方法以实现窗口的拖动,

        def mousePressEvent(self, event):
        def mouseMoveEvent(self, event):
    简单地实现了布局后,我们进入到本文重点,就是动态获取屏幕信息

    由于MATLAB窗口那边发送了信号,我们在主窗口类实现上,将信号和槽连接起来,一旦信号发生了,槽方法将被调用,槽函数的实现我们详细再看一遍

    def showCurImg(self,x,y):
        self.curX = x
        self.curY = y
        screen = QGuiApplication.primaryScreen()
        distance = self.WheelValue + 80
        self.image = QPixmap(screen.grabWindow(0, x-distance,y-distance,distance*2, distance*2))
        self.picture.setPixmap(self.image)
        self.picture.update()
    
    def wheelChange(self,wheelValue):
        self.WheelValue = wheelValue
    由于MATLAB窗口发送信号的同时,我们将鼠标当前的位置也发送过来了,所以,在主界面类中,我们先保存当前的鼠标坐标,供后面使用,然后调用Qt封装好的API,获取屏幕,根据滚轮的值,动态获取这个QPixmap,然后,只需要简答地setPixmap,update后就可以了。

    功能很简单,没有太强大的功能,但是可以根据同样的思路,实现截图程序,以及屏幕录屏程序等。

    就介绍这么多了,对于python博主也是使用不久,主要是因为Qt有了python的实现,所以也那么幸运,可以使用到python制作一个Gui程序。

    好了,功能实现的结果就如下了:还有不完善的地方后续将更改,也会分享出来,一方面可以增强自己的记忆,也可以供以后忘了的时候阅读


    展开全文
  • Python实现获取鼠标的实时位置

    千次阅读 多人点赞 2021-06-10 13:51:42
    这里写目录标题具体实现结果展示 使用Python的第三方库pyautogui ... #获取屏幕分辨率 screenWidth, screenHeight = pag.size() #获取鼠标位置 x, y = pag.position() #打印分辨率和鼠标位置 print("Screen


    使用Python的第三方库pyautogui

    安装:

    pip install pyautogui
    

    具体实现

    import time
    import pyautogui as pag
     
    try:
        while True:
        	#获取屏幕分辨率
            screenWidth, screenHeight = pag.size()  
            #获取鼠标位置
            x, y = pag.position()  
            #打印分辨率和鼠标位置
            print("Screen size: (%s %s),  Position : (%s, %s)\n" % (screenWidth, screenHeight, x, y))  
            #间隔一秒显示位置
            time.sleep(1)  
    except KeyboardInterrupt:
        print('end')
    

    结果展示

    屏幕的分辨率1920×1080,间隔1s移动鼠标后的结果:
    在这里插入图片描述

    展开全文
  • import os import time import pyautogui as pag ... screenWidth, screenHeight = pag.size() # 获取屏幕的尺寸 x, y = pag.position() # 返回鼠标的坐标 print("Screen size: (%s %s), Position : (%s

    一个简单的例子

    import os
    import time
    import pyautogui as pag
    
    try:
        while True:
            print("Press Ctrl-C to end")
            screenWidth, screenHeight = pag.size()  # 获取屏幕的尺寸
            x, y = pag.position()  # 返回鼠标的坐标
            print("Screen size: (%s %s),  Position : (%s, %s)\n" % (screenWidth, screenHeight, x, y))  # 打印坐标
    
            time.sleep(1)  # 每个1s中打印一次 , 并执行清屏
            os.system('cls')  # 执行系统清屏指令
    except KeyboardInterrupt:
        print('end')
    

    其他用法

    import pyautogui as pag
    import time
    
    # x1, y1 = pag.position()  # 返回鼠标的坐标
    # print(pag.position())
    pag.rightClick(x=1230, y=15, interval=0.25)
    
    time.sleep(1)
    alert = pag.alert(text='text', title='title', button='OK')
    print(alert)
    confirm = pag.confirm(text='', title='', buttons=['OK', 'Cancel'])
    print(confirm)
    
    

    参考

    https://blog.csdn.net/qq_39377418/article/details/101387523?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromBaidu-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromBaidu-1.control

    展开全文
  • 本程序可以实时获取鼠标指针的x,y坐标,作者:李兴球 原理:通过获取屏幕的canvas,对&lt;Motion&gt;鼠标移动事件进行绑定. 由于turtle的坐标系的不同,所以要进行坐标转换. """ #从海龟模块导入...

    """本程序可以实时获取鼠标指针的x,y坐标,作者:李兴球
    原理:通过获取屏幕的canvas,对<Motion>鼠标移动事件进行绑定.
    由于turtle的坐标系的不同,所以要进行坐标转换.
    """

    #从海龟模块导入所有命令

    from turtle import *
    屏幕 = Screen()
    屏幕.setup(480,360)
    屏幕.delay(0)
    忍者神龟 = Turtle(shape='turtle')
    忍者神龟.pencolor("blue")
    忍者神龟.fillcolor("cyan")
    忍者神龟.pensize(2)

    def cursorxy(event):
        #要进行坐标转换
        x = event.x - 240
        y = 180 - event.y 
        屏幕.title("鼠标指针坐标为:" + str(x) + "," + str(y))
        
    屏幕.cv.bind("<Motion>",cursorxy)
    屏幕.onclick(忍者神龟.goto)
    屏幕.mainloop()
     

    展开全文
  • PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http://t.cn/A6Zvjdun 最近突然有个奇妙的想法,就是当我对着电脑屏幕的时候,电脑会先识别屏幕上的人脸是否是本人,如果识别是本人的话需要回答电脑...
  • alive-progress:一款新的进度条,具有实时吞吐量信息以及非常酷的动画。 colorama:跨平台彩色终端文本。 bashplotlib:在终端中进行基本绘图。 rich:一个在终端中支持富文本和格式美化的 Python 库, 同时提供...
  • 在HMI USART屏幕中显示实时加密货币价格信息的项目 现在,您不必拿起手机,打开一个加密货币市场应用程序,而无需等待几秒钟,直到您可以查看价格。 只需看看您的桌子: 该项目从Huobi(使用WebSocket)和Binance...
  • python - 在线答题程序

    千次阅读 2019-02-27 15:17:48
    python实现在线答题,实时获取问题,并放入百度搜索,本程序半自动,需要人工干预,问题在屏幕上出来后,需要输入指令让程序开始,问题答案需要从百度搜索的结果中自行判断。 可实现诸如一站到底类综艺节目答题,...
  • Earth Live夏普 重要:警告: 从 ( )获取实时图像并将其设置为墙纸让您从太空实时观看地球。 还建议在Android上使用 。 Linux或OSX用户可以在尝试Shell / Ruby / Python脚本。 屏幕截图 下载 检查。
  • Python基础之pyautogui模块(详细总结鼠标键盘操作)

    千次阅读 多人点赞 2020-10-24 17:19:34
    实例4.1 鼠标控制 鼠标画一个正方形4.2 获取鼠标的实时位置4.3 获取鼠标位置 与 所在位置的颜色 1. GUI 控制功能 控制鼠标键盘使用的模块为:pyautogui,这个模块操作起鼠标键盘的时候,非常的迅速,而且如果该模块...
  • 一、简介 你一定用过那种“OCR神器”,可以把图片中的文字提取出来,极大的提高工作效率。...from PIL import ImageGrab # 用于保存屏幕截图 三、获取百度应用接口 AI开放平台文档中心 https://ai.baid
  • 互联网改变了我们的生活,现在连打麻将都在网上打了。进几年发现身边的很多朋友都在...如何实时获取屏幕的视频流。 如何识别出屏幕中的某一张牌是什么。(难点中的难点) 如何控制整个游戏的流程不错乱。 难点我们已经
  • 主要功能:获取行情数据,实时刷新K线图,价格到达支撑/阻力位时,屏幕有提示,系统出现语音播报 涉及技术:Python、Flask(Python的Web框架)、HighCharts(JavaScript框架) 简单来说,通过Wind API获取Tick数据...
  • rtscli-实时股票行情CLI 在控制台中运行的股票行情自动收录器 它每10秒钟或按R键就会从Google财经Api获取信息 这很简单,但是如果您想通读博客文章: : 注意!! 这已更改为使用因为Google财务似乎不再能够可靠地...
  • 最近使用markdown写笔记要插入图片时老是需要先截屏保存图片再打开图床web上传,心血来潮想着能不能做个一条龙的软件,于是自己动手写了这...pyqt5获取屏幕截图 使用QScreen对象的接口直接获取全屏截图返回QPixmap对...
  • 利用python的opencv模块读取摄像头来获取图像,同时调用datetime模块来读取实时的时间并显示在屏幕上 import cv2 import datetime #获取摄像头视频 cap = cv2.VideoCapture(0) # 获取视频宽度 frame_width = int...
  • 可以根据图像确定实时FRC游戏得分的程序包。 特征 访问计分板的许多部分(更多内容即将推出) 易于使用 超级快 模板匹配(记分板在屏幕上的哪个位置都没有关系) 安装 $ pip install livescore 您还需要安装和...
  • Remarkable功能齐全Linux ...功能卓越的功能包括:具有同步滚动语法的实时预览高亮显示GitHub风味的Markdown支持HTML和PDF导出MathJax支持样式自定义CSS支持键盘快捷键请查看主页以获取更多详细信息和屏幕截图。 一生
  • Infopanel是一种工具,用于组织和显示来自许多来源(各种传感器等),简单的动画,图像,动画gif以及其他各种屏幕上的实时信息。 特别适合在RGB LED矩阵上显示各种场景。 该项目的代码以及问题跟踪器等。 完整文档...
  • 功能很强,可以对第三方App进行测试,获取屏幕上任意一个APP的任意一个控件属性,并对其进行任意操作,但有两个缺点:1. 测试脚本只能使用Java语言 2. 测试脚本要打包成jar或者apk包上传到设备上才能运行。 我们希望...
  • 屏幕截图管理-从客户端获取实时屏幕截图。 视频流-实时观看客户端屏幕。 客户端锁定-锁定和解锁客户端计算机。 加密文件传输(上传/下载) -从客户端下载文件或为客户端上传文件。 键盘记录器-注册客户端按下的...
  • 分析屏幕上的像素以确定卡片在哪里 翻转时拍摄卡的照片 使用图像识别来匹配卡片上的图片 点击正确的卡片 每当达到目标分数时结束 项目二 用Python进行股票交易机器人 该项目是我做的机器人,用于执行以下操作: 获取...
  • 可以在以下获取屏幕截图: : 特征 以编程方式或使用(原始)GUI创建和编辑DFA和NFA。 从NFA转换为DFA。 将DFA优化到最少的状态数。 在样本字符串上评估自动机。 从(经典)正则表达式转换为自动机。 从任何...
  • Remote-Executor-源码

    2021-05-24 15:19:07
    通过特定链接进入采访后,屏幕实时共享。 这意味着,一个屏幕上的更改将反映在该特定采访中的每个用户的屏幕上。 他们还可以在整个采访中进行视频通话。 特征: 主画面: 主页由以下元素组成: 使用Google登录...
  • 非常棒的进度条

    2019-03-26 14:24:00
    在ftp项目编写上传下载文件时候会用到进度条功能,以便客户机直观的获取文件传输状态信息。...文件传输中,每当文件大小状态获得更新时,我需要在屏幕的进度条上得到实时反馈 require2>>>我希...
  • 题目如何实现执行一个命令,让文字字符,采用输入回放的效果,逐一显示在屏幕上参考答案:在电影里尤其是好莱坞电影你可能已经看见过模拟文本了,像是在实时输入文字,你可以用pv命令仿照任何类型模拟风的文本输出,...
  • 智能提醒HUB-电路方案

    2021-04-20 15:41:53
    软件:天气获取方案:使用网络爬虫获取中国天气网的实时数据 云笔记方案:leanote云笔记 语音播报方案:百度tts 在确定软硬件方案后,首先要完成硬件平台的搭建,我选用了啃萝卜提供的树莓派3B并自己购买了一块3.5树莓派...
  • myRecipe-MS3-源码

    2021-03-09 00:41:36
    该站点的实时版本可用 内容 ==== UX开发 我的食谱网站将帮助用户将所有食谱放在一个易于访问的地方。 作为用户,我一直希望可以单点访问我的家人多年来收集的所有食谱,这些食谱直到现在都写在纸上。 该网站的主要...
  • Hardware Monitor V5.5:一款硬件检测软件,它可以帮助您实时显示硬件温度 Alfred workflow插件系列: Alfred作为mac平台的神器,离不开workflow插件的加成,该目录收录常用的workflow插件 Canary Mail V1.3:...
  • 《本地YouTube下载器》作者自己也承认youtube-dl要比《本地YouTube下载器》更好用一些,但《本地YouTube下载器》是一个脚本,无需安装Python开发环境,可以在浏览器直接使用,对普通用户极其友好,所以懒得折腾的非...

空空如也

空空如也

1 2
收藏数 33
精华内容 13
关键字:

python实时获取屏幕

python 订阅