0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

tkinterとマウス操作で仕事をする件

Last updated at Posted at 2020-08-27

#経緯
 ・会社でtemasを使っている。PC操作が15分以上ないとステータスが退席中になってしまう。それは困る。
 ・たまには休憩したい時だってあるよね。
 ・とりあえず画面でマウス操作はできたけど、色々バグあるかも。
 ・プログラミング初心者なので色々うまくいかない。助けて偉い人。

 ちなみにスクリプトでマウスを動かしてもteamsのステータスは退席中になってました。無念・・・。

##実物
 開始ボタンを押したら、
  1.指定時間分だけマウスがランダムに移動します。
  2.メモ帳を開いて適当な文字列をキーボード入力します。(キーボード監視対策。メンテ中)
  3.最新ニュースを取得します。(通信量監視対策。メンテ中)
   画像.png

##コード

working.py
import tkinter as tk
import pyautogui as pgui
import random
import datetime
import time
import subprocess
import string
import requests

class Application(tk.Frame):
    def __init__(self, master):
        super().__init__(master)

        master.geometry("230x130")
        master.title("Working!")

        self.create_widgets()

    def create_widgets(self):
        self.grid(column=0, row=0, sticky=tk.NSEW, padx=5, pady=5)
        self.time_label = tk.Label(self, text="時間指定(分)").grid(column=0, row=0, pady=10)
        self.time_box = tk.Entry(self)
        self.time_box.insert(0, '60')
        self.time_box.grid(column=1, row=0, sticky=tk.EW, padx=3)
        self.work_label = tk.Label(self, text="今日の仕事").grid(column=0, row=1, pady=10)
        self.status = tk.Label(self, text="今から本気出す")
        self.status.grid(column=1, row=1, sticky=tk.EW, padx=3)
        self.start_btn = tk.Button(self, text="開始", command=self.we_love_work).grid(column=1, row=2)

    #ボタンアクション
    def we_love_work(self):
        #action_flg = random.randint(1, 3)
        action_flg = 1
        self.status.config(text="マウスいじいじ") #更新してくれない

        time_box_value = self.time_box.get()
        end_time = datetime.datetime.now() + datetime.timedelta(minutes=int(time_box_value))
        while True:
            if datetime.datetime.now() >= end_time:
               break

            if action_flg == 1:
                self.do_mouse()
            elif action_flg == 2:
                self.do_keyboard()
            elif action_flg == 3:
                self.do_news()

    def do_mouse(self):
        window_x = 1366
        window_y = 768
        for i in range(50):
            point_x = random.randrange(0, window_x)
            point_y = random.randrange(0, window_y)
            pgui.moveTo(point_x, point_y, duration=1)
            time.sleep(3)

    def do_keyboard(self):
        #キーボード操作はできるがメモにうまく書けない
        process = subprocess.Popen(r'C:\Windows\System32\notepad.exe')
        pgui.click(50, 50)
        for i in range(10):
            pgui.typewrite(self.random_string(100))
            pgui.typewrite('\r\n')
            time.sleep(3)
        process.kill()

    def do_news(self):
        keyword = "最新"
        url = 'https://news.google.com/search'
        params = {'hl': 'ja', 'gl': 'JP', 'ceid': 'JP:ja', 'q': keyword}
        res = requests.get(url, params=params)
        print(res.text)
        time.sleep(60 * 3) #適度に間隔あけた方がいいかも?

    def random_string(n):
        return ''.join(random.choices(string.ascii_letters + string.digits, k=n))

def main():
    win = tk.Tk()
    app = Application(master=win)
    app.mainloop()

if __name__ == "__main__":
    main()
0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?