def __init__(self, master): global palette Grid.rowconfigure(master, 0, weight=1) Grid.columnconfigure(master, 0, weight=1) frame=Frame(master, bg = 'black') frame.grid(row=0, column=0, sticky=N+S+E+W) def contrasting_color(hex_str): (r, g, b) = hex_str[1:2], hex_str[3:5], hex_str[5:] luminance = (1 - (int(r, 16) * 0.299 + int(g, 16) * 0.587 + int(b, 16) * 0.114) / 255) if luminance < 0.5: return '#000000' else: return '#ffffff' def btn_click(num, idnum): palette.append(num) btn_ids[idnum].config(state="disabled") color = 0 btn_ids = [] for row_index in range(4): Grid.rowconfigure(frame, row_index, weight=1) for col_index in range(16): Grid.columnconfigure(frame, col_index, weight=1) btn = Button(frame, bg=_2C02palette[color], text=hex(color), fg=contrasting_color(_2C02palette[color]), borderless = 1, font='GB18030Bitmap', command=lambda txt=hex(color), idn=color: btn_click(txt, idn)) btn.grid(row=row_index, column=col_index, sticky=N+S+E+W) color += 1 btn_ids.append(btn) while True: master.update() if len(palette) == 3: master.destroy() break
def addFactionButton(faction): global factionGridCol factionGridCol += 1 imgLocation = 'Images/Factions/{}-icon.png'.format(faction) img = PhotoImage(file=imgLocation) factionButton = Button(xwingRoot, text='', height=50, width=60, bg='black', focuscolor='white', borderless=True, image=img, command=lambda: getFaction(faction, '')) factionButton.grid(row='0', column=str(factionGridCol))
def placeButton(self): button = Button(root, text=self.name, height=5, width=10, bg="black", fg=GREEN, activebackground=GREEN, focuscolor=GREEN, command=lambda: [insert_name(self.name)]) button.grid(column=self.x, row=self.y, sticky="NSEW")
def display_seats(available_seats): global selected_seat # for each row for i in range(10): letter = chr(i + 97).upper() row_label = Label(seat_selection_frame, text=letter) row_label.grid(row=i + 1, column=0) # for each column for j in range(20): column_label = Label(seat_selection_frame, text=j + 1) column_label.grid(row=0, column=j + 1) # linear search through each position in the 2D list if available_seats[i][j] == 'False': button_colour = "red" else: button_colour = "green" print(button_colour) b = Button(seat_selection_frame, bg=button_colour, height=20, width=50) b.grid(row=i + 1, column=j + 1) Label(seat_selection_frame, text='Enter seat -->').grid(row=13, column=0, padx=5, pady=20, columnspan=10, sticky=W) seat_choose_field = Entry(seat_selection_frame) seat_choose_field.grid(row=13, column=1, padx=5, pady=20, columnspan=10) def fetch_entry(): global selected_seat selected_seat = seat_choose_field.get() check_selected_seat(selected_seat, available_seats) seat_select = Button(seat_selection_frame, text="Choose seat", command=lambda: fetch_entry()) seat_select.grid(row=14, column=0, padx=5, pady=20, columnspan=10)
def summonWindow3(): topFrame = tkinter.Frame(window) topFrame.pack(expand=True, fill=tkinter.BOTH,padx=5) topFrame.option_add("*Background", backgroundColour) bottomFrame = tkinter.Frame(window) bottomFrame.pack(side=tkinter.BOTTOM, fill=tkinter.X,padx=5) bottomFrame.option_add("*Background", backgroundColour) first = tkinter.Label(topFrame, text="Select SD Card", font=(titleFont), fg=foregroundColour) first.grid(column=0,row=0, sticky="w") subtitle = tkinter.Label(topFrame, text='ready to download?', font=(subtitleFont), fg=foregroundColour) subtitle.grid(column=0,row=1,sticky="w") noticeLabel=tkinter.Label(topFrame,text="Plug in your SD card and choose the directory", fg=foregroundColour, font=(bodyFont)) noticeLabel.grid(column=0,row=2,sticky="w") SDentry = tkinter.Entry(topFrame, fg=foregroundColour,bg=buttonColour,font=(buttonFont),width=25) SDentry.grid(column=0, row=3,sticky="w") chooseDirButton = Button(topFrame, text = "Click to select folder", command =lambda:chooseDir(topFrame,SDentry),fg=foregroundColour,bg=buttonColour,font=(buttonFont),width=folder_width) chooseDirButton.grid(column=0, row=4,sticky="w",pady=5) backButton = Button(bottomFrame,text="Back", font=(buttonFont),fg=foregroundColour,bg=backButtonColour,command=lambda: [topFrame.destroy(),bottomFrame.destroy(),summonWindow2()], width=button_width) backButton.pack(side=tkinter.LEFT) nextButton = Button(bottomFrame, text="Start",width=button_width, fg=foregroundColour,bg=nextButtonColour, font=(buttonFont),command=lambda:[globalify(SDentry.get()),topFrame.destroy(),bottomFrame.destroy(),summonWindow4()]) nextButton.pack(side=tkinter.RIGHT, padx=5, pady=5) window.protocol("WM_DELETE_WINDOW",lambda:closeButtonPress(window))
subtract = Button(text="-", fg="white", bg="orange", borderless=True, command=lambda: button_press("-"), font=(None, 25)) equals = Button(text="=", fg="white", bg="orange", borderless=True, command=equals, font=(None, 25)) label = Label(text="0", fg="white", bg="black", font=(None, 25)) btn1.grid(row=3, column=0, sticky="nsew") btn2.grid(row=3, column=1, sticky="nsew") btn3.grid(row=3, column=2, sticky="nsew") btn4.grid(row=2, column=0, sticky="nsew") btn5.grid(row=2, column=1, sticky="nsew") btn6.grid(row=2, column=2, sticky="nsew") btn7.grid(row=1, column=0, sticky="nsew") btn8.grid(row=1, column=1, sticky="nsew") btn9.grid(row=1, column=2, sticky="nsew") btn0.grid(row=4, column=0, sticky="nsew") decimal.grid(row=4, column=1, sticky="nsew") clear.grid(row=4, column=2, sticky="nsew")
def BMIapp(frame): global GenderInput global AgeInput global HeightInput global WeightInput global ActivityInput global TargetWeightInput global DaysInput frame.tkraise() BackButton = Button(frame, text="←", command=lambda: SwitchFrame(SecondFrame, FirstFrame)) BackButton.grid(column=0, row=0, sticky='WS') # 回到上一頁的button # ============= 頁面標題 LabelOpening = tk.Label(SecondFrame, text="看看你多健!", font=('Helvetica', 25), bg="#fbf1e9", fg='#f8872e') LabelOpening.grid(column=0, row=1, ipady=20, columnspan=2) # ============= 性別的下拉式選單 LabelGenderInput = tk.Label(SecondFrame, text="性別", fg='#f8872e', bg="#fbf1e9") # 性別 Label LabelGenderInput.grid(column=0, row=2, ipady=5) # Label 位子 GenderInput = ttk.Combobox(SecondFrame, values=["生理男", "生理女"]) # 性別下拉式選單 GenderInput.grid(column=1, row=2) # 欄位位子 GenderInput.current(0) # 下拉選單預設為男 # ============= 年齡的輸入欄 LabelAgeInput = tk.Label(SecondFrame, text="年齡", fg='#f8872e', bg="#fbf1e9") # 年齡 Label LabelAgeInput.grid(column=0, row=3, ipady=5) # Label 位子 AgeInput = Entry(SecondFrame) # 年齡輸入欄位 AgeInput.grid(column=1, row=3) # 欄位位子 # ============= 身高的輸入欄 LabelHeightInput = tk.Label(SecondFrame, text="身高(cm)", fg='#f8872e', bg="#fbf1e9") # 身高 Label LabelHeightInput.grid(column=0, row=4, ipady=5) # Label位子 HeightInput = Entry(SecondFrame) # 身高輸入欄位 HeightInput.grid(column=1, row=4) # 欄位位子 # ============= 體重的輸入欄 LabelWeightInput = tk.Label(SecondFrame, text="體重(kg)", fg='#f8872e', bg="#fbf1e9") # 體重 Label LabelWeightInput.grid(column=0, row=5, ipady=5) # Label 位子 WeightInput = Entry(SecondFrame) # 輸入體重欄位 WeightInput.grid(column=1, row=5) # 欄位位子 # ============= 每日活動量的輸入欄 LabelActivityInput = tk.Label(SecondFrame, text="每日活動量", fg='#f8872e', bg="#fbf1e9") # 每日活動量 Label LabelActivityInput.grid(column=0, row=6, ipady=5) # 每日活動量 Label 位子 ActivityInput = ttk.Combobox( SecondFrame, values=["低(經常久坐辦公室)", "中(需經常走動)", "高(需搬運重物之勞力工作)"]) # 活動量下拉式選單 ActivityInput.grid(column=1, row=6) # 活動量下拉式選單位子 ActivityInput.current(1) # 加入分隔線 ttk.Separator(SecondFrame, orient=HORIZONTAL).grid(row=7, columnspan=2, sticky="ew", padx=30, pady=30) # ============= 目標體重輸入欄 LabelTargetWeightInput = tk.Label(SecondFrame, text="期望達到的目標體重", fg='#f8872e', bg="#fbf1e9") # 目標體重 Label LabelTargetWeightInput.grid(column=0, row=8, ipady=5) # Label 位子 TargetWeightInput = Entry(SecondFrame) # 輸入目標體重欄位 TargetWeightInput.grid(column=1, row=8) # 欄位位子 # ============= 期望達到期限輸入欄 LabelDaysInput = tk.Label(SecondFrame, text="你希望在幾天內達到目標體重", fg='#f8872e', bg="#fbf1e9") # 目標天數 Label LabelDaysInput.grid(column=0, row=9, ipady=5) # Label 位子 DaysInput = Entry(SecondFrame) # 輸入目標天數 DaysInput.grid(column=1, row=9) # 欄位位子 # 加入分隔線 # ttk.Separator(SecondFrame, orient=HORIZONTAL).grid(row=9, columnspan=2, sticky="ew", padx=30, pady=30) # ============= 輸入完成的計算鈕 BasicCount = Button(SecondFrame, text="看看我多健!", bg='#f8872e', fg="white", bd=3, command=lambda: CheckBlank()) BasicCount.grid(column=0, row=11, columnspan=2, padx=5, pady=30, ipady=5, sticky="ew")
item1.pack(fill="x") #, padx = 10, pady = 10) vertical_frame.pack(fill="x") #---Horizontal Layout with Data horizontal_frame = Frame(mainframe, background="gray30") #---Button button_image = ImageTk.PhotoImage( file="/Users/rtamburro//Desktop/Tkinter_Projects/NockOnLogo.jpg") img_label = Label(image=button_image) my_button = Button(horizontal_frame, image=button_image, background="black", command=phrase_display) my_button.grid(column=2, rowspan=10, sticky="nsew") #---Labels and Entries label1 = Label(horizontal_frame, text="Axis or FMJ:", font=("Arial", 16), background="gray30", foreground="lawn green", padx=10, pady=10, relief="sunken") label1.grid(row=0, column=0, sticky="nsew") arrow_name = StringVar() arrow_name.set("--- Select ---") label_1_dropdown = OptionMenu(horizontal_frame, arrow_name, "Axis", "FMJ")
website_input = Entry() website_input.focus() website_input.config(width=35) website_input.grid(column=1, row=1, columnspan=2) # email/username email_username_label = Label(text="Email/Username:"******"*****@*****.**") email_username_input.config(width=35) email_username_input.grid(column=1, row=2, columnspan=2) # password password_label = Label(text="Password:"******"Generate Password", width=125, command=generate_password) generate_password_button.grid(column=2, row=3) # add add_button = Button(text="Add", command=save, width=322) add_button.grid(column=1, row=4, columnspan=36) window.mainloop()
class MainApplication(tk.Frame): right_scrollable_frame: Frame def __init__(self, master): self.master = master tk.Frame.__init__(self, self.master) self.box = tk.Entry(master) self.width = self.master.winfo_screenwidth() / 1.45 self.height = self.master.winfo_screenheight() / 1.25 self.max_min_method = tk.BooleanVar() self.method = tk.IntVar() self.configure_gui() self.create_frames() def configure_gui(self): self.master.title("OE - Projekt nr 1") self.master.geometry("%ix%i" % (self.width, self.height)) self.master.configure(bg=LEFT_FRAME_BACKGROUND_COLOR) self.master.resizable(0, 0) def create_frames(self): self.left_frame = tk.Frame(width=self.width * 0.50, height=self.height - 20, background=LEFT_FRAME_BACKGROUND_COLOR) self.left_frame.grid(row=0, column=0) self.set_canvas_to_left_frame() self.right_frame = tk.Frame(width=self.width * 0.50, height=self.height - 20, background=RIGHT_FRAME_BACKGROUND_COLOR) self.right_frame.grid(row=0, column=1) self.set_canvas_to_right_frame() def set_canvas_to_left_frame(self): left_canvas = tk.Canvas(self.left_frame, width=self.width * 0.50, height=self.height - 20, highlightthickness=0, background="white") left_scrollbar = tk.Scrollbar(self.left_frame, orient="vertical", command=left_canvas.yview) self.left_scrollable_frame = tk.Frame(left_canvas) self.left_scrollable_frame.bind( "<Configure>", lambda e: left_canvas.configure( scrollregion=left_canvas.bbox("all") ) ) left_canvas.create_window((0, 0), window=self.left_scrollable_frame, anchor=tk.N + tk.W) left_canvas.configure(yscrollcommand=left_scrollbar.set) left_canvas.pack(side="left", fill="y", expand=False, pady=10) left_scrollbar.pack(side="right", fill="y", pady=10) def set_canvas_to_right_frame(self): right_canvas = tk.Canvas(self.right_frame, width=self.width * 0.50 - 30, height=self.height - 20, highlightthickness=0, background=RIGHT_FRAME_BACKGROUND_COLOR) right_scrollbar = tk.Scrollbar(self.right_frame, orient="vertical", command=right_canvas.yview, bg=RIGHT_FRAME_BACKGROUND_COLOR) self.right_scrollable_frame = tk.Frame(right_canvas, background=RIGHT_FRAME_BACKGROUND_COLOR) self.right_scrollable_frame.bind( "<Configure>", lambda e: right_canvas.configure( scrollregion=right_canvas.bbox("all") ) ) self.create_right_frame_widgets() right_canvas.create_window((0, 0), window=self.right_scrollable_frame, anchor=tk.N + tk.W) right_canvas.configure(yscrollcommand=right_scrollbar.set) right_canvas.pack(side="left", fill="y", expand=False, pady=10) right_scrollbar.pack(side="right", fill="y", pady=10) def create_right_frame_widgets(self): self.set_lables_right_frame() self.create_radio_button("Maksymalizacja", True, self.max_min_method, 1, 1, "W") self.create_radio_button("Minimalizacja", False, self.max_min_method, 1, 1, "E") self.range_min = self.create_spinbox(-100, 100, 1, 11, "normal") self.range_min.grid(row=2, column=0, padx=(0, 112), sticky="E") self.range_max = self.create_spinbox(-100, 100, 1, 11, "normal") self.range_max.grid(row=2, column=0, padx=(0, 10), sticky="E") self.chromosome_precision = self.create_spinbox(0, 1, 0.01, 28, "normal") self.chromosome_precision.grid(row=3, column=0, padx=(0, 10), sticky="E") self.population_size = self.create_spinbox(0, 1000, 1, 28, "normal") self.population_size.grid(row=4, column=0, padx=(0, 10), sticky="E") self.num_of_epochs = self.create_spinbox(0, 1000, 1, 28, "normal") self.num_of_epochs.grid(row=5, column=0, padx=(0, 10), sticky="E") self.selection_option = ttk.Combobox(self.right_scrollable_frame, values=SELECTION_TYPE, width=20) self.selection_option.set("-- Nie wybrano --") self.selection_option.grid(row=6, column=0, padx=(0, 18), sticky="E") self.crossing_option = ttk.Combobox(self.right_scrollable_frame, values=CROSSING_TYPE, width=20) self.crossing_option.set("-- Nie wybrano --") self.crossing_option.grid(row=7, column=0, padx=(0, 18), sticky="E") self.crossing_precision = self.create_spinbox(0, 10, 0.1, 28, "normal") self.crossing_precision.grid(row=8, column=0, padx=(0, 10), sticky="E") self.mutation_option = ttk.Combobox(self.right_scrollable_frame, values=MUTATION_TYPE, width=20) self.mutation_option.set("-- Nie wybrano --") self.mutation_option.grid(row=9, column=0, padx=(0, 18), sticky="E") self.mutation_precision = self.create_spinbox(0, 10, 0.1, 28, "normal") self.mutation_precision.grid(row=10, column=0, padx=(0, 10), sticky="E") self.inversion_precision = self.create_spinbox(0, 10, 0.1, 28, "normal") self.inversion_precision.grid(row=11, column=0, padx=(0, 10), sticky="E") self.num_of_function_variables = self.create_spinbox(0, 1000, 1, 28, "normal") self.num_of_function_variables.grid(row=12, column=0, padx=(0, 10), sticky="E") self.tournament_size = self.create_spinbox(0, 1000, 1, 28, "normal") self.tournament_size.grid(row=13, column=0, padx=(0, 10), sticky="E") self.population_procent = self.create_spinbox(0, 100, 1, 28, "normal") self.population_procent.grid(row=14, column=0, padx=(0, 10), sticky="E") self.elit_strategy_population_procent = self.create_spinbox(0, 100, 1, 28, "disable") self.elit_strategy_population_procent.grid(row=15, column=0, padx=(0, 10), sticky="E") self.elit_strategy_population_size = self.create_spinbox(0, 1000, 1, 28, "disable") self.elit_strategy_population_size.grid(row=16, column=0, padx=(0, 10), sticky="E") self.button2 = Button(self.right_scrollable_frame, text="Start", bg=RIGHT_FRAME_FONT_COLOR, fg="white", borderless=1, takefocus=0, width=round(self.width * 0.55 - 100), command=self.plot) self.button2.grid(row=20, columnspan=2, pady=15, sticky="S") def set_lables_right_frame(self): self.crate_title_label(0) self.create_label("Przedział funkcji", 2) self.create_label("Dokładność chromosomu", 3) self.create_label("Wielkość populacji", 4) self.create_label("Liczba epok", 5) self.create_label("Metoda selekcji", 6) self.create_label("Krzyżowanie", 7) self.create_label("Prawdopodobieństwo krzyżowania", 8) self.create_label("Mutacja", 9) self.create_label("Prawdopodobieństwo mutacji", 10) self.create_label("Prawdopodobieństwo inwersji", 11) self.create_label("Liczba zmiennych funkcji", 12) self.create_label("Wielkość turnieju", 13) self.create_label("Procent osobników", 14) self.create_radio_button("Procent osobników (Strategia elitarna)", 1, self.method, 15, 1, "W") self.create_radio_button("Liczba osobników (Strategia elitarna)", 2, self.method, 16, 1, "W") def crate_title_label(self, row): return tk.Label(self.right_scrollable_frame, text="Algorytm genetyczny znajdujący maks/min w Funkcji Beale", font="system-ui 15 bold", bg=RIGHT_FRAME_BACKGROUND_COLOR, fg=RIGHT_FRAME_TITLE_COLOR).grid(row=row, column=0, padx=20, pady=5, sticky="N") def create_label(self, title, row): return tk.Label(self.right_scrollable_frame, text=title, font="system-ui 12 bold", bg=RIGHT_FRAME_BACKGROUND_COLOR, fg=RIGHT_FRAME_FONT_COLOR).grid(row=row, column=0, padx=20, pady=10, sticky="W") def create_time_label(self, text): self.time_label = tk.Label(self.right_scrollable_frame, text="Obliczenia wykonały się w : %.5g sekund" % text, font="system-ui 12 bold", bg=RIGHT_FRAME_BACKGROUND_COLOR, fg=RIGHT_FRAME_FONT_COLOR).grid(row=19, column=0, padx=20, pady=10, sticky="W") def create_spinbox(self, _from, _to, _increment, width, state): return tk.Spinbox(self.right_scrollable_frame, from_=_from, to=_to, increment=_increment, textvariable=tk.DoubleVar(value=0), font="SYSTEM-UI 10", bg="#FFFFFF", fg='#000000', width=width, state=state) def create_radio_button(self, title, val, variable, row, column, place): s = ttk.Style() s.configure("Wild.TRadiobutton", foreground=RIGHT_FRAME_FONT_COLOR, font="system-ui 12 bold") return ttk.Radiobutton(self.right_scrollable_frame, text=title, style="Wild.TRadiobutton", value=val, variable=variable, command=lambda: self.normal_or_disabled()).grid(row=row, columnspan=column, padx=(20, 20), pady=10, sticky=place) def get_seletced_parameters(self): is_max = self.max_min_method.get() from_x1 = self.range_min.get() to_x1 = self.range_max.get() chrom_precision = self.chromosome_precision.get() pop_size = self.population_size.get() epoch_num = self.num_of_epochs.get() select_type = self.selection_option.get() cross_type = self.crossing_option.get() cross_precision = self.crossing_precision.get() mut_type = self.mutation_option.get() mut_precision = self.mutation_precision.get() invers_precision = self.inversion_precision.get() fun_variables_num = self.num_of_function_variables.get() tour_size = self.tournament_size.get() pop_procent = self.population_procent.get() elit_strategy_pop_procent = self.elit_strategy_population_procent.get() elit_strategy_pop_size = self.elit_strategy_population_size.get() for i in range(len(SELECTION_TYPE)): if select_type == SELECTION_TYPE[i]: select_type = SelectionType(i + 1) for i in range(len(CROSSING_TYPE)): if cross_type == CROSSING_TYPE[i]: cross_type = CrossingType(i + 1) for i in range(len(MUTATION_TYPE)): if mut_type == MUTATION_TYPE[i]: mut_type = MutationType(i + 1) # print(is_max) # print(from_x1) # print(to_x1) # print(chrom_precision) # print(pop_size) # print(epoch_num) # print(select_type) # print(cross_type) # print(cross_precision) # print(mut_type) # print(mut_precision) # print(invers_precision) # print(fun_variables_num) # print(tour_size) # print(pop_procent) # print(elit_strategy_pop_procent) # print(elit_strategy_pop_size) return int(epoch_num), int(pop_size), int(fun_variables_num), int(from_x1), int( to_x1), float(chrom_precision), select_type, mut_type, cross_type, is_max, float(1), float( mut_precision), float(cross_precision), float(invers_precision), int(tour_size), int(pop_procent), int( elit_strategy_pop_procent), int(elit_strategy_pop_size) def normal_or_disabled(self): if self.method.get() == 1: self.elit_strategy_population_procent.configure(state="normal") self.elit_strategy_population_size.configure(state="disable") elif self.method.get() == 2: self.elit_strategy_population_procent.configure(state="disable") self.elit_strategy_population_size.configure(state="normal") def plot(self): start_time = datetime.now() algorithm = GeneticAlgorithm(bale_function, *self.get_seletced_parameters()) best_solution_in_epochs, solution_mean, solution_std = algorithm.run_algorithm() end_time = datetime.now() self.create_time_label((end_time - start_time).total_seconds()) x = np.array([x + 1 for x in range(0, len(best_solution_in_epochs))]) best = np.array(best_solution_in_epochs) mean = np.array(solution_mean) std = np.array(solution_std) # ---------------------------------------------------------------------- fig_best = Figure(figsize=(5, 5)) b = fig_best.add_subplot(111) b.plot(x, best, color="blue") b.set_title("Wartości funkcji", fontsize=12) b.set_ylabel("Y", fontsize=10) b.set_xlabel("X", fontsize=10) canvas_best = FigureCanvasTkAgg(fig_best, master=self.left_scrollable_frame) canvas_best.get_tk_widget().grid(column=0, row=0) canvas_best.draw() fig_best.savefig('../Plots/wartosc_funkcji.png') # ---------------------------------------------------------------------- fig_mean = Figure(figsize=(5, 5)) m = fig_mean.add_subplot(111) m.plot(x, mean, color="blue") m.set_title("Średnie wartości funkcji", fontsize=12) m.set_ylabel("Y", fontsize=10) m.set_xlabel("X", fontsize=10) canvas_mean = FigureCanvasTkAgg(fig_mean, master=self.left_scrollable_frame) canvas_mean.get_tk_widget().grid(column=0, row=1) canvas_mean.draw() fig_mean.savefig('../Plots/srednie_wartosci_funkcji.png') # ---------------------------------------------------------------------- fig_std = Figure(figsize=(5, 5)) s = fig_std.add_subplot(111) s.plot(x, std, color="blue") s.set_title("Odchylenie standardowe", fontsize=12) s.set_ylabel("Y", fontsize=10) s.set_xlabel("X", fontsize=10) canvas_std = FigureCanvasTkAgg(fig_std, master=self.left_scrollable_frame) canvas_std.get_tk_widget().grid(column=0, row=2) canvas_std.draw() fig_std.savefig('../Plots/odchylenie_standardowe.png')
loginUsernameLable = Label(frame, text="Username") loginUsernameLable.grid(row=0, column=0) loginUsernameEntry = Entry(frame, width=20) loginUsernameEntry.grid(row=0, column=1) #Password label and entry loginPasswordLable = Label(frame, text="Password") loginPasswordLable.grid(row=1, column=0) loginPasswordEntry = Entry(frame, width=20, show="*") loginPasswordEntry.grid(row=1, column=1) #Login button login = Button(frame, text="Login", bg="lightgreen", command=checkLogin) login.grid(row=2, column=0) #Global profile variable var_name = StringVar() FnameEntry = StringVar() LnameEntry = StringVar() usernameEntry = StringVar() passwordEntry = StringVar() confirmPasswordEntry = StringVar() securityQuestion1Entry = StringVar() securityQuestion2Entry = StringVar() #signUp button signUp = Button(frame, text="Sign Up", bg="lightgreen", command=createProfile) signUp.grid(row=2, column=1)
card_front_img = PhotoImage(file="images/card_front.png") card_image = canvas.create_image((400, 263), image=card_front_img) card_title = canvas.create_text(400, 150, text="Title", font=("Ariel", 40, "italic")) card_word = canvas.create_text(400, 263, text="Word", font=("Ariel", 60, "bold")) canvas.grid(row=0, column=0, columnspan=2) unknown_button_img = PhotoImage(file="images/wrong.png") unknown_button = Button(image=unknown_button_img, highlightthickness=0, bg=BACKGROUND_COLOR, borderless=1, command=next_card) unknown_button.grid(row=1, column=0) check_button_img = PhotoImage(file="images/right.png") check_button = Button(image=check_button_img, highlightthickness=0, bg=BACKGROUND_COLOR, borderless=1, command=next_card) check_button.grid(row=1, column=1) next_card() window.mainloop()
lblsealanes_gst = Label(root, text="Input the GST Amount from the Sealanes Invoice: ", bg="#4ca6a6", fg="#FFFFFF") lblsealanes_gst.grid(row=2, column=0, pady=10, sticky="W") lblcrunch_ex = Label(root, text="Input the EX-GST Amount from Crunchtime: ", bg="#4ca6a6", fg="#FFFFFF") lblcrunch_ex.grid(row=3, column=0, pady=10, sticky="W") lblcrunch_gst = Label(root, text="Input the GST Amount from Crunchtime: ", bg="#4ca6a6", fg="#FFFFFF") lblcrunch_gst.grid(row=4, column=0, pady=10, sticky="W") lblcogs_food = Label(root, text="Input the COGS Food Amount from Crunchtime: ", bg="#4ca6a6", fg="#FFFFFF") lblcogs_food.grid(row=5, column=0, pady=10, sticky="W") # Create Buttons btnCalc = Button(root, text="Calculate", borderless=1, relief='sunken', bordercolor='#000000', pady=10, padx=30, bg='#4c79a6', fg='#FFFFFF', width=123, command=calculate) btnCalc.grid(row=6, column=1, sticky="W") # Button To reset btnReset = Button(root, text="Reset", borderless=1, relief='sunken', bordercolor='#000000', pady=10, padx=30, bg='#4c79a6', fg='#FFFFFF', width=130, command=reset) btnReset.grid(row=9, column=0, sticky="W") # Button To Exit btnfinish = Button(root, text="Exit", borderless=1, relief='sunken', bordercolor='#000000', pady=10, padx=30, bg='#4c79a6', fg='#FFFFFF', width=130, command=finish) btnfinish.grid(row=9, column=1, sticky="W") # Label for GST Amount Output lbloutadd = Label(root, text="Add a food line with a total of", bd=0, bg='#4ca6a6', fg='#FFFFFF') lbloutadd.grid(row=7, column=0, padx=10, pady=10, sticky="W") # Label for GST Amount Output lbloutnewfood = Label(root, text="Change the existing COGS Food to", bd=0, bg='#4ca6a6', fg='#FFFFFF') lbloutnewfood.grid(row=8, column=0, padx=10, pady=10, sticky="W") # Output boxes
class TinyCalculatorApp: def __init__(self, master): master.title("Tiny Calculator") master.configure(bg='light gray') master.geometry("240x150") self.exp = self.num = '' self.calcScreen = Label(master, bd=5, wraplength=40, textvariable=self.exp, bg='white', font=("Arial Bold", 16), relief='sunken') self.calcScreen.grid(row=0, column=1, columnspan=2, sticky='ew') # row 4 buttons self.bt1 = Button(master, text='1', height=20, width=60, borderless=1, command=lambda: self.click('1')) self.bt1.grid(column=0, row=4) self.bt2 = Button(master, text='2', height=20, width=60, borderless=1, command=lambda: self.click('2')) self.bt2.grid(column=1, row=4) self.bt3 = Button(master, text='3', height=20, width=60, borderless=1, command=lambda: self.click('3')) self.bt3.grid(column=2, row=4) # row 3 buttons self.bt4 = Button(master, text='4', height=20, width=60, borderless=1, command=lambda: self.click('4')) self.bt4.grid(column=0, row=3) self.bt5 = Button(master, text='5', height=20, width=60, borderless=1, command=lambda: self.click('5')) self.bt5.grid(column=1, row=3) self.bt6 = Button(master, text='6', height=20, width=60, borderless=1, command=lambda: self.click('6')) self.bt6.grid(column=2, row=3) # row 2 buttons self.bt7 = Button(master, text='7', height=20, width=60, borderless=1, command=lambda: self.click('7')) self.bt7.grid(column=0, row=2) self.bt8 = Button(master, text='8', height=20, width=60, borderless=1, command=lambda: self.click('8')) self.bt8.grid(column=1, row=2) self.bt9 = Button(master, text='9', height=20, width=60, borderless=1, command=lambda: self.click('9')) self.bt9.grid(column=2, row=2) # row 5 buttons self.btc = Button(master, text='on/c', height=20, width=60, bg='red', fg='white', borderless=1, command=lambda: self.click('c')) self.btc.grid(column=0, row=5) self.bt0 = Button(master, text='0', height=20, width=60, borderless=1, command=lambda: self.click('0')) self.bt0.grid(column=1, row=5) self.btdec = Button(master, text='.', height=20, width=60, borderless=1, command=lambda: self.click('.')) self.btdec.grid(column=2, row=5) # operation buttons self.btneg = Button(master, text='+/-', height=20, width=60, bg='red', fg='white', borderless=1, command=lambda: self.click("+/-")) self.btneg.grid(column=0, row=1) self.btplus = Button(master, text='+', height=20, width=60, bg='red', fg='white', borderless=1, command=lambda: self.click('+')) self.btplus.grid(column=3, row=4) self.btminus = Button(master, text='-', height=20, width=60, bg='red', fg='white', borderless=1, command=lambda: self.click('-')) self.btminus.grid(column=3, row=3) self.bttimes = Button(master, text='*', height=20, width=60, bg='red', fg='white', borderless=1, command=lambda: self.click('*')) self.bttimes.grid(column=3, row=2) self.btdiv = Button(master, text='/', height=20, width=60, bg='red', fg='white', borderless=1, command=lambda: self.click('/')) self.btdiv.grid(column=3, row=1) self.btmod = Button(master, text='%', height=20, width=60, bg="red", fg='white', borderless=1, command=lambda: self.click('%')) self.btmod.grid(column=2, row=1) self.btequals = Button(master, text='=', height=20, width=60, bg='red', fg='white', borderless=1, command=lambda: self.click('=')) self.btequals.grid(column=3, row=5) self.btsqrt = Button(master, text='sqrt', height=20, width=60, bg='red', fg='white', borderless=1, command=lambda: self.click('sqrt')) self.btsqrt.grid(column=1, row=1) def click(self, val): if val == 'c': self.exp = self.num = '' self.calcScreen.configure(text=self.exp) elif val == '=': self.exp += self.num self.calcScreen.configure(text=eval(self.exp)) self.num = str(eval(self.exp)) self.exp = '' elif val == 'sqrt': sqrt_num = sqrt(float(self.num)) self.num = str(sqrt_num) elif val == '+/-': self.exp += '-' else: self.num += val if not val.isdigit(): self.exp += self.num self.num = '' self.calcScreen.configure(text=self.num)
text='Rec', relief=GROOVE, borderwidth=5, padx=30, pady=20, command=gui_record5) button_20 = Button(frame5, text='Play', relief=GROOVE, borderwidth=5, padx=30, pady=20, command=gui_play5) #showing frame5 frame5.grid(row=0, column=4, padx=20) #showing buttons for frame5 button_17.pack(pady=10) button_18.pack(pady=10) button_19.pack(pady=10) button_20.pack(pady=10) #Binding buttons for frame4 button_18.bind_all("<Key>", key_bind_func) button_19.bind_all("<Key>", key_bind_func) button_20.bind_all("<Key>", key_bind_func) #Create quit button button_quit = Button(blank, text='Quit', command=root.quit) button_quit.grid(row=1, column=0, columnspan=10, pady=10) # Make a eventloop root.mainloop()
yearVar.set("2003") yearPicker = tk.OptionMenu(display, yearVar, "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2012", "2013", "2014", "2015", "2016", "2017", "2018", "2019") yearPicker.config(width=10) yearPicker.grid(row=3, column=2) setDate = Button(display, text="DONE", command=get_date, bg="black", fg="white", padx=5, pady=5, borderless=1) setDate.grid(row=4, column=1, columnspan=2, pady=(10, 0)) def change_date(*args): return (dayVar.get() + " " + monthVar.get() + ", " + yearVar.get()) dayVar.trace('w', change_date) monthVar.trace('w', change_date) yearVar.trace('w', change_date) def show_results(row, label, color, results, day, move): print("Avg. Temperature: " + str(get_avg_temp(row))) print("Avg. Wind Speed: " + str(get_wind(row))) print("Total Precipitation: " + str(get_rain(row)))
frame_top.pack(side=tk.TOP) frame_left = tk.Frame(root, width=800, relief=tk.FLAT) frame_left.pack(side=tk.LEFT) #---giving heading for program--- heading = tk.Label(frame_top,font=('helvetica', 50, 'bold'), text = "Encryption and Decryption\nusing Vendz cipher", fg = "black", bd=10, anchor='w') heading.grid(row=0, column=0) #---label for file--- file_label = tk.Label(frame_left, font=('ariel', 16, 'bold'), text='Select a File:', fg='black', anchor='w') file_label.grid(row=1, column=0) #---asking for file--- file_button = Button(frame_left, text = "open file", padx = 10, pady = 5, bg = "#263D42", fg = "white", activebackground = "#263D32", command = add_file) file_button.grid(row=1, column=1) #---label for password--- label_password = tk.Label(frame_left, font=('ariel', 16, 'bold'), text='Enter the Password', bd=16, anchor='w') label_password.grid(row=2, column=0) #---asking for password--- password_input = tk.Entry(frame_left, font=('ariel', 16, 'bold'), textvariable=password, bd=10, insertwidth=4, bg='powder blue', justify='right', relief=tk.FLAT) password_input.grid(row=2, column=1) #---label for mode selection--- mode_label = tk.Label(frame_left, font=('ariel', 16, 'bold'),padx=20, text='Do you want to Encrypt(\'e\') or Decrypt(\'d\')', bd=16, anchor='w') mode_label.grid(row=3, column=0) #---asking for mode input--- mode_input = tk.Entry(frame_left, font=('ariel', 16, 'bold'), textvariable=mode, bd=10, insertwidth=4, bg='powder blue', justify='right', relief=tk.FLAT)
button.append(Button(root, text=str(rows+5)+":00", command=lambda i=i: hit(i))) button[i].grid(row = rows, column = cols) if rows == 13: cols+=1 rows = 3 else: rows+=1 TotalButtons = 55 ##================================================================================================== ##============================================ EDIT MODE =========================================== ##================================================================================================== editModeButton = Button(root, text = "EDIT", fg = "black", height = 40, command=lambda: changeMode(1)) editModeButton.grid(row=14, column=1) #get users names by reading info.txt (contains all timetables + names) f = open("/Users/ajvidetta/Desktop/python/timetable arrange/info.txt", "r") contents = eval(f.read()) f.close names = [] for key in contents[0]: names.append(key) print(names) def change_dropdown(*args): name = tkvar.get()
def __init__(self): """Initialize all the variables of the GUI and of Numsum.""" self.height = 700 self.width = 800 self.game = Numsum() self.text_color = '#57D9A3' self.button_color = '#3B3B3B' self.background_color = '#222222' self.font = 'Silom' self._root = Tk() self._root.title("Numsum") self._root.resizable(width=False, height=False) # Fixed size # The canvas is where the text and other game stats will be displayed self.canvas = Canvas(self._root, height=self.height, width=self.width, bg=self.background_color) self.canvas.pack() # A separate container inside the canvas to place the button grid self.frame = Frame(self._root) self.frame.place(relx=0.2, rely=0.192, relwidth=0.6, relheight=0.6) # 60% of the screen size # Expands rows and columns of the frame's grid for widget resizing, without this the buttons stay small. Grid.rowconfigure(self.frame, [0, 1, 2], weight=1) Grid.columnconfigure(self.frame, [0, 1, 2], weight=1) # Player 1 label self.player_one_label = Label(self.canvas, text='Player\n 1', font=[self.font, 40], bg=self.background_color, fg=self.text_color) self.player_one_label.place(relx=0.01, rely=0.02) # Player 2 label self.player_two_label = Label(self.canvas, text='Player\n 2', font=[self.font, 40], bg=self.background_color, fg=self.text_color) self.player_two_label.place(relx=0.80, rely=0.02) # A solid line that separates number pad from player labels self.canvas.create_line(0, 131, 800, 131, width=5, fill=self.text_color) # A collection (list) to hold the references to the buttons created below self.buttons = [] self._button_font_size = font.Font( size=30 ) # Buttons don't work consistently on MacOS, this setting helps out. # Initializes buttons in frame for index in range(1, 10): button_number = index # index-1 because the buttons numbers start at 1 and the list indices starting at 0. grid_index = index - 1 # lambda passes vars from this function as parameters to button_click and calls that function on each press. button = Button( self.frame, bg=self.button_color, fg=self.text_color, text=button_number, command=lambda index=grid_index, button_number=button_number: self.button_click(index, button_number)) # sets font on separate line because of MacOS button issues. button['font'] = self._button_font_size # Add the button to the window button.grid(row=floor((grid_index / 3)), column=(grid_index % 3), sticky="nsew") # Add a reference to the newly created button to the list 'buttons' self.buttons.append(button) # Rules button, triggers popout window self.rules_button = Button(self.canvas, text='Rules', font=[self.font, 15], bg=self.button_color, fg=self.text_color, width=60, height=40, command=self.popup_rules) self.rules_button.place(relx=0.91, rely=0.93) # Main tkinter loop self._root.mainloop()
class Sample(tk.Tk): def __init__(self): tk.Tk.__init__(self) self.resizable(0, 0) self.geometry('420x700+300+100') self.title('Mac OSX Button Testing') self.wm_attributes('-modified', 1) self.main_color = ColorVar(value='#ffe6f4') self['bg'] = self.main_color grid(self, 25, 5) self.L1 = tk.Label(self, text='Comparison', bg=self.main_color, font=('', 18, 'bold')) self.L1.grid(row=0, column=0, columnspan=5, sticky='nsew') Button(self, text='Hello').grid(row=1, column=1, sticky='s') ttk.Button(self, text='Hello').grid(row=1, column=3, sticky='s') tk.Button(self, text='Hello').grid(row=1, column=2, sticky='s') tk.Label(self, bg=self.main_color, font=('', 10), text='(Mac OSX)').grid(row=2, column=1, sticky='n',) tk.Label(self, bg=self.main_color, font=('', 10), text='(ttk themed)').grid(row=2, column=3, sticky='n') tk.Label(self, bg=self.main_color, font=('', 10), text='(Default)').grid(row=2, column=2, sticky='n') ttk.Separator(self, orient='vertical').grid( row=3, column=0, columnspan=5, sticky='ew') # ------------ Seperator ------------- # ------------ Demonstration ------------ self.sfr = SFrame(self, bg=self.main_color) self.sfr.grid(rowspan=27, columnspan=5, sticky='nsew') for i in range(5): self.sfr.grid_columnconfigure(i, weight=1) self.L2 = tk.Label(self.sfr, text='Demonstration', bg=self.main_color, font=('', 20, 'bold')) self.L2.grid(row=1, column=0, columnspan=5, sticky='new', pady=(20, 10)) # ------------ Active Color ------------ self.L3 = tk.Label(self.sfr, text='1. Change Active color', bg=self.main_color, font=('', 15, 'bold')) self.L3.grid(row=2, column=0, columnspan=5, sticky='nsew', pady=10) self.L4 = tk.Label(self.sfr, text='The active color can be changed to any gradient color.', bg=self.main_color, font=('', 10)) self.L4.grid(row=3, column=0, columnspan=5, sticky='new') self.B1 = Button(self.sfr, text='Press Me', pady=20) self.B1.grid(row=4, column=0, columnspan=5, pady=20) self.C1 = tk.StringVar(value='Select') self.L5 = tk.Label(self.sfr, text='From', bg=self.main_color, font=('', 12)) self.L5.grid(row=5, column=1, sticky='ew') self.L6 = tk.Label(self.sfr, text='To', bg=self.main_color, font=('', 12)) self.L6.grid(row=5, column=3, sticky='ew') button_container1 = tk.Frame(self.sfr, bg=self.main_color) button_container1.grid(row=6, column=0, columnspan=5, sticky='ew', pady=10, padx=10) button_container1.columnconfigure(0, weight=1) button_container1.columnconfigure(1, weight=1) self.Om1_b = Button(button_container1, text='Change Color', bg='#d0c0ea', borderless=1) self.Om1_b.grid(row=0, column=0, padx=(0, 2), sticky='ew') self.Om2_b = Button(button_container1, text='Change Color', bg="#d0c0ea", borderless=1) self.Om2_b.grid(row=0, column=1, sticky='ew') self.Om1_b['command'] = lambda: self.change_active_color(1) self.Om2_b['command'] = lambda: self.change_active_color(2) # ------------ Background Color ------------ self.L7 = tk.Label(self.sfr, text='2. Change Background color', bg=self.main_color, font=('', 15, 'bold')) self.L7.grid(row=7, column=0, columnspan=5, sticky='nsew', pady=(50, 0)) self.L8 = tk.Label(self.sfr, text='Click on the button to choose the color.', bg=self.main_color, font=('', 10)) self.L8.grid(row=8, column=0, columnspan=5, sticky='new', pady=10) self.B2 = Button(self.sfr, text='Color me', font=('', 30,), pady=10) self.B2.grid(row=9, column=0, columnspan=5, sticky='', pady=20) button_container2 = tk.Frame(self.sfr, bg=self.main_color) button_container2.grid(row=10, column=0, columnspan=5, sticky='ew', pady=10, padx=10) button_container2.columnconfigure(0, weight=1) button_container2.columnconfigure(1, weight=1) self.B3 = Button(button_container2, text='Change Background Color', bg='#d0c0ea', borderless=1) self.B3['command'] = lambda: self.B2.config(bg=askcolor()[1]) self.B3.grid(row=0, column=0, padx=(0, 2)) self.B4 = Button(button_container2, text='Change Foreground Color', bg="#d0c0ea", borderless=1) self.B4['command'] = lambda: self.B2.config(fg=askcolor()[1]) self.B4.grid(row=0, column=1) # ------------ Borderless ------------ self.L9 = tk.Label(self.sfr, text='3. Switch Between Borderless', bg=self.main_color, font=('', 15, 'bold')) self.L9.grid(row=11, column=0, columnspan=5, sticky='sew', pady=(50, 0)) self.L10 = tk.Label(self.sfr, text=""" In borderless it will blend with its parent widget background color. Give parameter `borderless = True / False` to use it.""", bg=self.main_color, font=('', 10)) self.L10.grid(row=12, column=0, columnspan=5, sticky='new') self.B5 = Button(self.sfr, text='No Borders', borderless=1, height=40, bg='#212F3D', fg='white', activebackground=("#EAECEE", "#212F3D")) self.B5.grid(row=13, columnspan=5, pady=(20, 5)) self.B6 = Button(self.sfr, text='No Borders', borderless=1, height=40, bg='#F7DC6F', fg='#21618C', activebackground=('#B3B6B7', '#58D68D')) self.B6.grid(row=14, columnspan=5, pady=(0, 20)) self.var1 = tk.BooleanVar(value=True) self.CB1 = tk.Checkbutton(self.sfr, text='Toggle Borderless', variable=self.var1, bg=self.main_color, command=self.change_borderless_state) self.CB1.grid(row=15, columnspan=5, pady=(0, 10)) # ------------ Bordercolor ------------ self.L11 = tk.Label(self.sfr, text='4. Change Bordercolor', bg=self.main_color, font=('', 15, 'bold')) self.L11.grid(row=16, column=0, columnspan=5, sticky='sew', pady=(50, 0)) self.L12 = tk.Label(self.sfr, text="Change Bordercolor of the button\nNote: if borderless=True, then the bordercolor won't work.", bg=self.main_color, font=('', 10)) self.L12.grid(row=17, column=0, columnspan=5, sticky='new') self.B7 = Button(self.sfr, text='Button', pady=10, padx=5, font=('Zapfino', 12, 'bold')) self.B7.grid(row=18, columnspan=5, pady=30) self.CS1 = Colorscale(self.sfr, value='hex', mousewheel=1, command=lambda e: self.B7.config(bordercolor=e)) self.CS1.grid(row=19, columnspan=5, sticky='ew', padx=10) self.CS2 = Colorscale(self.sfr, value='hex', mousewheel=1, gradient=('#FCF6F5', '#990011'), command=lambda e: self.B7.config(bg=e)) self.CS2.grid(row=20, columnspan=5, sticky='ew', padx=10, pady=5) self.CS3 = Colorscale(self.sfr, value='hex', mousewheel=1, gradient=('green', 'yellow'), command=lambda e: self.B7.config(fg=e)) self.CS3.grid(row=21, columnspan=5, sticky='ew', padx=10) self.CS4 = Colorscale(self.sfr, value='hex', mousewheel=1, gradient=('pink', 'purple'), command=lambda e: self.B7.config(overforeground=e)) self.CS4.grid(row=22, columnspan=5, sticky='ew', padx=10, pady=5) # ------------ Random button styling ------------ self.L11 = tk.Label(self.sfr, text='5. Button Styling', bg=self.main_color, font=('', 15, 'bold')) self.L11.grid(row=23, column=0, columnspan=5, sticky='sew', pady=(50, 0)) self.L12 = tk.Label(self.sfr, text="Press the button to ramdomise the style of the button.", bg=self.main_color, font=('', 10)) self.L12.grid(row=24, column=0, columnspan=5, sticky='new') self.B10 = Button(self.sfr, text='Button', borderless=1) self.B10.grid(row=25, columnspan=5, pady=20) self.B11 = Button(self.sfr, text='Change Style', borderless=1, fg='#21618C', activebackground=('#B3B6B7', '#58D68D'), command=self.change_button_style) self.B11.grid(row=26, columnspan=5, ipady=5) self.button_clicks = 1 self.Text1 = tk.Text(self.sfr, background=self.main_color, highlightthickness=0, relief='sunken', height=20, bd=2, padx=10) self.Text1.grid(row=27, columnspan=5, pady=20, padx=20) self.sfr._avoid_mousewheel( (self.Text1, self.CS1, self.CS2, self.CS3, self.CS4)) self.change_button_style() self.update_idletasks() def change_active_color(self, num): hexcode = askcolor()[1] if num == 1: self.Om1_b['bg'] = self.Om1_b['text'] = hexcode self.Om1_b['fg'] = check_light_dark(hexcode) else: self.Om2_b['bg'] = self.Om2_b['text'] = hexcode self.Om2_b['fg'] = check_light_dark(hexcode) self.B1['activebackground'] = (self.Om1_b['bg'], self.Om2_b['bg']) def change_borderless_state(self): if self.var1.get(): self.B5['borderless'] = 1 self.B6['borderless'] = 1 else: self.B5['borderless'] = 0 self.B6['borderless'] = 0 def change_button_style(self): cnf = dict( foreground=get_random_colors(), background=get_random_colors(), activebackground=get_random_colors(2), activeforeground=get_random_colors(), overrelief=get_random_relief(), relief=get_random_relief(), highlightthickness=get_random_size(1, 1, 5), borderwidth=get_random_size(1, 1, 5), font=get_random_font(), highlightbackground=get_random_colors(), focuscolor=get_random_colors(), overbackground=get_random_colors(), overforeground=get_random_colors(), ) self.B10.config(**cnf) self.Text1.insert('end', '\n\nBUTTON STYLE %s\n\n' % self.button_clicks) for k, v in cnf.items(): if k == 'font': self.Text1.insert('end', 'font:\n') for i, j in v.config().items(): self.Text1.insert('end', '\t%s\t\t= %s\n' % (i, j)) else: self.Text1.insert('end', '%s\t\t\t= %s\n' % (k, v)) self.Text1.see('end') self.Text1.insert('end', '\n\n'+'-'*40) self.button_clicks += 1 self.sfr['canvas'].yview_moveto('1.0') self.update_idletasks()
def app(): # begin gui global root root = tk.Tk() # root window root.title("Runkeeper") root.geometry("530x300+1300+290") root.configure(bg="#2c6b6f") # greeting labels greeting1 = tk.Label(root, text="Add Data") greeting1.configure(bg="#2c6b6f", fg="white", font=("Open Sans", 18), pady=16) greeting1.grid(row=0, column=1, sticky=tk.N) greeting2 = tk.Label(root, text="Enter info below:") greeting2.configure(bg="#2c6b6f", fg="white", font=("Open Sans", 14), pady=4) greeting2.grid(row=1, column=1) greeting3 = tk.Label(root, text="See Running Statistics") greeting3.configure(bg="#2c6b6f", fg="white", font=("Open Sans", 18), pady=16) greeting3.grid(row=0, column=3, sticky=tk.N) greeting2 = tk.Label(root, text="Analysis options:") greeting2.configure(bg="#2c6b6f", fg="white", font=("Open Sans", 14), pady=4) greeting2.grid(row=1, column=3) # spacer blank1 = tk.Label(root, text="space") blank1.configure(bg="#2c6b6f", fg="#2c6b6f") blank1.grid(row=0, column=2) # status label global status status = tk.Label(root, text="Welcome to Runkeeper!") status.configure(bg="#2c6b6f", fg="white", font=("Open Sans", 14), pady=4) status.grid(row=6, column=1) # item labels labels = [ tk.Label(root, text="Date"), tk.Label(root, text="Distance"), tk.Label(root, text="Duration") ] labels[0].grid(row=2) labels[1].grid(row=3) labels[2].grid(row=4) labels[0].configure(bg="#2c6b6f", fg="white", font=("Open Sans", 14), padx=5, pady=4) labels[1].configure(bg="#2c6b6f", fg="white", font=("Open Sans", 14), padx=5, pady=4) labels[2].configure(bg="#2c6b6f", fg="white", font=("Open Sans", 14), padx=5, pady=4) # entry boxes global e1, e2, e3 e1 = tk.Entry(root) e2 = tk.Entry(root) e3 = tk.Entry(root) e1.insert(0, "10/21/21") e2.insert(0, "3.52") e3.insert(0, "22:17") e1.configure(fg="#808080") e2.configure(fg="#808080") e3.configure(fg="#808080") e1.grid(row=2, column=1) e2.grid(row=3, column=1) e3.grid(row=4, column=1) e1.bind('<FocusIn>', entry_click1) e2.bind('<FocusIn>', entry_click2) e3.bind('<FocusIn>', entry_click3) # submit button submitButton = Button(root, text='Submit', command=submit, borderless=1) submitButton.configure(pady=4, bg="white", fg="black", font=("Open Sans", 14)) submitButton.grid(row=5, column=1, pady=4) # total distance button submitButton = Button(root, text='Total Distance', command=grab_dist, borderless=1) submitButton.configure(pady=4, bg="white", fg="black", font=("Open Sans", 14)) submitButton.grid(row=2, column=3) # average pace button submitButton = Button(root, text='Average Pace', command=grab_avgpace, borderless=1) submitButton.configure(pady=4, bg="white", fg="black", font=("Open Sans", 14)) submitButton.grid(row=3, column=3) # total time button submitButton = Button(root, text='Total Time', command=grab_totaltime, borderless=1) submitButton.configure(pady=4, bg="white", fg="black", font=("Open Sans", 14)) submitButton.grid(row=4, column=3) # data analysis text stats_greeting = tk.Label(root, text="Stats:") stats_greeting.configure(bg="#2c6b6f", fg="white", font=("Open Sans", 14)) stats_greeting.grid(row=5, column=3, pady=8) global stats_text stats_text = tk.Label( root, text="Press a button to view \nyour running statistics.") stats_text.configure(bg="#2c6b6f", fg="white", font=("Open Sans", 14)) stats_text.grid(row=6, column=3, pady=8) # keep running until window closed root.mainloop() # keep running until window closed
class GoGUIPlayer(): ## Decorators def valid_stone(func): def wrapper(*args, **kwargs): if not args[1] or not isinstance(args[1], StoneEnum): raise Exception("GPB: Invalid parameter, bad stone passed.") return func(*args, **kwargs) return wrapper def protocol_registered(func): def wrapper(*args, **kwargs): if not args[0].name: raise Exception( "GPB: Invalid protocol, player must be registered first.") return func(*args, **kwargs) return wrapper def protocol_stone_set(func): def wrapper(*args, **kwargs): if not args[0].stone_type: raise Exception( "GPB: Invalid protocol, stone must be received first.") return func(*args, **kwargs) return wrapper # Constructor def __init__(self, name=None): self.name = name self.default_name = "Player 1" self.stone_type = None self.color = "" self.move_referee = MoveReferee() self.click = None # Creates self.root window self.root = Tk() self.root.title("Go Game GUI") self.root.resizable(0, 0) self.root.geometry('1000x1000') self.e = Entry(self.root, text="ENTER YOUR NAME HERE", width=20, borderwidth=5, bg="yellow", fg="black") self.e.grid(row=0, column=0, columnspan=7) self.e1 = Entry(self.root, width=20, borderwidth=5, bg="yellow", fg="black") self.e1.grid(row=10, column=0, columnspan=7) self.button_register = Button(self.root, text="Register", command=self.myClick) self.button_move = Button(self.root, text="Make Move", command=self.myMove) self.pass_move = Button(self.root, text="Pass", command=self.Pass) self.button_register.grid(row=0, column=10, columnspan=1) self.button_move.grid(row=10, column=10, columnspan=1) self.pass_move.grid(row=9, column=10, columnspan=1) self.buttons = dict() for x in range(1, BOARD_DIM + 1): for y in range(1, BOARD_DIM + 1): button_num = "{}-{}".format(y, x) self.buttons["{}-{}".format(y, x)] = Button( self.root, text=" ", bg="goldenrod", padx=0.0, pady=20, command=lambda butt=button_num: self.button_click(butt)) self.buttons["{}-{}".format(y, x)].grid(row=x, column=y, columnspan=1) def myClick(self): self.name = self.e.get() hello = "Welcome to Go, " + self.name myLabel = Label(self.root, text=hello) myLabel.grid(row=0, column=0, columnspan=3) self.button_register.configure(state=DISABLED) def button_click(self, button_idx): if self.name: self.click = button_idx self.buttons[self.click].configure(bg=self.color) def myMove(self): if self.name: self.click = self.e1.get() def Pass(self): if self.name: self.click = "pass" def register(self): while not self.name: self.root.update() self.root.update_idletasks() return self.name def receive_stone(self, stone_type): self.stone_type = stone_type if stone_type == StoneEnum.BLACK: self.color = "black" else: self.color = "white" def choose_move(self, boards): if not self.move_referee.valid_history(self.stone_type, boards): return "This history makes no sense!" else: board = boards[0] for x in range(len(board)): for y in range(len(board[0])): if board[x][y].get_raw() == WHITE_STONE: self.buttons["{}-{}".format(x + 1, y + 1)].configure(bg="white") elif board[x][y].get_raw() == BLACK_STONE: self.buttons["{}-{}".format(x + 1, y + 1)].configure(bg="black") else: self.buttons["{}-{}".format( x + 1, y + 1)].configure(bg="goldenrod") while not self.click: self.root.update() self.root.update_idletasks() if self.click == "pass": self.click = None return PASS ret = str_to_point(self.click) #if not self.move_referee.valid_move(stone_type=self.stone_type, point=ret, boards=boards, current_board=board): # raise Exception("Invalid point.") self.click = None return (ret.x, ret.y)
lblgst = Label(root, text="The GST Amount is", bg="#4ca6a6", fg="#FFFFFF") lblgst.grid(row=6, column=0, padx=10, pady=10) # Button To Calculate btnTotal = Button(root, text="Total", borderless=1, relief='sunken', bordercolor='#000000', pady=10, padx=30, bg='#4c79a6', fg='#FFFFFF', width=123, command=calculate) btnTotal.grid(row=3, column=1, padx=10, pady=10) # Button To reset btnReset = Button(root, text="Reset", borderless=1, relief='sunken', bordercolor='#000000', pady=10, padx=30, bg='#4c79a6', fg='#FFFFFF', width=123, command=reset) btnReset.grid(row=7, column=0, padx=10, pady=10)
loginUsernameEntry = Entry(frame, width=20) loginUsernameEntry.grid(row=1, column=1, pady=20) #Password label and entry loginPasswordLable = Label(frame, text="Password", font=( "Arial CE", 14, )) loginPasswordLable.grid(row=2, column=0, pady=10) loginPasswordEntry = Entry(frame, width=20, show="*") loginPasswordEntry.grid(row=2, column=1, pady=10) #Login button login = Button(frame, text="Login", bg="#82E0AA", command=checkLogin) login.grid(row=4, column=0, pady=20) #Global profile variable var_name = StringVar() FnameEntry = StringVar() LnameEntry = StringVar() usernameEntry = StringVar() passwordEntry = StringVar() confirmPasswordEntry = StringVar() securityQuestion1Entry = StringVar() securityQuestion2Entry = StringVar() #signUp button signUp = Button(frame, text="Sign Up", bg="#82E0AA", command=createProfile) signUp.grid(row=4, column=1, pady=20)
def createProfile(): #Lets function know you are using the global defined values global createProfileWindow global proErrorInput #------------------------------------------------------------------------ # If user does not already have an account, then have user create a profile # If profile already exist for the user, allow the user to reset his # password #------------------------------------------------------------------------ profileMaker = Methods.fileSplitter("profileMaker.txt") #Strip all the profile components from the profilemaker profTitle = profileMaker[0] profHeader = profileMaker[1] profFname = profileMaker[2] profLname = profileMaker[3] profUsername = profileMaker[4] profPassword = profileMaker[5] profConfirmPassword = profileMaker[6] profSecurityQuestionHeader = profileMaker[7] profSecurityQuestion1 = profileMaker[8] profSecurityQuestion2 = profileMaker[9] profSubmit = profileMaker[10] proErrorInput = profileMaker[11] createProfileWindow = Toplevel(root) createProfileWindow.title(profTitle) createProfileWindow.geometry("600x600") #Headers h1 = Label(createProfileWindow, text=profHeader) h1.grid(row=0, column=1) h2 = Label(createProfileWindow, text=profSecurityQuestionHeader) h2.grid(row=7, column=1) #Profile component label and entry Fname = Label(createProfileWindow, text=profFname) Fname.grid(row=2, column=0) Lname = Label(createProfileWindow, text=profLname).grid(row=3, column=0) username = Label(createProfileWindow, text=profUsername).grid(row=4, column=0) password = Label(createProfileWindow, text=profPassword).grid(row=5, column=0) confirmPassword = Label(createProfileWindow, text=profConfirmPassword).grid(row=6, column=0) securityQuestion1 = Label(createProfileWindow, text=profSecurityQuestion1).grid(row=8, column=0) securityQuestion2 = Label(createProfileWindow, text=profSecurityQuestion2).grid(row=9, column=0) Entry(createProfileWindow, textvariable=FnameEntry, width=20).grid(row=2, column=1) Entry(createProfileWindow, textvariable=LnameEntry, width=20).grid(row=3, column=1) Entry(createProfileWindow, textvariable=usernameEntry, width=20).grid(row=4, column=1) Entry(createProfileWindow, textvariable=passwordEntry, width=20, show="*").grid(row=5, column=1) Entry(createProfileWindow, textvariable=confirmPasswordEntry, width=20, show="*").grid(row=6, column=1) Entry(createProfileWindow, textvariable=securityQuestion1Entry, width=20).grid(row=8, column=1) Entry(createProfileWindow, textvariable=securityQuestion2Entry, width=20).grid(row=9, column=1) btn = Button(createProfileWindow, text=profSubmit, background="lightgreen", command=submitProfile) btn.grid(row=10, column=1)
def __init__(self, parent, *args, **kwargs): tk.Frame.__init__(self, parent, *args, **kwargs) self.parent = parent # window set up window.resizable(False, False) window.title("Rock Paper Scissors by Adolfo López Herrera") # label header lbl = Label(window, text="\nWelcome to Rock Paper Scissors!", height=2, font=("Helvetica Bold", 28)) lbl.config(anchor=CENTER) lbl.pack(pady=10) # setting window size window.geometry('500x500') # initial output isn't set to anything self.output = tk.StringVar() self.output.set("??") # output label output_lbl = Label(window, textvariable=self.output, font=("Helvetica Bold", 100), height=2) output_lbl.config(anchor=CENTER) output_lbl.pack() # buttons window.grid_columnconfigure(0, weight=1) window.grid_columnconfigure(4, weight=1) btn1 = Button(window, text="✊", bg="black", width=100, height=100, borderless=1, font=("Helvetica", 40), command=self.Rock) btn1.grid(row=0, column=1) btn1.pack(padx=33.3333333333, pady=0, side=tk.LEFT) btn2 = Button(window, text="✋", bg="black", width=100, height=100, borderless=1, font=("Helvetica", 40), command=self.Paper) btn2.grid(row=0, column=2) btn2.pack(padx=33.3333333333, pady=0, side=tk.LEFT) btn3 = Button(window, text="✌️", bg="black", width=100, height=100, borderless=1, font=("Helvetica", 40), command=self.Scissor) btn3.grid(row=0, column=3) btn3.pack(padx=33.3333333333, pady=0, side=tk.LEFT)
def nextQuestion(frame, SelectedBtn, i, j): global answered global Questionframe global ParsedQuestion global ParsedAnswer global questionIndex global button global NextFrame global stageNumber global totalQuestion global stageQuestionCount global timeLabel global seconds # global timeOut # check if the selected field is already played if answered == False and SelectedBtn["text"] == " ": answered = True # Display answer and retreive answer and check if the answer is correct Questionframe = Frame(frame, bg="white") Questionframe.pack(side="top", fill="x") Question = Label(Questionframe, text="Stage: " + str(stageNumber) + " " + ParsedQuestion[questionIndex]) Question.grid(row=0, column=0) #multiple Choice list for user answers multChoices = [ str(ParsedAnswer[questionIndex][0]), str(ParsedAnswer[questionIndex][1]), str(ParsedAnswer[questionIndex][2]), str(ParsedAnswer[questionIndex][3]) ] # identify the correct answer from the list correctAns = ParsedAnswer[questionIndex][0] # Shuffle entire list random.shuffle(multChoices) questionIndex += 1 stageQuestionCount += 1 totalQuestion += 1 multChoice1 = Button( Questionframe, text=multChoices[0], command=lambda: checkAns(Questionframe, SelectedBtn, correctAns, multChoices[0], i, j)) multChoice2 = Button( Questionframe, text=multChoices[1], command=lambda: checkAns(Questionframe, SelectedBtn, correctAns, multChoices[1], i, j)) multChoice3 = Button( Questionframe, text=multChoices[2], command=lambda: checkAns(Questionframe, SelectedBtn, correctAns, multChoices[2], i, j)) multChoice4 = Button( Questionframe, text=multChoices[3], command=lambda: checkAns(Questionframe, SelectedBtn, correctAns, multChoices[3], i, j)) multChoice1.grid(row=1, column=0, sticky=W) multChoice2.grid(row=1, column=1, sticky=W) multChoice3.grid(row=2, column=0, sticky=W) multChoice4.grid(row=2, column=1, sticky=W) # Call timer # seconds = 5 timeOut = False # label displaying time timeLabel = Label(frame, text="30 s", font="Arial 30", width=10) timeLabel.pack() # start the timer timeLabel.after(1000, lambda: refresh_label(frame, SelectedBtn, i, j))
def What2Eat(frame): frame.tkraise() # 跳出新頁面 ''' Step1. ======== 抓取資料 ======== ''' global GenderInput global AgeInput global HeightInput global WeightInput global ActivityInput global TargetWeightInput global DaysInput # try: Gender = GenderInput.get() AgeStr = AgeInput.get() Age = int(AgeStr) HeightStr = HeightInput.get() Height = int(HeightStr) WeightStr = WeightInput.get() Weight = int(WeightStr) Activity = ActivityInput.get() TarWeightStr = TargetWeightInput.get() TarWeight = int(TarWeightStr) TarDaysStr = DaysInput.get() TarDays = int(TarDaysStr) ''' Step2. ======== 開始計算 ======== ''' # ----- 計算BMI BMI = Weight / (Height / 100)**2 # ----- 計算 女生的TDEE if Gender == "生理女": TDEE = 9.6 * Weight + 1.8 * Height - 4.7 * Age + 655 else: # 男生的 TDEE TDEE = 13.7 * Weight + 5.0 * Height - 6.8 * Age + 66 # ----- 計算每日所需熱量 (CalNeeded) # 體重過輕 if BMI < 18.5: if Activity == 1: CalNeeded = 35 * Weight elif Activity == 2: CalNeeded = 40 * Weight else: CalNeeded = 45 * Weight # 體重適中 elif 18.5 < BMI < 24.9: if Activity == "低": CalNeeded = 30 * Weight elif Activity == "中": CalNeeded = 35 * Weight else: CalNeeded = 40 * Weight # 體重過重 else: if Activity == 1: CalNeeded = 22.5 * Weight elif Activity == 2: CalNeeded = 30 * Weight else: CalNeeded = 35 * Weight # ------ 計算如果要減肥應該攝取的熱量 if Weight == TarWeight and TarDays == 0: TarDays = 1 Cal2Eat = CalNeeded - ((Weight - TarWeight) * 7700 / TarDays) if Cal2Eat <= TDEE: # 如果比基礎代謝率還低 CalNeeded = TDEE elif TDEE < Cal2Eat <= CalNeeded: CalNeeded = Cal2Eat # ------ 建議每日攝取營養素 if CalNeeded <= 1200: WholeGrains = 1.5 Protein = 3 Diary = 1.5 Vegetable = 3 Fruit = 2 Oil = 4 elif 1200 < CalNeeded <= 1500: WholeGrains = 2.5 Protein = 4 Diary = 1.5 Vegetable = 3 Fruit = 2 Oil = 4 elif 1500 < CalNeeded <= 1800: WholeGrains = 3 Protein = 5 Diary = 1.5 Vegetable = 3 Fruit = 2 Oil = 5 elif 1800 < CalNeeded <= 2000: WholeGrains = 3 Protein = 6 Diary = 1.5 Vegetable = 4 Fruit = 3 Oil = 6 elif 2000 < CalNeeded <= 2200: WholeGrains = 3.5 Protein = 6 Diary = 1.5 Vegetable = 4 Fruit = 3.5 Oil = 6 elif 2200 < CalNeeded <= 2500: WholeGrains = 4 Protein = 7 Diary = 1.5 Vegetable = 5 Fruit = 4 Oil = 7 else: WholeGrains = 4 Protein = 8 Diary = 2 Vegetable = 5 Fruit = 4 Oil = 8 ''' Step3. ======== 秀出結果(及排列)在第二頁上 ======== ''' BackButton = Button(frame, text="←", command=lambda: SwitchFrame(ThirdFrame, SecondFrame)) BackButton.grid(column=0, row=0, sticky='WS') # 回到上一頁的button HomeButton = Button(frame, text="⌂", command=lambda: SwitchFrame(ThirdFrame, FirstFrame)) HomeButton.grid(column=1, row=0, sticky='WS') # 回到首頁的button # ------ BMI 結果 LabelBMI = Label(ThirdFrame, text='BMI =', fg='#f8872e', bg="#fbf1e9") LabelBMI.grid(column=0, row=3) LabelBMIResult = Label(ThirdFrame, text=round(BMI, 1), fg='#f8872e', bg="#fbf1e9") LabelBMIResult.grid(column=1, row=3) # ------ 再加上過輕或過重的話 if BMI < 18.5: LabelFatorThin = Label(ThirdFrame, text='你現在過輕囉!', bg="#fbf1e9", fg="gray", font=('Helvetica', 10)) LabelFatorThin.grid(column=1, row=4) elif BMI > 24.9: LabelFatorThin = Label(ThirdFrame, text='你現在過重囉!', bg="#fbf1e9", fg="gray", font=('Helvetica', 10)) LabelFatorThin.grid(column=1, row=4) else: LabelFatorThin = Label(ThirdFrame, text='不錯呦~繼續保持!', bg="#fbf1e9", fg="gray", font=('Helvetica', 10)) LabelFatorThin.grid(column=1, row=4) # ------- 每日所需熱量 結果 LabelCal = Label(ThirdFrame, text='你應攝取 =', fg='#f8872e', bg="#fbf1e9") LabelCal.grid(column=0, row=5) LabelCalResult = Label(ThirdFrame, text=str(round(CalNeeded, 1)) + ' 大卡', fg='#f8872e', bg="#fbf1e9") LabelCalResult.grid(column=1, row=5) LabelOpening2 = Label(ThirdFrame, text='這樣吃最健!', font=('Helvetica', 25), fg='#f8872e', bg="#fbf1e9") LabelOpening2.grid(column=0, row=6, columnspan=2, pady=20) # ------- 建議每日攝取營養素 結果 LabelWholeGrains = Label(ThirdFrame, text='全榖雜糧類=', fg='#f8872e', bg="#fbf1e9") LabelWholeGrains.grid(column=0, row=8) LabelWholeGrainsResult = Label(ThirdFrame, text=str(WholeGrains) + ' 碗', fg='#f8872e', bg="#fbf1e9") LabelWholeGrainsResult.grid(column=1, row=8) LabelProtein = Label(ThirdFrame, text='蛋豆魚肉類=', fg='#f8872e', bg="#fbf1e9") LabelProtein.grid(column=0, row=9) LabelProteinResult = Label(ThirdFrame, text=str(Protein) + ' 份', fg='#f8872e', bg="#fbf1e9") LabelProteinResult.grid(column=1, row=9) LabelDiary = Label(ThirdFrame, text='乳品類=', fg='#f8872e', bg="#fbf1e9") LabelDiary.grid(column=0, row=10) LabelDiaryResult = Label(ThirdFrame, text=str(Diary) + ' 杯', fg='#f8872e', bg="#fbf1e9") LabelDiaryResult.grid(column=1, row=10) LabelVegetable = Label(ThirdFrame, text='蔬菜類=', fg='#f8872e', bg="#fbf1e9") LabelVegetable.grid(column=0, row=11) LabelVegetableResult = Label(ThirdFrame, text=str(Vegetable) + ' 份', fg='#f8872e', bg="#fbf1e9") LabelVegetableResult.grid(column=1, row=11) LabelFruit = Label(ThirdFrame, text='水果類=', fg='#f8872e', bg="#fbf1e9") LabelFruit.grid(column=0, row=12) LabelFruitResult = Label(ThirdFrame, text=str(Fruit) + ' 份', fg='#f8872e', bg="#fbf1e9") LabelFruitResult.grid(column=1, row=12) LabelOil = Label(ThirdFrame, text='油脂與堅果種子類=', fg='#f8872e', bg="#fbf1e9") LabelOil.grid(column=0, row=13) LabelOilResult = Label(ThirdFrame, text=str(Oil) + ' 份', fg='#f8872e', bg="#fbf1e9") LabelOilResult.grid(column=1, row=13) # 加入分隔線 ttk.Separator(ThirdFrame, orient=HORIZONTAL).grid(row=14, columnspan=2, sticky="ew", padx=30, pady=30) # -------- 建議每日攝取營養素 定義 LabelNulDef = Label(ThirdFrame, text='*六大營養素代換份量*', fg='#f8872e', bg="#fbf1e9") LabelNulDef.grid(column=0, row=15, columnspan=2, sticky=N + S) LabelWholeGrainsDef = Label(ThirdFrame, text='全榖雜糧類 1 碗:約 160-200 公克', fg='#f8872e', bg="#fbf1e9") LabelWholeGrainsDef.grid(column=0, row=16, columnspan=2, sticky=N + S) LabelProteinDef = Label(ThirdFrame, text='蛋豆魚肉類 1 份:約 37.5 公克', fg='#f8872e', bg="#fbf1e9") LabelProteinDef.grid(column=0, row=17, columnspan=2, sticky=N + S) LabelDiaryDef = Label(ThirdFrame, text='乳品類 1 杯:約 240 毫升', fg='#f8872e', bg="#fbf1e9") LabelDiaryDef.grid(column=0, row=18, columnspan=2, sticky=N + S) LabelVegetableDef = Label(ThirdFrame, text='蔬菜類 1 份:約 100 公克', fg='#f8872e', bg="#fbf1e9") LabelVegetableDef.grid(column=0, row=19, columnspan=2, sticky=N + S) LabelFruitDef = Label(ThirdFrame, text='水果類 1 份:約 80-120 公克', fg='#f8872e', bg="#fbf1e9") LabelFruitDef.grid(column=0, row=20, columnspan=2, sticky=N + S) LabelFruitDef = Label(ThirdFrame, text='油脂與堅果種子類 1 份:約 5 公克', fg='#f8872e', bg="#fbf1e9") LabelFruitDef.grid(column=0, row=21, columnspan=2, sticky=N + S)
l_hhStart.grid(row=3, column=1) l_mmStart.grid(row=3, column=2) l_EndFast.grid(row=6, column=0) l_hhEnd.grid(row=5, column=1) l_mmEnd.grid(row=5, column=2) l_StatusScheduler.grid(row=7, column=0) #Placing Entry Widgets e_AmpereGet.grid(row=1, column=1, pady=5) e_ChargeSpeed.grid(row=2, column=1, pady=5) e_ChargedEnergy.grid(row=3, column=1, pady=5) e_LastOnline.grid(row=4, column=1, pady=5) e_CarStatus.grid(row=5, column=1, pady=5) e_AmpereSet.grid(row=1, column=1, pady=5) t_ResponseSetAmpere.grid(row=2, column=1, pady=5) e_AmpereFastScheduler.grid(row=1, column=1, pady=5) e_AmpereSlowScheduler.grid(row=2, column=1, pady=5) e_hhStart.grid(row=4, column=1, pady=5, padx =5) e_mmStart.grid(row=4, column=2, pady=5) e_hhEnd.grid(row=6, column=1, pady=5, padx=5) e_mmEnd.grid(row=6, column=2, pady=5) e_StatusScheduler.grid(row=7, column=1) #Placing Buttons b_GetStatus.grid(row=8, column=0, columnspan=2, pady=15) b_SetAmpere.grid(row=3, column=0, columnspan=2, pady=15) b_SetScheduler.grid(row=8, column=0, pady=15) b_AbortScheduler.grid(row=8, column=2, pady=15) #Running Program root.mainloop()
def __init__(self): self.root = Tk() self.root.resizable(0, 0) self.teste = {} self.funcionando = False self.contador = 0 self.nome_arquivo = None # incializa como None mas é alterada de acordo com o nome escolhido para o arquivo self.intervalo_tempo = None # incializa como None mas é alterada de acordo com o intervalo escolhido self.current_directory = None # PRIMEIRA PARTE - INFORMAÇÕES INICIAIS app = tk.LabelFrame(self.root, text="Recadinho", borderwidth=4) app.grid() my_label_nome = tk.Label( app, text="Oi, gracinha! Digite o nome do seu print") my_label_nome.grid() my_label_tempo = tk.Label( app, text='Depois escolha o intervalo de tempo (:') my_label_tempo.grid() # SEGUNDA PARTE - ESCOLHA NOME ARQUIVO E INTERVALO DE TEMPO ENTRE OS PRINTS app2 = tk.LabelFrame(self.root, text="Opções", width=250, height=80, borderwidth=4) app2.grid() # NOME PASTA nome_print = tk.Label(app2, text='Nome do Print:') nome_print.grid() self.pasta = tk.Entry(app2, width=50) self.pasta.bind('<Return>', self.arquivo) self.pasta.grid(row=10, column=0) self.mostrar_nome = tk.Label(app2, text='') self.mostrar_nome.grid() # ESCOLHA TEMPO intervalo = tk.Label(app2, text='Intervalo:', justify='left') intervalo.grid() self.tempo = tk.Entry(app2, width=50) self.tempo.bind('<Return>', self.intervalo) self.tempo.grid(row=20, column=0) self.mostrar_tempo = tk.Label(app2, text='') self.mostrar_tempo.grid() escolher_pasta = Button(app2, text='Escolher pasta', bg='blue', fg='white', command=self.submit, borderwidth=3) escolher_pasta.grid(row=25, column=0) # TERCEIRA PARTE - EXECUÇÃO DOS PRINTS (INICIAR E INTERROMPER) app3 = tk.LabelFrame(self.root, text='Execução', height=200, width=200) botao_start = self.criar_botao(app3, "Iniciar!", '#24D34E', 'white', self.start) botao_interromper = self.criar_botao(app3, "Interromper", '#FF0A0A', 'white', self.stop) botao_start.grid(row=35, column=0) botao_interromper.grid(row=40, column=0) app3.grid() app4 = tk.LabelFrame(self.root, text="Status da Execução") self.status = tk.Label(app4, text="Inativo") self.status.grid() self.status_salvar = tk.Label(app4, text='') self.status_salvar.grid() app4.grid() # QUARTA PARTE - APAGAR VARIÁVEIS app5 = tk.LabelFrame(self.root, text='Apagar nome e tempo') botao_apagar = Button( app5, text='Zerar', command=self.apagar, bg='blue', fg='white', ) botao_apagar.grid() self.mostrar_apagar = tk.Label(app5, text='') self.mostrar_apagar.grid() app5.grid() self.root.mainloop()