Example #1
0
    def __init__(self, *args, **kwargs):
        self.__i_range   =   i_range  = kwargs.pop('i_range')
        self.__q_range   =   q_range  = kwargs.pop('q_range')
        Frame.__init__(self, *args, **kwargs)
        Observable.__init__(self)
                       
        self.__canvas   = canvas    = ComplexCanvas(self)

        canvas.grid(row=0, column=0, sticky='wens')
        canvas['bg']    = 'black'

        self.__q_slider  = q_slider   = Scale(self, from_=q_range, to=-q_range, orient='vertical')

        q_slider.grid(row=0, column=1, sticky='e')
        self.__i_slider  = i_slider   = Scale(self, from_=-i_range, to=i_range, orient='horizontal')        

        i_slider.grid(row=1, column=0, sticky='s')
        
        self.grid_rowconfigure(0, weight=1)
        self.grid_columnconfigure(0, weight=1)
        
        self.__pad  = 10        
        self.__width    = 0
        self.__height   = 0
        self.__center   = None
        self.__radius   = 0
        self.__bbox     = None
        
        self.__complex_magnitude  = 0 + 0j
        
        canvas.bind('<Configure>', self._on_resize)
        self.__borderBox    = canvas.create_rectangle(0, 0, 10, 10, outline='green')        
        self.__borderCircle = canvas.create_oval(0, 0, 10, 10, outline='green', dash=[1, 2])
        self.__middleCircle = canvas.create_oval(0, 0, 10, 10, outline='green', dash=[1, 2])
        self.__vLine        = canvas.create_line(0, 0, 10, 10, fill='green', dash=[1, 2])
        self.__hLine        = canvas.create_line(0, 0, 10, 10, fill='green', dash=[1, 2])
        self.__dLine        = canvas.create_line(0, 0, 10, 10, fill='green', dash=[1, 2])
        self.__cdLine       = canvas.create_line(0, 0, 10, 10, fill='green', dash=[1, 2])
        self.__scale_circles = []
        for k in range(60):
            if k % 5 == 0:
                color   = 'gold'
            else:
                color   = 'green'
            self.__scale_circles.append(canvas.create_oval(0, 0, 10, 10, fill=color))
            
        self.__indicator1   = self.Indicator(self, solid=False)
        self.__indicator2   = self.Indicator(self)
        
        canvas.bind('<Motion>', self._on_mouse_move)
        canvas.bind('<Button-1>', self._on_click)
        i_slider['command']  = self._on_iq_scale
        q_slider['command']  = self._on_iq_scale
Example #2
0
    def __init__(self, master, **kw):
        super().__init__(master)

        # self.grid_propagate(0)
        # self.columnconfigure(0, weight=1)
        # self.rowconfigure(0, weight=1)

        self.var = kw.get('variable', IntVar())
        kw['variable'] = self.var
        kw['from_'] = ConfidenceLevel.Low.value
        kw['to'] = ConfidenceLevel.VeryHigh.value
        # kw['command'] = self.scale_change
        kw['orient'] = HORIZONTAL

        self.lbl_scale = Label(self)
        self.scale = Scale(self, **kw)

        self.scale_font = tkfont.nametofont(Style().lookup('TLabel',
                                                           'font')).copy()
        self.scale_font.config(weight=tkfont.BOLD, size=9)
        self.lbl_scale.config(font=self.scale_font, width=3, anchor=CENTER)
        self.var.trace_variable('w', lambda a, b, c: self.scale_change())

        self.scale.grid(row=0, column=0, sticky='ns')
        self.lbl_scale.grid(row=0, column=1, sticky='ns', padx=(3, 0))
Example #3
0
    def make_slider(self, name, valmin, valmax, valinit, valfmt, label, forceint):
        from tkinter import IntVar, DoubleVar, StringVar
        from tkinter.ttk import Label, Scale, Frame
        if self.slider_frame is None:
            frame = self.slider_frame = Frame(self.widget_frame, )
        else:
            frame = self.slider_frame

        if forceint:
            v = IntVar(self.widget_frame)
        else:
            v = DoubleVar(self.widget_frame)

        s = self._scales[name] = Scale(frame, variable=v, from_=valmin, to=valmax, length=250)

        num_sv = StringVar(self.widget_frame)

        def label_callback(*args):
            num_sv.set(valfmt % v.get())

        v.trace_variable('w', label_callback)

        nl = self._labels[name + 'num'] = Label(frame, textvariable=num_sv, width=6, anchor='e')
        tl = self._labels[name + 'text'] = Label(frame, text=label if label is not None else name, anchor='w')
        v.set(valinit)
        nl.grid(column=0, row=self.slider_row, sticky='e')
        s.grid(column=1, row=self.slider_row)
        tl.grid(column=2, row=self.slider_row, sticky='w')
        self.slider_row += 1
        frame.pack()
        return TkWidgetWrapper(s, forceint)
Example #4
0
    def __init__(self, w, *args, **kwargs):

        super().__init__(w, *args, **kwargs)

        #___

        self.state_txt_time1 = StringVar()
        self.state_txt_time1.set(INIT_TIME)

        self.txt_time1 = Label(self,
            textvariable=self.state_txt_time1,
            background=config.colors["BG"],
            font=font.nametofont("font_small_size"))
        self.txt_time1.grid(row=0, column=0, sticky="sw")

        #___

        self.state_txt_song = StringVar()
        self.state_txt_song.set(INIT_SONG)

        self.txt_song = Label(self,
            textvariable=self.state_txt_song,
            background=config.colors["BG"])
        self.txt_song.grid(row=0, column=1, pady=(0,2))

        #___

        self.state_txt_time2 = StringVar()
        self.state_txt_time2.set(INIT_TIME)

        self.txt_time1 = Label(self,
            textvariable=self.state_txt_time2,
            background=config.colors["BG"],
            font=font.nametofont("font_small_size"))
        self.txt_time1.grid(row=0, column=2, sticky="se")

        #___

        self.state_scale_time = DoubleVar()

        self.scale_time = Scale(self,
            orient="horizontal",
            length=300,
            from_=0, to_=100,
            value=0, variable=self.state_scale_time)
        self.scale_time.grid(row=1, column=0, columnspan=3)

        #___

        #Set time when direct click on the timeline
        self.scale_time.bind("<Button-1>", self._setTimeDirect)

        #___

        self.song_playing = None
    def __init__(self, root):
        
        #Properties of the objects
        self.root = root
        self.root.title("Paint")
        self.root.geometry("800x520")
        self.root.configure(background="white")
        self.root.resizable(0, 0)
        
        # Important things
        self.pen_color = "black"
        self.eraser_color = "white"

        #Adding widgets to tkinter window

        self.color_frame = LabelFrame(self.root, text="color", font = ("arial", 15), bd=5, relief=RIDGE, bg="white")
        self.color_frame.place(x=0, y=0, width=70, height=185)

        colors = ["#000000","#FFFFFF"	, "#FF0000", "#00FF00", "#0000FF", "#FFFF00", "#00FFFF", "#FF00FF", "#C0C0C0", "#808080", "#800000", "#808000", "#008000", "#800080", "#008080", "#000080"]
        i=j=0
        for color in colors:
            Button(self.color_frame, bg=color, bd=2, relief=RIDGE, width=3, command=lambda col =color:self.select_color(col)).grid(row=i, column=j)
            i+=1
            if i==6:
                i=0
                j=1

        self.eraser_button = Button(self.root, text="ERASER", bg="white", bd=4, command=self.eraser, width=8, relief=RIDGE)
        self.eraser_button.place(x=0, y=187)

        self.clear_button = Button(self.root, text="CLEAR", bg="white", bd=4, command=lambda : self.canvas.delete("all"), width=8, relief=RIDGE)
        self.clear_button.place(x=0, y=217)

        self.save_button = Button(self.root, text="SAVE", bg="white", bd=4, command=self.save_paint, width=8, relief=RIDGE)
        self.save_button.place(x=0, y=247)

        self.canvas_color_button = Button(self.root, text="CANVAS", bg="white", bd=4, command=self.canvas, width=8, relief=RIDGE)
        self.canvas_color_button.place(x=0, y=277)

        #Creating a scale for pen and eraser size

        self.pen_size_scale_frame = LabelFrame(self.root, text="size", bd=5, bg="white", font=("arial", 15, 'bold'), relief=RIDGE)
        self.pen_size_scale_frame.place(x=0, y=310, height=200, width=70)

        self.pen_size = Scale(self.pen_size_scale_frame, orient=VERTICAL, from_=50, to_=0, length=170)
        self.pen_size.set(1)
        self.pen_size.grid(row=0, column=1, padx=15)

        #Creating Canvas

        self.canvas = Canvas(self.root, bg="white", bd=5, relief=GROOVE, height=500, width=700)
        self.canvas.place(x=80, y=0)

        #Bind the canvas with mouse drag
        self.canvas.bind("<B1-Motion>", self.paint)
