Python+PyQt5開發(fā)一個(gè)截圖工具
制作一個(gè)簡單的電腦截圖應(yīng)用,可以使用 Python 結(jié)合 PyQt 或 Tkinter 開發(fā)一個(gè)圖形化界面程序,同時(shí)使用 Pillow 或 pyautogui 來實(shí)現(xiàn)截圖功能。以下是一個(gè)使用 Python 和 PyQt5 的示例代碼,展示如何手動(dòng)寫代碼實(shí)現(xiàn)一個(gè)截圖工具。
實(shí)現(xiàn)步驟
安裝依賴庫:
pip install PyQt5 pyautogui pillow
代碼實(shí)現(xiàn):
import sys
import pyautogui
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QFileDialog, QLabel
from PyQt5.QtGui import QPixmap
from PyQt5.QtCore import Qt
from PIL import Image
class ScreenshotApp(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("截圖工具")
self.setGeometry(300, 300, 400, 300)
# 添加按鈕
self.screenshot_button = QPushButton("截圖", self)
self.screenshot_button.setGeometry(150, 50, 100, 50)
self.screenshot_button.clicked.connect(self.take_screenshot)
self.save_button = QPushButton("保存截圖", self)
self.save_button.setGeometry(150, 150, 100, 50)
self.save_button.clicked.connect(self.save_screenshot)
self.save_button.setEnabled(False) # 禁用按鈕,直到截圖完成
# 顯示截圖的標(biāo)簽
self.screenshot_label = QLabel(self)
self.screenshot_label.setGeometry(50, 220, 300, 50)
self.screenshot_label.setAlignment(Qt.AlignCenter)
# 存儲(chǔ)截圖
self.screenshot = None
def take_screenshot(self):
# 截取全屏
screenshot = pyautogui.screenshot()
self.screenshot = screenshot
self.save_button.setEnabled(True) # 啟用保存按鈕
# 將截圖顯示在 GUI 中
screenshot.save("temp.png") # 暫時(shí)保存為臨時(shí)文件
pixmap = QPixmap("temp.png")
self.screenshot_label.setPixmap(pixmap.scaled(300, 50, Qt.KeepAspectRatio))
self.screenshot_label.setText("截圖完成,請保存!")
def save_screenshot(self):
if self.screenshot:
# 選擇保存路徑
file_path, _ = QFileDialog.getSaveFileName(self, "保存截圖", "", "PNG Files (*.png);;All Files (*)")
if file_path:
self.screenshot.save(file_path)
self.screenshot_label.setText(f"截圖已保存到: {file_path}")
else:
self.screenshot_label.setText("沒有可保存的截圖!")
# 主程序運(yùn)行
if __name__ == "__main__":
app = QApplication(sys.argv)
window = ScreenshotApp()
window.show()
sys.exit(app.exec_())
功能說明
1.界面布局:
- 一個(gè)截圖按鈕用于截圖。
- 一個(gè)保存按鈕用于保存截圖。
- 標(biāo)簽顯示截圖狀態(tài)或截圖縮略圖。
2.功能點(diǎn):
- 使用
pyautogui.screenshot()實(shí)現(xiàn)屏幕截圖。 - 使用
QFileDialog提供保存截圖的對話框。 - 截圖后可在 GUI 中顯示縮略圖。
擴(kuò)展功能
如果需要更復(fù)雜的功能,可以進(jìn)一步開發(fā):
- 區(qū)域截圖:讓用戶用鼠標(biāo)拖拽選擇截圖區(qū)域。
- 熱鍵功能:使用
keyboard庫監(jiān)聽快捷鍵。 - 截圖編輯:增加文字標(biāo)注、畫框等功能。
- 多語言支持:為國際用戶提供多語言界面。
這段代碼可以直接運(yùn)行,作為一個(gè)入門項(xiàng)目,適合學(xué)習(xí)界面編程和基本功能開發(fā)!
到此這篇關(guān)于Python+PyQt5開發(fā)一個(gè)截圖工具的文章就介紹到這了,更多相關(guān)Python截圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Python和Selenium構(gòu)建一個(gè)自動(dòng)化圖像引擎
這篇文章主要為大家詳細(xì)介紹了如何使用Python和Selenium庫構(gòu)建一個(gè)自動(dòng)化圖像引擎,能夠根據(jù)指定參數(shù)自動(dòng)截取網(wǎng)頁快照,并將生成的圖片存儲(chǔ)到云端,需要的可以參考下2024-12-12
python實(shí)現(xiàn)用戶管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)用戶管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01
在Django中編寫模版節(jié)點(diǎn)及注冊標(biāo)簽的方法
這篇文章主要介紹了在Django中編寫模版節(jié)點(diǎn)及注冊標(biāo)簽的方法,Django是Python各式各樣的高人氣框架中最為著名的一個(gè),需要的朋友可以參考下2015-07-07
pycharm遠(yuǎn)程開發(fā)項(xiàng)目的實(shí)現(xiàn)步驟
這篇文章主要介紹了pycharm遠(yuǎn)程開發(fā)項(xiàng)目的實(shí)現(xiàn)步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-01-01
python 將日期戳(五位數(shù)時(shí)間)轉(zhuǎn)換為標(biāo)準(zhǔn)時(shí)間
這篇文章主要介紹了python 將日期戳(五位數(shù)時(shí)間)轉(zhuǎn)換為標(biāo)準(zhǔn)時(shí)間的實(shí)現(xiàn)方法,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-07-07
關(guān)于數(shù)據(jù)分析之滾動(dòng)窗口pandas.DataFrame.rolling方法
Pandas庫中的rolling方法是數(shù)據(jù)處理中常用的功能,它允許用戶對數(shù)據(jù)進(jìn)行滾動(dòng)窗口(滑動(dòng)窗口)操作,通過指定窗口大小,可以使用不同的聚合函數(shù)對窗口內(nèi)的數(shù)據(jù)進(jìn)行計(jì)算,例如最大值、最小值、平均值、中位數(shù)等,此外,rolling方法還可以計(jì)算方差、標(biāo)準(zhǔn)差、偏度、峰度2024-09-09
使用python實(shí)現(xiàn)快速搭建簡易的FTP服務(wù)器
本文給大家推薦的是如何使用Python實(shí)現(xiàn)快速搭建簡易的FTP服務(wù)器的方法,非常的簡單,有需要的小伙伴可以參考下2018-09-09

