マウスカーソルの位置を記憶したら、連打ボタンかダウンボタン(左を押し続ける)を押すだけ。 みるみるゲームが進むのは爽快です。指が痛くならずに済みます。
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()