2009-12-22 58 views
11

Làm cách nào để kiểm soát chuột và bàn phím bằng Python?Làm cách nào để kiểm soát bàn phím và chuột bằng Python?

Ý tưởng là thực hiện tương tự như Robot() class trong Java. Có thể nói: di chuyển chuột từ đây đến đây, bấm vào đó, viết rằng bất cứ điều gì là trên màn hình.

Đối với Windows có win32api nhưng tôi đang sử dụng chủ yếu là Linux.

Đối với Linux, có Xlib nhưng nó cũng có hoạt động với bàn phím không? (chỉ tìm thấy tham chiếu đến con chuột)

Có giải pháp đa nền tảng không? (Linux, Windows và thậm chí OS X sẽ là tuyệt vời.)

+1

Mạnh mẽ của Python, nhưng tôi không nghĩ nó đủ mạnh để cho phép bạn điều khiển bàn phím và chuột. Tôi rất thích nó nếu bạn thực sự có thể làm cho con chuột của tôi phóng to trên bàn của tôi bằng cách sử dụng Python, nhưng tôi không nghĩ rằng nó sẽ xảy ra. ;-) –

+0

một giải pháp tốt cho các cửa sổ chỉ http://www.python-forum.org/pythonforum/viewtopic.php?f=2&t=8976 Tôi đang tìm kiếm tương tự cho linux hoặc nền tảng chéo –

+3

@ Dominic nó có thể được thực hiện –

Trả lời

1

cho chuột, tôi đã tìm thấy pymouse mà dường như để làm việc (tôi đã không cố gắng hết nó, một hack nhỏ cần thiết cho việc nhấp chuột, cf các vấn đề)

cho bàn phím, tôi không chắc chắn Xlib có thể thực hiện công việc. Tôi vẫn đang tìm cách viết một cái gì đó nhưng bạn có thể nắm bắt sự kiện quan trọng như được giải thích here hoặc trong C here sử dụng Xlib (nhưng tôi không biết C).

here là một ví dụ làm việc trên gnome chỉ (không đủ tốt chưa)

Trong pymouse, họ có một cách tốt đẹp để làm cho nó hoạt động trên nền tảng 3 khác nhau nhưng cần phải thực hiện 3 mã ...

1

Dưới đây là một chủ đề interessting từ Python Diễn đàn dành cho bạn: Python Forum

Edit: Ngoài ra còn là một câu hỏi interessting trên stackoverflow về điều khiển chuột. ..maybe nó là một điểm khởi đầu tốt đẹp .. Mouse Control with Python

Một trong những câu trả lời là tham khảo một ví dụ về Linux ... mà bạn đưa đến một mục blog tốt đẹp.

+1

vui, tôi chỉ gửi cùng một liên kết tới Dominic Rodger. Nó hoạt động trên windows chỉ tôi nghĩ (windll.user32.SetCursorPos không âm thanh tốt) –

1

Để bàn điều khiển, hãy thử ncurses hoặc tiếng lóng. Trong tình huống khác hãy thử PyQt, PyGtk, TkInter.

TẤT CẢ giải pháp này là nền tảng chéo và hoạt động ở hầu hết mọi nơi.

+0

nó đã buồn mà tôi không thể tìm thấy một giải pháp cho windows và linux do đó, một giải pháp khác nhau nếu bạn đang sử dụng Gtk hoặc Qt có vẻ không tốt. và dù sao tôi không hiểu những gì bạn nói để sử dụng. Phương pháp nào? làm thế nào? ... –

+0

Tại sao Gtk hoặc Qt có vẻ cho Bạn không tốt? TkInter theo như tôi biết được nhúng trong python theo mặc định !!! –

+0

Hm. Có thể bạn muốn mô phỏng hành động của người dùng? –

6

