代码之家  ›  专栏  ›  技术社区  ›  Muhammad Ikhwan Perwira

在屏幕上创建一个小型控制面板,用于pyautogui监视和控制

  •  0
  • Muhammad Ikhwan Perwira  · 技术社区  · 1 年前

    如何显示可以控制和监控的小型控制面板屏幕 pyautogui 过程我希望有一个固定的窗口,用于监视目的,例如显示由生成的当前log.txt logging 以及诸如暂停和恢复按钮之类的控制目的?实际上,这些是为了调试目的而集成的。

    以下是我的简单代码:

    main.py

    if __name__ == '__main__':
      # Get current timestamp
      current_time: str = datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S')
    
      # Initialize logging config
      logging.basicConfig(
        level=logging.DEBUG,
        format='%(asctime)s - %(levelname)s - %(message)s',
        filename=f'./log/bot_{current_time}.log'
        )
    
      logging.info('Start of program.')
      execute()
      logging.info('End of program.')
    

    executes.py

    '''
      Here list of order of actions to be executed that has been defined from actions.py file.
    '''
    
    from actions import open_firefox, open_new_tab
    
    def execute():
      """
        This is main program.
      """
      open_firefox()
      open_new_tab()
    

    actions.py :

    '''
     Here is list of actions defined that wrapped in functions to be used in executes.py file.
    '''
    
    from time import sleep
    import logging
    import pyautogui as pag
    
    def open_firefox():
      """
        Open Firefox browser.
      """
      logging.info('Open Firefox browser.')
      firefox_icon_location = pag.locateCenterOnScreen('./asset/firefox.png', confidence=0.75)
      pag.moveTo(firefox_icon_location, duration=1)
      sleep(1)
      pag.leftClick()
      sleep(1)
      logging.info('Firefox browser has been opened.')
    
    def open_new_tab():
      """
        Open new tab.
      """
      pag.hotkey('ctrl', 't')
      sleep(1)
    
    1 回复  |  直到 1 年前
        1
  •  1
  •   Musabbir Arrafi    1 年前

    您可以用一个简单的 tkinter 应用程序,并在那里添加两个按钮和一个文本小部件来查看记录器信息。下面是一个封装在一个脚本中的基本示例:

    import tkinter as tk
    from time import sleep
    import logging
    from tkinter.scrolledtext import ScrolledText
    import pyautogui as pag
    
    
    def open_firefox():
        """Open Firefox browser."""
        logging.info('Open Firefox browser.')
        try:
            firefox_icon_location = pag.locateCenterOnScreen('./asset/firefox.png', confidence=0.75)
            if firefox_icon_location is not None:
                pag.moveTo(firefox_icon_location, duration=1)
                sleep(1)
                pag.leftClick()
                sleep(1)
                logging.info('Firefox browser has been opened.')
            else:
                logging.error('Firefox icon not found on screen.')
        except Exception as e:
            logging.error(f"Error opening Firefox: {e}")
    
    def open_new_tab():
        """Open new tab."""
        try:
            pag.hotkey('ctrl', 't')
            sleep(1)
            logging.info('New tab opened.')
        except Exception as e:
            logging.error(f"Error opening new tab: {e}")
    
    
    class TextHandler(logging.Handler):
        """ Custom logging handler sending logs to a Tkinter Text widget. """
        def __init__(self, text_widget):
            super().__init__()
            self.text_widget = text_widget
    
        def emit(self, record):
            msg = self.format(record)
            self.text_widget.configure(state='normal')
            self.text_widget.insert(tk.END, msg + '\n')
            self.text_widget.configure(state='disabled')
            # Scroll to the bottom
            self.text_widget.yview(tk.END)
    
    if __name__ == '__main__':
        # Set up Tkinter window
        root = tk.Tk()
        root.title("Firefox Control")
        root.geometry("400x400")
    
        # Create ScrolledText widget for logs
        log_widget = ScrolledText(root, state='disabled')
        log_widget.pack(fill=tk.BOTH, expand=True)
    
        # Set up custom logging handler
        text_handler = TextHandler(log_widget)
        logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
        logger = logging.getLogger()
        logger.addHandler(text_handler)
        
        logging.info('Start of program.')
        
        # Buttons
        button_firefox = tk.Button(root, text="Open Firefox", command=open_firefox)
        button_firefox.pack(pady=10)
    
        button_new_tab = tk.Button(root, text="Open New Tab", command=open_new_tab)
        button_new_tab.pack(pady=10)
    
        # Start the Tkinter event loop
        root.mainloop()
    
    

    输出

    enter image description here

    退房 tkinter 文档以了解更多信息: https://docs.python.org/3/library/tkinter.html