Example #6
0
 def _criar_scale(self):
     '''
     Criar widget Scale.
     '''
     self._scale = Scale(self, from_=self.MINIMO, 
                                 to=self.MAXIMO, 
                             orient='horizontal')
     
     self._scale['command'] = lambda e: \
         self.set_atual(self._scale.get(), widget=self._scale)  
                                     
     self._scale.pack(side='left', fill='x', anchor='center', expand=True, )
    def __init__(self, master, **kw):
        self.__multiplyValue = kw.pop("multiplyValue", False)

        twoRows = kw.pop("twoRows", False)

        kw["columns"] = 1 if twoRows else 3
        kw["rows"] = 1

        valueIsNone = "value" not in kw

        SmartWidget._setVariable(kw, "IntVar")

        self.__frame = Frame(master) if twoRows else None

        super().__init__(master, **kw)

        if self.__frame:
            master = self.__frame

        # = Step = #
        self.__step = kw.get("step", 1)

        # = Caption = #
        self.__caption = Label(master, text=kw["text"])
        self.__valueLabel = Label(master, anchor=E)

        # = Scale = #
        self.getRawValue().trace_add("write", self.onChanged)

        storage = self._getValueStorage()

        for index, key in enumerate(("from_", "to")):
            if key in storage:
                kw["range"][index] = storage[key]

        self.getRawValue().set(
            StaticUtils.setIfAbsentAndGet(
                storage, "value",
                (kw["range"][0] if valueIsNone else self.getValue()) //
                self.__step))

        from_, to = tuple(v // self.__step for v in kw["range"])

        self.__scale = Scale(master,
                             from_=from_,
                             length=400,
                             to=to,
                             variable=self.getRawValue())

        if "state" in kw:
            self.__scale["state"] = kw["state"]

        self.__setValueWidth()
Example #8
0
    def __init__(self):
        self.root= Tk()
        self.root.title("My Paint")
        self.root.geometry("800x500")
        self.size=Canvas(self.root, width=800, height=500)
        self.root.configure(bg="white")

        self.pen_color="black"
        self.eraser_color="white"
        
        
        self.color_frame=LabelFrame(self.root, text="Color", font=('arial', 15, 'bold'), bd=5, relief=RIDGE, bg="#6FA5F5")
        self.color_frame.place(x=10, y=400, width=240, height=90)

        colors=['white', 'black', 'brown','red', 'orange','yellow','green', 'blue', '#3E1C91', '#F20A85']
        i=j=0
        for color in colors:                                                            #col is value of color
            Button(self.color_frame, bg=color, bd=2, relief=RIDGE, width=5, command=lambda col= color: self.select_color(col)).grid(row=i, column=j)
            j+=1
            if j==5:
                j=0
                i=1

        self.edit_color_button=Button(self.root, text="Edit Color",font=('arial', 11, 'bold'), bd=3, bg="#6FA5F5", command=self.edit_color, width=12,height=2, relief=RIDGE)
        self.edit_color_button.place(x=255, y=400)

        self.eraser_button=Button(self.root, text="Eraser",font=('arial', 11, 'bold'), bd=3, bg="#6FA5F5", command=self.eraser, width=12,height=2, relief=RIDGE)
        self.eraser_button.place(x=255, y=445)

        self.clear_button=Button(self.root, text="Clear",font=('arial', 11, 'bold'), bd=3, bg="#6FA5F5", command=lambda : self.canvas.delete("all"), width=12,height=2, relief=RIDGE)
        self.clear_button.place(x=355, y=400)

        self.save_button=Button(self.root, text="Save",font=('arial', 11, 'bold'), bd=3, bg="#6FA5F5", command=self.save_paint, width=12,height=2, relief=RIDGE)
        self.save_button.place(x=355, y=445)

        

        self.pen_size_scale_frame=LabelFrame(self.root, text="size", bd=5, bg="#6FA5F5", font=('areal',15,'bold'), relief=RIDGE)
        self.pen_size_scale_frame.place(x=480, y=400, height=70, width=250)

        self.pen_size=Scale(self.pen_size_scale_frame, orient=HORIZONTAL, from_=0, to=50, length=220)
        self.pen_size.set(1)
        self.pen_size.grid(row=0, column=1, padx=15)

        self.canvas=Canvas(self.root, bg='white', bd=5, relief=GROOVE, height=380, width=787)
        self.canvas.place(x=0, y=0)

        #self.setup()
        self.canvas.bind('<B1-Motion>', self.paint)
        

        self.root.mainloop()
Example #9
0
    def initUI(self):
        self.master.title("Scale")
        self.style = Style()
        self.style.theme_use("default")

        self.pack(fill=BOTH, expand=1)

        scale = Scale(self, from_=0, to=100, command=self.on_scale)
        scale.pack(side=LEFT, padx=15)

        self.var = IntVar()
        self.label = Label(self, text=0, textvariable=self.var)
        self.label.pack(side=LEFT)
Example #10
0
    def __init__(self, root):
        self.root = root
        self.root.title("paint")
        self.root.geometry("800x520")
        self.root.configure(background="white")
        self.root.resizable(0,0)

        self.pen_color = "black"
        self.eraser_color = "white"
        #adding widges to paint

        self.color_frame = LabelFrame(self.root,text='Color',font = ('Times New Roman',15),bd=5,relief=RIDGE,bg="white")
        self.color_frame.place(x=0,y=0,width=70,height=195)
        colors = ['red','black','pink','blue','grey','cyan','brown','yellow','purple','hotpink','green','olive','plum','indigo']
        i=j=0
        for color in colors:
            Button(self.color_frame,bg=color,bd=1,relief=RIDGE,width=3,command=lambda col =color:self.select_color(col)).grid(row=i,column=j)
            i+=1
            if i==7:
                i=0
                j+=1
        self.eraser_button = Button(self.root,text="ERASER",bd=4,bg="white",command=self.eraser,width=8,relief=RIDGE)
        self.eraser_button.place(x=0,y=192)

        self.clear_button = Button(self.root, text="CLEAR", bd=4, bg="white", command=lambda : self.canvas.delete("all"), width=8, relief=RIDGE)
        self.clear_button.place(x=0, y=222)

        self.save_button = Button(self.root, text="SAVE", bd=4, bg="white", command=None, width=8, relief=RIDGE)
        self.save_button.place(x=0, y=252)

        self.canvas_color_button = Button(self.root, text="FILL", bd=4, bg="white", command=self.canvas_color, width=8, relief=RIDGE)
        self.canvas_color_button.place(x=0, y=282)

        #creating a Scale for pen and Eraser Size

        self.pen_size_scale_frame = LabelFrame(self.root,text="size",bd=5,bg="white",font=('Times New Roman',15,'bold'),relief=RIDGE)
        self.pen_size_scale_frame.place(x=0,y=313,height=200,width=70)

        self.pen_size = Scale(self.pen_size_scale_frame,orient=VERTICAL,from_=50,to=0,length=170)
        self.pen_size.set(1)
        self.pen_size.grid(row=0,column=1,padx=15)

        #creating canvas

        self.canvas = Canvas(self.root,bg="white",bd=5,relief=GROOVE,height=500,width=700)
        self.canvas.place(x=80,y=0)

        #bind canvas with mouse drag
        self.canvas.bind("<B1-Motion>",self.paint)
Example #11
0
    def initUI(self):
        self.master.title("Scale")
        self.style = Style()
        self.style.theme_use("default")

        self.pack(fill=BOTH, expand=True)

        self.scale = Scale(self, from_=0, to=100, command=self.onScale)
        self.scale.grid(row=0, column=0, padx=10, pady=10, sticky=E + W)

        self.var = IntVar()
        self.label = Label(self, text=0, textvariable=self.var)
        self.label.grid(row=0, column=1, sticky=W, padx=10)

        self.grid_columnconfigure(0, weight=1)
    def __init__(self, *args, **kwargs):
        default_range = kwargs.pop("default_range", (60, 90))

        super().__init__(*args, **kwargs)

        color_list = ["green", "yellow"]
        label_list = []
        scale_list = []

        range_list = [*default_range]

        def on_scale0(value):
            value = int(float(value))
            if value > range_list[1]:
                scale_list[1].set(value)
                label_list[1]["text"] = f"{value: 3d}%"
            range_list[0] = value
            label_list[0]["text"] = f"{value: 3d}%"

        def on_scale1(value):
            value = int(float(value))
            if value < range_list[0]:
                scale_list[0].set(value)
                label_list[0]["text"] = f"{value: 3d}%"
            range_list[1] = value
            label_list[1]["text"] = f"{value: 3d}%"

        callback_list = [on_scale0, on_scale1]

        for index in range(2):
            frame = Frame(self)
            frame.pack(expand="yes", fill="x")
            label = Label(frame,
                          bg=color_list[index],
                          text=f"{default_range[index]: 3d}%",
                          width=5)
            label.pack(side="left")
            label_list.append(label)
            scale = Scale(frame,
                          from_=0,
                          to=100,
                          value=default_range[index],
                          orient="horizontal",
                          command=callback_list[index])
            scale.pack(side="left", fill="x", expand="yes")
            scale_list.append(scale)

        self.__scale_list = scale_list
Example #13
0
    def _create_bottomframe(self) -> None:
        self.bottomframe = Frame(self.rightframe)
        self.bottomframe.pack()

        self.mutePhoto = PhotoImage(file=self.assets_path + '/icons/mute.png')
        self.volumePhoto = PhotoImage(file=self.assets_path + '/icons/volume.png')
        self.volumeBtn = Button(self.bottomframe, image=self.volumePhoto, command=self.mute_music)
        self.volumeBtn.grid(row=0, column=1)

        self.rewindPhoto = PhotoImage(file=self.assets_path + '/icons/rewind.png')
        rewindBtn = Button(self.bottomframe, image=self.rewindPhoto, command=self.rewind_music)
        rewindBtn.grid(row=0, column=0)

        self.scale = Scale(self.bottomframe, from_=0, to=100, orient=HORIZONTAL, command=self.set_vol)
        self.scale.set(self.init_vol)
        mixer.music.set_volume(self.init_vol / 100)
        self.scale.grid(row=0, column=2, pady=15, padx=30)
    def __init__(self, parent):
        Frame.__init__(self, parent)
        self.parent = parent
        self.imageName = ""

        self.w = Scale(parent, from_=1, to=100, orient=HORIZONTAL)
        self.w.place(x=600, y=140)
        self.w.set(100)

        GPIO.setup(self.Motor1A, GPIO.OUT)
        GPIO.setup(self.Motor1B, GPIO.OUT)
        GPIO.setup(self.Motor1E, GPIO.OUT)

        GPIO.setup(self.Motor2A, GPIO.OUT)
        GPIO.setup(self.Motor2B, GPIO.OUT)
        GPIO.setup(self.Motor2E, GPIO.OUT)

        self.initUI()
Example #15
0
    def _create_master(self):
        output_device = self.player.get_output_device()

        master_frame = LabelFrame(self,
                                  text="Master",
                                  relief=tkinter.GROOVE,
                                  borderwidth=5)

        Label(master_frame, text="Volume").pack()

        vol_tracker = tkinter.DoubleVar()
        vol_tracker.set(self.player.volume)

        Scale(
            master_frame,
            variable=vol_tracker,
            from_=1.0,
            to=0.0,
            orient=tkinter.VERTICAL,
            command=self.player.set_volume,
        ).pack()

        Label(master_frame, text=f"Device: {output_device['name']}").pack()

        Label(master_frame, text=f"Channels: {self.player.channels}").pack()

        Label(master_frame,
              text=f"Sample Rate: {output_device['default_samplerate']}Hz"
              ).pack()

        Label(master_frame,
              text=f"Block Size: {self.player.stream.blocksize}").pack()

        Label(master_frame,
              text=f"Latency: {self.player.stream.latency * 1000}ms").pack()

        graph_frame = self._create_graph_frame(
            master_frame, lambda: self.player.master_sample)
        graph_frame.pack()

        self.plot_frames.append(graph_frame)

        return master_frame
Example #16
0
	def __init__(self,root):
		self.root = root
		self.root.title("Paint")
		self.root.geometry("800x520")
		self.root.configure(background = 'white')
		self.root.resizable(0,0)
		self.pen_color="black"
		self.eraser_color = "white"
		#adding widgets to tkinter window
		self.color_frame = LabelFrame(self.root,text="Color",font=('arial',15),bd=4,relief=RIDGE,bg="white")
		self.color_frame.place(x = 0,y = 0, width =98, height = 195)
		colors = ['#ff0000', '#00ff00', '#0000ff' , '#ffff00', '#00ffff', '#ff00ff','#ffffff', '#000000', '#99ffcc', '#ff99cc']
		i = j = 0
		for color in colors:
			Button(self.color_frame,bg = color,bd =2, relief=RIDGE,width=2,command = lambda col=color:self.select_color(col)).grid(row = i, column = j)
			i += 1
			if i==5:
				i = 0
				j+=1 
		self.eraser_button = Button(self.root, text = "Eraser",bd = 4,bg="white",command = self.eraser,width = 8,relief=RIDGE)
		self.eraser_button.place(x = 0,y = 207)
		self.clear_button = Button(self.root, text = "Clear",bd = 4,bg="white",command = lambda:self.canvas.delete("all"),width = 8,relief=RIDGE)
		self.clear_button.place(x = 0,y = 247)
		self.canvas_color = Button(self.root, text = "Canvas",bd = 4,bg="white",command = self.canvas,width = 8,relief=RIDGE)
		self.canvas_color.place(x = 0,y = 287)
		
		
		#creating a scale for pen and eraser size..
		
		self.pen_size_scale_frame = LabelFrame(self.root, text="Size", bd=5,bg='white',font=('arial', 15,'bold'),relief=RIDGE)
		self.pen_size = Scale(self.pen_size_scale_frame,orient=VERTICAL,from_=50,to=0,length=170)
		self.pen_size.set(1)
		self.pen_size.grid(row=0,column=1,padx=15)
		
		#creating canvas
		
		self.canvas = Canvas(self.root,bg='white',bd=5,relief=GROOVE, height=488,width=680)
		self.canvas.place(x=105,y=7)
		self.pen_size_scale_frame.place(x=0,y=325,height=190,width=98)
		
		#bind canvas with mouse drag
		self.canvas.bind("<B1-Motion>",self.paint)
Example #17
0
    def onClick(self):
        if self.columns.get() == 0:
            self.scale = Scale(self,
                               from_=1,
                               to=self.clades.get() - 1,
                               command=self.onScale,
                               orient=HORIZONTAL)
            self.scale.grid(sticky=W, row=3, column=2)

            self.labScale = Label(
                self, text="Number of clades in the first column: ")
            self.labScale.grid(sticky=W, row=2, column=2)

            self.ScaleVal = Label(self, textvariable=self.var)
            self.ScaleVal.grid(sticky=E, row=2, column=2)

        else:
            self.scale.grid_remove()
            self.labScale.grid_remove()
            self.ScaleVal.grid_remove()
Example #18
0
    def Sliders(self, txt, value, x, y, bind_func, **kw):
        kw = var_check(kw)

        self.Labels(txt, x, y, relwidth=0.2)
        self.widget_frame.value = DoubleVar()
        self.widget_frame.value.set(value)

        self.widget_frame.scale = Scale(self.widget_frame,
                                        variable=self.widget_frame.value,
                                        from_=0,
                                        to=value * 10,
                                        orient=kw["slider_orient"])

        self.widget_frame.scale.bind("<B1-Motion>", bind_func)
        self.widget_frame.scale.place(relx=x + 0.2,
                                      rely=y,
                                      anchor=kw['anchor'],
                                      relwidth=kw['relwidth'],
                                      relheight=kw['relheight'])

        return self.widget_frame.value
Example #19
0
    def initUI(self):
        self.master.title("Scale")
        self.style = Style()
        self.style.theme_use("default")

        self.frame = Frame(height=10, width=100, relief=SUNKEN)
        self.frame.pack(fill=X, expand=1)
        self.frame.grid_columnconfigure(0, weight=1)

        self.scale = Scale(self.frame, from_=0, to=100, command=self.onScale)
        self.scale.grid(row=0,
                        column=0,
                        columnspan=2,
                        padx=10,
                        pady=10,
                        sticky=E + W)
        #scale.pack(fill=X, padx=15, expand=1)
        #scale.pack(fill=X, padx=15)

        self.var = IntVar()
        self.label = Label(self.frame, text=0, textvariable=self.var)
        self.label.grid(row=0, column=2, sticky=W, padx=10)
Example #20
0
    def add_widgets(self):
        #self.controls.grid(row = 0, column = 0, sticky=NE)
        self.color_frame = Frame(self.root, bd=1, relief=RIDGE, bg="white")
        #self.color_frame.place(x = 0, y = 0, width = 185, height = 70)
        self.color_frame.grid(sticky=NW, row=0, column=0, padx=15, pady=10)
        self.color_frame.config(cursor="hand2")
        #self.color_frame.pack()

        self.palette_image = PhotoImage(file='paint.png')
        self.palette_button = Button(self.root,
                                     image=self.palette_image,
                                     command=self.select_palette_color)
        #self.canvas_button.place(x = 247, y = 0)
        self.palette_button.grid(sticky="W", row=0, column=1, padx=10, pady=10)
        self.palette_button.config(cursor="hand2")
        self.palette_tooltip = CreateToolTip(
            self.palette_button, 'Select a color from the color palette')

        colors = [
            'black', 'white', '#4d4d4d', 'grey', '#990033', '#993300', 'red',
            'pink', 'orange', '#ffcc99', 'yellow', '#ffff99', 'lime',
            '#d9ffb3', 'green', '#88cc00', '#0099ff', 'turquoise', '#3333ff',
            '#6699cc', 'purple', '#bfbff2'
        ]
        i = j = 0
        for color in colors:
            Button(self.color_frame,
                   bg=color,
                   bd=2,
                   relief=RIDGE,
                   height=1,
                   width=3,
                   command=lambda col=color: self.select_color(col)).grid(
                       row=i, column=j)
            i += 1
            if i == 2:
                i = 0
                j += 1

        self.pencil_image = PhotoImage(file='pencil.png')
        self.pencil_button = Button(self.root,
                                    image=self.pencil_image,
                                    command=self.pencil)
        #self.pencil.place(x = 0, y = 187)
        self.pencil_button.grid(sticky="W", row=1, column=0, padx=16)
        self.pencil_button.config(cursor="hand2")
        self.pencil_tooltip = CreateToolTip(self.pencil_button, 'Pencil')

        self.bg_image = PhotoImage(file='bg.png')
        self.bg_button = Button(self.root,
                                image=self.bg_image,
                                command=self.bg_color)
        self.bg_button.grid(sticky="W", row=2, column=0, padx=16)
        self.bg_button.config(cursor="hand2")
        self.bg_tooltip = CreateToolTip(self.bg_button,
                                        'Change background color')

        self.eraser_image = PhotoImage(file='eraser.png')
        self.eraser_button = Button(self.root,
                                    image=self.eraser_image,
                                    command=self.eraser)
        #self.eraser.place(x = 0, y = 187)
        self.eraser_button.grid(sticky="W", row=3, column=0, padx=16)
        self.eraser_button.config(cursor="hand2")
        self.eraser_tooltip = CreateToolTip(self.eraser_button, 'Eraser')

        self.clear_image = PhotoImage(file='clear.png')
        self.clear_button = Button(self.root,
                                   image=self.clear_image,
                                   command=self.clear)
        #self.clear.place(x = 0, y = 217)
        self.clear_button.grid(sticky="W", row=4, column=0, padx=16)
        self.clear_button.config(cursor="hand2")
        self.clear_tooltip = CreateToolTip(self.clear_button,
                                           'Clear the canvas area')

        self.line_image = PhotoImage(file='line.png')
        self.line_button = Button(self.root,
                                  image=self.line_image,
                                  command=self.line)
        #self.line.place(x = 0, y = 367)
        self.line_button.grid(sticky="W", row=5, column=0, padx=16)
        self.line_button.config(cursor="hand2")
        self.line_tooltip = CreateToolTip(self.line_button, 'Draw a line')

        self.arrow_image = PhotoImage(file='arrow.png')
        self.arrow_button = Button(self.root,
                                   image=self.arrow_image,
                                   command=self.arrow)
        #self.line.place(x = 0, y = 367)
        self.arrow_button.grid(sticky="W", row=6, column=0, padx=16)
        self.arrow_button.config(cursor="hand2")
        self.arrow_tooltip = CreateToolTip(self.arrow_button, 'Draw an arrow')

        self.rectangle_image = PhotoImage(file='rectangle.png')
        self.rectangle_button = Button(self.root,
                                       image=self.rectangle_image,
                                       command=self.rectangle)
        #self.rectangle.place(x = 0, y = 307)
        self.rectangle_button.grid(sticky="W", row=7, column=0, padx=16)
        self.rectangle_button.config(cursor="hand2")
        self.rectangle_tooltip = CreateToolTip(self.rectangle_button,
                                               'Draw a rectangle')

        self.oval_image = PhotoImage(file='oval.png')
        self.oval_button = Button(self.root,
                                  image=self.oval_image,
                                  command=self.oval)
        #self.oval.place(x = 0, y = 397)
        self.oval_button.grid(sticky="W", row=8, column=0, padx=16)
        self.oval_button.config(cursor="hand2")
        self.oval_tooltip = CreateToolTip(self.oval_button,
                                          'Draw an oval/a circle')

        self.undo_image = PhotoImage(file='undo.png')
        self.undo_button = Button(self.root,
                                  image=self.undo_image,
                                  command=self.undo)
        #self.oval.place(x = 0, y = 397)
        self.undo_button.grid(sticky="W", row=9, column=0, padx=16)
        self.undo_button.config(cursor="hand2")
        self.undo_tooltip = CreateToolTip(self.undo_button, 'Undo')

        # creating a scale for pen and eraser size
        self.slider = Frame(self.root, bd=3, bg="white", relief=RIDGE)
        #self.slider.place(x = 0, y = 400)
        self.slider.grid(sticky="W", row=10, column=0, padx=16, pady=20)
        self.pen_size = Scale(self.slider,
                              orient=VERTICAL,
                              from_=50,
                              to=0,
                              length=170)
        self.pen_size.set(1)
        self.pen_size.grid(sticky="W",
                           row=10,
                           column=0,
                           ipadx=2,
                           padx=7,
                           pady=7)
        self.slider.config(cursor="hand2")
        self.slider_tooltip = CreateToolTip(self.slider, 'Size')

        # creating canvas
        self.canvas = Canvas(self.root,
                             relief=GROOVE,
                             height=self.height_value,
                             width=self.width_value,
                             bg="white")
        self.canvas.place(x=70, y=75)
        # self.canvas.grid(row = 0, column = 1)

        # bind the canvas with mouse drag
        self.canvas.bind('<B1-Motion>', self.paint)
        self.canvas.bind('<ButtonRelease-1>', self.reset)

        self.msg = Message(self.root, text=self.choice, width=70, bg="white")
        self.msg.grid(sticky="W", row=11, column=0)

        menu = Menu(self.root)
        self.root.config(menu=menu)
        filemenu = Menu(menu)
        colormenu = Menu(menu)
        menu.add_cascade(label='File', menu=filemenu)
        filemenu.add_command(label='Save File', command=self.save_file)
        optionmenu = Menu(menu)
        menu.add_cascade(label='Options', menu=optionmenu)
        optionmenu.add_command(label='Exit', command=self.root.destroy)
    def __init__(self, root):
        self.root = root
        self.root.title("Paint")
        self.root.geometry("800x520")
        self.root.configure(background="white")
        self.root.resizable(0, 0)

        self.pen_color = "#000000"

        self.color_frame = LabelFrame(self.root,
                                      text="Color",
                                      font=('arial', 15, 'bold'),
                                      bd=5,
                                      relief=RIDGE,
                                      bg='white')
        self.color_frame.place(x=0, y=0, width=70, height=185)

        Colors = [
            '#ff0000',
            '#ff4dd2',
            '#ffff33',
            '#000000',
            '#0066ff',
            '#660033',
            '#4dff4d',
            '#b300b3',
            '#00ffff',
            '#808080',
            '#99ffcc',
            '#336600',
            '#ff9966',
            '#ff99ff',
            '#00cc99',
        ]
        i = j = 0
        for color in Colors:
            Button(self.color_frame,
                   bg=color,
                   command=lambda col=color: self.select_color(col),
                   width=3,
                   bd=2,
                   relief=RIDGE).grid(row=i, column=j)
            i += 1
            if i == 6:
                i = 0
                j = 1

        self.erase_button = Button(self.root,
                                   text="Eraser",
                                   bd=4,
                                   relief=RIDGE,
                                   width=8,
                                   command=self.eraser,
                                   bg="white")
        self.erase_button.place(x=0, y=187)

        self.clear_sreen_button = Button(
            self.root,
            text="Clear",
            bd=4,
            relief=RIDGE,
            width=8,
            command=lambda: self.canvas.delete("all"),
            bg="white")
        self.clear_sreen_button.place(x=0, y=217)

        self.save_button = Button(self.root,
                                  text="Save",
                                  bd=4,
                                  relief=RIDGE,
                                  width=8,
                                  command=self.save_paint,
                                  bg="white")
        self.save_button.place(x=0, y=247)

        self.canvas_color_button = Button(self.root,
                                          text="Canvas",
                                          bd=4,
                                          relief=RIDGE,
                                          width=8,
                                          command=self.canvas_color,
                                          bg="white")
        self.canvas_color_button.place(x=0, y=277)

        self.pen_size_scale_frame = LabelFrame(self.root,
                                               text="Size",
                                               bd=5,
                                               relief=RIDGE,
                                               bg="white",
                                               font=('arial', 15, 'bold'))
        self.pen_size_scale_frame.place(x=0, y=310, height=200, width=70)

        self.pen_size = Scale(self.pen_size_scale_frame,
                              orient='vertical',
                              from_=50,
                              to=0,
                              command=None,
                              length=170)
        self.pen_size.set(1)
        self.pen_size.grid(row=0, column=1, padx=15)

        self.canvas = Canvas(self.root,
                             bg='white',
                             bd=5,
                             relief='groove',
                             height=500,
                             width=700)
        self.canvas.place(x=80, y=0)

        # Blind mouse dragging event to canvas
        self.canvas.bind("<B1-Motion>", self.paint)
Example #22
0
    def __init__(self, root_frame_instance):
        super().__init__(volume_callback=self.update_volume,
                         mute_callback=self.update_mute,
                         state_callback=self.update_state)

        self.root_frame_instance = root_frame_instance

        # ______________ DISPLAY NAME ______________
        self.app_name = self.magic_root_session.app_exec

        print(f":: new session: {self.app_name}")
        # ______________ CREATE FRAME ______________
        # super(MagicSession, self).__init__(root_frame_instance)
        Frame.__init__(self, root_frame_instance)

        # _______________ NAME LABEL _______________
        self.name_label = Label(self,
                                text=self.app_name,
                                font=("Consolas", 12, "italic"))

        # _____________ VOLUME SLIDER _____________
        self.volume_slider_state = DoubleVar()

        self.volume_slider = Scale(self,
                                   variable=self.volume_slider_state,
                                   command=self._slide_volume,
                                   from_=0,
                                   to=100,
                                   takefocus=False,
                                   orient=HORIZONTAL)

        # set initial:
        self.volume_slider_state.set(self.volume * 100)

        # ______________ MUTE BUTTON ______________

        self.mute_button_state = StringVar()

        self.mute_button = Button(self,
                                  style="",
                                  textvariable=self.mute_button_state,
                                  command=self._toogle_mute,
                                  takefocus=False)

        # set initial:
        self.update_mute(self.mute)

        # _____________ SESSION STATUS _____________
        self.status_line = Frame(self, style="", width=6)

        # set initial:
        self.update_state(self.state)

        # ________________ SEPARATE ________________
        self.separate = Separator(self, orient=HORIZONTAL)

        # ____________ ARRANGE ELEMENTS ____________
        # set column[1] to take the most space
        # and make all others as small as possible:
        self.columnconfigure(1, weight=1)

        # grid
        self.name_label.grid(row=0, column=0, columnspan=2, sticky="EW")
        self.mute_button.grid(row=1, column=0)
        self.volume_slider.grid(row=1, column=1, sticky="EW", pady=10, padx=20)
        self.separate.grid(row=2, column=0, columnspan=3, sticky="EW", pady=10)
        self.status_line.grid(row=0, rowspan=2, column=2, sticky="NS")

        # _____________ DISPLAY FRAME _____________
        self.pack(pady=0, padx=15, fill='x')
Example #23
0
    def start(self):
        """Called when initialised to create test widgets."""

        self.img = ScalingImage(file=self.imgpath)

        self.my_label = Label(Toplevel(self), image=self.img)
        self.my_label.__image = self.img
        # The window snaps to the right size faster with these pack options
        self.my_label.pack(fill="both",
                           expand="true",
                           side="left",
                           anchor="nw")

        self.numer_var = IntVar()
        self.denom_var = IntVar()
        self.numer_display_var = IntVar()
        self.denom_display_var = IntVar()

        self.numer_var.set(10)
        self.denom_var.set(20)
        self.numer_display_var.set(10)
        self.denom_display_var.set(20)

        frac_frame = LabelFrame(self, text="Full Fraction")
        frac_frame.pack(side="left",
                        fill="both",
                        expand="true",
                        padx=5,
                        pady=5)

        frac_numer_scale = Scale(frac_frame,
                                 variable=self.numer_var,
                                 from_=1,
                                 to=100,
                                 orient="vertical",
                                 command=lambda i: self.on_frac_changed())
        frac_numer_scale.bind("<ButtonRelease>", lambda e: self.on_end_zoom())
        frac_numer_scale.pack(side="left")

        frac_denom_scale = Scale(frac_frame,
                                 variable=self.denom_var,
                                 from_=1,
                                 to=100,
                                 orient="vertical",
                                 command=lambda i: self.on_frac_changed())
        frac_denom_scale.bind("<ButtonRelease>", lambda e: self.on_end_zoom())
        frac_denom_scale.pack(side="left")

        Label(frac_frame, textvariable=self.numer_display_var).pack()
        Label(frac_frame, text="__\n").pack()
        Label(frac_frame, textvariable=self.denom_display_var).pack()

        numer_scale_frame = LabelFrame(self, text="Numeric Scale")
        numer_scale_frame.pack(side="left",
                               fill="both",
                               expand="true",
                               padx=5,
                               pady=5)

        self.numer_scale_var = IntVar()
        self.numer_scale_display_var = IntVar()
        self.numer_scale_var.set(20)
        self.numer_scale_display_var.set(20)

        zoom_scale = Scale(numer_scale_frame,
                           from_=1,
                           to=60,
                           variable=self.numer_scale_var,
                           orient="horizontal",
                           command=lambda i: self.on_numer_scale_changed())
        zoom_scale.bind("<ButtonRelease>", lambda e: self.on_end_zoom())
        zoom_scale.pack(fill="x")

        Label(numer_scale_frame,
              textvariable=self.numer_scale_display_var).pack()
        Label(numer_scale_frame, text="__\n\n20").pack()

        decimal_frame = LabelFrame(self, text="Decimal")
        decimal_frame.pack(side="left",
                           fill="both",
                           expand="true",
                           padx=5,
                           pady=5)

        self.decimal_scale_var = DoubleVar()
        self.decimal_display_var = DoubleVar()
        self.decimal_scale_var.set(1)
        self.decimal_display_var.set(1)

        decimal_scale = Scale(decimal_frame,
                              variable=self.decimal_scale_var,
                              from_=0.01,
                              to=3,
                              command=lambda i: self.on_decimal_changed())
        decimal_scale.bind("<ButtonRelease>", lambda e: self.on_end_zoom())
        decimal_scale.pack()

        Label(decimal_frame, textvariable=self.decimal_display_var).pack()

        Button(self, text="Reset", command=self.on_reset).pack(side="left")
Example #24
0
    def __init__(self, root):
        self.root = root
        self.root.title("Paint Application")
        self.root.geometry("900x750")
        self.root.configure(background='white')
        self.stack = []
        self.item = None

        self.old_x = None
        self.old_y = None

        self.old_x_arrow = None
        self.old_y_arrow = None

        self.width_val = self.root.winfo_screenwidth()
        self.height_val = self.root.winfo_screenheight()

        self.pen_color = 'black'
        self.eraser_color = 'white'
        self.save_color = self.pen_color
        self.choice = 'Pencil'

        # Adding widgets to tkinter window

        self.color_frame = LabelFrame(self.root,
                                      bd=4,
                                      relief=RIDGE,
                                      bg="white")
        self.color_frame.grid(row=0, column=0, pady=(5, 0))
        self.color_frame_tooltip = CreateToolTip(self.color_frame,
                                                 'Select Brush Color')
        self.color_frame.config(cursor="hand2")

        colors = [
            '#800000', '#FF0000', '#FFA500', '#FFFF00', '#808000', '#800080',
            '#FF00FF', '#808080', '#00FF00', '#008000', '#000080', '#0000FF',
            '#00FFFF', '#008080', '#000000', '#C0C0C0'
        ]
        i = j = 0
        for color in colors:
            Button(self.color_frame,
                   bg=color,
                   bd=2,
                   relief=RIDGE,
                   width=3,
                   command=lambda col=color: self.select_color(col)).grid(
                       row=i, column=j)
            i += 1
            if i == 8:
                i = 0
                j += 1

        self.clear_image = PhotoImage(file='signs.png')
        self.clear_button = Button(self.root,
                                   image=self.clear_image,
                                   command=self.clear,
                                   width=64)
        self.clear_button.grid(row=1, column=0, pady=(5, 0))
        self.clear_button.config(cursor="hand2")
        self.clear_button_tooltip = CreateToolTip(self.clear_button,
                                                  'Clear the Canvas')

        self.eraser_image = PhotoImage(file='eraser.png')
        self.eraser_button = Button(self.root,
                                    image=self.eraser_image,
                                    command=self.eraser,
                                    width=64)
        self.eraser_button.grid(row=2, column=0)
        self.eraser_button.config(cursor="hand2")
        self.eraser_button_tooltip = CreateToolTip(self.eraser_button,
                                                   'Eraser')

        self.line_image = PhotoImage(file='line.png')
        self.line_button = Button(self.root,
                                  image=self.line_image,
                                  command=self._createLine,
                                  width=64)
        self.line_button.grid(row=3, column=0)
        self.line_button.config(cursor="hand2")
        self.line_button_tooltip = CreateToolTip(self.line_button,
                                                 'Straight Line')

        self.line_arrow_image = PhotoImage(file='arrows.png')
        self.line_arrow_button = Button(self.root,
                                        image=self.line_arrow_image,
                                        command=self._createArrowLine,
                                        width=64)
        self.line_arrow_button.grid(row=4, column=0)
        self.line_arrow_button.config(cursor="hand2")
        self.line_arrow_button_tooltip = CreateToolTip(
            self.line_arrow_button, 'Straight Line with Arrow')

        self.rectangle_image = PhotoImage(file='rectangle.png')
        self.rectangle_button = Button(self.root,
                                       image=self.rectangle_image,
                                       command=self._createRectangle,
                                       width=64)
        self.rectangle_button.grid(row=5, column=0)
        self.rectangle_button.config(cursor="hand2")
        self.rectangle_button_tooltip = CreateToolTip(self.rectangle_button,
                                                      'Rectangle and Square')

        self.oval_image = PhotoImage(file='oval.png')
        self.oval_button = Button(self.root,
                                  image=self.oval_image,
                                  command=self._createOval,
                                  width=64)
        self.oval_button.grid(row=6, column=0)
        self.oval_button.config(cursor="hand2")
        self.oval_button_tooltip = CreateToolTip(self.oval_button,
                                                 'Oval and Circle')

        self.pencil_image = PhotoImage(file='pencil.png')
        self.pencil_button = Button(self.root,
                                    image=self.pencil_image,
                                    command=self._pencil,
                                    width=64)
        self.pencil_button.grid(row=7, column=0)
        self.pencil_button.config(cursor="hand2")
        self.pencil_button_tooltip = CreateToolTip(self.pencil_button,
                                                   'Pencil')

        self.undo_image = PhotoImage(file='undo.png')
        self.undo_button = Button(self.root,
                                  image=self.undo_image,
                                  command=self.undo,
                                  width=64)
        self.undo_button.grid(row=9, column=0)
        self.undo_button.config(cursor="hand2")
        self.undo_button_tooltip = CreateToolTip(self.undo_button, 'Undo')

        # self.redo_image = PhotoImage(file='redo.png')
        # self.redo_button = Button(self.root, image=self.redo_image, command=self.redo, width=64)
        # self.redo_button.grid(row=8, column=0)
        # self.redo_button.config(cursor="hand2")

        # Creating a Scale for pen and eraser size...

        self.pen_size_scale_frame = Frame(self.root,
                                          bd=5,
                                          bg='lightblue',
                                          relief=RIDGE)
        self.pen_size_scale_frame.grid(row=10, column=0, pady=5)

        self.pen_size = Scale(self.pen_size_scale_frame,
                              orient=VERTICAL,
                              from_=30,
                              to=2,
                              length=170)
        self.pen_size_tooltip = CreateToolTip(
            self.pen_size,
            'Adjust the size of pen and eraser using this slider.')
        self.pen_size.set(1)
        self.pen_size.grid(row=0, column=1, padx=15, pady=5)
        self.pen_size.config(cursor="hand2")

        # Creating Canvas

        self.canvas = Canvas(self.root,
                             bg='white',
                             relief=GROOVE,
                             height=self.height_val,
                             width=self.width_val,
                             cursor="crosshair")
        self.canvas.place(x=70, y=0)

        # Binding the canvas with the mouse drag
        self.canvas.bind("<B1-Motion>", self.paint)
        self.canvas.bind("<ButtonRelease-1>", self.reset)

        self.msg = tk.Message(self.root, text=self.choice)
        self.msg.grid(row=11, column=0, pady=(20, 0))

        menu = Menu(self.root)
        self.root.config(menu=menu)
        filemenu = Menu(menu)
        colormenu = Menu(menu)
        menu.add_cascade(label='Colors', menu=colormenu)
        colormenu.add_command(label='Brush Color', command=self.brush_color)
        colormenu.add_command(label='Background Color',
                              command=self.canvas_color)
        optionmenu = Menu(menu)
        menu.add_cascade(label='Options', menu=optionmenu)
        optionmenu.add_command(label='Clear Canvas', command=self.clear)
        optionmenu.add_command(label='Exit', command=self.root.destroy)
        menu.add_cascade(label='File', menu=filemenu)
        filemenu.add_command(label='Save', command=self.save_it)
        filemenu.add_command(label='Save and Exit',
                             command=self.save_it_destroy)
Example #25
0
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        timer = TkTimer(widget=self, interval=0.2*pq.second, active=False)
        
        self.__battery_images = battery_images = {}
        image_dir = Path(Scripting.root_node.get_gui_image_path('battery'))
        for image_name in ['10per', '25per', '50per', '75per', '100per',
                           '10per_charge', '25per_charge', 
                           '50per_charge', '75per_charge', '100per_charge']:
            battery_images[image_name] = ImageTk.PhotoImage(
                file=str(image_dir/(image_name+'.png')))
            
        balloon = Scripting.root_node.gui.balloon
                        
        self.__busy_lamp = busy_lamp = BusyLight(self)
        busy_lamp.pack(side='right', fill='y')
        
        balloon.bind_widget(busy_lamp, balloonmsg='''Main-thread status.
Green: main-thread is available;
Red:   main-thread is busy.''')
        
        battery_meter = Label(self)
        battery_meter.pack(side='right', fill='y')
        battery_meter_tip = balloon.bind_widget(battery_meter, balloonmsg='Battery: ')
        def battery_meter_tip_show_callback():
            battery_status = Scripting.root_node.interfaces.os.get_battery_status()
            if battery_status is None:
                return 'No battery detected.'
            else:
                return f'{battery_status.percent}%'
        battery_meter_tip.show_callback = battery_meter_tip_show_callback
        
        self.__membar = IntVar(0)
        self.__cpubar = IntVar(0)
        self._make_cpu_mem_status()

        # Transparent Scale {
        def on_scale(val):
            Scripting.root_node.gui.console.set_opacity(val)
        trans_scale = Scale(self, from_=0.2, to=1.0, orient='horizontal', value=1, command=on_scale)
        trans_scale.pack(side='right')
        balloon.bind_widget(trans_scale, balloonmsg='Set the opacity of the console.')
        # } End Transparent Scale

        # Topmost Button {
        import tkinter
        topmost_button = tkinter.Button(self, text='TOP', relief='groove') 
        topmost_button.pack(side='right')
        
        def on_click():
            console =Scripting.root_node.gui.console
            b = console.is_topmost
            fg = 'black' if b else 'lime green'
            topmost_button['fg'] = fg
            with code_printer(True):
                console.set_topmost(not b)
            
        topmost_button['command'] = on_click
        balloon.bind_widget(topmost_button, balloonmsg='Set the console as a topmost window.')
        # } End Topmost Button 
        
        # Doc Button {
        docbtn = tkinter.Button(self, text='DOC', relief='groove')
        docbtn.pack(side='right')
        
        def on_click():
            docwin = Scripting.root_node.gui.console.doc_window
            with code_printer(True):
                docwin.show_window()
                
        docbtn['command'] = on_click
        balloon.bind_widget(docbtn, balloonmsg='Show document window.')
        #} End Doc Window        
        
        # Debug Button {
        debbtn = tkinter.Button(self, text='DEB', relief='groove')
        debbtn.pack(side='right')
        
        def on_click():
            debwin = Scripting.root_node.gui.console.debug_window
            with code_printer(True):
                debwin.show_window()
                
        debbtn['command'] = on_click
        balloon.bind_widget(debbtn, balloonmsg='Show debug window.')
        #} End Debug Button
        
        #{ Window Combo
        window_combo = Combobox(self, value=[], takefocus=1, stat='readonly')
        def on_selected(event):
            text = event.widget.get()
            wid = int(text.split(':')[1].strip())
            Scripting.root_node.gui.windows[wid].tk_object.deiconify()
        window_combo.bind('<<ComboboxSelected>>', on_selected)
        window_combo.pack(side='right', fill='y') # deiconify a window
        
        @Scripting.root_node.gui.windows.add_observer
        def on_windows_change(node, command):
            values = window_combo['values']
            if values == '':
                values = []
            if isinstance(values, tuple):
                values = list(values)
            node_id = id(node)
            if command == 'new':
                type_name = node.__class__.__name__
                values.append(f'{type_name}: {node_id}')
            elif command == 'del':
                for index, value in enumerate(values):
                    wid = int(value.split(':')[1].strip())
                    if node_id == wid:
                        del values[index]
            window_combo['values'] = values
            if len(values) > 0:
                window_combo.current(len(values)-1)
            else:
                window_combo.set('')
        #} End Window Combo
                        
        self.__lock = thread.allocate_lock()
        self.__busy = False
             
        os_node = Scripting.root_node.interfaces.os
        get_memory_usage = os_node.get_memory_usage
        get_cpu_usage    = os_node.get_cpu_usage
        get_battery_status = os_node.get_battery_status
                                
        def check_cpu_mem_battery(event):
            with code_printer(print_=False):
                self.__membar.set(get_memory_usage())
                self.__cpubar.set(get_cpu_usage())
                battery_status = get_battery_status()
                if battery_status:
                    percent = battery_status.percent
                    if percent > 75:
                        percent = 100
                    elif percent > 50:
                        percent = 75
                    elif percent > 25:
                        percent = 50
                    elif percent > 10:
                        percent = 25
                    else:
                        percent = 10
                    
                    charge = '_charge' if battery_status.power_plugged else ''
                    image_name = f'{percent}per{charge}'
                    image = battery_images[image_name]
                    if battery_meter['image'] != image:
                        battery_meter['image'] = image
                
        timer.divider(divide_by=10).add_observer(check_cpu_mem_battery)                
        timer.active = True
Example #26
0
    def __init__(self, root):
        self.root = root
        self.root.title("Paint")
        self.root.geometry("800x520")
        self.root.config(background='purple')
        self.root.resizable(0, 0)

        self.pen_color = "black"

        #adding frame
        self.color_frame = LabelFrame(self.root,
                                      text="Color",
                                      font=('arial', 15),
                                      bd=5,
                                      relief=RIDGE,
                                      bg='white')
        self.color_frame.place(x=0, y=0, width=70, height=205)

        colors = [
            '#000000', '#FFFFFF', '#FF0000', '#00FF00', '#0000FF', '#FFFF00',
            '#00FFFF', '#FF00FF', '#F1510B', '#CD9C10', '#513D53', '#4A7570'
        ]
        i = j = 0

        for color in colors:
            Button(self.color_frame,
                   bg=color,
                   bd=2,
                   relief=RIDGE,
                   width=3,
                   command=None).grid(row=i, column=j)
            i += 1
            if i == 6:
                i = 0
                j += 1

        self.eraser_button = Button(self.root,
                                    text="ERASER",
                                    bd=4,
                                    bg='white',
                                    command=None,
                                    width=8,
                                    relief=RIDGE)
        self.eraser_button.place(x=0, y=205)

        self.eraser_button = Button(self.root,
                                    text="Clear",
                                    bd=4,
                                    bg='white',
                                    command=None,
                                    width=8,
                                    relief=RIDGE)
        self.eraser_button.place(x=0, y=235)

        self.eraser_button = Button(self.root,
                                    text="Save",
                                    bd=4,
                                    bg='white',
                                    command=None,
                                    width=8,
                                    relief=RIDGE)
        self.eraser_button.place(x=0, y=265)

        self.eraser_button = Button(self.root,
                                    text="Canvas",
                                    bd=4,
                                    bg='white',
                                    command=None,
                                    width=8,
                                    relief=RIDGE)
        self.eraser_button.place(x=0, y=295)

        self.pen_size_scale_frame = LabelFrame(self.root,
                                               text="Size",
                                               bd=5,
                                               bg='white',
                                               font=('arial', 15, 'bold'),
                                               relief=RIDGE)
        self.pen_size_scale_frame.place(x=0, y=325, width=70, height=195)

        self.pen_size = Scale(self.pen_size_scale_frame,
                              orient=VERTICAL,
                              from_=50,
                              to=0,
                              length=150)
        self.pen_size.set(1)
        self.pen_size.grid(row=0, column=1, padx=15)

        self.canvas = Canvas(self.root,
                             bg='white',
                             bd=5,
                             relief=GROOVE,
                             height=505,
                             width=715)
        self.canvas.place(x=70, y=0)

        self.canvas.bind("<B1-Motion>", self.paint)
Example #27
0
    def __init__(self, master):
        self.master = master
        self.master.title("Points indicator")

        # Mode de draw
        self.draw_mode = "point"

        # Image
        self.origin_image = None
        self.scale = 1.0
        self.img = None
        self.img_id = None

        # Menu
        self.menu_bar = Menu(self.master)
        self.create_menus()

        # main frame
        self.frame = Frame(self.master,
                           relief=SUNKEN,
                           bg="red",
                           width=self.master.winfo_width())
        self.frame.grid_rowconfigure(0, weight=1)
        self.frame.grid_columnconfigure(0, weight=1)
        self.frame.pack(fill=None, expand=False)

        # scroll bars
        self.xscrollbar = Scrollbar(self.frame, orient=HORIZONTAL)
        self.xscrollbar.grid(row=2, column=0, columnspan=2, sticky=EW)

        self.yscrollbar = Scrollbar(self.frame)
        self.yscrollbar.grid(row=1, column=1, sticky=NS)

        # canvas to put image
        self.canvas = Canvas(self.frame,
                             bg="black",
                             bd=0,
                             height=(self.master.winfo_height() - 250),
                             width=(self.master.winfo_width() - 100),
                             xscrollcommand=self.xscrollbar.set,
                             yscrollcommand=self.yscrollbar.set)
        self.canvas.grid(row=1, column=0, sticky=NSEW)
        self.canvas.config(state=DISABLED)
        self.xscrollbar.config(command=self.canvas.xview)
        self.yscrollbar.config(command=self.canvas.yview)

        # zoom utility buttons
        self.zoom_in_button = Button(self.frame,
                                     text="+",
                                     command=lambda: self.zoom(self.scale * 2),
                                     width=3)
        self.zoom_out_button = Button(
            self.frame,
            text="-",
            command=lambda: self.zoom(self.scale * 0.5),
            width=3)
        self.zoom_scale = Scale(self.frame,
                                from_=1,
                                to=3,
                                length=80,
                                command=self.on_scale,
                                orient=VERTICAL)

        self.zoom_in_button.place(relx=0.93, rely=0.03)
        self.zoom_scale.place(relx=0.93, rely=0.07)
        self.zoom_out_button.place(relx=0.93, rely=0.18)
        self.change_zoom_state(0)

        # Frame to put text
        self.textFrame = Frame(self.frame,
                               relief=SUNKEN,
                               bg=self.master.cget('bg'),
                               width=(self.master.winfo_width()),
                               height=(self.master.winfo_height() -
                                       int(self.canvas['height']) - 50))
        self.textFrame.grid_rowconfigure(0, weight=1)
        self.textFrame.grid_columnconfigure(0, weight=1)
        self.textFrame.grid(row=3, column=0, columnspan=2, sticky=NSEW)
        self.textFrame.grid_propagate(False)

        # text area widget
        self.textContent = Text(self.textFrame, font='Arial')
        self.textContent.grid(row=4, column=0, padx=25, pady=25, sticky=NSEW)
        self.set_text_color_tags()

        # popup entry value
        self.roomLabel = StringVar()

        self.open_file()
        # bind mouse-click event
        self.go_to_point_mode()  # point mode by default
        self.canvas.bind("<MouseWheel>", self.on_mouse_wheel)
Example #28
0
    def __init__(self, *args, **kwargs):
        pil_image = kwargs.pop('pil_image')
        balloon = None
        if 'balloon' in kwargs:
            balloon = kwargs.pop('balloon')
        photo = ImageTk.PhotoImage(pil_image)
        self.__photo = photo
        self.__origin_image = pil_image
        self.__zoomed_image = pil_image
        super().__init__(*args, **kwargs)
        
        self.__icons = icons = {}
        image_dir = Path(__file__).parent / 'images'

        for name in ('save', 'savezoom', 'copy'):
            icon_path = image_dir / (name+'.png')
            icon = ImageTk.PhotoImage(file=str(icon_path))
            icons[name] = icon

        frame = Frame(self)
        frame.pack(fill='x')
        
        save_dlg = lambda: asksaveasfilename(filetypes=[
                ('JPEG', '.jpg'), ('PNG', '.png')], 
            defaultextension='.jpg')        
                        
        def on_save(image):
            filename = save_dlg()
            if filename:
                image.save(filename)
        
        Label(frame, text=f'id={id(self)}').pack(side='left')
        save_btn = Button(frame, 
               image=icons['save'], 
               command=lambda:on_save(self.__origin_image))
        save_btn.pack(side='left')
        if balloon:
            balloon.bind_widget(save_btn, balloonmsg='Save image.')
        
        savezoom_btn = Button(frame, 
               image=icons['savezoom'], 
               command=lambda:on_save(self.__zoomed_image))
        savezoom_btn.pack(side='left')
        if balloon:
            balloon.bind_widget(savezoom_btn, balloonmsg='Save zoomed image.')
        
        if platform.system().lower() == 'windows':
            from wavesynlib.interfaces.os.windows.clipboard import clipb
            
            def on_copy():
                clipb.image_to_clipboard(self.__origin_image)
            copy_btn = Button(frame, image=icons['copy'], command=on_copy)
            copy_btn.pack(side='left')
            if balloon:
                balloon.bind_widget(copy_btn, balloonmsg='Copy image.')

        scale = Scale(frame, from_=0, to=100, orient='horizontal', value=100)
        scale.pack(side='left')
        zoomed_label = Label(frame, text='100%')
        zoomed_label.pack(side='left')
        
        self.__label = label = Label(self, image=photo)
        label.pack(expand='yes', fill='both')
        
        def on_scale(val):
            val = float(val)
            width, height = self.__origin_image.size
            width = int(width * val / 100)
            height = int(height * val / 100)
            if width<=0 or height<=0:
                return
            zoomed_image = self.__origin_image.resize((width, height), 
                                                      Image.ANTIALIAS)
            self.__zoomed_image = zoomed_image
            self.__photo = ImageTk.PhotoImage(zoomed_image)
            self.__label['image'] = self.__photo
            zoomed_label['text'] = f'{int(val)}%'
            
        scale['command'] = on_scale
Example #29
0
    def initUI(self):
        self.parent.title("PRIMEP")
        self.pack(fill=BOTH, expand=True)
        global value
        value = 0
        global var
        var = IntVar()
        global num
        num = StringVar()
        global res
        res = StringVar()

        frame1 = Frame(self, style='My.TFrame')
        frame1.pack(fill=X)

        lbl1 = Label(frame1,
                     text="Enter a number :",
                     width=16,
                     background='orange')
        lbl1.pack(side=LEFT, padx=5, pady=5)

        entry1 = Entry(frame1, textvariable=num, style='My.TEntry')
        entry1.pack(fill=X, padx=5, expand=True)

        frame2 = Frame(self, style='My.TFrame')
        frame2.pack(fill=X)

        lbl2 = Label(frame2,
                     text="Set certainty :",
                     width=16,
                     background='orange')
        lbl2.pack(side=LEFT, padx=5, pady=5)

        #entry2 = Entry(frame2,textvariable=cer,style='My.TEntry')
        #entry2.pack(fill=X, padx=5, expand=True)

        scale = Scale(frame2,
                      from_=1,
                      to=25,
                      orient=HORIZONTAL,
                      command=self.onScale)
        scale.pack(side=LEFT, padx=5)

        #var = IntVar()
        label = Label(frame2, text=1, textvariable=var)
        label.pack(side=LEFT, padx=5)

        frame3 = Frame(self, style='My.TFrame')
        frame3.pack(fill=X)

        result = Label(frame3, textvariable=res, width=28, background='orange')
        result.pack(side=LEFT, padx=60, pady=5)

        frame4 = Frame(self, style='My.TFrame')
        frame4.pack(fill=X)

        btntest = Button(frame4,
                         text="Test",
                         width=10,
                         command=self.test,
                         style='My.TButton')
        btntest.pack(side=LEFT, anchor=N, padx=5, pady=5)

        btnclear = Button(frame4,
                          text="Clear",
                          width=10,
                          command=self.clear,
                          style='My.TButton')
        btnclear.pack(side=LEFT, anchor=N, padx=5, pady=5)

        btnclose = Button(frame4,
                          text="Close",
                          width=10,
                          command=self.quit,
                          style='My.TButton')
        btnclose.pack(side=LEFT, anchor=N, padx=5, pady=5)
Example #30
0
    def __init__(self, root):
        self.root = root
        self.root.title("MyPaint")
        self.root.geometry("800x520")
        self.root.configure(background="white")
        self.root.resizable(0, 0)
        self.pen_color = "black"
        self.eraser_color = "white"
        self.color_frame = LabelFrame(self.root, text="Color", font=(
            "arial,15"), bd=5, relief=RIDGE, bg="white")
        self.color_frame.place(x=0, y=0, width=76, height=185)

        # self.canvas_shapes_frame = LabelFrame(self.root, text="Shapes", font=(
        #     "arial", 15), bd=5, relief=RIDGE, bg="white")
        # self.canvas_shapes_frame.place(x=0, y=105, width=76, height=80)

        colors = ["#000000", "#FFFFFF", "#FF0000", "#00FF00",
                  "#0000FF", "#FFFF00", "#00FFFF", "#FF00FF", "#FFFACD", "#F5DEB3", "#C0C0C0", "#DEB887"]
        i = j = 0
        for color in colors:
            Button(self.color_frame, bg=color, bd=2, relief=RIDGE,
                   width=1, height=2, command=lambda col=color: self.select_color(col)).grid(row=i, column=j)
            i += 1
            if i == 3 or i == 6:
                i = 0
                j += 1

        self.color_other_button = Button(
            self.color_frame, text="Others", bd=4, bg="white", command=self.color_other, width=8, relief=RIDGE)
        self.color_other_button.place(x=0, y=130, width=68)

        self.eraser_button = Button(
            self.root, text="Eraser", bd=4, bg="white", command=self.eraser, width=8, relief=RIDGE)
        self.eraser_button.place(x=0, y=187, width=76)

        self.clear_button = Button(
            self.root, text="Clear", bd=4, bg="white", command=lambda: self.canvas.delete("all"), width=8, relief=RIDGE)
        self.clear_button.place(x=0, y=217, width=76)

        self.save_button = Button(
            self.root, text="Save", bd=4, bg="white", command=self.save_image, width=8, relief=RIDGE)
        self.save_button.place(x=0, y=247, width=76)

        self.canvas_color_button = Button(
            self.root, text="Canvas", bd=4, bg="white", command=self.canvas_color, width=8, relief=RIDGE)
        self.canvas_color_button.place(x=0, y=277, width=76)

        # creating  a scale for pen and eraser
        self.pen_size_scale_frame = LabelFrame(
            self.root, text="Size", bd=5, bg="white", font=("arial", 15, "bold"), relief=RIDGE)
        self.pen_size_scale_frame.place(x=0, y=310, height=200, width=76)
        self.pen_size = Scale(self.pen_size_scale_frame,
                              orient=VERTICAL, from_=50, to=0, length=170)
        self.pen_size.set(1)
        self.pen_size.grid(row=0, column=1, padx=15)

        # creating the canvas

        self.canvas = Canvas(self.root, bg="white", bd=5,
                             relief=GROOVE, height=500, width=680)
        self.canvas.place(x=100, y=0)

        # binding the canvas
        self.canvas.bind("<B1-Motion>", self.paint)