def createButtonFrame(self): btnFrame = Frame(self.parentFrame, height=30, bg=self.bgColor) btnFrame.pack_propagate(0) btnFrame.pack(side=TOP, fill=X) # 利用frame做出button的黑色边框 # f1 = Frame(btnFrame, highlightbackground="black", highlightthickness=1, bd=0) # f1.pack(side=LEFT) self.runBtn = Button(btnFrame, text="策略运行", relief=FLAT, padx=14, pady=1.5, bg=self.rColor, bd=0, highlightthickness=1, command=self.toMonFrame) self.logBtn = Button(btnFrame, text="运行日志", relief=FLAT, padx=14, pady=1.5, bg=self.lColor, bd=0, highlightthickness=1, command=self.toLogFrame) self.sigBtn = Button(btnFrame, text="信号记录", relief=FLAT, padx=14, pady=1.5, bg=self.sColor, bd=0, highlightthickness=1, command=self.toSigFrame) self.errBtn = Button(btnFrame, text="错误信息", relief=FLAT, padx=14, pady=1.5, bg=self.eColor, bd=0, highlightthickness=1, command=self.toErrFrame) self.runBtn.pack(side=LEFT, expand=NO) self.logBtn.pack(side=LEFT, expand=NO) self.sigBtn.pack(side=LEFT, expand=NO) self.errBtn.pack(side=LEFT, expand=NO) for btn in (self.runBtn, self.logBtn, self.sigBtn, self.errBtn): btn.bind("<Enter>", self.handlerAdaptor(self.onEnter, button=btn)) btn.bind("<Leave>", self.handlerAdaptor(self.onLeave, button=btn))
def init_details(self, window): # Create details button def details(): if helper_frame.hidden: helper_frame.grid() helper_frame.hidden = False self.run_button.grid(row=17) else: helper_frame.grid_remove() helper_frame.hidden = True self.run_button.grid(row=16) details_button = Button(window, text="Details", command=details) details_button.grid(row=15, column=0, sticky="W", padx=PAD_X) # Details Menu helper_frame = Frame(window, width=window.winfo_width() - PAD_X * 2, height=100) helper_frame.pack_propagate(False) self.details_text = Text(helper_frame, width=0, height=0) details_scroll = Scrollbar(helper_frame, command=self.details_text.yview) details_scroll.pack(side=RIGHT, fill="y") self.details_text.configure(yscrollcommand=details_scroll.set) self.details_text.pack(fill="both", expand=True) helper_frame.grid(row=16, column=0, padx=PAD_X, pady=10) helper_frame.grid_remove() helper_frame.hidden = True
class QuantHelper(QuantFrame): def __init__(self, frame, control, language): self.control = control self.language = language self.root_frame = Frame(frame, height=frame['height'], width=frame['width']) self.root_frame.pack_propagate(0) self.root_frame.pack() self.root_tree = None self.api_dict = _all_func_ def create_list(self): right_bar = ttk.Scrollbar(self.root_frame, orient="vertical") right_bar.pack(side=RIGHT, fill=Y) self.root_tree = ttk.Treeview(self.root_frame, show='tree', style="Filter.Treeview", columns=['name'], yscrollcommand=right_bar.set) #默认列表示函数名 self.root_tree.column('0', anchor='w', stretch=True) #函数说明 self.root_tree.column('name', anchor='w', stretch=True) self.insert_api() right_bar.config(command=self.root_tree.yview) self.root_tree.pack(fill=BOTH, expand=YES) self.root_frame.pack(fill=BOTH, expand=YES) #绑定事件 self.root_tree.bind("<ButtonRelease-1>", self.item_click) def insert_api(self): for key, value in self.api_dict.items(): root = self.root_tree.insert("", "end", open=False, text=key) for func in value: self.root_tree.insert(root, 'end', text=func[0], values=(func[1])) def item_click(self, event): select = event.widget.selection() for idx in select: text = self.root_tree.item(idx)['text'] if text in self.api_dict: self.control.set_help_text(text, '') func = globals()['BaseApi'].__dict__.get(text, None) if not func: continue #检查注释 if func.__doc__: funcText = (func.__doc__).lstrip("\n") # 去掉前面空行 self.control.set_help_text(text, funcText) else: self.control.set_help_text(text, 'None')
class QuantHelperText(object): def __init__(self, frame, control, language): self.control = control self.language = language self.parent_frame = frame self.root_frame = Frame(frame, bg=rgb_to_hex(245, 245, 245), height=30) self.help_label = Label(self.root_frame, text="函数说明", bg=rgb_to_hex(245, 245, 245)) self.help_label.pack(side=LEFT) self.root_frame.pack_propagate(0) self.root_frame.pack(fill=X) self.help_text = None def create_text(self): self.help_text = HelpText(self.parent_frame, bd=0) self.help_text.createScrollbar() self.help_text.pack(fill=BOTH, expand=YES) def insert_text(self, funcName, text): #更新函数说明 self.help_label.config(text=funcName) #更新帮助说明 if text: content = text.replace(" ", "") self.help_text.setText(content)
class LabelSpin(Frame): def __init__(self, parent, width=200, height=50, text='spinbox', val=(0, 100), inc=1, font=('Times', 12), ratio=0.5): Frame.__init__(self, parent, width=width, height=height) self.pack_propagate(0) self.f1 = Frame(self, width=int(width * ratio), height=height) self.f1.pack_propagate(0) self.f1.pack(side='left') self.f2 = Frame(self, width=int(width * (1 - ratio)), height=height) self.f2.pack_propagate(0) self.f2.pack(side='left') self.lb = Label(self.f1, text=text, font=font) self.lb.pack(fill='both', expand=True) self.sp = Spinbox(self.f2, font=font, from_=val[0], to=val[1], increment=inc) self.sp.pack(fill='both', expand=True) def get(self): return self.sp.get()
class UiHandler(object): def __init__(self, root): self.__root = root self.__frame = Frame(self.__root) self.__frame.pack_propagate(0) self.__dots = [[None for x in range(7)] for x in range(6)] @property def root(self): return self.__root @property def frame(self): return self.__frame @property def dots(self): return self.__dots def openUi(self): self.root.title("Connect Four") self.frame.grid(row=6, column=7) for x in range(6): for y in range(7): self.dots[x][y] = Button(self.frame, text=str(0)) self.dots[x][y].grid(column=x, row=y, command=self.setColor("red", x, y)) def setColor(self, color, x, y): self.dots[x][y].config(bg=color)
class App: WIDTH = 600 HEIGHT = 800 def __init__(self, root, funcs): self.root = root self.root.title("Plotki Migotki") self.root.geometry("%dx%d%+d%+d" % (App.WIDTH, App.HEIGHT, 0, 0)) self.main_frame = Frame(root, width=App.WIDTH, height=App.HEIGHT) self.main_frame.pack_propagate(0) self.main_frame.pack() self.list_map = funcs self.listbox = Listbox(self.main_frame, height=4, width=15, selectbackground="orange") for ix, (entry, _f) in enumerate(self.list_map): plot_type, title = entry self.listbox.insert(ix, title) if plot_type == BARCHART: self.listbox.itemconfig(ix, bg='green') elif plot_type == BOXPLOT: self.listbox.itemconfig(ix, bg='yellow') elif plot_type == SCATTERPLOT: self.listbox.itemconfig(ix, bg='grey') elif plot_type == HISTOGRAM: self.listbox.itemconfig(ix, bg='magenta') self.listbox.bind("<Double-Button-1>", self.call_back) self.listbox.bind("<Return>", self.call_back) self.listbox.pack(expand=1, fill=tk.BOTH) def call_back(self, event): zones = self.listbox.curselection() assert len(zones) == 1 ix = zones[0] ix, cb = self.list_map[ix] cb()
class LabelEntry(Frame): def __init__(self, parent, width=400, height=50, text='Entry', font=('Times', 12), ratio=0.5): Frame.__init__(self, parent, width=width, height=height) self.pack_propagate(0) self.f1 = Frame(self, width=int(width * ratio), height=height) self.f1.pack_propagate(0) self.f1.pack(side='left') self.f2 = Frame(self, width=int(width * (1 - ratio)), height=height) self.f2.pack_propagate(0) self.f2.pack(side='left') self.lb = Label(self.f1, text=text, font=font) self.lb.pack(fill='both', expand=True) self.et = Entry(self.f2, font=font) self.et.pack(fill='both', expand=True) def get(self): return self.et.get()
def __init__(self, master, settings): self.queue = queue # Set up the GUI Frame.__init__(self, master=None) self.master.title("Single execution result") self.file = settings['file'] # center = Frame(master, padx=0, pady=0, width=300, height=300) btm_frame = Frame(master, pady=0, width=450, height=40) center.pack(fill=BOTH, expand=True) btm_frame.pack(side=BOTTOM, padx=0, pady=0) center.pack_propagate(False) btm_frame.pack_propagate(False) self.tree = self.create_table(center) self.tree.pack(fill=BOTH, expand=True) buttons = Frame(btm_frame, padx=0, pady=0) buttons.pack(side=BOTTOM, padx=0, pady=0) open_explorer = tkinter.Button(buttons, text='Open externally', command=self.open_explorer) open_explorer.grid(row=0, column=0, padx=0, pady=0) go_home = tkinter.Button(buttons, text='New execution', command=self.go_home) go_home.grid(row=0, column=1, padx=0, pady=0)
def make_label(x, y, text,): f = Frame(canvas, height=CELL_SIZE, width=CELL_SIZE) f.pack_propagate(0) f.place(x=x, y=y) label = Label(f, font=("Helvetica", 14), text=text) label.pack(fill=tkinter.BOTH, expand=1) return label
def getFrame(self, y0, y1, x0, x1): frame = Frame(self.root, height=(y1 - y0) * self.size - self.size / 100, width=(x1 - x0) * self.size - self.size / 100) frame.pack_propagate(0) frame.place(x=x0 * self.size, y=y0 * self.size) return frame
def start(self): # Instantiate GUI self.top = Tk() top = self.top top.withdraw() top.attributes('-topmost', True) # Create main display window self._create_window() f = Frame(top) f.pack_propagate(0) # don't shrink f.pack(padx=10, pady=10, fill="both", expand=True) Label(f, text="Choose the application type!").pack() Button(f, text='Server', command=self.server_mode, padx=50) \ .pack(side=LEFT, padx=20, pady=5) Button(f, text='Client', command=self.client_mode, padx=50) \ .pack(side=RIGHT, padx=20, pady=5) # Create ICONS self._create_icons() # Start the window before all windows top.update() top.deiconify() top.after_idle(top.attributes, '-topmost', False) # Runs in a loop top.mainloop()
def create_editor(self): editor_frame = Frame(self.parent_pane, bg=rgb_to_hex(255, 255, 255), width=self.parent_pane['width']) editor_frame.pack_propagate(0) editor_head = Frame(editor_frame, bg=rgb_to_hex(255, 255, 255), height=40) editor_head.pack_propagate(0) self.insertEditorHead(editor_head) editor_head.pack(fill=X) editor_pane = PanedWindow(editor_frame, opaqueresize=True, orient=VERTICAL, sashrelief=GROOVE, sashwidth=4) editor_pane.pack_propagate(0) editor_pane.pack(fill=BOTH, expand=YES) self.editor_text_frame = Frame(editor_pane, background=rgb_to_hex(255, 255, 255)) # self.editor_text_frame.pack_propagate(0) editor_pane.add(self.editor_text_frame) self.insert_editor_text("") self.parent_pane.add(editor_frame, stretch='always')
class LabelMenu(Frame): def __init__(self, parent, width=400, height=50, text="Menu", val={"item#1":1, "item#2":2}, font=('Times', 12), ratio=0.5): Frame.__init__(self, parent, width=width, height=height) self.pack_propagate(0) self.f1 = Frame(self, width=int(width*ratio), height=height) self.f1.pack_propagate(0) self.f1.pack(side='left') self.f2 = Frame(self, width=int(width*(1-ratio)), height=height) self.f2.pack_propagate(0) self.f2.pack(side='left') self.lb = Label(self.f1, text=text, font=font) self.lb.pack(fill='both', expand=True) self.dic = {str(i):val[i] for i in val} self.opt = [i for i in self.dic] self.var = StringVar(self) self.var.set(self.opt[0]) print(self.opt) self.mn = OptionMenu(self.f2, self.var, *self.opt) self.mn.pack(fill='both', expand=True) def get(self): return self.dic[self.var.get()]
def initialize_board(self): self.root = Tk() self.customFont = font.Font(root=self.root, size=20) self.grid = [] for i in range(self.board.board_size): self.grid.append([]) for j in range(self.board.board_size): value = self.board.tiles[i][j].value w = Frame(self.root, width=100, height=100, borderwidth=2, relief="solid") w.pack_propagate(0) label = Label(w, text=str(value), font=self.customFont, background=self.get_background(value)) label.place(anchor='center', relx=50, rely=50) label.pack(expand=True, fill='both') w.grid(column=j, row=i) self.grid[i].append(label) self.score_label = Label(self.root, text="score: 0", font=self.customFont) self.score_label.pack() self.score_label.grid(column=self.board.board_size, row=self.board.board_size) self.root.bind("<Left>", self.leftPressed) self.root.bind("<Right>", self.rightPressed) self.root.bind("<Up>", self.upPressed) self.root.bind("<Down>", self.downPressed)
def show_keys(self, target_frame): if len(self.settings.keys): target_frame.config(background='BLACK') Label(target_frame, text='№', width=3).grid(row=0, column=0) Label(target_frame, text='API key', width=30).grid(row=0, column=1) Label(target_frame, text="Compression count", width=15).grid(row=0, column=2) Label(target_frame, text="Action", width=11).grid(row=0, column=3) i = 1 for key in self.settings.keys: target_frame.rowconfigure(i, pad=1) Label(target_frame, text=i, width=3, height=2).grid(row=i, column=0) Label(target_frame, text=key, width=30, height=2).grid(row=i, column=1) Label(target_frame, text=self.settings.keys[key], width=15, height=2).grid(row=i, column=2) button_frame = Frame(target_frame, width=83, height=36) button_frame.pack_propagate(0) button_frame.grid(row=i, column=3) Button(button_frame, text='Edit', background='#888', foreground='#000', width=4, height=1, bd=1, command=lambda arg=key: self.edit_key( arg, target_frame)).pack(pady=5, side='left') Button(button_frame, text='Delete', background='#888', foreground='#000', width=6, height=1, bd=1, command=lambda arg=key: self.delete_key( arg, target_frame)).pack(pady=5, side='left') i += 1 else: target_frame.config(background='') Label(target_frame, text='Please add your TinyPNG API key', font='arial 15').pack(fill='x', padx=70, pady=4) Button(target_frame, text='Get API key', background='#888', foreground='#000', padx='2', pady='0', width='10', font='arial 15', command=lambda: webbrowser.open_new_tab( 'https://tinypng.com/developers')).pack()
def __init__(self, *args, **kwargs): BasePage.__init__(self, *args, **kwargs) main_frame = Frame(self, padx=5, pady=15) main_frame.pack(side="top", fill="both", expand=True) input_frame = Frame(main_frame, padx=15) input_frame.pack(side="left", fill="both", expand=True) self.course_var = StringVar(main_frame) self.professor_var = StringVar(main_frame) self.classroom_var = StringVar(main_frame) self.restriction_var = StringVar(main_frame) for s, v in [("Courses", self.course_var), ("Professors", self.professor_var), ("Classrooms", self.classroom_var), ("Restrictions", self.restriction_var)]: f, _, _ = BasePage.get_labeled_input_field(input_frame, "%s File" % s, "Entry", l_side="left", i_side="left", f_pady=8, i_padx=15, width=50, textvariable=v, required=True) i = PhotoImage( Image.open("./resources/folder.png").resize((30, 30), Image.ANTIALIAS)) btn = Button(f, image=i, command=partial(self.select_file, v)) btn.image = i btn.pack(side="left") generation_frame = Frame(main_frame) generation_frame.pack_propagate(0) generation_frame.config(height=100, width=200) generation_frame.pack(side="left", fill="both", expand=True) Button(generation_frame, text="Generate a random schedule!", command=self.do_generation).pack(side="top", expand=True) self.status_message_var = StringVar(generation_frame) self.status_message_label = Label(generation_frame, textvariable=self.status_message_var, wraplength=200) self.status_message_label.pack(side="top", fill="both", expand=True) self.clear_status_message() self.gen_urls = None self.gen_mutex = Lock() self.keep_gen_thread_alive = True self.gen_thread = Thread(target=self._do_generation_requests) self.gen_thread.start()
def main(): tk = Tk() tk.title('SFA-Cast') # Taskbar / Menu menu = Menu(tk) tk.config(menu=menu) # File > Exit file = Menu(menu) # File - Exit file.add_command(label="Exit", command=tk.destroy) menu.add_cascade(label="File", menu=file) # Edit > Change Screenshot Location > Desktop / Documents / Pictures edit = Menu(menu) # Change Screenshot path location edit.add_command(label="Desktop", command=lambda *args: makepath("~/Desktop")) edit.add_command(label="Documents", command=lambda *args: makepath("~/Documents")) edit.add_command(label="Pictures", command=lambda *args: makepath("~/Pictures")) menu.add_cascade(label="Change Screenshot Location", menu=edit) # Help > Info / Screenshot Help helper = Menu(menu) # Helper txt file open helper.add_command(label="Info", command=readme) helper.add_command(label="Screenshot Help", command=readme2) menu.add_cascade(label="Help", menu=helper) # Label Logo # Label = Label(tk, text = 'SFA-Cast', font =('Arial Black',40), # bg = 'purple4', fg = 'white') # Label.pack(pady=10,padx=10) # Logo added frame = Frame(tk, width=600, height=400, background='white') frame.pack_propagate(0) frame.pack() # Logo that we created img = PhotoImage(file='sfacast.png') pic = Label(frame, image=img) pic.pack() # Buttons # Run Button runButton = Button(tk, text='START', width=20, font=('Arial', 26), fg='purple4', command=start_cast) # Start button runButton.pack() # Screenshot Library Button picButton = Button(tk, text='SCREENSHOT LIBRARY', font=('Arial', 26), width=20, fg='purple4', command=opendir) # Take screenshots button picButton.pack() # Exit Button exitButton = Button(tk, text='EXIT', width=20, font=('Arial', 26), fg='purple4', command=quit) # Exit button exitButton.pack() tk.mainloop() mainloop()
class QuantEditorHead(object): def __init__(self, frame, control, language): self.control = control self.language = language self.head_frame = Frame(frame, bg=rgb_to_hex(245, 245, 245), height=30) Label(self.head_frame, bg=rgb_to_hex(245, 245, 245), text=self.language.get_text(1)).pack(side=LEFT) self.head_frame.pack_propagate(0) self.head_frame.pack(fill=X)
def body(self): info_frame = Frame(self, width=self.frame_width, height=self.frame_height) info_frame.pack_propagate(False) Label(info_frame, text="Generation done!", anchor=W).pack(side=LEFT, anchor=CENTER) info_frame.pack(side=TOP) self._body_pack_checker = True
def make_button(self, func, text, x, y, image=None): cur_frame = Frame(self.main_frame, width=70, height=32) cur_frame.grid(row=y, column=x) cur_frame.pack_propagate(False) if image is None: Button(cur_frame, text=text, width=70, command=func).pack() else: Button(cur_frame, image=image, command=func).pack() return cur_frame
def __init__(self, master, queue, endCommand, settings): self.queue = queue # Set up the GUI Frame.__init__(self, master=None) self.master.title("Optimizer execution") self.file = settings['file'] self.image_path = os.path.join('outputs', os.path.splitext(self.file)[0] + '.png') self.max_eval = settings['max_eval'] self.metric = settings['sim_metric'] # center = Frame(master, padx=0, pady=0, width=760, height=300) btm_frame = Frame(master, pady=0, width=450, height=40) center.pack(fill=BOTH, expand=True) btm_frame.pack(side=BOTTOM, padx=0, pady=0) center.grid_propagate(False) btm_frame.pack_propagate(False) # create empty figure and draw self.canvas = Canvas(center, width=450, height=300) self.canvas.grid(row=0, column=0, sticky='W') # create figure and load self.create_figure() image = Image.open(self.image_path) image = image.resize((450, 300), Image.ANTIALIAS) self.img = ImageTk.PhotoImage(image) self.image_on_canvas = self.canvas.create_image(0, 0, anchor='nw', image=self.img) self.canvas.update() table_frame = Frame(center, padx=0, pady=0, width=310, height=300) table_frame.grid(row=0, column=1, sticky='W') self.tree = self.create_table(table_frame) self.tree.pack(side=TOP, padx=0, pady=0) buttons = Frame(table_frame, padx=0, pady=0) buttons.pack(side=BOTTOM, padx=0, pady=0) open_explorer = tkinter.Button(buttons, text='Open externally', command=self.open_explorer) open_explorer.grid(row=0, column=0, padx=0, pady=0) go_home = tkinter.Button(buttons, text='New execution', command=self.go_home) go_home.grid(row=0, column=1, padx=0, pady=0) self.progress = ttk.Progressbar(btm_frame, orient=HORIZONTAL, length=760, mode='determinate') self.progress.pack(side=BOTTOM, padx=0, pady=0) self.update_bar()
def __init__(self, platform, gradient, *args, **kwargs): self.gradient = gradient self.step_size = 3 self.gradient_type = ['linear', 'radial', 'square'] self.current_fill = 0 self.grads = [] self.platform = platform if self.platform == 'Pythonista': ui.View.__init__(self, *args, **kwargs) self.next_button = ui.Button(frame= \ (330, 360, 30, 60), title = 'Next') self.next_button.background_color = (0.4, 0.4, 0.4) self.next_button.action = self.next_fill self.next_button.height = 30 self.next_button.width = 60 self.next_button.tint_color = 'white' self.next_button.font = ('<system>', 12) self.add_subview(self.next_button) elif self.platform == 'Kivy': from kivy.uix.floatlayout import FloatLayout from kivy.uix.button import Button self.root = FloatLayout() self.frame = kwargs['frame'] self.next_button = Button(text='NEXT', size_hint_y=None, size_hint_x=None, height=30, width=60, font_size=12, pos=(330, 10), on_press=self.next_fill) self.root.add_widget(self.next_button) elif self.platform == 'Tk': from tkinter import Tk from tkinter import Canvas from tkinter import Frame from tkinter import Label from tkinter import NW self.master = Tk() self.root = Canvas(self.master, width=kwargs['frame'][2], \ height=kwargs['frame'][3]) self.root.pack() self.frame = kwargs['frame'] contour = Frame(self.master, height=30, width=60) contour.pack_propagate(0) # don't shrink label = Label(contour, text='NEXT', fg='white', bg='#585858', \ height=30, width=60) label.bind("<Button-1>", self.tk_button_down) label.bind("<ButtonRelease-1>", self.tk_button_up) label.pack() label.config(font=('TkDefaultFont', 12), padx=0, pady=0) contour.place(x=330, y=360, anchor=NW)
def __init__(self, master, poser: Poser, torch_device: torch.device): super().__init__() self.master = master self.poser = poser self.torch_device = torch_device self.master.title("Manual Poser") source_image_frame = Frame(self.master, width=256, height=256) source_image_frame.pack_propagate(0) source_image_frame.pack(side=LEFT) self.source_image_label = Label(source_image_frame, text="Nothing yet!") self.source_image_label.pack(fill=BOTH, expand=True) control_frame = Frame(self.master, borderwidth=2, relief=GROOVE) control_frame.pack(side=LEFT, fill='y') self.param_sliders = [] for param in self.poser.pose_parameters(): slider = Scale(control_frame, from_=param.lower_bound, to=param.upper_bound, length=256, resolution=0.001, orient=HORIZONTAL) slider.set(param.default_value) slider.pack(fill='x') self.param_sliders.append(slider) label = Label(control_frame, text=param.display_name) label.pack() posed_image_frame = Frame(self.master, width=256, height=256) posed_image_frame.pack_propagate(0) posed_image_frame.pack(side=LEFT) self.posed_image_label = Label(posed_image_frame, text="Nothing yet!") self.posed_image_label.pack(fill=BOTH, expand=True) self.load_source_image_button = Button(control_frame, text="Load Image ...", relief=GROOVE, command=self.load_image) self.load_source_image_button.pack(fill='x') self.pose_size = len(self.poser.pose_parameters()) self.source_image = None self.posed_image = None self.current_pose = None self.last_pose = None self.needs_update = False self.master.after(1000 // 30, self.update_image)
def handle_click(event): frame = Frame(master=root, height=400, width=400) frame.pack_propagate(0) # don't shrink x = event.x // 31 y = event.y // 31 #print(x,y) if gboard[y][x] == -1: gboard[y][x] = -2 display_board(gboard, canvas) canvas.unbind("<Button-1>") #print("You Lose") label = Label(master=root, text="You Lost!!\nBetter Luck Next Year! :( ", font=("Arial", 40)) label.pack(side="bottom") elapsed_time = int(time.time() - start_time) label2 = Label(master=root, text=(elapsed_time), font=("Arial", 20)) label2.pack(side="bottom") button = Button(master=frame, text="Cya Loser!", command=root.destroy) button.pack(side="bottom") frame.pack() else: uncover_board(gboard, x, y) display_board(gboard, canvas) if check_won(gboard) == True: canvas.unbind("<Button-1>") label = Label( master=root, text= "You're A Winner\n Hope You Enjoyed SHAPE 2019 :) ", font=("Arial ", 40)) label.pack(side="top") button1 = Button(master=frame, text="Bye Winner!", command=root.destroy) button1.pack(side="bottom") elapsed_time = int(time.time() - start_time) label3 = Label(master=root, text=(elapsed_time), font=("Arial", 20)) label3.pack(side="bottom") frame.pack() #print("You won!") canvas.unbind("<Button-1>")
def add_main_settings(self): buttonsFrame = Frame(self.main_frame, padx=5, pady=5, height=60) buttonsFrame.pack_propagate(0) generateButton = ttk.Button(buttonsFrame, text="Generate ROM", command=self.generate_rom, width=10) generateButton.pack(side=LEFT, fill=BOTH, expand=True) self.copySettings = ttk.Button(buttonsFrame, text="Copy Settings to Clipboard", command=self.copy_to_clipboard, width=20) self.copySettings.pack(side=LEFT, fill=BOTH, expand=True) self.pasteSettings = ttk.Button(buttonsFrame, text="Paste Settings from Clipboard", command=self.read_from_clipboard, width=30) self.pasteSettings.pack(side=LEFT, fill=BOTH, expand=True) buttonsFrame.pack(fill=X, anchor="center", side=BOTTOM)
def make_content_widget(self, data, height, width): if data.content: frame = Frame(self.canvas, height=height - 2, width=width - 2, bg=self.get_fill_color_for_node(data)) frame.pack() frame.pack_propagate(False) self.make_text_widget(data, frame, height - 2) return frame
def show(self, tabs): self.parent = tabs root = Frame(tabs, width=self.width, height=self.height-50) root.pack_propagate(0) self.make_controls(root) self.element = root self.make_messages_box(root) self.__output_messages(self.topicName)
def _criar_label(self, label): ''' Criar label. ''' frame = Frame(self, width=150, height=50) label = Label(frame, text=label, anchor='center', style='Slider.TLabel') label.bind('<Double-Button-1>', lambda e: self._spinbox.focus()) label.pack(fill='both', expand=True, padx=5, pady=5) frame.pack(side='left') frame.pack_propagate(False)
class NavBar: def __init__(self, masterFrame: Frame) -> None: self.nextClickFuncs: List[Callable] = [] self.previousClickFuncs: List[Callable] = [] self.masterFrame = masterFrame self.masterFrame["bg"] = "black" self.nextButtonFrame = Frame(self.masterFrame) self.nextButtonFrame.pack_propagate(0) self.nextButtonFrame.grid(row=0, column=1, sticky=NSEW, padx=0, pady=0) self.nextButton = Button(self.nextButtonFrame, text="Next", command=self.nextClicked) self.nextButton.pack(fill=BOTH, expand=1) # self.nextButton.grid(row=0, column=1, sticky=NSEW) self.previousButtonFrame = Frame(self.masterFrame) self.previousButtonFrame.pack_propagate(0) self.previousButtonFrame.grid(row=0, column=0, sticky=NSEW, padx=0, pady=0) self.previousButton = Button(self.previousButtonFrame, text="Previous", command=self.previousClicked) self.previousButton.pack(fill=BOTH, expand=1) # self.previousButton.grid(row=0, column=0, sticky=NSEW) def resize(self, newSize: PhSize) -> None: self.masterFrame["width"] = newSize.width self.masterFrame["height"] = newSize.height self.nextButtonFrame["width"] = floor(newSize.width / 2) self.previousButtonFrame["width"] = floor(newSize.width / 2) self.nextButtonFrame["height"] = newSize.height self.previousButtonFrame["height"] = newSize.height print("NavBar", "Width:", newSize.width, "Height:", newSize.height) def nextClicked(self) -> None: for func in self.nextClickFuncs: func() def previousClicked(self) -> None: for func in self.previousClickFuncs: func() def Remove(self) -> None: self.masterFrame.destroy()
def additems(i, doreturn=False, bgcolor="#555"): returnable = [] for item in i: global totalitems totalitems += 1 ff = Frame(f, bg=bgcolor) item.body = item.author.name + ' || ' + item.fullname + '\n' + item.body item.body = str(totalitems) + '\n' + item.body ibody = item.body.replace('\n\n', '\n') ifinal = '' for paragraph in ibody.split('\n'): ifinal += '\n'.join(textwrap.wrap(paragraph)) ifinal += '\n' item.body = ifinal ww = 680 wh = 10 wx = 20 wy = 20 #print(ww, wh, wx, wy) ff.ww = ww ff.wh = wh ff.wx = wx ff.wy = wy ff.body = item.body ff.sourceitem = item ff.configure(width=ww, height=wh) ff.place(x=wx, y=wy) ff.bind("<B1-Motion>", framedrag) ff.bind("<ButtonRelease-1>", resetdrag) ff.pack_propagate(0) l = Label(ff, text=item.body, bg="#777") l.place(x=10,y=10) rt = Text(ff, width= 15, height= (len(ifinal.split('\n'))) - 2) rt.sourceitem = item rt.place(x=400,y=10) rb = Button(ff, text="Reply", command= lambda rep=rt: reply(rep)) rb.place(x=400,y=wh-20) ff.rt = rt ff.rb = rb if not doreturn: widgets.append(ff) else: returnable.append(ff) if doreturn: return returnable else: refreshscreen()
class Xls2kml(object): ''' Interface builted in Tkinter() ''' def __init__(self): ''' None -> None Builds the Tkinter window and all his elements. ''' # variables ---------------------------------------------------- # log file open("erros.log", "w").close() # to open and clean the logfile logging.basicConfig(level=logging.DEBUG, filename='erros.log') sys.stderr = LogFile('stderr') # Redirect stderr self.original_working_dir = os.getcwd() # original working dir self.master = Tk() # Tk() object self.master.title('EXCEL to KMZ Transformer - ver. 1.6') # window name icons = os.getcwd() + os.sep + "icons" + os.sep # path to icons foto_folder = os.getcwd() + os.sep + "fotos" # path to fotos icon = icons + "compass.ico" self.master.iconbitmap(icon) # window icon self.master.resizable(width=FALSE, height=FALSE) self.master.geometry("548x314") self.file_name = "" # the name of the EXEL file self.last_dir = "C:/" # image to decorate the window self.img = ImageTk.PhotoImage(Image.open(icons + "excel-kmz.jpg")) # to use in frame, message, labels and buttons ----------------- self.message = StringVar() self.message.set("\nSelecciona um ficheiro EXCEL") bg = "gray25" bg1 = "dark orange" fc = "white smoke" font = ("Helvetica", "8", "bold") text0 = " ----- " # " ------------------------------------------ " text1 = " Boris & Vladimir Software " text = text0 + text1 + text0 # Menu --------------------------------------------------------- self.menu = Menu(self.master) self.master.config(menu=self.menu) filemenu = Menu(self.menu) self.menu.add_cascade(label="Ficheiro", menu=filemenu) filemenu.add_command(label="Sair", command=self.__callback_3) filemenu.add_command(label='Pasta Fotos', command=lambda: (self.__open_folder(foto_folder))) # --------------------- NOVO ----------------------------------- self.openGE = BooleanVar() # não esquecer de importar BooleanVar self.openGE.set(False) optionsmenu = Menu(self.menu) self.menu.add_cascade(label="Opções", menu=optionsmenu) optionsmenu.add_checkbutton(label="Não abrir o Google Earth", onvalue=True, offvalue=False, variable=self.openGE) docsmenu = Menu(self.menu) docs = ["docs\manual.pdf", "docs\icons.pdf", "docs\colors.pdf", "docs\GPS.xlsx", "docs\GPS.kmz", "docs\Celulas.xlsx", "docs\Celulas.kmz", "docs\Foto.xlsx", "docs\Foto.kmz", "docs\Quadrado.xls", "docs\Quadrado.kmz"] self.menu.add_cascade(label="Documentação", menu=docsmenu) docsmenu.add_command(label="Manual", command=lambda: (self.__open_file(docs[0]))) docsmenu.add_command(label="Ícones", command=lambda: (self.__open_file(docs[1]))) docsmenu.add_command(label="Cores", command=lambda: (self.__open_file(docs[2]))) exemplemenu = Menu(docsmenu) docsmenu.add_cascade(label="Exemplos", menu=exemplemenu) gpsmenu = Menu(exemplemenu) exemplemenu.add_cascade(label="Trajetos", menu=gpsmenu) gpsmenu.add_command(label="Excel", command=lambda: (self.__open_file(docs[3]))) gpsmenu.add_command(label="Google Earth", command=lambda: (self.__open_file(docs[4]))) cellmenu = Menu(exemplemenu) exemplemenu.add_cascade(label="Células Telefónicas", menu=cellmenu) cellmenu.add_command(label="Excel", command=lambda: (self.__open_file(docs[5]))) cellmenu.add_command(label="Google Earth", command=lambda: (self.__open_file(docs[6]))) fotomenu = Menu(exemplemenu) exemplemenu.add_cascade(label="Fotos", menu=fotomenu) fotomenu.add_command(label="Excel", command=lambda: (self.__open_file(docs[7]))) fotomenu.add_command(label="Google Earth", command=lambda: (self.__open_file(docs[8]))) squaremenu = Menu(exemplemenu) exemplemenu.add_cascade(label="Quadrado", menu=squaremenu) squaremenu.add_command(label="Excel", command=lambda: (self.__open_file(docs[9]))) squaremenu.add_command(label="Google Earth", command=lambda: (self.__open_file(docs[10]))) helpmenu = Menu(self.menu) self.menu.add_cascade(label='Ajuda', menu=helpmenu) helpmenu.add_command(label="Sobre", command=self.__about) helpmenu.add_command(label="Ver erros", command=lambda: (self.__open_file("erros.log"))) # Frame to suport butons, labels and separators ---------------- self.f = Frame(self.master, bg=bg) self.f.pack_propagate(0) # don't shrink self.f.pack(side=BOTTOM, padx=0, pady=0) # Message and Labels ------------------------------------------- self.l1 = Message( self.f, bg=bg1, bd=5, fg=bg, textvariable=self.message, font=("Helvetica", "13", "bold italic"), width=500).grid( row=0, columnspan=6, sticky=EW, padx=5, pady=5) self.l2 = Label( self.f, image=self.img, fg=bg ).grid(row=1, columnspan=6, padx=5, pady=2) self.l6 = Label( self.f, text=text, font=("Helvetica", "11", "bold"), bg=bg, fg=bg1 ).grid(row=3, column=2, columnspan=3, sticky=EW, pady=5) # Buttons ------------------------------------------------------ self.b0 = Button( self.f, text="Abrir EXCEL...", command=self.__callback, width=10, bg="forest green", fg=fc, font=font ).grid(row=3, column=0, padx=5, sticky=W) self.b1 = Button( self.f, text="Gravar KMZ", command=self.__callback_2, width=10, bg="DodgerBlue4", fg=fc, font=font ).grid(row=3, column=1, sticky=W) self.b2 = Button( self.f, text="Sair", command=self.__callback_3, width=10, bg="orange red", fg=fc, font=font ).grid(row=3, column=5, sticky=E, padx=5) # Separator ---------------------------------------------------- # self.s = ttk.Separator(self.f, orient=HORIZONTAL).grid( # row=4, columnspan=5, sticky=EW, padx=5, pady=5) # Progressbar -------------------------------------------------- # self.pb = Canvas(self.f, width=260, height=10) self.s = ttk.Style() # themes: winnative, clam, alt, default, classic, vista, xpnative self.s.theme_use('winnative') self.s.configure("red.Horizontal.TProgressbar", foreground='green', background='forest green') self.pb = ttk.Progressbar(self.f, orient='horizontal', mode='determinate', style="red.Horizontal.TProgressbar") self.pb.grid(row=2, column=0, columnspan=6, padx=5, pady=5, sticky=EW) # Mainloop ----------------------------------------------------- self.master.mainloop() def __callback(self): # "Abrir EXEL..." button handler ------------ ''' None -> None Opens a new window (filedialog.askopenfilename) to choose the EXCEL file that is necessary to make the KMZ file. ''' title = 'Selecciona um ficheiro Excel' message = 'Ficheiro EXCEL carregado em memória.\nTransforma-o em KMZ!' self.file_name = filedialog.askopenfilename(title=title, initialdir=self.last_dir) self.last_dir = self.file_name[:self.file_name.rfind('/')] if self.file_name[self.file_name.rfind('.')+1:] != 'xls' and \ self.file_name[self.file_name.rfind('.')+1:] != 'xlsx': message = self.file_name + ' não é um ficheiro Excel válido!' self.message.set(message) def __callback_2(self): # "Gravar KMZ" button handler --------------- ''' None -> None Calls the function self.__threat() ''' sleep(1) message = 'Ficheiro EXCEL carregado em memória.\nTransforma-o em KMZ!' if self.message.get() != message: self.message.set("\nEscolhe um ficheiro EXCEL primeiro") self.master.update_idletasks() else: self.message.set("\nA processar...") self.master.update_idletasks() sleep(1) self.__threads() def __callback_3(self): # "Sair" button handler --------------------- ''' None -> None Kills the window ''' self.master.destroy() def __threads(self): ''' None -> MyTread() objects Creates two threads to run at the same time the functions: self.__create_kmz() self.__progressbar() ''' funcs = [self.__create_kmz, self.__progressbar] threads = [] nthreads = list(range(len(funcs))) for i in nthreads: t = MyThread(funcs[i], (), funcs[i].__name__) threads.append(t) for i in nthreads: threads[i].start() def __create_kmz(self): ''' None -> None Calls the exel_to_kml() atribute of the MotherControl() class And when it returns, calls self.__open_Google_Earth() ''' kmz = MotherControl(self.file_name, self.original_working_dir).exel_to_kml() if type(kmz) == str: self.message.set(kmz) self.pb.stop() self.master.update_idletasks else: sleep(2) self.pb.stop() self.master.update_idletasks() self.__open_Google_Earth() def __open_Google_Earth(self): ''' None -> None Opens the maded KMZ file in Google Earth ''' sleep(1) self.master.update_idletasks() if not self.openGE.get(): self.message.set("KMZ gravado com sucesso.\nA abrir o Google Earth...") else: self.message.set("\nKMZ gravado com sucesso.\n") sleep(2) self.master.update_idletasks() path = self.file_name[:self.file_name.rindex('/')] path_1 = self.file_name[self.file_name.rindex('/')+1:self.file_name.rfind('.')] kmzs = [x for x in os.listdir(path) if x[-4:] == '.kmz' and x[:-12] == path_1] kmzs.sort() try: if not self.openGE.get(): os.startfile(path + os.sep + kmzs[-1]) sleep(2) self.message.set("\nSelecciona um ficheiro EXCEL") except: self.message.set("Instale o Google Earth\nhttp://www.google.com/earth/") self.master.update_idletasks() def __progressbar(self, ratio=0): ''' None -> None Starts the progressbar in the window ''' self.pb.start(50) def __about(self): ''' None -> None Associated with the Help Menu. Creates a new window with the "About" information ''' appversion = "1.6" appname = "EXCEL to KML Transformer" copyright = 14 * ' ' + '(c) 2013' + 12 * ' ' + \ 'SDATO - DP - UAF - GNR\n' + 34 * ' '\ + "All Rights Reserved" licence = 18 * ' ' + 'http://opensource.org/licenses/GPL-3.0\n' contactname = "Nuno Venâncio" contactphone = "(00351) 969 564 906" contactemail = "*****@*****.**" message = "Version: " + appversion + 5 * "\n" message0 = "Copyright: " + copyright + "\n" + "Licença: " + licence message1 = contactname + '\n' + contactphone + '\n' + contactemail icons = os.getcwd() + os.sep + "icons" + os.sep # path to icons icon = icons + "compass.ico" tl = Toplevel(self.master) tl.configure(borderwidth=5) tl.title("Sobre...") tl.iconbitmap(icon) tl.resizable(width=FALSE, height=FALSE) f1 = Frame(tl, borderwidth=2, relief=SUNKEN, bg="gray25") f1.pack(side=TOP, expand=TRUE, fill=BOTH) l0 = Label(f1, text=appname, fg="white", bg="gray25", font=('courier', 16, 'bold')) l0.grid(row=0, column=0, sticky=W, padx=10, pady=5) l1 = Label(f1, text=message, justify=CENTER, fg="white", bg="gray25") l1.grid(row=2, column=0, sticky=E, columnspan=3, padx=10, pady=0) l2 = Label(f1, text=message0, justify=LEFT, fg="white", bg="gray25") l2.grid(row=6, column=0, columnspan=2, sticky=W, padx=10, pady=0) l3 = Label(f1, text=message1, justify=CENTER, fg="white", bg="gray25") l3.grid(row=7, column=0, columnspan=2, padx=10, pady=0) button = Button(tl, text="Ok", command=tl.destroy, width=10) button.pack(pady=5) def __open_file(self, doc): try: os.startfile(doc) except: pass # os.system(doc) # não gosto disto mas os.startfile(doc) # faz com que a janela não se desenhe bem def __open_folder(self, folder): os.system('start explorer "' + folder + '"')