Best Python code snippet using ATX
tkgui.py
Source:tkgui.py  
...59        self._attachfile_text = tk.StringVar()60        self._running = False # if background is running61        self._init_items()62        self._init_thread()63        self._init_refresh()64        self._lastx = 065        self._lasty = 066        self._bounds = None # crop area67        self._center = (0, 0) # center point68        self._offset = (0, 0) # offset to image center69        self._poffset = (0, 0)70        self._size = (90, 90)71        self._moved = False # click or click and move72        self._color = 'red' # draw color73        self._tkimage = None # keep reference74        self._image = None75        self._ratio = ratio76        self._uinodes = [] # ui dump77        self._selected_node = None78        self._hovered_node = None79        self._save_parent_dir = None80        self._init_vars()81    def _init_items(self):82        """83        .---------------.84        | Ctrl | Screen |85        |------|        |86        | Code |        |87        |      |        |88        """89        root = self._root90        root.resizable(0, 0)91        frm_control = tk.Frame(root, bg='#bbb')92        frm_control.grid(column=0, row=0, padx=5, sticky=tk.NW)93        frm_screen = tk.Frame(root, bg='#aaa')94        frm_screen.grid(column=1, row=0)95        frm_screenshot = tk.Frame(frm_control)96        frm_screenshot.grid(column=0, row=0, sticky=tk.W)97        tk.Label(frm_control, text='-'*30).grid(column=0, row=1, sticky=tk.EW)98        frm_code = tk.Frame(frm_control)99        frm_code.grid(column=0, row=2, sticky=tk.EW)100        self._btn_refresh = tk.Button(frm_screenshot, textvariable=self._refresh_text, command=self._refresh_screen)101        self._btn_refresh.grid(column=0, row=0, sticky=tk.W)102        # tk.Button(frm_screenshot, text="Wakeup", command=self._device.wakeup).grid(column=0, row=1, sticky=tk.W)103        tk.Button(frm_screenshot, text=u"ä¿åéä¸åºå", command=self._save_crop).grid(column=0, row=1, sticky=tk.W)104        105        # tk.Button(frm_screenshot, text="ä¿åæªå±", command=self._save_screenshot).grid(column=0, row=2, sticky=tk.W)106        frm_checkbtns = tk.Frame(frm_screenshot)107        frm_checkbtns.grid(column=0, row=3, sticky=(tk.W, tk.E))108        tk.Checkbutton(frm_checkbtns, text="Auto refresh", variable=self._auto_refresh_var, command=self._run_check_refresh).grid(column=0, row=0, sticky=tk.W)109        tk.Checkbutton(frm_checkbtns, text="UI detect", variable=self._uiauto_detect_var).grid(column=1, row=0, sticky=tk.W)110        frm_code_editor = tk.Frame(frm_code)111        frm_code_editor.grid(column=0, row=0, sticky=(tk.W, tk.E))112        tk.Label(frm_code_editor, text='Generated code').grid(column=0, row=0, sticky=tk.W)113        tk.Entry(frm_code_editor, textvariable=self._gencode_text, width=30).grid(column=0, row=1, sticky=tk.W)114        tk.Label(frm_code_editor, text='Save file name').grid(column=0, row=2, sticky=tk.W)115        tk.Entry(frm_code_editor, textvariable=self._genfile_name, width=30).grid(column=0, row=3, sticky=tk.W)116        tk.Label(frm_code_editor, text='Extention name').grid(column=0, row=4, sticky=tk.W)117        tk.Entry(frm_code_editor, textvariable=self._fileext_text, width=30).grid(column=0, row=5, sticky=tk.W)118        119        frm_code_btns = tk.Frame(frm_code)120        frm_code_btns.grid(column=0, row=2, sticky=(tk.W, tk.E))121        tk.Button(frm_code_btns, text='Run', command=self._run_code).grid(column=0, row=0, sticky=tk.W)122        self._btn_runedit = tk.Button(frm_code_btns, state=tk.DISABLED, text='Insert and Run', command=self._run_and_insert)123        self._btn_runedit.grid(column=1, row=0, sticky=tk.W)124        tk.Button(frm_code, text='Select File', command=self._run_selectfile).grid(column=0, row=4, sticky=tk.W)125        tk.Label(frm_code, textvariable=self._attachfile_text).grid(column=0, row=5, sticky=tk.W)126        tk.Button(frm_code, text='Reset', command=self._reset).grid(column=0, row=6, sticky=tk.W)127        self.canvas = tk.Canvas(frm_screen, bg="blue", bd=0, highlightthickness=0, relief='ridge')128        self.canvas.grid(column=0, row=0, padx=10, pady=10)129        self.canvas.bind("<Button-1>", self._stroke_start)130        self.canvas.bind("<B1-Motion>", self._stroke_move)131        self.canvas.bind("<B1-ButtonRelease>", self._stroke_done)132        self.canvas.bind("<Motion>", self._mouse_move)133    def _init_vars(self):134        self.draw_image(self._device.screenshot())135        if self._uiauto_detect_var.get():136            self._uinodes = self._device.dump_nodes()137    def _worker(self):138        que = self._queue139        while True:140            (func, args, kwargs) = que.get()141            try:142                func(*args, **kwargs)143            except Exception as e:144                print e145            finally:146                que.task_done()147    148    def _run_check_refresh(self):149        auto = self._auto_refresh_var.get()150        state = tk.DISABLED if auto else tk.NORMAL151        self._btn_refresh.config(state=state)152    def _run_async(self, func, args=(), kwargs={}):153        self._queue.put((func, args, kwargs))154    def _init_thread(self):155        th = threading.Thread(name='thread', target=self._worker)156        th.daemon = True157        th.start()158    def _init_refresh(self):159        if not self._running and self._auto_refresh_var.get():160            self._refresh_screen()161        self._root.after(200, self._init_refresh)162    def _fix_bounds(self, bounds):163        bounds = [x/self._ratio for x in bounds]164        (x0, y0, x1, y1) = bounds165        if x0 > x1:166            x0, y0, x1, y1 = x1, y1, x0, y0167        # in case of out of bounds168        w, h = self._size169        x0 = max(0, x0)170        y0 = max(0, y0)171        x1 = min(w, x1)172        y1 = min(h, y1)...Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
