def countdown_timer(self): # Container Frame for the countdown timer setting self.countdown_timer_frame = ttk.Frame(self.game_settings) self.countdown_timer_frame.pack(side=TOP) # The label for the countdown timer setting self.countdown_timer_title = ttk.Label(self.countdown_timer_frame, text="Timer Duration:") self.countdown_timer_title.pack(side=LEFT) # Making an IntVar object that will hold the duration length self.countdown_duration = IntVar(self.countdown_timer_frame) # Making the options menus for the minutes and seconds self.countdown_options = ttk.OptionMenu(self.countdown_timer_frame, self.countdown_duration, 0, *range(6)) self.countdown_duration.set(self.COUNTDOWN) self.countdown_options.pack(side=LEFT)
def configuration_frame(self): """ Central diplay: algorithm selection, voice number selection. """ self.config_frame = tk.Frame(self.display_frame) self.algo_frame = AlgorithmGUI(self.config_frame, self) self.algo_frame.pack(padx=10, pady=20) self.change_algorithm_image() self.voicesframe = tk.Frame(self.config_frame) self.voicesframe.pack(padx=10, pady=20) self.voicesLabel = tk.Label(self.voicesframe, text="Voices : ") self.voicesLabel.grid(row=0, column=0) self.input_num_voices = tk.IntVar(value=self.output.max_voices) self.num_voices = ttk.OptionMenu(self.voicesframe, self.input_num_voices, *[i for i in range(15)], command=self.set_voices) self.num_voices.grid(row=0, column=1)
def european_widget(): # set european selectedEuropeanCountry.set(europeanCountry[0]) # create select region label euLabel = Label(fifthFrame, text='Comparison between Italy and', font=("Verdana", 15)) # create select region option menu euOption = ttk.OptionMenu(fifthFrame, selectedEuropeanCountry, *europeanCountry) # create check button euBtn = ttk.Button(fifthFrame, text="compare infection rates", command=compare_selected_country) # pack widgets to the left euLabel.pack(side=LEFT, padx=5) euOption.pack(side=LEFT, padx=5) euBtn.pack(side=LEFT, padx=5)
def create_parameters_frame(self, parent): parameters = ttk.Frame(master=parent, padding=STANDARD_MARGIN) parameters.grid(sticky='nsew') heading = ttk.Label(parameters, text='Analysis parameters') heading.grid(column=0, row=0, sticky='n') for i, param in enumerate(self.parameters, start=1): param_label = ttk.Label(parameters, text=param._name) param_label.grid(row=i, column=0, sticky='nsew') if type(param) == tk.BooleanVar: param_entry = ttk.Checkbutton(parameters, variable=param) elif hasattr(param, '_choices'): param_entry = ttk.OptionMenu(parameters, param, param.get(), *param._choices.keys()) else: param_entry = ttk.Entry(parameters, textvariable=param) param_entry.grid(row=i, column=1, sticky='nsew')
def create_new_option_menu(self): ''' This is very ugly, but the creation of another Toplevel caused problems for the OptionMenu in the other Toplevel.. ''' self.optionMenuSheets.destroy() self.optionMenuSheets = ttk.OptionMenu(self.cont_widgets, self.sheet_selected, self.sheets_available[1], *self.sheets_available, command=self.refresh_preview) self.optionMenuSheets.grid(padx=5, pady=5, row=2, column=1, columnspan=9, sticky=tk.EW)
def init_UI(self): self.main_frame = ttk.Frame(self) self.main_frame.pack(fill=tk.BOTH, expand=True) self.fieldset = ttk.LabelFrame(self.main_frame, text='Select Country') self.fieldset.pack(fill=tk.BOTH, expand=True, padx=10, pady=10) self.local_timezone = tk.StringVar() countries = list(pytz.all_timezones) country_drop_down = ttk.OptionMenu(self.fieldset, self.local_timezone, *countries) self.local_timezone.set(get_localzone()) country_drop_down.grid(row=0, column=1, sticky=tk.W, padx=5, pady=5) go_btn = ttk.Button(self.fieldset, text='Go', command=self.display_datetime) go_btn.grid(row=0, column=2, sticky=tk.W, padx=(0, 5), pady=5)
def __init__(self, root, playlist): self.root = root self.playlist_path = AVIDEOM_DIR + '/playlists/' + playlist var = tk.StringVar(root) root.title(playlist) root.geometry('260x120+10+10') root['bg'] = 'white' songlist = os.listdir(self.playlist_path) var.set(songlist[0]) var.trace('w', self.change_dropdown) w = ttk.OptionMenu(root, var, songlist[0], *songlist) w.place(x=10, y=30) tk.Label(root, text='Choose song to edit:', bg='white').place(x=10, y=10) add = tk.Button(root, text='Add song', bg='white', borderwidth=1, command=self.add_song).place(x=10, y=60) dlt = tk.Button(root, text='Delete song', bg='white', borderwidth=1, command=lambda: self.del_song(var.get())).place(x=10, y=90)
def populate(self): titration = self.titration self.fig = Figure() self.ax = self.fig.add_subplot() self.canvas = FigureCanvasTkAgg(self.fig, master=self) self.canvas.draw() self.canvas.get_tk_widget().grid(row=1, column=0, sticky="") self.toolbar = NavigationToolbar2Tk(self.canvas, self, pack_toolbar=False) self.toolbar.update() self.toolbar.grid(row=2, column=0, sticky="w", padx=10 * padding) self.optionsFrame = ttk.Frame(self) self.optionsFrame.grid(row=1, column=1, sticky="") self.speciesLabel = ttk.Label(self.optionsFrame, anchor="center", justify="center", text="Select species:") self.speciesLabel.pack(pady=padding, fill="x") self.speciesDropdown = ttk.OptionMenu( self.optionsFrame, self.speciesVar, titration.freeNames[0], command=lambda *args: self.plot(), *titration.freeNames, style="primary.Outline.TMenubutton", ) self.speciesDropdown.pack() self.logScaleButton = ttk.Checkbutton( self.optionsFrame, text="Logarithmic x axis", command=self.toggleLogScale, style="Outline.Toolbutton", ) self.logScaleButton.pack(pady=padding, fill="x") self.rowconfigure(0, weight=1) self.rowconfigure(1, weight=1) self.rowconfigure(2, weight=1) self.grid_anchor("center")
def __init__(self, parent, controller): tk.Frame.__init__(self, parent) self.controller = controller self.Title = tk.Label(self, text="Please fill in your details", font=controller.title_font) self.loginButton = ttk.Button( self, text="Login", command=lambda: controller.show_frame("Login")) self.registerButton = ttk.Button(self, text="Register", command=lambda: self.register()) self.lblUsername = ttk.Label(self, text="Username: "******"Password: "******"Confirm Username: "******"Confirm Password: "******"Email: ") self.txtUsername = ttk.Entry(self) self.txtConfirmUsername = ttk.Entry(self) self.txtPassword = ttk.Entry(self) self.txtConfirmPassword = ttk.Entry(self) self.txtEmail = ttk.Entry(self) self.lblAccessLevel = ttk.Label(self, text="Position: ") self.var = tk.StringVar() options = ["Player", "Coach/Captin", "Admin"] self.var.set(options[0]) self.cmbAccessLevel = ttk.OptionMenu(self, self.var, *options) self.txtUsername.grid(row=1, column=1) self.txtConfirmUsername.grid(row=2, column=1) self.txtPassword.grid(row=3, column=1) self.txtConfirmPassword.grid(row=4, column=1) self.txtEmail.grid(row=5, column=1) self.loginButton.grid(row=7, column=1) self.registerButton.grid(row=7, column=0) self.lblUsername.grid(row=1, column=0) self.lblConfirmUsername.grid(row=2, column=0) self.lblPassword.grid(row=3, column=0) self.lblConfirmPassword.grid(row=4, column=0) self.lblEmail.grid(row=5, column=0) self.Title.grid(row=0, column=0, columnspan=2) self.lblAccessLevel.grid(row=6, column=0) self.cmbAccessLevel.grid(row=6, column=1)
def config_menu(self): """ menu - user configurable settings for visualisation""" self.menu_frame.grid(row=0, column=0, sticky='n') menu_width = 18 self.tkk_btn(self.menu_frame, [('Visualise', self.validate_graph)], True) self.display_logo() current_algo = tk.StringVar() current_algo.set(self.algorithms[self.solve_mode]) algorithms_menu = tkk.OptionMenu(self.menu_frame, current_algo, self.algorithms[0], *self.algorithms, command=self.algorithm_change) algorithms_menu.config(width=menu_width) self.tkk_label(self.menu_frame, ['Node Size']) self.tkk_scaler(20, 60, self.change_node_size) self.tkk_label(self.menu_frame, ['Wall Frequency']) self.tkk_scaler(0.05, 0.5, self.change_wall_frequency) self.tkk_btn(self.menu_frame, [('Generate Random Maze', self.random_maze), ('Clear Graph', self.clear_graph), ('Clear Wall', self.clear_walls_and_weights), ('Clear Path', self.clear_path)], True) rb = tk.IntVar() rb.set(self.draw_mode) self.tkk_rbtn([('Place Start Node', rb), ('Place Finish Node', rb), ('Draw Wall Node', rb), ('Draw Weighted Node', rb)]) self.tkk_label(self.menu_frame, ['Node Weight']) callback = self.menu_frame.register(self.only_numeric_input) tkk.Entry(self.menu_frame, validate="key", validatecommand=(callback, "%P")).insert(0, str(self.weight)) self.tkk_label(self.menu_frame, ['Graph Legend']) state_keys = [(state.name, state.value) for state in State] self.tkk_btn(self.menu_frame, state_keys, False) for r, child in enumerate(self.menu_frame.winfo_children()): pad = 0 if isinstance(child, tk.Button) else 5 child.grid_configure(row=r, column=0, sticky='ew', padx=pad, pady=pad)
def __init__(self, parent, controller): tk.Frame.__init__(self, parent) label = tk.Label(self, text="Examples of Modulation") label.pack(pady=10, padx=10) lable = tk.Label( self, text= "Note, currently only planning to show analogue modulation techniques and carrier is set in code" ) returnButton = ttk.Button( self, text="Return home", command=lambda: controller.showFrame(StartPage)) returnButton.pack() signalButton = ttk.Button(self, text="Choose signal to modulate", command=lambda: self.pickFile()) signalButton.pack() MODULATION = ["AM", "AM", "DSB-SC", "SSB-SC", "FM"] modVar = tk.StringVar(self) modVar.set("AM") modSelect = ttk.OptionMenu(self, modVar, *MODULATION) modSelect.pack() modulateButton = ttk.Button( self, text="Modulate", command=lambda: self.modulate(modVar.get())) modulateButton.pack() fftButton = ttk.Button(self, text="Show Fourier Transform", command=lambda: self.showFT()) fftButton.pack() #currently creating graphs in frames but may look into doing it in functions to have more flexibility or smth self.fig = Figure(figsize=(5, 5), dpi=100) self.a = self.fig.add_subplot(211) self.a.title.set_text("Signal") self.fft = self.fig.add_subplot(212) self.fft.title.set_text("Frequencies") self.fig.tight_layout() self.canvas = FigureCanvasTkAgg(self.fig, self) self.canvas._tkcanvas.pack(side=tk.TOP, fill=tk.BOTH, expand=True) self.toolbar = NavigationToolbar2Tk(self.canvas, self) self.toolbar.update()
def InitGUI(self, root): # Menubar GUI self.menubar = tkinter.Menu(self.root) self.menubar.add_command(label="Exit", command=super(GestureGUI, self).quit) self.menubar.add_command(label="Help", command=super(GestureGUI, self).openhelp) root.config(menu=self.menubar) #Setup for list of all gestures in micro:bit self.gesturelist = microbit.accelerometer.gesturelist #Setup for drop down menu self.selectedgesture = tkinter.StringVar() self.selectedgesture.set(self.gesturelist[0]) self.gesturemenu = ttk.OptionMenu(root, self.selectedgesture, self.gesturelist[0], *self.gesturelist) self.gesturemenu.config(width=13) self.gesturemenu.grid(row=0, column=0, sticky="EW", padx=10, pady=(15, 15)) #Button to execute gesture self.gesturebutton = ttk.Button(root, text="Execute Gesture", command=self.ExecuteGesture) self.gesturebutton.grid(row=0, column=1, sticky="EW", padx=(0, 10), pady=(15, 15)) self.stopbutton = ttk.Button(root, text="Stop Gesture", command=self.StopGesture) self.stopbutton.grid(row=0, column=2, sticky="EW", padx=(0, 10), pady=15)
def __init__(self, master): super().__init__(master, text="Fit") self.master = master self.fix_z0 = tk.BooleanVar() self.fix_z0.set(config.fix_z0) fix_z0_btn = ttk.Checkbutton(self, text="Fix z0", variable=self.fix_z0, command=self._toggle_fix_z0) fix_z0_btn.grid(row=0, column=0, sticky="w") self.fix_theta = tk.BooleanVar() self.fix_theta.set(config.fix_theta) fix_theta_btn = ttk.Checkbutton(self, text="Fix θ", variable=self.fix_theta, command=self._toggle_fix_theta) fix_theta_btn.grid(row=0, column=1, sticky="w") self.enable_fit = tk.BooleanVar() self.enable_fit.set(config.fit) enable_fit_btn = ttk.Checkbutton( self, text="Enable Fitting", variable=self.enable_fit, command=self._toggle_fit, ) enable_fit_btn.grid(row=1, column=0, sticky="w") self.fit_against = tk.StringVar(self, name="fit_against", value=self._get_fit_against()) fit_against_options = ("Optical Density", "Raw Absorption") ttk.Label(self, text="Fit Against: ").grid(row=2, column=0) fa_menu = ttk.OptionMenu( self, self.fit_against, self.fit_against.get(), *fit_against_options, command=self._set_fit_against, ) fa_menu.configure(width=11) fa_menu.grid(row=2, column=1)
def draw_map_within_frame(self, master): self._frame_within_frame.destroy() map_frame = ttk.Frame(master, height=1000) map_frame.grid(row=0, column=2, padx=500, pady=5, sticky='n') label = tk.Label(map_frame, text='Track Truck', font=LARGE_FONT) label.grid(row=0, column=1) label2 = tk.Label( map_frame, text= 'Data Cut Count\n(Higher the Value, Faster it plots) ') label2.grid(row=1, column=0, sticky='w') entry2_var = tk.IntVar(map_frame) entry2_var.set(10) entry2 = ttk.Entry(map_frame, textvariable=entry2_var) entry2.grid(row=1, column=1, sticky='w', padx=0) self.track_data_cut = entry2_var label3 = tk.Label(map_frame, text='Parameter to Map with Route') label3.grid(row=2, column=0, pady=10, sticky='w') myOptList = [ 'None', 'None', 'roc_abs', 'altitude_filt', 'speed_filt', 'long_accel_vbox_filt_corrected', 'lat_accel_vbox_filt', 'roc' ] var = tk.StringVar(map_frame) om = ttk.OptionMenu(map_frame, var, *myOptList) var.set(myOptList[0]) om.grid(row=2, column=1, pady=10, sticky='w') button1 = ttk.Button( map_frame, text='Track Truck', command=lambda: draw_map(self.process_data, self.track_data_cut.get(), var.get())) button1.grid(row=3, column=1, sticky='w') button2 = ttk.Button(map_frame, text='Home', command=lambda: self.start_page(master)) button2.grid(row=4, column=1, sticky='w') self._frame_within_frame = map_frame
def __init__(self, master, intypes, options, type_str, *args, **kwargs): # call super constructor tk.Frame.__init__(self, master, *args, **kwargs) # create tkinter var for input/output source self.source = tk.StringVar() # create label and dropdown tk.Label(self, text='Select an {}:'.format(type_str)).pack(side='left', padx=(0, 20)) self.menu = ttk.OptionMenu( self, self.source, 'Select', *[intype['label'] for intype in intypes], command=(lambda choice: OpenFile( master, *[ intype for intype in intypes if intype['label'] == choice ], options).pack(side='top', fill='x', expand=True))) self.menu.pack(side='left')
def doneshapes_menu(self): for x, dropdown in enumerate(self.dropdowns): curr_label = ttk.Label(self, text=dropdown.label + ' - ' + dropdown.data_type) curr_text_variable = tk.StringVar( self, value=self.defaults[dropdown.label]) curr_entry = ttk.OptionMenu(self, curr_text_variable, self.defaults[dropdown.label], *dropdown.list, command=self.set_var) self.elements[dropdown.label] = self.Elem(curr_label, curr_entry, curr_text_variable) self.elements[dropdown.label].label.grid(row=x + 1, column=0) self.elements[dropdown.label].entry.grid(row=x + 1, column=1, sticky='ew')
def draw(self, csv_path=None): s = ttk.Style() s.configure('Kim.TButton', foreground='maroon') t = ttk.Style() t.configure('RB.TButton', foreground='royal blue') generate_btn = ttk.Button(self.top_frame, text="Generate CSV File") generate_btn.bind("<Button-1>", self.generate) Menu_button = ttk.Button(self.top_frame, text="Back to Monthly Assessment", style='Kim.TButton', command=self.back) tooltip_box = ttk.LabelFrame(self.top_frame, text="Tooltip") tooltip_txt = ttk.Label(tooltip_box, text=self.help_txt) tooltip_txt.grid(row=0, column=0) generate_btn.grid(row=0, sticky="nsew", padx=20, pady=10) Menu_button.grid(row=1, sticky="nsew", padx=20, pady=10) tooltip_box.grid(row=0, column=1, padx=20, pady=10) add_btn = ttk.Button(self.bottom_frame, style='RB.TButton', text="Add", command=self.add_row) add_btn.grid(row=0, sticky="nsew", padx=20, pady=10) remove_btn = ttk.Button(self.bottom_frame, style='Kim.TButton', text="Remove", command=self.remove_row) remove_btn.grid(row=0, column=1, sticky="nsew", padx=20, pady=10) if csv_path != None: self.path = csv_path self.process_csv(csv_path) labels = [col[0] for col in self.columns] self.id_var = tk.StringVar(self.middle_frame) self.study_id_col = ttk.OptionMenu(self.middle_frame, self.id_var, labels[0], *labels) self.ID_l = ttk.Label(self.middle_frame, text="ID Column:") self.ID_l.grid(row=0, sticky="nsew", pady=5) self.study_id_col.grid(row=1, columnspan=3, sticky="nsew", pady=5) self.add_row()
def search_credit(): if db_open: messagebox.showerror("Error", "Create a Database Function First") data_base_check() else: open_new_search_window() OptionList = [ "Choose A Type", "CR", "DR" ] variable = tk.StringVar(data_retrieve_frame) opt = ttk.OptionMenu(data_retrieve_frame, variable, *OptionList) opt.pack() button = tk.Button(data_retrieve_frame, text="Search", bg="#7f7fff", fg="white", command=(lambda: call_credit_from_db(variable.get(), data_retrieve_frame))) button.pack()
def show_text_box(r, c): global v, text, lis for i in range(3): if i == 0: v.append(tk.StringVar(root)) m = len(v) - 1 text[i].append(ttk.OptionMenu(frame, v[m], *choiceso)) text[i][m].config(width=20) lis = [] lis.append(str(r)) lis.append(str(c)) place.append(lis) text[i][m].grid(row=r, column=c, padx=10, pady=10, sticky="E") c += 1 else: text[i].append(tk.Text(frame, width=25, height=4, highlightthickness=0)) text[i][m].grid(row=r, column=c, padx=10, pady=10) c += 1
def crearBotones(self): self.var = StringVar(root) self.opciones = ['Estandar', 'Admin', 'Estandar'] self.opcion = ttk.OptionMenu(root, self.var, *self.opciones) self.opcion.place(x=140, y=164, width=80, height=22) self.label1 = Label(self, text="USUARIO:", bg="lightblue") self.txtUsuario = Entry(self, bg="white") self.label2 = Label(self, text="CONTRASEÑA:", bg="lightblue") self.txtContrasena = Entry(self, bg="white", show="*") self.label1.place(x=40, y=198, width=60, height=20) self.txtUsuario.place(x=130, y=195, width=100, height=25) self.label2.place(x=40, y=238, width=85, height=20) self.txtContrasena.place(x=130, y=235, width=100, height=25) self.btn1 = Button(self, text="INGRESAR", command=self.validacionDatos) self.btn1.place(x=100, y=275, width=90, height=50)
def newcol_add(self, tablen, colu, newindex): fontsizeB = 11 top = Toplevel() top.title("Añadir variables") fontsizeB = '11' lab1 = ttk.Label(top, text="Variable: ", font=('Arial', fontsizeB)) lab1.grid(row=0, column=0, columnspan=1) entryv = StringVar() entryv.set(colu) entry1 = ttk.Entry(top, width=24, textvariable=entryv) entry1.grid(row=0, column=1, columnspan=2) lab2 = ttk.Label(top, text="Tipo: ", font=('Arial', fontsizeB)) lab2.grid(row=1, column=0, columnspan=1) combo1 = StringVar() combo1.set('TEXT') l = ["TEXT", "INTEGER", "DATE", "REAL"] combo = ttk.OptionMenu(top, combo1, *l) combo.grid(row=1, column=1, columnspan=2) cbnull1 = IntVar() cbnull1.set(0) cbnull = ttk.Checkbutton(top, text="Puede estar vacío", variable=cbnull1) cbnull.grid(row=2, column=0, columnspan=2) cbstatic1 = IntVar() cbstatic1.set(1) cbstatic = ttk.Checkbutton( top, text="Valor inestable que puede cambiar cada recogida de datos", variable=cbstatic1) cbstatic.grid(row=3, column=0, columnspan=2) bt = ttk.Button(top, text="Añadir", command=lambda: (Db.add_variables(self, entryv.get(), combo1.get( ), cbstatic1.get(), cbnull1.get()), top.destroy())) bt.grid(row=4, column=0) btb = ttk.Button( top, text="Otras opciones", command=lambda: (MainWindow.newcol(self, tablen, colu, newindex), top.destroy())) btb.grid(row=4, column=1)
def _set_username_password(self, value): self.groups_list = [] for account in self.accounts: if value == account[3]: self.username.set(account[3]) self.password.set(account[4]) self.distribution_list = db.Database( ).get_distribution_lists_by_username(value) for group in self.distribution_list: self.groups_list.append(group[1]) if len(self.groups_list) > 0: self.distribution_menu = ttk.OptionMenu( self, self.distribution_menu_var, self.groups_list[0], *self.groups_list) self.distribution_menu.grid(column=1, row=12) self.distribution_title.grid_forget() else: self.distribution_title.grid(column=1, row=12) self.distribution_menu.grid_forget()
def StorePerItem(self): self.canvas.get_tk_widget().destroy() self.SPIlabel = Label(self, text="Select Store to View") MIFlist = ReadMonthlyItems(MonthlyItemsFile) storeList = [MIFlist[2][0]] for x in range(2, len(MIFlist)): storeList.append(MIFlist[x][0]) print(storeList) ShowingStore = StringVar() ShowingStore.set(storeList[0]) self.StoreMenu = ttk.OptionMenu(self, ShowingStore, *storeList) self.SPIlabel.grid(column=7, row=6, rowspan=2) self.StoreMenu.grid(column=7, row=8, rowspan=2) self.SPIbutton = ttk.Button( self, text="ENTER", command=lambda: self.GetStoreAndProceed(ShowingStore)) self.SPIbutton.grid(column=7, row=10, rowspan=2)
def __init__(self, app, row): super().__init__(app.current_state) self.app = app self.speed_settings = [ '0.25', '0.50', '1.00', '1.50', '2.00', '3.00', '4.00' ] self.speed = 1.0 self.frame = tk.LabelFrame(self.app.window, padx=10, pady=10) self.frame.grid(row=row, column=4, columnspan=2, rowspan=4, padx=10) self.rec_txt = tk.StringVar(self.frame) self.record_label = ttk.Label(self.frame, textvariable=self.rec_txt, font='TkFixedFont') self.record_label.grid(row=row, column=0, sticky=tk.E) self.speed_var = tk.StringVar(self.frame) self.speed_var.set("1.00") self.speed_menu = ttk.OptionMenu(self.frame, self.speed_var, '1.00', *self.speed_settings, command=self.set_speed) self.speed_menu.grid(row=row, column=1) self.btn_bwd = tk.Button(self.frame, text="<", command=lambda: self.app.step(False)) self.btn_bwd.grid(row=row + 1, column=0, sticky=tk.NSEW) self.btn_fwd = tk.Button(self.frame, text=">", command=lambda: self.app.step(True)) self.btn_fwd.grid(row=row + 1, column=1, sticky=tk.NSEW) self.btn_rwd = tk.Button(self.frame, text="<<", command=lambda: self.app.thread_run(False)) self.btn_rwd.grid(row=row + 2, column=0, sticky=tk.NSEW) self.btn_play = tk.Button(self.frame, text=">>", command=lambda: self.app.thread_run(True)) self.btn_play.grid(row=row + 2, column=1, sticky=tk.NSEW) self.btn_stop = tk.Button(self.frame, text="Stop", state=tk.DISABLED, command=self.app.thread_stop) self.btn_stop.grid(row=row + 3, column=0, columnspan=2, sticky=tk.NSEW)
def main(): global root root = tk.Tk() root.title("Serial USB IMU/Pressure Sensor Data Collector") mainframe = ttk.Frame(root) mainframe.grid(column=0, row=0, sticky=(tk.N, tk.W, tk.E, tk.S)) mainframe.pack() serial_label = ttk.Label(mainframe, text="Sensor Serial Port:") serial_label.grid(row=0, column=0) serial_var = tk.StringVar(root) raw_ports = list(serial.tools.list_ports.comports()) # ports = [] # for p in raw_ports: # if "USB Serial" in p.description: # ports.append(p.device)' # raw_ports = serial.tools.list_ports.comports(include_links=False) ports = [] for port in raw_ports: # if "USB Serial" in port.description: ports.append(port.device) serial_menu = ttk.OptionMenu(mainframe, serial_var, *ports) serial_menu.grid(row=0, column=1) counter = tk.IntVar() counter.set(1) # duration_label = ttk.Label(mainframe, textvariable=counter) duration_label = ttk.Label(mainframe, textvariable="") duration_label.grid(row=1, column=1) # duration_increment = ttk.Button(mainframe, # text="Increase Collection Interval (sec)", # command=lambda: onIncrement(counter)) # duration_increment.grid(row=1, column=0) collect_button = ttk.Button( mainframe, text="Begin Data Collection", command=lambda: collect(serial_var.get(), counter.get())) collect_button.grid(row=2, column=0, sticky=(tk.E, tk.W)) end_button = ttk.Button(mainframe, text="End Data Collection", command=lambda: end()) end_button.grid(row=2, column=1, sticky=(tk.E, tk.W)) root.mainloop()
def make_UI(self): style = ttk.Style() # global style changes style.configure(".", background='black', foreground='white', anchor="center") # Button style changes style.map("TButton", background=[('hover', 'blue')]) # Optionmenu. The actual menu cannot be themed :( style.map("TMenubutton", background=[('hover', 'blue')]) heading = ttk.Label(self, text="IMAGES", font=("Courier", 44)) heading.grid(column=1, row=0, rowspan=2, columnspan=2, sticky='WENS') intro = ttk.Label(self, font=("Courier", 12)) intro[ 'text'] = "Welcome to the image generator, select your image type below." intro.grid(column=1, row=2, rowspan=2, columnspan=2, sticky='WENS') # options self.var = tk.StringVar(self) self.var.set("Select Type") option = ttk.OptionMenu(self, self.var, "Select Type", *CHOICES) option.grid(column=1, row=4, sticky='N') # button button = ttk.Button(self, text="Get Images", command=self.create_img_list) button.grid(column=2, row=4, sticky='N') back = ttk.Button(self, text="<--", command=self.decrese_num) back.grid(column=1, row=5) forward = ttk.Button(self, text="-->", command=self.increse_num) forward.grid(column=2, row=5) # set inital holding image init_image = "initial.jpg" image = Image.open(init_image) self.photo = ImageTk.PhotoImage(image) self.img_label = ttk.Label(self, image=self.photo) self.img_label.grid(column=1, row=6, columnspan=2, padx=5, pady=5)
def UI(self): # Waveform choice self.waveforms = { "sine": SineWave, "square": SquareWave, # "triangle": None, # "sawtooth": None, # "noise": None } self.input_waveformtype = tk.StringVar() self.waveform = ttk.OptionMenu(self, self.input_waveformtype, '<modulator waveform>', *self.waveforms.keys(), command=self.set_modulator) self.waveform.pack(padx=10, pady=10) # Control frame self.control_frame = tk.Frame(self) self.control_frame.pack(padx=10, pady=5) # Frequency slider self.freq_label = tk.Label(self.control_frame, text='frequency') self.freq_label.grid(row=0, column=0) self.frequency = tk.Scale(self.control_frame, from_=0, to=10, orient=tk.HORIZONTAL, resolution=.1, command=self.set_frequency) self.frequency.set(5) self.frequency.grid(row=0, column=1) # Sensitivity slider self.sens_label = tk.Label(self.control_frame, text='sensitivity') self.sens_label.grid(row=1, column=0) self.sensitivity = tk.Scale(self.control_frame, from_=0, to=1, orient=tk.HORIZONTAL, resolution=.02, command=self.set_sensitivity) self.sensitivity.set(0.5) self.sensitivity.grid(row=1, column=1)
def on_reset_profile(): # Pop up confirm massage when reset was clicked def on_reset_button_clicked(): name_to_reset = profile_name.get() reset_profile_popup.destroy() confirmation_text = "Are you sure you want to reset this player profile?\n\n" + name_to_reset + "\n\nAll stats will be reset and can not be restored." confirm_message = messagebox.showwarning("Reset player " + name_to_reset, confirmation_text, type="okcancel", default="cancel") if confirm_message: reset_profile(name_to_reset) # Create list of all existing profiles profiles = [] for profile in data["player_profiles"].keys(): if profile != "Player 1" and profile != "Player 2": profiles.append(profile) # Popup window reset_profile_popup = Toplevel() reset_profile_popup.title("Reset Profile") # Widgets for loading profile reset_profile_label = ttk.Label(reset_profile_popup, text="Reset profile: ") reset_profile_label.grid(row=0, column=0, sticky="W", padx=5, pady=5) # Set default value to "None" profile_name = StringVar(reset_profile_popup) profile_name.set("None") profiles_option_menu = ttk.OptionMenu(reset_profile_popup, profile_name, *profiles) profiles_option_menu.grid(row=0, column=1, padx=5, pady=5) reset_button = ttk.Button(reset_profile_popup, text="Reset", command=on_reset_button_clicked) reset_button.grid(row=1, column=0, padx=5, pady=5, columnspan=2)
def _make_widgets(self): fields = REVENUE_FIELDS if self.type == REVENUE else COSTS_FIELDS self._entries = {} categories = name_dict( self.pre.data_connector.get_categories(self.type)) default_category = self.default['Category'] i = 0 for el in fields: if el == 'id': continue ttk.Label(self._main_frame, text=el).grid(row=i, column=1, padx=5, pady=5) if el == 'Category': _values = tuple(categories.keys()) self._chosen_category = StringVar(self._main_frame) tmp = ttk.OptionMenu(self._main_frame, self._chosen_category, default_category, *_values) tmp.grid(row=i, column=2, padx=5, pady=5) ttk.Button(self._main_frame, text='New Category', command=self._new_category).grid(row=i, column=3, padx=5, pady=5) else: tmp = ttk.Entry(self._main_frame) tmp.insert(0, self.default[el]) tmp.grid(row=i, column=2, columnspan=2, padx=5, pady=5) self._entries[el] = tmp i += 1 ttk.Button(self._main_frame, text='Change', command=self._change).grid(row=i, column=1, padx=5, pady=5) ttk.Button(self._main_frame, text='Delete', command=self._del).grid(row=i, column=3, padx=5, pady=5) ttk.Button(self._main_frame, text='Cancel', command=self.diag.destroy).grid(row=i, column=2, padx=5, pady=5)
def setupGUI(self): self.pack(fill=BOTH, expand=True) self.master.title("SRB base") self.master.bind('<Return>', self.sendSentence) # Log box textScrollFrame = ttk.Frame(self) textScrollFrame.pack(fill=BOTH, expand=True) textScrollFrame.grid_columnconfigure(0,weight=1) textScrollFrame.grid_columnconfigure(0,weight=1) textScrollFrame.grid_rowconfigure(0,weight=1) scrollbar = ttk.Scrollbar(textScrollFrame) scrollbar.grid(column=1,row=0,sticky=N+S) self.textBox = tk.Text(textScrollFrame, yscrollcommand=scrollbar.set) self.textBox.grid(column=0,row=0,sticky=N+S+E+W) self.textBox.config(state=DISABLED) self.textBox.tag_configure("error", foreground="red") scrollbar.config(command=self.textBox.yview) # Command entry self.textEntry = ttk.Entry(self) self.textEntry.pack(fill=X) # Bottom controls controls = ttk.Frame(self) controls.pack(fill=X,ipady=3) self.autoscroll = tk.IntVar() scrollCheck = ttk.Checkbutton(controls, text="Autoscroll", variable=self.autoscroll) scrollCheck.pack(side=LEFT) self.autoscroll.set(1) serialPorts = [item.device for item in comports()] self.selectedPort = tk.StringVar() self.connectButton = ttk.Button(controls, text="Connect", command=self.openPort) self.connectButton.pack(side=RIGHT) portMenu = ttk.OptionMenu(controls, self.selectedPort, *serialPorts) portMenu.pack(side=RIGHT,fill=X, expand=True)