マウスカーソルの位置を記憶したら、連打ボタンかダウンボタン(左を押し続ける)を押すだけ。 みるみるゲームが進むのは爽快です。指が痛くならずに済みます。
import os import time import sys try: import pygtk pygtk.require("2.0") except: pass try: import gtk import gtk.glade except: sys.exit(1) def xte_click(x,y,interval): # xautomation を左ボタンを連打 os.system("xte 'mousemove %d %d'"%(x,y)) x1, y1 = x,y while True: cmd = "xte 'mouseclick 1'" os.system(cmd) time.sleep(interval) a, x2, y2, b = gtk.gdk.display_get_default().get_pointer() if x1!=x2 and y1!=y2: break else: x1,y1 = x2,y2 def xte_down(x,y): # xautomation を左ボタンを押しつづける os.system("xte 'mousemove %d %d'"%(x,y)) x1, y1 = x,y cmd = "xte 'mousedown 1'" os.system(cmd) while True: a, x2, y2, b = gtk.gdk.display_get_default().get_pointer() if x1!=x2 and y1!=y2: cmd = "xte 'mouseup 1'" os.system(cmd) break else: x1,y1 = x2,y2 class pygtk_builder: def __init__(self): #print os.path.dirname(__file__) #while True: # pass self.builder = gtk.Builder() # mainwindow.gladeファイルから画面を作成 #self.builder.add_from_file("mainwindow.glade") buff = """""" self.builder.add_from_string(buff) #windows1というオブジェクトを取得 self.window = self.builder.get_object("window1") # gladeファイルで定義されているシグナルを自動で接続 self.builder.connect_signals(self) signal_dic = { "gtk_main_quit" : gtk.main_quit } self.builder.connect_signals(signal_dic) # オブジェクトの初期化 self.entry_x = self.builder.get_object("entry_x") self.entry_y = self.builder.get_object("entry_y") self.entry_interval = self.builder.get_object("entry_interval") self.entry_x.set_text("0") self.entry_y.set_text("0") self.entry_interval.set_text("0.2") self.window.set_focus(self.builder.get_object("button_save")) self.window.set_title("左クリック連打") #windows1が破棄される時、gtk_endを呼び出す self.window.connect("delete-event", self.gtk_end) self.window.show() def on_button_save_clicked(self,widget): # 現在のマウスカーソルの位置を記憶する a, x, y, b = gtk.gdk.display_get_default().get_pointer() self.entry_x.set_text(str(x)) self.entry_y.set_text(str(y)) # 位置を記録したら、フォーカスを移動 self.window.set_focus(self.builder.get_object("button_start")) def on_button_start_clicked(self,widget): # マウス左クリックを連打する。 x = int(self.entry_x.get_text()) y = int(self.entry_y.get_text()) interval = float(self.entry_interval.get_text()) xte_click(x,y,interval) def on_button_down_clicked(self,widget): # マウス左を押しつづける。 x = int(self.entry_x.get_text()) y = int(self.entry_y.get_text()) xte_down(x,y) def gtk_end(self, windows, event): #明示的に終了しないと、Python自体が終了しないっぽい sys.exit(0) def main(self): # GTK+のメインループを呼ぶ gtk.main() if __name__ == "__main__": app = pygtk_builder() app.main()