예제 #1
0
class TVApp:
    def __init__(self, config_path):
        self._logger = getLogger("raspberry")
        self._logger.setLevel(INFO)
        formatter = Formatter(
            '%(asctime)s [%(name)s] %(levelname)s : %(message)s')
        stream_handler = StreamHandler()
        stream_handler.setLevel(INFO)
        stream_handler.setFormatter(formatter)
        self._logger.addHandler(stream_handler)
        signal.signal(signal.SIGINT, self.exit_gracefully)
        signal.signal(signal.SIGTERM, self.exit_gracefully)

        self._logger.info("Initializing...")
        self.preference_checker = Preferences(config_path)
        self.video_player = VideoPlayer()
        self.tv_controller = TVController()

        self._logger.info("Ready")

    def run(self):
        self._logger.info(
            "Waiting 1 min if you want to stop me before I go full screen...")
        time.sleep(60)

        self._logger.info("Starting all components now...")
        self.tv_controller.start(self.preference_checker.time_on_off)
        self.video_player.start(self.preference_checker.video_list)
        self.preference_checker.start()

        while True:
            time.sleep(120)

    def exit_gracefully(self, signum, frame):
        self._logger.info("Key pressed, exiting")
        self.tv_controller.stop()
        self.video_player.stop()
        self.preference_checker.stop()

        self._logger.info("End")
예제 #2
0
파일: gui.py 프로젝트: zdxerr/testrun
class App(tk.Tk):
    def __init__(self, *args, **kwargs):
        super(App, self).__init__(*args, **kwargs)

        self.i = 0
        self.o = 0
        self.__flush_id = 0
        self.preferences = Preferences(on_load=self.configure)


        # always on top
        self.wm_attributes("-topmost", 1)
        # transparency
        self.attributes("-alpha", 0.85)

        self.title("Teststep")
        self.iconbitmap("icons\\accept.ico")

        status_frame = ttk.Frame(self)

        status_frame.pack(side=tk.BOTTOM, fill=tk.X)

        ttk.Sizegrip(status_frame).pack(side=tk.RIGHT)

        measureSystem = tk.StringVar()

        def changed():
            print('OHO!', measureSystem.get())


        check = ttk.Checkbutton(status_frame, text='Always on top', 
                                command=changed, variable=measureSystem, 
                                onvalue='metric', offvalue='imperial')
        check.pack(side=tk.RIGHT)

        progress_bar = ProgressBar(status_frame, values=[0.93, 0.75], height=5)
        progress_bar.pack(side=tk.BOTTOM, expand=True, fill=tk.BOTH)

        frame_buttons = tk.Frame(self, pady=3)

        button_passed = tk.Button(frame_buttons, text="Passed", height=1, 
                                  command=self.click)
        button_passed.pack(expand=True, fill=tk.X, side=tk.LEFT, padx=3)
        button_failed = tk.Button(frame_buttons, text="Failed", width=12, 
                                  height=1, command=self.click)
        button_failed.pack(expand=True, fill=tk.X, side=tk.LEFT, padx=3)
        button_blocked = tk.Button(frame_buttons, text="Blocked", width=12, 
                                   height=1, command=self.click)
        button_blocked.pack(expand=True, fill=tk.X, side=tk.LEFT, padx=3)

        frame_buttons.pack(side=tk.BOTTOM, expand=True, fill=tk.X)

        self.task_comment = tk.PanedWindow(self, orient=tk.VERTICAL, sashpad=3, 
                                           sashwidth=3, sashrelief=tk.RAISED)
        self.task_comment.pack(expand=True, fill=tk.BOTH, pady=3)

        self.task = ScrolledText(self.task_comment, 'Task', width=80, 
                                 font=("Calibri", 14), wrap=tk.NONE)
        self.task_comment.add(self.task.frame, stretch='always')

        add_text_example(self.task)
        
        comment = ScrolledText(self, 'Comment', width=80, height=5, 
                               font=("Calibri", 14), wrap=tk.NONE)
        self.task_comment.add(comment.frame, stretch='always')

        self.bind("<Configure>", self.on_configure)
        self.task.frame.bind("<Configure>", self.on_configure)


    def test(self):
        self.preferences.flush()
        print('call', self.i)
        self.i += 1

    def configure(self, preferences):
        logger.debug("New configuration %d", self.o)
        self.o += 1

    def on_configure(self, event):
        self.after_cancel(self.__flush_id)

        if event.widget is self:
            self.preferences['position'] = {'x': event.x, 'y': event.y}
            self.preferences['size'] = {'w': event.width, 'h': event.height}
        elif event.widget is self.task.frame:
            __, self.preferences['sash_position'] = self.task_comment.sash_coord(0)

        self.after_cancel(self.__flush_id)
        self.__flush_id = self.after_idle(self.test)

    def destroy(self):
        logger.debug('Destroy window')
        super(App, self).destroy()
        self.preferences.stop()

      
    def click(self):
        icons = [os.path.join('icons', f) 
                 for f in os.listdir('icons') 
                 if f.endswith('.ico')]
        print("you clicked")
        self.iconbitmap(random.choice(icons))