【问题标题】:How to grab a desktop screenshot with PyQt?如何使用 PyQt 抓取桌面截图?
【发布时间】:2014-09-23 06:30:53
【问题描述】:

我可以使用 PyQt 从桌面或任何窗口截取屏幕截图吗?如何处理桌面上的keyPressEvent?

谢谢。

【问题讨论】:

    标签: python pyqt


    【解决方案1】:

    桌面截图示例:

    import sys
    from PyQt4.QtGui import QPixmap, QApplication
    
    app = QApplication(sys.argv)
    QPixmap.grabWindow(QApplication.desktop().winId()).save('screenshot.jpg', 'jpg')
    

    如果您想截取特定窗口的屏幕截图,请将QApplication.desktop() 替换为您要截取屏幕截图的小部件。

    【讨论】:

    • 谢谢。但是如何处理桌面窗口的按键呢?
    • 这应该作为一个单独的问题发布。
    • 我们如何捕捉窗口而不是整个屏幕?
    • 阅读我回答的最后一句话。您将引用传递给窗口而不是桌面。
    • 按名称引用还是按对象引用?请把它写到你的答案中。
    【解决方案2】:

    搜索你想要的标题项目

    import win32gui
    hwnd_title = dict()
    def get_all_hwnd(hwnd,mouse):
      if win32gui.IsWindow(hwnd) and win32gui.IsWindowEnabled(hwnd) and win32gui.IsWindowVisible(hwnd):
        hwnd_title.update({hwnd:win32gui.GetWindowText(hwnd)})
    
    win32gui.EnumWindows(get_all_hwnd, 0)
     
    for h,t in hwnd_title.items():
      if t is not "":
        print(h, t)
    

    然后用标题截图

      from PyQt5.QtWidgets import QApplication
      from PyQt5.QtGui import *
      import win32gui
      import sys
    
      hwnd = win32gui.FindWindow(None, 'C:\Windows\system32\cmd.exe')
      app = QApplication(sys.argv)
      screen = QApplication.primaryScreen()
      img = screen.grabWindow(hwnd).toImage()
      img.save("screenshot.jpg")
    

    【讨论】:

      【解决方案3】:

      要获取 App-Window 使用:

      ex = Ui_MainWindow() #The class wher you call self.show()
      QPixmap.grabWidget(ex).save('screenshot.jpg', 'jpg')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-02-12
        • 2021-06-28
        • 1970-01-01
        • 2019-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多