combo = Combobox(window, values=serial_ports()) combo.place(x=15, y=35) combo.bind('<<ComboboxSelected>>', com_port_state) combo.set(reestr[0]) lbl01 = Label(window, text="Выберите скорость:").place(x=200, y=15) combo1 = Combobox(window, values=speeds) combo1.place(x=200, y=35) combo1.current(3) lbl_current = LabelFrame(window, text="Установите параметры тока") lbl_current.place(x=15, y=70, width=350, heigh=60) spinbox_current = Spinbox(lbl_current, values=current_values, width=5) spinbox_current.place(x=5, y=5) spinbox_current.delete(00, "end") spinbox_current.insert(0, 0) lbl_current_A = Label(lbl_current, text="Ток, А") lbl_current_A.place(x=90, y=5) spinbox_angle = Spinbox(lbl_current, from_=0, to=360, width=5) spinbox_angle.place(x=170, y=5) spinbox_angle.delete(0, "end") spinbox_angle.insert(0, 0) lbl_angle = Label(lbl_current, text="Угол") lbl_angle.place(x=260, y=5) lbl_phase = LabelFrame(window, text="Выберите задействованные фазы") lbl_phase.place(x=15, y=135, width=350, heigh=60) sel_phase = IntVar()
class Slider(Frame): MINIMO = 100 MAXIMO = 2400 def __init__(self, master, label, *args, **kwargs): ''' parametros ---------- master : tkinter.widget label : str ''' super(Slider, self).__init__(master, *args, **kwargs) self._criar_estilo_label() self._criar_scale() self._criar_spinbox() self._criar_label(label) self.set_atual(self.MINIMO) def _criar_estilo_label(self): estilo = Style() estilo.configure('Slider.TLabel', font=('Arial', 14, 'normal')) def _criar_label(self, label): ''' Criar label. ''' frame = Frame(self, width=150, height=50) label = Label(frame, text=label, anchor='center', style='Slider.TLabel') label.bind('<Double-Button-1>', lambda e: self._spinbox.focus()) label.pack(fill='both', expand=True, padx=5, pady=5) frame.pack(side='left') frame.pack_propagate(False) def _criar_spinbox(self): ''' Criar Widget spinbox. ''' self._spinbox = Spinbox(self, from_=self.MINIMO, to=self.MAXIMO, font=('Arial', 14, 'normal'), width=10) self._spinbox['command'] = lambda: \ self.set_atual(self._spinbox.get(), widget=self._spinbox) self._spinbox.bind('<Return>', lambda e: \ self.set_atual(self._spinbox.get())) self._spinbox.pack(side='left', anchor='center') 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 atual(self): ''' Obter o valor atual retornos -------- int ''' return self._scale.get() def set_atual(self, atual, **kwargs): ''' Define o valor atual. parametros ---------- atual : int ''' # caractere númerico é convertido em inteiro. if isinstance(atual, str) and atual.isdigit(): atual = int(atual) # caractere não númerico convertido em inteiro. if not isinstance(atual, int): atual = self._scale.get() # atual fora do range. if atual not in range(self.MINIMO, self.MAXIMO): atual = self._scale.get() widget = kwargs.get('widget') if widget: if isinstance(widget, Scale): self._spinbox.delete(0, 'end') self._spinbox.insert(0, str(atual)) elif isinstance(widget, Spinbox): self._scale.set(atual) else: self._spinbox.delete(0, 'end') self._spinbox.insert(0, str(atual)) self._scale.set(atual)
combo = Combobox(window, values = serial_ports()) combo.place(x=15, y=35) combo.bind('<<ComboboxSelected>>', com_port_state) #вызываем функцию отображения состояния порта combo.set(reestr[0]) # устанавливае при запуске программы значение COM-порта из реестра lbl01 = Label(window, text = "Выберите скорость:").place(x=200, y=15) combo1 = Combobox(window, values = speeds) combo1.place(x=200, y=35) combo1.current(3) lbl_current = LabelFrame(window, text = "Установите параметры тока") lbl_current.place(x=15, y=70, width = 350, heigh = 60) spinbox_current = Spinbox(lbl_current, values = current_values, width=5) #модуль для выбора количества посылок spinbox_current.place(x=5,y=5) spinbox_current.delete(00,"end") #удаление всех элементов из модуля, для установки значения по умолчанию spinbox_current.insert(0,0) #установка значения по умолчанию 1 lbl_current_A = Label(lbl_current, text="Ток, А") lbl_current_A.place(x=90, y=5) spinbox_angle = Spinbox(lbl_current, from_=0, to=360, width=5) #модуль для выбора количества посылок spinbox_angle.place(x=170,y=5) spinbox_angle.delete(0,"end") #удаление всех элементов из модуля, для установки значения по умолчанию spinbox_angle.insert(0,0) #установка значения по умолчанию 1 lbl_angle = Label(lbl_current, text="Угол") lbl_angle.place(x=260, y=5) lbl_phase = LabelFrame(window, text = "Выберите задействованные фазы") lbl_phase.place(x=15, y=135, width = 350, heigh = 60)