學Python 不是做開發,用於方便日常工作,如提高辦公效率,有哪些合適小白的課程!求大神推薦?
我是做諮詢工作的,了解到Python 系統可以方便日常工作,但關注了一些課程後都是樣開發方向學習的,並不適合我,課程也非常費腦筋,作為並不想從事軟體開發行業的我(女)來說,有哪些課程是從處理和方便日常工作的角度可以學習的?都在哪些平台學習?求大神賜教!
比如模擬滑鼠點擊和鍵盤點擊?幫你自動化完成信息錄入?
本文推薦第三方庫PyAutoGui。
PyAutoGUI
你想徹底釋放雙手,讓電腦幫你完成滑鼠操作和鍵盤操作?
讓電腦幫你完成GUI的自動任務?
那本文就是為你量身打造的,實現辦公自動化的Python程序庫。
本文中所有代碼全部經過驗證,使用的開發環境是Python 3.8。
PyAutoGUI是一個跨平台GUI自動化Python模塊。用於以編程方式控制滑鼠和鍵盤。
本文按照如下順序進行組織:
- 安裝
- 滑鼠控制功能
- 鍵盤功能功能
1.安裝
在Windows平台上, 在cmd命令窗口中輸入:
&>&>&>pip install pyautogui
pyautogui會自動安裝它依賴的模塊,包括PyTweening,PyScreeze,PyGetWindow,PymsgBox和MouseInfo。
安裝完畢後,調用如下語句,不會報錯。
&>&>&> import pyautogui
2. 滑鼠控制功能
這一小節按照如下的順序進行展開。
- 屏幕和滑鼠位置
- 滑鼠移動
- 滑鼠拖拽
- 滑鼠點擊
2.1 屏幕和滑鼠位置
在介紹滑鼠控制功能前,首先介紹屏幕和滑鼠位置,因為滑鼠的控制功能都是基於屏幕像素點進行的。
我們的屏幕是由很多像素點組成的。以我的顯示器為例進行說明。我的顯示解析度是1920×1080,左上角就是(0,0),右下角就是(1919,1079),x軸坐標按照從左往右的順序遞增,y軸坐標按照從上往下的順序遞增。
0,0 X 增加 --&>
+---------------------------+
| | Y 增加
| | |
| 1920 x 1080 screen | |
| | V
| |
| |
+---------------------------+ 1919, 1079
屏幕解析度大小由size()函數作為兩個整數的元組返回,當前滑鼠位置可以通過position()函數返回。
&>&>&> pyautogui.size()
Size(width_=1920, height=1080)
&>&>&> pyautogui.position()
Point(x=897, y=309)
要檢查X,Y坐標是否在屏幕上,可以調用onScreen()函數。
&>&>&> pyautogui.onScreen(0,0)
True
&>&>&> pyautogui.onScreen(1920,1080)
False
&>&>&> pyautogui.onScreen(1919,1079)
True
2.2 滑鼠移動
滑鼠移動的方法包括兩種:絕對坐標和相對坐標。
使用moveTo()函數,會將滑鼠游標移至你傳遞的X和Y整數坐標,即移動到絕對坐標位置
# 將滑鼠游標移動到(200,300)
&>&>&> pyautogui.moveTo(200,300)
# 將滑鼠游標移動到(400,500)
&>&>&> pyautogui.moveTo(400,500)
使用move()函數,會將滑鼠游標移動到相對於當前位置的像素點上,即移動到相對坐標位置。
# 將滑鼠游標左移100個像素點
&>&>&> pyautogui.move(-100,0)
# 將滑鼠游標右移100個像素點
&>&>&> pyautogui.move(100,0)
# 將滑鼠游標上移200個像素點
&>&>&> pyautogui.move(0,-200)
# 將滑鼠游標下移200個像素點
&>&>&> pyautogui.move(0,200)
除了可以設置滑鼠游標位置,還可以設置持續時間和緩動功能,這兩個參數使滑鼠移動更有趣。這兩個參數可以控制滑鼠移動到目的地的時間和速度。正常情況下,滑鼠是以恆定的速度向目的地移動。第3個參數是控制持續時間(單位秒),第4個參數是控制移動節奏,在持續時間不變的情況下,不同位置的移動速度不一樣。
pyautogui.easeInQuad #開始慢,結束快
pyautogui.easeOutQuad #開始塊,結束慢
pyautogui.easeInOutQuad #開始塊,結束塊,中間慢
pyautogui.easeInBounce #結束時反彈
pyautogui.easeInElastic #結束時是橡皮筋
參考下面的例子。
# 將當前滑鼠游標移動到位置(400,500),持續時間是2秒,移動開始慢,結束時快
&>&>&> pyautogui.moveTo(400,500,2,pyautogui.easeInOutQuad)
# 將當前滑鼠游標向右移動400個像素點,持續時間是2秒,移動開始塊,結束時慢
&>&>&> pyautogui.move(400,0,2,pyautogui.easeOutQuad)
2.3 滑鼠拖拽
滑鼠拖拽的方式包括兩種:絕對坐標和相對坐標。
使用dragTo()函數和drag()函數可以實現滑鼠拖拽功能。dragTo()函數使用絕對坐標,將當前滑鼠游標選中的東西移動到指定的游標位置;drag()函數使用相對坐標,將當前滑鼠游標選中的東西移動到相對於當前位置的像素點上,即移動到相對坐標位置。
除了之外,它們還有一個參數button,這個參數可以被設置成『left』,『middle』,『right』,表示在拖拽的過程中按下哪個滑鼠鍵。
# 將當前游標位置的東西移動到(100,200)處,在拖動的過程中按住滑鼠左鍵。
&>&>&> pyautogui.dragTo(100,200,button=left)
# 將當前游標位置的東西向下移動100個像素點,在拖動的過程中按住滑鼠左鍵。
&>&>&> pyautogui.drag(100,0,button=left)
滑鼠拖拽具有和滑鼠移動一樣的參數。第3個參數和第4個參數的作用和滑鼠移動的參數效果一樣。參考下面的例子。
# 將當前游標位置的東西向右移動400個像素點,持續時間2秒,開始快,結束慢。
&>&>&> pyautogui.drag(400,0,2,pyautogui.easeOutQuad)
2.4 滑鼠點擊
通過調用click()函數可以模擬滑鼠在當前位置單擊滑鼠左鍵,」點擊「的定義是按下按鈕後將其釋放。
&>&>&> pyautogui.click()
除了在當前位置點擊,還可以點擊指定的坐標位置。在click()函數中傳入X坐標和Y坐標。
&>&>&> pyautogui.click(100,300)
滑鼠點擊默認使用滑鼠左鍵,也可以通過傳遞參數,指定使用那個滑鼠鍵。參數包括left,『middle』, 『right』。
# 用滑鼠左鍵,點擊(100,300)的位置
&>&>&> pyautogui.click(100,300,button=right)
# 用滑鼠右鍵,點擊當前位置
&>&>&> pyautogui.click(button=middle)
click默認點擊一次,如果要實現多次點擊,可以將整數傳遞給clicks參數,還可以將整數或浮點數設置給interval參數,以指定兩次點擊之間的暫停時間(以秒為單位)。
# 用滑鼠左鍵點擊2次,間隔時間0.25秒
&>&>&> pyautogui.click(clicks=2,interval=0.25)
3 鍵盤控制功能
鍵盤控制功能包括輸入字元串、按下鍵盤上的鍵、熱鍵。
3.1 輸入字元串
輸入字元串使用的是write()函數。
&>&>&> pyautogui.write("Hello World!")
3.2 模擬按鍵
模擬按鍵使用的press()函數、keyDown()、keyUp()函數。
調用press()函數,從它傳遞一個字元串pyautogui.KEYBOARD_KEYS,例如enter、f1、esc等等。
&>&>&> pyautogui.press(f11)
下表是KEYBOARD_KEYS,這些參數可以傳遞給press()函數,和接下來要介紹的keyDown(),keyUp()和hotKey()函數。
[ ,
,
, , !, ", #, $, %, , "", (,
), *, +, ,, -, ., /, 0, 1, 2, 3, 4, 5, 6, 7,
8, 9, :, ;, &, ?, @, [, \, ], ^, _, `,
a, b, c, d, e,f, g, h, i, j, k, l, m, n, o,
p, q, r, s, t, u, v, w, x, y, z, {, |, }, ~,
accept, add, alt, altleft, altright, apps, backspace,
browserback, browserfavorites, browserforward, browserhome,
browserrefresh, browsersearch, browserstop, capslock, clear,
convert, ctrl, ctrlleft, ctrlright, decimal, del, delete,
divide, down, end, enter, esc, escape, execute, f1, f10,
f11, f12, f13, f14, f15, f16, f17, f18, f19, f2, f20,
f21, f22, f23, f24, f3, f4, f5, f6, f7, f8, f9,
final, fn, hanguel, hangul, hanja, help, home, insert, junja,
kana, kanji, launchapp1, launchapp2, launchmail,
launchmediaselect, left, modechange, multiply, nexttrack,
nonconvert, num0, num1, num2, num3, num4, num5, num6,
num7, num8, num9, numlock, pagedown, pageup, pause, pgdn,
pgup, playpause, prevtrack, print, printscreen, prntscrn,
prtsc, prtscr, return, right, scrolllock, select, separator,
shift, shiftleft, shiftright, sleep, space, stop, subtract, tab,
up, volumedown, volumemute, volumeup, win, winleft, winright, yen,
command, option, optionleft, optionright]
press()函數實際上是模擬按下一個鍵,然後釋放它,其實就是keyDown()和keyUp()函數的包裝。這些函數可以自己調用。
import pyautogui
pyautogui.keyDown(ctrl)
pyautogui.keyDown(shift)
pyautogui.keyUp(shift)
pyautogui.keyUp(ctrl)
調用結果就是,輸入法切換成功。
3.3 熱鍵
為了方便快捷地按下熱鍵或鍵盤快捷鍵,hotkey()
可以傳遞幾個鍵字元串,這些字元串將按順序按下,然後以相反的順序釋放。
3.2節中的切換輸入法,可以輸入如下代碼:
pyautogui.hotkey(ctrl, shift)
碼字不易,如果真的解決了您的問題。
請您點贊支持。
您可以關注我,我會持續回答計算機相關問題。
我有2個Python專欄。1個專門針對Python初學者,手把手教你入門Python;1個專門介紹強大的第三方庫。
樓上兄弟推薦的書叫《Python編程快速上手:讓繁瑣工作自動化》,作者Al Sweigart。