Tôi sử dụng đuôi chó (https://fedorahosted.org/dogtail/) để làm những việc như vậy, bằng cách sử dụng điều này tôi đã tạo một bài kiểm tra tự động từ bài tập cho ứng dụng linux (ubuntu) của tôi. Khuôn khổ đó nhấp vào các nút và loại vào các trường văn bản.

xem ví dụ gedit, https://fedorahosted.org/dogtail/browser/examples/gedit-test-utf8-procedural-api.py

Vì vậy, chỉ cần sử dụng dogtail ví dụ

dogtail.rawinput.click(100, 100) 
+0

tuyệt vời, mô đun rawinput dường như có mọi thứ tôi cần nhờ nhiều. Tôi đọc cho chức năng này để thực sự thử nghiệm các ứng dụng (phát hiện các menu, ...) chỉ làm việc cho gnome. Mô đun rawinput có hoạt động với GUI khác không? (dù sao nó là nguồn mở, tôi có thể có một cái nhìn) –

+0

bạn có biết tại sao nếu tôi làm một dogtail.rawinput.click (x, y) tôi phải làm một dogtail.rawinput.pressKey ('a') nếu không thì không có gì xảy ra? ?? –

+0

nó hoạt động trên ubuntu mà không cần bất kỳ pressKey –

1

Đối với Linux có Xlib nhưng nó hoạt động cho bàn phím không? (chỉ tìm thấy tham chiếu đến con chuột)

Vâng, nó cũng hoạt động với bàn phím.

+0

tuyệt vời và tôi nghĩ rằng Xlib là chung chung hơn gtk (cf xlib của trang trên wikipedia) nhưng giống như cho pygtk, tôi không thấy chức năng để làm điều đó ... –

+0

ok tìm thấy với Xlib: pymouse cho chuột và ở đây (http://www.tuxisalive.com/tux-droid-forum/tux-gadgets/245877021) dành cho bàn phím –

2

Điều này hoàn toàn hoạt động ... trên máy Mac ít nhất. Điều này là dành cho một cú nhấp VÀ kéo, vv .. nhưng có thể được trang bị thêm cho phù hợp.

#!/usr/bin/python 
import sys 
import time 
from Quartz.CoreGraphics import * # imports all of the top-level symbols in the module 

def mouseEvent(type, posx, posy): 
    theEvent = CGEventCreateMouseEvent(None, type, (posx,posy), kCGMouseButtonLeft) 
    CGEventPost(kCGHIDEventTap, theEvent) 
def mousemove(posx,posy): 
    mouseEvent(kCGEventMouseMoved, posx,posy); 
def mouseclickdn(posx,posy): 
    mouseEvent(kCGEventLeftMouseDown, posx,posy); 
def mouseclickup(posx,posy): 
    mouseEvent(kCGEventLeftMouseUp, posx,posy); 
def mousedrag(posx,posy): 
    mouseEvent(kCGEventLeftMouseDragged, posx,posy); 

ourEvent = CGEventCreate(None); 
currentpos=CGEventGetLocation(ourEvent); # Save current mouse position 
mouseclickdn(60, 100); 
mousedrag(60, 300); 
mouseclickup(60, 300); 
time.sleep(1); 
mousemove(int(currentpos.x),int(currentpos.y)); # Restore mouse position 
0

Giải pháp nền tảng chéo trên linux, windows và mac là tự động. https://github.com/msanders/autopy/

Nó cho phép điều khiển chuột và bàn phím, chụp ảnh màn hình và tìm bitmap nhỏ trên bitmap lớn hơn và rất thuận tiện.

1

Tôi có thể tư vấn cho bạn PyAutoGUI, nó cho phép điều khiển toàn bộ Chuột và Bàn phím và nhận Ảnh chụp màn hình và thậm chí bạn có thể định vị hình ảnh trong màn hình (như: nút ở đâu?), Rất hữu ích để tự động nhấp chuột. Nó hoạt động với Windows, macOS và Linux.

Ví dụ:

>>> import pyautogui 
>>> screenWidth, screenHeight = pyautogui.size() 
>>> pyautogui.moveTo(screenWidth/2, screenHeight/2) 

Kiểm tra các Introduction page.

Các vấn đề liên quan