def listar_reuniones_periodicas_callback(self, ventana_principal, frame): lista_reuniones = reunion_controller.listar_reuniones_periodicas() frame.destroy() frame = Frame(ventana_principal) frame.grid(row=1, column=2, rowspan=200, columnspan=200) frame.config(width=900) lista = Text(frame) count = 0 for i in lista_reuniones: count += 1 lista.insert(END, "* Detalle: " + i.detalle + "\n") lista.insert(END, "\t" + "Sala en que se realiza: " + i.sala + "\n") lista.insert( END, "\t" + "Fecha registro: " + str(i.fecha_registro) + "\n") lista.insert( END, "\t" + "Agendada para: " + str(i.fecha_realizacion) + "\n") lista.insert(END, "\t" + "Hora inicio: " + str(i.hora_inicio) + "\n") lista.insert( END, "\t" + "Hora finalizacion: " + str(i.hora_finalizacion) + "\n") lista.insert( END, "\t" + "Fecha de finalizacion: " + str(i.fecha_finalizacion) + "\n") lista.insert(END, "\t" + "Frecuencia: " + str(i.frecuencia) + "\n\n") lista.config(width=900, state=DISABLED) lista.grid(row=1, column=2, rowspan=count)
class Test(Tk): def __init__(self): Tk.__init__(self, None) self.frame = Frame(None) self.frame.columnconfigure(0, weight=1) self.frame.rowconfigure(0, weight=1) self.frame.grid(row=0, column=0, sticky=W + E + N + S) fig = Figure() xval = arange(500) / 10. yval = sin(xval) ax1 = fig.add_subplot(111) ax1.plot(xval, yval) self.hbar = Scrollbar(self.frame, orient=HORIZONTAL) self.vbar = Scrollbar(self.frame, orient=VERTICAL) self.canvas = FigureCanvasTkAgg(fig, master=self.frame) self.canvas.get_tk_widget().config(bg='#FFFFFF', scrollregion=(0, 0, 500, 500)) self.canvas.get_tk_widget().config(width=800, height=500) self.canvas.get_tk_widget().config(xscrollcommand=self.hbar.set, yscrollcommand=self.vbar.set) self.canvas.get_tk_widget().grid(row=0, column=0, sticky=W + E + N + S) self.hbar.grid(row=1, column=0, sticky=W + E) self.hbar.config(command=self.canvas.get_tk_widget().xview) self.vbar.grid(row=0, column=1, sticky=N + S) self.vbar.config(command=self.canvas.get_tk_widget().yview) self.frame.config(width=100, height=100) # this has no effect
def __init__(self, command=None): self.topic_list = None outsideFrame = Frame() outsideFrame.config(padx=10, pady=10) outsideFrame.grid(row=1, column=0, sticky="wn") self.frame = LabelFrame(outsideFrame, text="Topics") self.frame.config(font=("Arial", 14), padx=10, pady=10) self.frame.grid(row=0, column=0) self._command = command self.topic_filter_input = Entry(self.frame, width=33) self.topic_filter_input.grid(row=0, column=0, pady=10) self.topic_filter_input.bind("<KeyRelease>", self.filter_topic) treeFrame = Frame(self.frame) treeFrame.grid(row=1, column=0) self.tree = Treeview(treeFrame, style="Custom.Treeview") self.tree.heading('#0', text='Topic') self.tree.pack() self.tree.bind("<ButtonRelease-1>", self.OnClick) self.tree.tag_configure('odd', background='#f9f9f9') self.tree.tag_configure('even', background='#DFDFDF') scroll_bar = Scrollbar(self.frame, orient="vertical", command=self.tree.yview) scroll_bar.grid(row=1, column=1, sticky='nsew') self.tree.configure(yscrollcommand=scroll_bar.set)
def __init__(self, parent, controller): Frame.__init__(self, parent) Frame.config(self, bg=bg) label = Label(self, text='Students Performance Evaluation', font=SUPER_LARGE_FONT, bg=bg, fg='white') label.grid(columnspan=2, pady=10) self.img = ImageTk.PhotoImage(Image.open('graph.png')) panel = Label(self, image=self.img, bg=bg, relief=RIDGE) panel.grid(rowspan=2, padx=25, pady=25) agreement = 'By Clicking on next you hereby \n' \ 'Agree to use our policy\nWe assure you that we won\'t sell out\nyour data. ' \ 'It will only be used to improve this\nsoftware. \n\nEnjoy using this Software!' agmtText = Label(self, text=agreement, bg=bg, font=LARGE_FONT, fg='white', relief=RIDGE) agmtText.grid(row=1, column=1, padx=25, ipadx=20, ipady=50) CloseBtn = ttk.Button(self, text='Exit', command=lambda: exit()) CloseBtn.grid(row=2, column=1, sticky='SE', padx=125, pady=25) NextBtn = ttk.Button( self, text='Next', command=lambda: controller.show_frame(StudentORTeacher)) NextBtn.grid( row=2, column=1, sticky='SE', padx=25, pady=25, )
def sel_tipo_reu_callback(self, ventana, frame, detalle, organizador, rol_organizador, cant_participantes, sala_reunion, estado_reunion, fecha_realizacion, hora_inicio, hora_finalizacion): print("Sala:", sala_reunion) frame.grid_remove() frame.destroy() frame = Frame(ventana) frame.grid(row=1, column=2, rowspan=400, columnspan=400) frame.config(width=900) Label(frame, text="Tipo de reunión:", width=20).grid(row=1, column=2) var = IntVar() var.set(1) var.set( Radiobutton(frame, text="Única", variable=var, value=1).grid(row=1, column=3)) var.set( Radiobutton(frame, text="Periodica", variable=var, value=2).grid(row=1, column=4)) sgte_btn = Button(frame, text="Siguiente", activeforeground="black", width=20, command=lambda: self.agendar_callback( frame, detalle, organizador, rol_organizador, cant_participantes, sala_reunion, estado_reunion, fecha_realizacion, hora_inicio, hora_finalizacion, int(var.get()))) sgte_btn.grid(row=2, column=2)
class update_class : def __init__(self): self.root = Tk() self.root.wm_maxsize(1000, 1000) self.root.wm_minsize(1000, 1000) self.frame1 = Frame(self.root, bg='gray') self.frame1.place(x=0, height=1000, y=0, width=1000) self.frame1.config() self.Welcome_label = Label(self.frame1, text="ADD", font=('Comic Sans MS', 70), bg='gray', fg='white') self.Welcome_label.pack() self.Choice_label = Label(self.frame1, text="Enter batch name - ", font=('Comic Sans MS', 45), bg='gray', fg='white') self.Choice_label.pack(padx=0, pady=80, anchor='n') self.batch_name = StringVar() ##Global self.batch_entry = Entry(self.frame1, bd=16, textvar=self.batch_name) self.batch_entry.pack(anchor='n') self.cont_button = Button(self.frame1, text='Continue', width=16, font=("Comic Sans MS", 16),command = self. add_student) self.cont_button.pack(pady=20) def add_student(self): global Batch_name Batch_name = self.batch_name.get() self.root.destroy() update_stu()
class Example(Frame): def __init__(self): super().__init__() self.initUI() def initUI(self): self.master.title("Color chooser") self.pack(fill=BOTH, expand=1) self.btn = Button(self, text="Choose Color", command=self.onChoose) self.btn.place(x=30, y=30) self.frame = Frame(self, border=1, relief=SUNKEN, width=100, height=100) self.frame.place(x=160, y=30) def onChoose(self): (rgb, hx) = colorchooser.askcolor() self.frame.config(bg=hx)
class firstPage: frame1: Frame def __init__(self): self.root = Tk() self.root.wm_maxsize(1000, 1000) self.root.wm_minsize(1000, 1000) self.frame1 = Frame(self.root, bg='gray') self.frame1.place(x=0, height=1000, y=0, width=1000) self.frame1.config() self.Welcome_label = Label(self.frame1, text="WELCOME", font=('Comic Sans MS', 70), bg='gray', fg='white') self.Welcome_label.pack() self.Choice_label = Label(self.frame1, text="Choose a option - ", font=('Comic Sans MS', 45), bg='gray', fg='white') self.Choice_label.pack(padx=0, pady=80, anchor='n') self.add_button = Button(self.frame1, text='Add a class', width=16, font=("Comic Sans MS", 16), command=self.add) self.add_button.pack(pady=20) self.update_button = Button(self.frame1, text='Add a student', width=16, font=("Comic Sans MS", 16), command=self.update) self.update_button.pack(pady=20) self.att_button = Button(self.frame1, text='Attendance', width=16, font=("Comic Sans MS", 16), command=self.att_b) self.att_button.pack(pady=20) self.gen_button = Button(self.frame1, text='Generate CSV', width=16, font=("Comic Sans MS", 16), command=self.csv_button) self.gen_button.pack(pady=20) self.exit_button = Button(self.frame1, text='Exit', width=16, font=("Comic Sans MS", 16),command=self.exit_b) self.exit_button.pack(pady=20) self.root.mainloop() def att_b(self): self.root.destroy() attendance() def csv_button(self): global count count = 1 self.root.destroy() csv_b() def add(self): self.root.destroy() add_class() def update(self): self.root.destroy() update_class() def exit_b(self): self.root.destroy()
def listar_reuniones_unicas_callback(self, ventana_principal, frame): lista_reuniones = reunion_controller.listar_reuniones_unicas() frame.grid_remove() frame.destroy() frame = Frame(ventana_principal) frame.grid(row=1, column=2, rowspan=200, columnspan=200) frame.config(width=900) self.mostrar_datos(frame, lista_reuniones)
class attendance: def __init__(self): self.root = Tk() self.root.wm_maxsize(1000, 1000) self.root.wm_minsize(1000, 1000) self.frame1 = Frame(self.root, bg='gray') self.frame1.place(x=0, height=1000, y=0, width=1000) self.frame1.config() self.Welcome_label = Label(self.frame1, text="Attendance", font=('Comic Sans MS', 70), bg='gray', fg='white') self.Welcome_label.pack() self.Choice_label = Label(self.frame1, text="Enter batch name - ", font=('Comic Sans MS', 45), bg='gray', fg='white') self.Choice_label.pack(padx=0, pady=80, anchor='n') self.batch_name = StringVar() ##Global self.batch_entry = Entry(self.frame1, bd=16, textvar=self.batch_name) self.batch_entry.pack(anchor='n') ################## self.topic_label = Label(self.frame1, text="Enter topic name - ", font=('Comic Sans MS', 45), bg='gray', fg='white') self.topic_label.pack(padx=0, pady=80, anchor='n') self.topic_name = StringVar() ##Global self.topic_entry = Entry(self.frame1, bd=16, textvar=self.topic_name) self.topic_entry.pack(anchor='n') self.cont_button = Button(self.frame1, text='Continue', width=16, font=("Comic Sans MS", 16),command = self. att_student) self.cont_button.pack(pady=20) def att_student(self): global count global Batch_name global topic_name count = 1 Batch_name = self.batch_name.get() topic_name = self.topic_name.get() + str("".join((str(date.today()).split('-')))) conn = sqlite3.connect("main_database.db") c = conn.cursor() #print('alter table ' + Batch_name + ' add column ' + topic_name + ' text ') c.execute('alter table '+Batch_name+' add column '+topic_name+' text ') conn.commit() self.root.destroy() act()
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 __init__(self, parent, controller): self.file = '' self.SeatNum = StringVar() Frame.__init__(self, parent) Frame.config(self, bg=bg) label = Label(self, text='Student', font=SUPER_LARGE_FONT, bg=bg, fg='white') label.grid(row=0, column=3, pady=10, padx=120) label2 = Label(self, text='', bg=bg) label2.grid(row=1, column=1, pady=25) back = ttk.Button( self, text='<Back', command=lambda: controller.show_frame(StudentORTeacher)) back.grid(row=0, column=0, padx=0, pady=10) SeatNumEntry = ttk.Entry(self, textvariable=self.SeatNum) SeatNumEntry.grid(row=5, column=0, padx=10, pady=10) addFileBtn = ttk.Button( self, text='Add File', command=lambda: TryExcept(partial(self.getFile))) addFileBtn.grid(row=6, column=0) self.fileStatus = Label(self, text='Add a File', bg=bg, fg='white') self.fileStatus.grid(row=5, column=3, padx=100) ExportPDF = ttk.Button(self, text='Export Selected', command=self.Export, width=25) ExportPDF.grid(row=8, column=5, pady=5) SubVSMks = ttk.Button(self, text='Subject VS Marks', width=25) SubVSMks.grid(row=3, column=5, pady=10) AllSem = ttk.Button( self, text='Your Performance VS Class', command=lambda: TryExcept(partial(self.all_sem_performance)), width=25) AllSem.grid(row=4, column=5, pady=10) IndStud = ttk.Button(self, text='Individual Student', command=lambda: TryExcept(partial(self.IndStud)), width=25) IndStud.grid(row=5, column=5) StudentDetail = ttk.Button( self, text='Student Detail', command=lambda: TryExcept(partial(self.StudentDetail)), width=25) StudentDetail.grid(row=6, column=5, pady=10) self.cb = [IntVar(), IntVar()] AllSemRB = Checkbutton(self, text='', variable=self.cb[0], bg=bg) AllSemRB.grid(row=4, column=6, padx=5) IndStudRB = Checkbutton(self, text='', variable=self.cb[1], bg=bg) IndStudRB.grid(row=5, column=6, pady=5, padx=5) self.SeatData = array([])
def game_logo(parent): logo_frame = Frame(parent) logo_frame.config(bg="black") logo = ttk.Label(logo_frame, text="Pong!") logo.config(background="black", foreground="white", font="Verdana 30 bold") logo.pack() return logo_frame
def __init__(self, parent, **options): Frame.__init__(self, parent, **options) self.config(bg='green') pp_label = Label(self) pp_label.config(text='Pairplot Controls') pp_label.grid(row=0, column=0, sticky='ew') window_prop = Frame(self) window_prop.config(width=10, height=150, bg='lavender') window_prop.grid(row=0, column=1, sticky='nsew')
def __init__(self, parent, **options): Frame.__init__(self, parent, **options) self.config(bg='purple') cm_label = Label(self) cm_label.config(text='Correlation Matrix Controls') cm_label.grid(row=0, column=0, sticky='ew') window_prop = Frame(self) window_prop.config(width=10, height=150, bg='pink') window_prop.grid(row=0, column=1, sticky='nsew')
def __init__(self, parent, **options): Frame.__init__(self, parent, **options) self.config(bg='blue') bp_label = Label(self) bp_label.config(text='Barplot Controls') bp_label.grid(row=0, column=0, sticky='ew') window_prop = Frame(self) window_prop.config(width=10, height=150, bg='cyan') window_prop.grid(row=0, column=1, sticky='nsew')
def init_gui(self, cim): """Make a new tkinter window""" root = Tk() root.grid_rowconfigure(0, weight=1) root.columnconfigure(0, weight=1) root.title(cim) root.resizable(False, True) frame_main = Frame(root) frame_main.grid(sticky='news') # Create a frame for the canvas with non-zero row&column weights frame_canvas = Frame(frame_main) frame_canvas.grid(row=0, column=0) frame_canvas.grid_rowconfigure(0, weight=1) frame_canvas.grid_columnconfigure(0, weight=1) # Set grid_propagate to False to allow 5-by-5 buttons resizing later frame_canvas.grid_propagate(False) # Add a canvas in that frame canvas = Canvas(frame_canvas) canvas.grid(row=0, column=0) canvas.pack(fill="both", expand=True) # Link a scrollbar to the canvas vsb = Scrollbar(frame_canvas, orient="vertical", command=canvas.yview) vsb.grid(row=0, column=1, sticky='ns') canvas.configure(yscrollcommand=vsb.set) # Create a frame to contain the scrollable content frame_progress = Frame(canvas) canvas.create_window((0, 0), window=frame_progress, anchor='nw') self.canvas = canvas self.frame_main = frame_main for process in self.process_list: self.init_new_progressbar(frame_progress, p_length=300, p_process=process) frame_progress.update_idletasks() p = self.process_list[0] frame_width = p['task_label'].winfo_width( ) + p['progressbar'].winfo_width() + p['status_label'].winfo_width() rows = 20 if len(self.process_list) > 20 else len(self.process_list) frame_height = (p['progressbar'].winfo_height() * rows) frame_canvas.config(width=frame_width + vsb.winfo_width(), height=frame_height) canvas.config(width=frame_width + vsb.winfo_width(), height=frame_height) canvas.config(scrollregion=canvas.bbox("all")) canvas.update() self.frame_main.bind("<Configure>", self.configure) return root
class Topbar: def __init__(self, root): self.topbar = Frame(root) self.topbar.config(border="2", height=50) self.topbar.pack(side="top", fill="x", pady=30, padx=30) self.caja = Entry(self.topbar) self.caja.config(bg="grey", font="Calibri 14 bold") self.caja.place(relwidth=0.78, relheight=0.8) self.button = Button(self.topbar, text="Buscar Ruta") self.button.place(relx=0.8, relwidth=0.2, relheight=0.8)
def vista_agendar_reunion_callback(self, ventana_principal, frame): frame.destroy() frame = Frame(ventana_principal) frame.grid(row=1, column=2, rowspan=400, columnspan=400) frame.config(width=900) Label(frame, text="Detalle:", width=20).grid(row=1, column=2) detalle_reunion = entry.add_entry(frame) detalle_reunion.config(width=50) detalle_reunion.grid(row=1, column=3, columnspan=3) Label(frame, text="Organizador:", width=20).grid(row=2, column=2) organizador = entry.add_entry(frame) organizador.grid(row=2, column=3, columnspan=3) Label(frame, text="Rol del organizador:", width=20).grid(row=3, column=2) rol_organizador = entry.add_entry(frame) rol_organizador.grid(row=3, column=3, columnspan=3) Label(frame, text="Cant. participantes:", width=20).grid(row=4, column=2) cant_participantes = entry.add_entry(frame) cant_participantes.grid(row=4, column=3, columnspan=3) Label(frame, text='Fecha realizacion:', width=20).grid(row=5, column=2) dia = entry.add_entry(frame) dia.config(width=10) dia.insert(END, "DD") dia.grid(row=5, column=3) mes = entry.add_entry(frame) mes.config(width=10) mes.insert(END, "MM") mes.grid(row=5, column=4) anho = entry.add_entry(frame) anho.config(width=10) anho.grid(row=5, column=5) anho.insert(END, "AAAA") sgte_btn = Button( frame, text="Siguiente", activeforeground="black", width=20, command=lambda: self.agregar_datos_callback( ventana_principal, frame, detalle_reunion.get().upper(), organizador.get().upper(), rol_organizador.get().upper(), int(cant_participantes.get()), anho.get() + "-" + mes.get() + "-" + dia.get())) sgte_btn.grid(row=6, column=2)
class csv_b: def __init__(self): self.root = Tk() self.root.wm_maxsize(1000, 1000) self.root.wm_minsize(1000, 1000) self.frame1 = Frame(self.root, bg='gray') self.frame1.place(x=0, height=1000, y=0, width=1000) self.frame1.config() self.Welcome_label = Label(self.frame1, text="WELCOME", font=('Comic Sans MS', 70), bg='gray', fg='white') self.Welcome_label.pack() self.Choice_label = Label(self.frame1, text="Enter the batch name - ", font=('Comic Sans MS', 45), bg='gray', fg='white') self.Choice_label.pack(padx=0, pady=80, anchor='n') self.batch_name = StringVar() ##Global self.batch_entry = Entry(self.frame1, bd=16, textvar=self.batch_name) self.batch_entry.pack(anchor='n') global Batch_name Batch_name = self.batch_name.get() self.add_button = Button(self.frame1, text='Generate', width=16, font=("Comic Sans MS", 16), command=self.csv_bu) self.add_button.pack(pady=20) def csv_bu(self): global count conn = sqlite3.connect("main_database.db") c = conn.cursor() #print('select count(*) from ' + self.batch_name.get()) c.execute('select count(*) from ' + self.batch_name.get()) a = c.fetchone() if count > a[0]: self.root.destroy() firstPage() # print(a[0]) c.execute('select * from ' + self.batch_name.get() + ' where Roll_no = ' + str(count)) student1 = c.fetchone() student = student1 f = open(self.batch_name.get()+".csv", "a+") writer = csv.writer(f) writer.writerow(student) f.close() count += 1 self.csv_bu() conn.commit()
class update_stu: def __init__(self): self.root = Tk() self.root.wm_maxsize(1000, 1000) self.root.wm_minsize(1000, 1000) self.frame1 = Frame(self.root, bg='gray') self.frame1.place(x=0, height=1000, y=0, width=1000) self.frame1.config() self.Welcome_label = Label(self.frame1, text="ADD", font=('Comic Sans MS', 70), bg='gray', fg='white') self.Welcome_label.pack() self.Choice_label = Label(self.frame1, text="Enter Student name - ", font=('Comic Sans MS', 45), bg='gray', fg='white') self.Choice_label.pack(padx=0, pady=80, anchor='n') self.st_name = StringVar() ##Global global Student_name self.st_entry = Entry(self.frame1, bd=16, textvar=self.st_name) self.st_entry.pack(anchor='n') self.add_button = Button(self.frame1, text='Add', width=16, font=("Comic Sans MS", 16),command = self.stu) self.add_button.pack(pady=20) self.done_button = Button(self.frame1, text='Done', width=16, font=("Comic Sans MS", 16),command = self.done) self.done_button.pack(pady=20) def stu(self): if self.st_name: conn = sqlite3.connect("main_database.db") global Batch_name stu_name = str() stu_name = self.st_name.get() c = conn.cursor() c.execute('create table if not exists '+ Batch_name+ ' (Roll_no integer primary key,Name Text)') c.execute('insert into ' + Batch_name + '(Name) values("'+stu_name+'")') conn.commit() self.root.destroy() firstPage() else: messagebox.showinfo("Warning", "Fill enteries") def done(self): self.root.destroy() firstPage()
def __init__(self, image, initialField, initialText): frm = Frame(root) frm.config(background="white") self.image = PhotoImage(format="gif", data=images[image.upper()]) self.imageDimmed = PhotoImage(format="gif", data=images[image]) self.img = Label(frm) self.img.config(borderwidth=0) self.img.pack(side="left") self.fld = Text(frm, **fieldParams) self.initScrollText(frm, self.fld, initialField) frm = Frame(root) self.txt = Text(frm, **textParams) self.initScrollText(frm, self.txt, initialText) for i in range(2): self.txt.tag_config(colors[i], background=colors[i]) self.txt.tag_config("emph" + colors[i], foreground=emphColors[i])
def vista_lista_salas_callback(self, ventana_principal, frame): frame.grid_remove() frame.destroy() frame = Frame(ventana_principal) frame.grid(row=1, column=2, rowspan=200, columnspan=200) frame.config(width=900) lista = Text(frame) lista_salas = controller.listar_salas() count = 0 for i in lista_salas: count += 1 lista.insert(END, "Nombre sala: " + i.nombre_sala + "\n") lista.insert(END, "Max. ocupantes: " + str(i.max_ocupantes) + "\n") lista.insert(END, "Estado de sala: " + i.estado_sala + "\n\n") lista.config(width=900, state=DISABLED) lista.grid(row=1, column=2, rowspan=count)
def create_region(self, tid): """ create and fill frame-region inside frame """ region_owner = self.board[tid]["owner"] if region_owner is None: owner_text = "Unoccupied" tile_color = None own_tile = False else: own_tile = True if region_owner == game.player.name else False owner_text = "Owner: " + str(region_owner) tile_color = COLOURS[self.player_names.index(region_owner)] my_frame = Frame(self.frame_map, height=3 * self.size - 1, width=3 * self.size - 1, bd=1, relief="flat", bg = tile_color) x = int(tid.split("_")[1]) N = int(sqrt(len(self.board))) my_frame.grid(row=int((x - 1)/ N),column=(x - 1) % N) counter_text = "Troops: " + str(game.board[tid]["counters"]) button_pic = Button(my_frame, image = self.gifs[game.board[tid]["terrain"]], name = tid, command = lambda: self.conquer_region(tid)) label_owner = Label(my_frame, text=owner_text, bg = tile_color) label_counters = Label(my_frame, text=counter_text, bg = tile_color) if own_tile: button_plus = Button(my_frame, image = self.gifs["plus"], command=lambda: self.reinforce(tid, 1)) button_minus = Button(my_frame, image = self.gifs["minus"], command=lambda: self.reinforce(tid, -1)) button_plus.grid(row = 0, column=0) button_pic.grid(row = 0, column=1) button_minus.grid(row=0, column=2) label_owner.grid(row=1, columnspan=3) label_counters.grid(row=2, columnspan=3) else: button_pic.grid(row=0, column=1) label_owner.grid(row=1, column=1) label_counters.grid(row=2, column=1) if tid in game.player.adjacent_regions: my_frame.config(relief = "raised")
def printMainFrame(canvas, user): canvas.config(height=500, width=690) frame = Frame() frame.place(relx=0.1, rely=0.1, relwidth=0.8, relheight=0.8) frame1 = Frame(frame) frame1.config(bd=1, relief="solid") frame1.grid(column=0, row=0, padx= 20, ipadx=10, ipady=10) frame1.tkraise() frame2 = Frame(frame) frame2.config(bd=1, relief="solid") frame2.grid(column=1, row=0, padx=20, ipadx=10, ipady=10) frame2.tkraise() uis = getUIByID_user(user.id) for ui in uis: if ui[0] == 'RegistryOfAuxiliary': RegistryOfAuxiliary(frame1, 0) elif ui[0] == 'RegistryOfExams': RegistryOfExams(frame2, 0) elif ui[0] == 'ListOfApplications': ListOfApplications(frame1, 0, user.id) elif ui[0] == 'SeeExamNotes': SeeExamNotes(frame2, 1, user.id) elif ui[0] == 'SeeListOfStudents': SeeListOfStudents(frame1, 0, user.id) elif ui[0] == 'TakeAttendeeList': TakeAttendeeList(frame2, 1, user.id) # RegistryOfAuxiliary(frame, 0) # RegistryOfExams(frame, 1) # ListOfApplications(frame, 0, user.id) # SeeExamNotes(frame, 1, user.id) # SeeListOfStudents(frame, 0, user.id) # TakeAttendeeList(frame, 1, user.id)
class frame(): frame ="" def crearFrame(self): self.frame = Frame() self.frame.pack() self.frame.config(bg="red") self.frame.config(width="500", height="400") return self.frame def agregar(self,frame): texto = input('ingrese el texto a mostrar: ') color = input('ingrese el color del texto a mostrar: ') imagen= PhotoImage(file="goku.png") Label(frame,image=imagen).place(x=180,y=20) #Label(frame, text=texto,fg=color).place(x=180,y=20)
def plantilla(self): m = self.marco() cantidad = int(input('ingrese la cantidad de labels a crear: ')) plantilla = Frame(m, width='350', height='500') imagen = PhotoImage(file='Python.png') Label(plantilla, image=imagen).place(x=1, y=1) plantilla.pack(fill='y', expand='True') for z in range(0, cantidad): texto = input('Escribe el texto del label ' + str(z) + ': ') x = int( input('Escribe el eje x del texto del label ' + str(z) + ': ')) y = int( input('Escribe el eje y del texto del label ' + str(z) + ': ')) Label(plantilla, text=texto).place(x=x, y=y) plantilla.config(bg='blue') plantilla.mainloop()
def setup_grating_options(self, frame: tk.Frame): """ Set up grating options entry widgets """ frame.config(borderwidth=2, relief=tk.SUNKEN) tk.Label(frame, text='Rotation Angle', font='bold').grid(row=0, column=0) self.entry_angle = tk.Entry(frame, width=15) self.entry_angle.grid(row=1, column=0) tk.Label(frame, text='Grating Type', font='bold').grid(row=0, column=1) self.types = {'SawTooth', 'Triangle', 'Circle', 'Custom'} self.type_var = tk.StringVar(frame) self.type_var.set('SawTooth') tk.OptionMenu(frame, self.type_var, *self.types).grid(row=1, column=1) tk.Label(frame, text='Ymin', font='bold').grid(row=2, column=0) self.entry_ymin = tk.Entry(frame, width=15) self.entry_ymin.grid(row=3, column=0) tk.Label(frame, text='Ymax', font='bold').grid(row=2, column=1) self.entry_ymax = tk.Entry(frame, width=15) self.entry_ymax.grid(row=3, column=1) tk.Label(frame, text='Period Width (pixels)', font='bold').grid(row=4, column=0) self.entry_period = tk.Entry(frame, width=15) self.entry_period.grid(row=5, column=0) self.g_reverse = tk.IntVar() tk.Checkbutton(frame, text='Reverse Grating', variable=self.g_reverse).grid(row=5, column=1) selection_frame = tk.Frame(frame, borderwidth=2, relief=tk.SOLID, pady=4) selection_frame.grid(row=6, column=0, columnspan=2) tk.Label(selection_frame, text='Grating Selection', font='bold').grid(row=0, column=0) self.button_image = tk.Button(selection_frame, text='Select a Grating', command=self.grating_select) self.button_image.grid(row=0, column=1)
class Example(ExampleFrame): def __init__(self): super().__init__("Dialog - Color Chooser", 480, 200) def init_ui(self): self.btn = Button(self, text="Choose Color", command=self.on_choose) self.btn.place(x=30, y=30) self.frame = Frame(self, border=1, relief=SUNKEN, width=100, height=100) self.frame.place(x=160, y=30) def on_choose(self): (rgb, hx) = colorchooser.askcolor() self.frame.config(bg=hx)
def menu(self, controller): menu_frame = Frame(self) menu_frame.config(bg="black") buttons = { "start_game": ttk.Button(menu_frame, text="Start game", command=lambda: controller.show_frame("Game")), "exit_game": ttk.Button(menu_frame, text="Exit game", command=lambda: sys.exit(0)) } counter = 0 for button in buttons.keys(): buttons[button].config(style="W.TButton") buttons[button].grid(row=counter, pady=5) counter += 1 return menu_frame
class ScrollableScreen(Screen): def __init__(self, parent, app): super().__init__(parent=parent, app=app) def _init_scrollframe(self): self.canvas = Canvas(self,) self.container = Frame(self.canvas, # borderwidth=1, # relief="solid" ) self.canvas.config(background=WHITE) self.container.config(background=WHITE) scrollbar_width = SCROLL_BAR_WIDTH self.scrollbar = Scrollbar(self, orient="vertical", width=scrollbar_width, command=self.canvas.yview) self.update_idletasks() self.canvas.config( width=self.app.width - scrollbar_width, height=self.app.height, yscrollcommand=self.scrollbar.set, ) self.scrollbar.pack(side="right", fill="y") self.canvas.pack(side="left", fill="both", expand=True) self.canvas.create_window((0, 0), window=self.container, anchor="nw",) self.container.bind("<Configure>", self._onFrameConfigure) def _before_init_components(self): """ Hàm phụ trợ trước khi khởi tạo màn hình """ self._init_scrollframe() def _onFrameConfigure(self, event): '''Reset the scroll region to encompass the inner frame''' self.canvas.config(scrollregion=self.canvas.bbox("all")) def _init_components(self): """
class Edit(Frame): def __init__(self, master, valves): Frame.__init__(self, master, bg='sky blue', width=1366, height=768) self.master = master self.canvas = Canvas(self, height=630, width=1320, bg='sky blue') self.frame = Frame(self.canvas, bg='sky blue') self.scrollbar = Scrollbar(self, orient='vertical', command=self.canvas.yview) self.scrollbar.configure(activebackground='DarkRed', background='red', width=40) self.canvas.configure(yscrollcommand=self.scrollbar.set, scrollregion=[0, 0, 1366, 800]) self.scrollbar.pack(side='right', fill='y') self.canvas.pack(side='left') self.canvas.create_window((0, 0), window=self.frame, anchor='nw') self.valves = valves self.frame.config(bg='sky blue') index = 0 while index < 10: self.frame.grid_rowconfigure(index, minsize=80) self.frame.grid_columnconfigure(index, minsize=30) index += 1 self.frame.grid_columnconfigure(3, minsize=130) self.frame.grid_columnconfigure(6, minsize=130) interval = Label(self.frame, text='RUN', width=6, font=('Lucida Console', 30)) interval.grid(row=0, column=2) interval.config(bg='sky blue', fg='RoyalBlue4') delay = Label(self.frame, text='DELAY', width=6, font=('Lucida Console', 30)) delay.grid(row=0, column=5) delay.config(bg='sky blue', fg='RoyalBlue4') self.seconds = [IntVar(), IntVar(), IntVar(), IntVar(), IntVar(), IntVar(), IntVar(), IntVar(), IntVar(), IntVar(), IntVar(), IntVar(), IntVar(), IntVar(), IntVar(), IntVar(), IntVar(), IntVar()] for each in self.seconds: each.set(0) self.set_seconds() self.valve_label = [Label(self.frame, textvariable=self.valves[0].get_name()), Label(self.frame, textvariable=self.valves[1].get_name()), Label(self.frame, textvariable=self.valves[2].get_name()), Label(self.frame, textvariable=self.valves[3].get_name()), Label(self.frame, textvariable=self.valves[4].get_name()), Label(self.frame, textvariable=self.valves[5].get_name()), Label(self.frame, textvariable=self.valves[6].get_name()), Label(self.frame, textvariable=self.valves[7].get_name()) ] row = 1 for each in self.valve_label: each.grid(row=row, column=0) each.config(width=8, font=('Lucida Console', 30), bg='sky blue', fg='RoyalBlue4') row += 1 self.minus_image = PhotoImage(file="img/minus.png").subsample(x=5, y=5) self.minusInterval = [Button(self.frame, image=self.minus_image, command=lambda: self.subtract(0)), Button(self.frame, image=self.minus_image, command=lambda: self.subtract(1)), Button(self.frame, image=self.minus_image, command=lambda: self.subtract(2)), Button(self.frame, image=self.minus_image, command=lambda: self.subtract(3)), Button(self.frame, image=self.minus_image, command=lambda: self.subtract(4)), Button(self.frame, image=self.minus_image, command=lambda: self.subtract(5)), Button(self.frame, image=self.minus_image, command=lambda: self.subtract(6)), Button(self.frame, image=self.minus_image, command=lambda: self.subtract(7)), ] row = 1 for each in self.minusInterval: each.grid(row=row, column=1) each.config(bg='SkyBlue4', activebackground='midnight blue', fg='white') row += 1 self.labelInterval = [Label(self.frame, textvariable=self.seconds[0]), Label(self.frame, textvariable=self.seconds[1]), Label(self.frame, textvariable=self.seconds[2]), Label(self.frame, textvariable=self.seconds[3]), Label(self.frame, textvariable=self.seconds[4]), Label(self.frame, textvariable=self.seconds[5]), Label(self.frame, textvariable=self.seconds[6]), Label(self.frame, textvariable=self.seconds[7])] row = 1 for each in self.labelInterval: each.grid(row=row, column=2) each.config(width=4, font=('Lucida Console', 30), bg='sky blue', fg='RoyalBlue4') row += 1 self.plus_image = PhotoImage(file="img/plus.png").subsample(x=5, y=5) self.plusInterval = [Button(self.frame, image=self.plus_image, command=lambda: self.add(0)), Button(self.frame, image=self.plus_image, command=lambda: self.add(1)), Button(self.frame, image=self.plus_image, command=lambda: self.add(2)), Button(self.frame, image=self.plus_image, command=lambda: self.add(3)), Button(self.frame, image=self.plus_image, command=lambda: self.add(4)), Button(self.frame, image=self.plus_image, command=lambda: self.add(5)), Button(self.frame, image=self.plus_image, command=lambda: self.add(6)), Button(self.frame, image=self.plus_image, command=lambda: self.add(7)), ] row = 1 for each in self.plusInterval: each.grid(row=row, column=3) each.config(bg='SkyBlue4', activebackground='midnight blue', fg='white') row += 1 self.minusDelay = [Button(self.frame, image=self.minus_image, command=lambda: self.subtract(8)), Button(self.frame, image=self.minus_image, command=lambda: self.subtract(9)), Button(self.frame, image=self.minus_image, command=lambda: self.subtract(10)), Button(self.frame, image=self.minus_image, command=lambda: self.subtract(11)), Button(self.frame, image=self.minus_image, command=lambda: self.subtract(12)), Button(self.frame, image=self.minus_image, command=lambda: self.subtract(13)), Button(self.frame, image=self.minus_image, command=lambda: self.subtract(14)), Button(self.frame, image=self.minus_image, command=lambda: self.subtract(15)), ] row = 1 for each in self.minusDelay: each.grid(row=row, column=4) each.config(bg='SkyBlue4', activebackground='midnight blue', fg='white') each.config() row += 1 self.labelDelay = [Label(self.frame, textvariable=self.seconds[8]), Label(self.frame, textvariable=self.seconds[9]), Label(self.frame, textvariable=self.seconds[10]), Label(self.frame, textvariable=self.seconds[11]), Label(self.frame, textvariable=self.seconds[12]), Label(self.frame, textvariable=self.seconds[13]), Label(self.frame, textvariable=self.seconds[14]), Label(self.frame, textvariable=self.seconds[15])] row = 1 for each in self.labelDelay: each.grid(row=row, column=5) each.config(width=4, font=('Lucida Console', 30), bg='sky blue', fg='RoyalBlue4') row += 1 self.plusDelay = [Button(self.frame, image=self.plus_image, command=lambda: self.add(8)), Button(self.frame, image=self.plus_image, command=lambda: self.add(9)), Button(self.frame, image=self.plus_image, command=lambda: self.add(10)), Button(self.frame, image=self.plus_image, command=lambda: self.add(11)), Button(self.frame, image=self.plus_image, command=lambda: self.add(12)), Button(self.frame, image=self.plus_image, command=lambda: self.add(13)), Button(self.frame, image=self.plus_image, command=lambda: self.add(14)), Button(self.frame, image=self.plus_image, command=lambda: self.add(15)), ] row = 1 for each in self.plusDelay: each.grid(row=row, column=6) each.config(bg='SkyBlue4', activebackground='midnight blue') each.config() row += 1 self.motor_image = PhotoImage(file="img/motor.png").subsample(x=5, y=5) self.motor = [Button(self.frame, text='MOTOR', image=self.motor_image, command=lambda: self.motor_on(0)), Button(self.frame, text='MOTOR', image=self.motor_image, command=lambda: self.motor_on(1)), Button(self.frame, text='MOTOR', image=self.motor_image, command=lambda: self.motor_on(2)), Button(self.frame, text='MOTOR', image=self.motor_image, command=lambda: self.motor_on(3)), Button(self.frame, text='MOTOR', image=self.motor_image, command=lambda: self.motor_on(4)), Button(self.frame, text='MOTOR', image=self.motor_image, command=lambda: self.motor_on(5)), Button(self.frame, text='MOTOR', image=self.motor_image, command=lambda: self.motor_on(6)), Button(self.frame, text='MOTOR', image=self.motor_image, command=lambda: self.motor_on(7))] row = 1 for each in self.motor: each.grid(row=row, column=7) each.config(bg='SkyBlue4', activebackground='midnight blue', fg='white') each.config() row += 1 self.adv_image = PhotoImage(file="img/options.png").subsample(x=5, y=5) self.adv = [Button(self.frame, image=self.adv_image, command=lambda: self.motor_on(0)), Button(self.frame, image=self.adv_image, command=lambda: self.motor_on(1)), Button(self.frame, image=self.adv_image, command=lambda: self.motor_on(2)), Button(self.frame, image=self.adv_image, command=lambda: self.motor_on(3)), Button(self.frame, image=self.adv_image, command=lambda: self.motor_on(4)), Button(self.frame, image=self.adv_image, command=lambda: self.motor_on(5)), Button(self.frame, image=self.adv_image, command=lambda: self.motor_on(6)), Button(self.frame, image=self.adv_image, command=lambda: self.motor_on(7)), ] row = 1 for each in self.adv: each.grid(row=row, column=8) each.config(bg='SkyBlue4', activebackground='midnight blue', fg='white') row += 1 self.set_seconds() self.lock() def lock(self): index = 0 while index < 8: self.minusInterval[index].config(state='disabled') self.minusDelay[index].config(state='disabled') self.plusInterval[index].config(state='disabled') self.plusDelay[index].config(state='disabled') self.motor[index].config(state='disabled') self.adv[index].config(state='disabled') index += 1 def set_seconds(self): index = 0 while index < 8: if self.valves[index].get_setting() == 'DEFAULT': interval = self.valves[index].get_interval() # setting seconds for runtime self.seconds[index].set(interval[0]) # setting seconds for delay self.seconds[index + 8].set(interval[1]) else: self.minusInterval[index].config(state='disabled') self.minusDelay[index].config(state='disabled') self.plusInterval[index].config(state='disabled') self.plusDelay[index].config(state='disabled') index += 1 def get_intervals(self): return self.seconds def motor_on(self, index): if self.minusDelay[index].cget('state') == 'normal': self.minusInterval[index].config(state='disabled') self.minusDelay[index].config(state='disabled') self.plusInterval[index].config(state='disabled') self.plusDelay[index].config(state='disabled') self.adv[index].config(state='disabled') self.seconds[index].set(0) self.seconds[index + 8].set(0) else: interval = self.valves[index].get_interval() self.minusInterval[index].config(state='normal') self.minusDelay[index].config(state='normal') self.plusInterval[index].config(state='normal') self.plusDelay[index].config(state='normal') self.adv[index].config(state='normal') self.seconds[index].set(interval[0]) self.seconds[index + 8].set(interval[1]) def add(self, number): if self.seconds[number].get() < 99: self.seconds[number].set(self.seconds[number].get() + 1) def subtract(self, number): if self.seconds[number].get() > 0: self.seconds[number].set(self.seconds[number].get() - 1)
class RunScreen(Frame): def __init__(self, master, valves): Frame.__init__(self, master, bg='sky blue', width=950, height=750) self.master = master self.valves = valves self.threads = [] self.canvas = Canvas(self, height=750, width=950, bg='sky blue') self.frame = Frame(self.canvas, bg='sky blue') self.scrollbar = Scrollbar(self, orient='vertical', command=self.canvas.yview) self.scrollbar.configure(activebackground='DarkRed', background='red', width=40) self.canvas.configure(yscrollcommand=self.scrollbar.set, scrollregion=[0, 0, 1366, 1300]) self.scrollbar.pack(side='right', fill='y') self.canvas.pack(side='left') self.canvas.create_window((0, 0), window=self.frame, anchor='nw') self.frame.config(bg='sky blue') self.valve_num = [Label(self.frame, text='1'), Label(self.frame, text='2'), Label(self.frame, text='3'), Label(self.frame, text='4'), Label(self.frame, text='5'), Label(self.frame, text='6'), Label(self.frame, text='7'), Label(self.frame, text='8')] row = 0 for each in self.valve_num: each.grid(row=row, column=0) each.config(width=4, font=('Lucida Console', 30), bg='sky blue', fg='RoyalBlue4') row += 2 self.valve_name = [Label(self.frame, textvariable=valves[0].get_name()), Label(self.frame, textvariable=valves[1].get_name()), Label(self.frame, textvariable=valves[2].get_name()), Label(self.frame, textvariable=valves[3].get_name()), Label(self.frame, textvariable=valves[4].get_name()), Label(self.frame, textvariable=valves[5].get_name()), Label(self.frame, textvariable=valves[6].get_name()), Label(self.frame, textvariable=valves[7].get_name())] row = 0 for each in self.valve_name: each.grid(row=row, column=2) each.config(width=15, font=('Lucida Console', 30), bg='sky blue', fg='RoyalBlue4') row += 2 valve = 0 self.valve_activity = [] self.on_image = PhotoImage(file="img/yes.png").subsample(x=6, y=6) self.off_image = PhotoImage(file="img/no.png").subsample(x=6, y=6) for each in self.valves: if each.get_setting() is 'INACTIVE': self.valve_activity.append(Button(self.frame, image=self.off_image, text='OFF', command=lambda: self.activate(valve))) else: self.valve_activity.append(Button(self.frame, image=self.on_image, text='ON', command=lambda: self.activate(valve))) valve += 1 row = 0 for each in self.valve_activity: each.grid(row=row, column=1) each.config(bg='SkyBlue4', activebackground='midnight blue') each.config() row += 2 self.valve_action_a = [Label(self.frame, textvariable=valves[0].get_action_a()), Label(self.frame, textvariable=valves[1].get_action_a()), Label(self.frame, textvariable=valves[2].get_action_a()), Label(self.frame, textvariable=valves[3].get_action_a()), Label(self.frame, textvariable=valves[4].get_action_a()), Label(self.frame, textvariable=valves[5].get_action_a()), Label(self.frame, textvariable=valves[6].get_action_a()), Label(self.frame, textvariable=valves[7].get_action_a())] row = 0 for each in self.valve_action_a: each.grid(row=row, column=3) each.config(width=10, font=('Lucida Console', 30), bg='sky blue', fg='RoyalBlue4', anchor='w') row += 2 self.valve_action_b = [Label(self.frame, textvariable=valves[0].get_action_b()), Label(self.frame, textvariable=valves[1].get_action_b()), Label(self.frame, textvariable=valves[2].get_action_b()), Label(self.frame, textvariable=valves[3].get_action_b()), Label(self.frame, textvariable=valves[4].get_action_b()), Label(self.frame, textvariable=valves[5].get_action_b()), Label(self.frame, textvariable=valves[6].get_action_b()), Label(self.frame, textvariable=valves[7].get_action_b())] row = 1 for each in self.valve_action_b: each.grid(row=row, column=3) each.config(width=10, font=('Lucida Console', 30), bg='sky blue', fg='RoyalBlue4', anchor='w') row += 2 self.lightsA = [LED(self.frame, 30, 'green1', 'green', 'dark green', 'Dark Green', False), LED(self.frame, 30, 'green1', 'green', 'dark green', 'Dark Green', False), LED(self.frame, 30, 'green1', 'green', 'dark green', 'Dark Green', False), LED(self.frame, 30, 'green1', 'green', 'dark green', 'Dark Green', False), LED(self.frame, 30, 'green1', 'green', 'dark green', 'Dark Green', False), LED(self.frame, 30, 'green1', 'green', 'dark green', 'Dark Green', False), LED(self.frame, 30, 'green1', 'green', 'dark green', 'Dark Green', False), LED(self.frame, 30, 'green1', 'green', 'dark green', 'Dark Green', False) ] self.lightsB = [LED(self.frame, 30, 'red', 'dark red', 'red4', 'DarkRed', False), LED(self.frame, 30, 'red', 'dark red', 'red4', 'DarkRed', False), LED(self.frame, 30, 'red', 'dark red', 'red4', 'DarkRed', False), LED(self.frame, 30, 'red', 'dark red', 'red4', 'DarkRed', False), LED(self.frame, 30, 'red', 'dark red', 'red4', 'DarkRed', False), LED(self.frame, 30, 'red', 'dark red', 'red4', 'DarkRed', False), LED(self.frame, 30, 'red', 'dark red', 'red4', 'DarkRed', False), LED(self.frame, 30, 'red', 'dark red', 'red4', 'DarkRed', False) ] #Turn valve on or off def activate(self, index): if self.valve_activity[index].cget('text') == 'ON': self.valve_activity[index].config(text='OFF', image=self.off_image) else: self.valve_activity[index].config(text='ON', image=self.on_image) #Set up layout of GUI def make_frame(self): row = 0 for each in self.lightsA: each.grid(row=row, column=4, padx=10, pady=20) row += 2 row = 1 for each in self.lightsB: each.grid(row=row, column=4, padx=10, pady=20) row += 2 #Start all valves, if not disabled. May be able to shut off each valve individually. def run_all(self, boolean): if boolean: self.threads = [threading.Thread(target=self.run_valve, args=(0, self.valves[0].get_interval() )), threading.Thread(target=self.run_valve, args=(1, self.valves[1].get_interval() )), threading.Thread(target=self.run_valve, args=(2, self.valves[2].get_interval() )), threading.Thread(target=self.run_valve, args=(3, self.valves[3].get_interval() )), threading.Thread(target=self.run_valve, args=(4, self.valves[4].get_interval() )), threading.Thread(target=self.run_valve, args=(5, self.valves[5].get_interval() )), threading.Thread(target=self.run_valve, args=(6, self.valves[6].get_interval() )), threading.Thread(target=self.run_valve, args=(7, self.valves[7].get_interval() )), ] for thread in self.threads: thread.start() else: for each in self.valve_activity: each.config(text='OFF') #Individual valve is run. def run_valve(self, index, interval): run_time = interval[0] delay_time = interval[1] start_time = math.floor( time.time() ) valve_a_on = True delay_on = False try: self.valve_a_on(index) while( self.valve_activity[index].cget('text') == 'ON' ): time_lapse = math.floor( time.time() ) - start_time if delay_on: if time_lapse > delay_time and not valve_a_on: #Switch from delay to b delay_on = False start_time = math.floor( time.time()) self.valve_b_on(index) elif time_lapse > delay_time and valve_a_on: #switch from delay to a delay_on = False valve_a_on = True start_time = math.floor( time.time()) self.valve_a_on(index) elif valve_a_on: if time_lapse > run_time: #Switching from a to delay valve_a_on = False delay_on = True start_time = math.floor( time.time() ) self.valve_delay_all(index) else: if time_lapse > run_time: #Switching from b to delay valve_a_on = True delay_on = True start_time = math.floor( time.time() ) self.valve_delay_all(index) time.sleep(0.1) finally: self.valve_delay_all(index) #Turn on valve A, and turn off valve B. def valve_a_on(self, index): self.lightsA[index].set_state(True) self.lightsB[index].set_state(False) self.master.update() #Turn on valve B, and turn off valve A. def valve_b_on(self, index): self.lightsA[index].set_state(False) self.lightsB[index].set_state(True) self.master.update() #Turn off valves A and B. def valve_delay_all(self, index): self.lightsA[index].set_state(False) self.lightsB[index].set_state(False) self.master.update()
class Preferences(Frame): def __init__(self, master, valves): Frame.__init__(self, master, bg='sky blue', width=1366, height=768) self.master = master self.canvas = Canvas(self, height=640, width=1300, bg='sky blue') self.frame = Frame(self.canvas, bg='sky blue') self.frame.bind('<Button-1>', self.process_click_out) self.scrollbar = Scrollbar(self, orient='vertical', command=self.canvas.yview) self.scrollbar.configure(activebackground='DarkRed', background='red', width=40) self.canvas.configure(yscrollcommand=self.scrollbar.set, scrollregion=[0, 0, 1366, 2100]) self.scrollbar.pack(side='right', fill='y') self.canvas.pack(side='left') self.canvas.create_window((0, 0), window=self.frame, anchor='nw') self.keyboard = Keyboard(self.master) self.valves = valves self.frame.config(bg='sky blue') index = 0 while index < 25: self.frame.grid_rowconfigure(index, minsize=80) self.frame.grid_columnconfigure(index, minsize=150) index += 1 num_label = [Label(self.frame, text='1'), Label(self.frame, text='2'), Label(self.frame, text='3'), Label(self.frame, text='4'), Label(self.frame, text='5'), Label(self.frame, text='6'), Label(self.frame, text='7'), Label(self.frame, text='8'), ] row = 1 for each in num_label: each.grid(row=row, column=0) each.config(width=3, font=('Lucida Console', 30), bg='sky blue', fg='RoyalBlue4') row += 3 text_label = [Label(self.frame, text='VALVE 1: '), Label(self.frame, text='ACTION A: '), Label(self.frame, text='ACTION B: '), Label(self.frame, text='VALVE 2: '), Label(self.frame, text='ACTION A: '), Label(self.frame, text='ACTION B: '), Label(self.frame, text='VALVE 3: '), Label(self.frame, text='ACTION A: '), Label(self.frame, text='ACTION B: '), Label(self.frame, text='VALVE 4: '), Label(self.frame, text='ACTION A: '), Label(self.frame, text='ACTION B: '), Label(self.frame, text='VALVE 5: '), Label(self.frame, text='ACTION A: '), Label(self.frame, text='ACTION B: '), Label(self.frame, text='VALVE 6: '), Label(self.frame, text='ACTION A: '), Label(self.frame, text='ACTION B: '), Label(self.frame, text='VALVE 7: '), Label(self.frame, text='ACTION A: '), Label(self.frame, text='ACTION B: '), Label(self.frame, text='VALVE 8: '), Label(self.frame, text='ACTION A: '), Label(self.frame, text='ACTION B: ') ] row = 1 for each in text_label: each.grid(row=row, column=1) each.config(width=12, font=('Lucida Console', 30), bg='sky blue', fg='RoyalBlue4') row += 1 self.valve_label = [Label(self.frame, textvariable=self.valves[0].get_name()), Label(self.frame, textvariable=self.valves[1].get_name()), Label(self.frame, textvariable=self.valves[2].get_name()), Label(self.frame, textvariable=self.valves[3].get_name()), Label(self.frame, textvariable=self.valves[4].get_name()), Label(self.frame, textvariable=self.valves[5].get_name()), Label(self.frame, textvariable=self.valves[6].get_name()), Label(self.frame, textvariable=self.valves[7].get_name())] row = 1 for each in self.valve_label: each.grid(row=row, column=2) each.config(width=12, font=('Lucida Console', 30), bg='sky blue', fg='RoyalBlue4', anchor='w') each.bind('<Button-1>', self.process_click_out) row += 3 self.entry_field = [Entry(self.frame, text=''), Entry(self.frame, text=''), Entry(self.frame, text=''), Entry(self.frame, text=''), Entry(self.frame, text=''), Entry(self.frame, text=''), Entry(self.frame, text=''), Entry(self.frame, text=''), Entry(self.frame, text=''), Entry(self.frame, text=''), Entry(self.frame, text=''), Entry(self.frame, text=''), Entry(self.frame, text=''), Entry(self.frame, text=''), Entry(self.frame, text=''), Entry(self.frame, text=''), Entry(self.frame, text=''), Entry(self.frame, text=''), Entry(self.frame, text=''), Entry(self.frame, text=''), Entry(self.frame, text=''), Entry(self.frame, text=''), Entry(self.frame, text=''), Entry(self.frame, text='') ] row = 1 for each in self.entry_field: each.grid(row=row, column=3) each.config(width=12, font=('Lucida Console', 30), bg='sky blue', fg='RoyalBlue4') each.bind('<Button-1>', self.process_click_in) row += 1 self.action_a_label = [Label(self.frame, textvariable=self.valves[0].get_action_a()), Label(self.frame, textvariable=self.valves[1].get_action_a()), Label(self.frame, textvariable=self.valves[2].get_action_a()), Label(self.frame, textvariable=self.valves[3].get_action_a()), Label(self.frame, textvariable=self.valves[4].get_action_a()), Label(self.frame, textvariable=self.valves[5].get_action_a()), Label(self.frame, textvariable=self.valves[6].get_action_a()), Label(self.frame, textvariable=self.valves[7].get_action_a()) ] row = 2 for each in self.action_a_label: each.grid(row=row, column=2) each.config(width=12, font=('Lucida Console', 30), bg='sky blue', fg='RoyalBlue4', anchor='w') each.bind('<Button-1>', self.process_click_out) row += 3 self.action_b_label = [Label(self.frame, textvariable=self.valves[0].get_action_b()), Label(self.frame, textvariable=self.valves[1].get_action_b()), Label(self.frame, textvariable=self.valves[2].get_action_b()), Label(self.frame, textvariable=self.valves[3].get_action_b()), Label(self.frame, textvariable=self.valves[4].get_action_b()), Label(self.frame, textvariable=self.valves[5].get_action_b()), Label(self.frame, textvariable=self.valves[6].get_action_b()), Label(self.frame, textvariable=self.valves[7].get_action_b()) ] row = 3 for each in self.action_b_label: each.grid(row=row, column=2) each.config(width=12, font=('Lucida Console', 30), bg='sky blue', fg='RoyalBlue4', anchor='w') each.bind('<Button-1>', self.process_click_out) row += 3 self.lock() def process_click_out(self, event): self.canvas.configure(height=660) self.keyboard.grid_forget() def process_click_in(self, event): index = 0 for each in self.entry_field: if each == event.widget: break index += 1 if event.widget.cget('state') == 'normal': self.canvas.configure(height=250) self.keyboard.grid(row=2, column=0) self.keyboard.set_entry(event.widget) self.canvas.yview_moveto(index / 28) def lock(self): for each in self.entry_field: each.config(state='disabled')
class Main(): def __init__(self, parent, CPU_object): # Set up the basic variables and the frame self.cpu = CPU_object self.parent = parent self.parent.title("Main") self.frame = Frame(parent) self.frame.config(pady = 10) self.running = True self.reg_list = RegisterListener(self.update_regs) # Set up the label at the top self.label = Label(self.frame, text = "Registers: ") self.label.grid(row = 0, columnspan = 2) # Set up the labels and text-boxes for the registers self.register_text = [] self.register_label = [] # A loop for setting the registers text boxes and labels for x in range(11): # Use tricky-tricks to not have to write in the values for the labels label_text = REV_VALUES[x] + ": " if x > 7: label_text = REV_VALUES[x + 19] + ": " self.register_label.append(Label(self.frame, text = label_text)) self.register_text.append(Entry(self.frame, width = 25)) self.register_label[x].grid(row = x + 1, column = 0) self.register_text[x].grid(row = x + 1, column = 1) #Set up the buttons into the frame self.monitor_button = Button(self.frame, text = "Open monitor", width = 25, command = self.open_monitor) self.watcher_button = Button(self.frame, text = "Open watcher", width = 25, command = self.open_watcher) self.run_button = Button(self.frame, text = "Run program", width = 25, command = self.run_program) self.step_button = Button(self.frame, text = "Step program", width = 25, command = self.step_program) self.stop_button = Button(self.frame, text = "Stop program", width = 25, command = self.stop_program) # Pack the buttons self.monitor_button.grid(row = 12, columnspan = 2) self.watcher_button.grid(row = 13, columnspan = 2) self.run_button.grid(row = 14, columnspan = 2) self.step_button.grid(row = 15, columnspan = 2) self.stop_button.grid(row = 16, columnspan = 2) # Pack the frame self.frame.pack() # Handle the closing event (unregister the event listener) self.parent.protocol("WM_DELETE_WINDOW", self.handle_close) def step_program(self): # Step through the program and update the registers self.cpu.step() time.sleep(0.1) # Disable the buttons for step/run if len(self.cpu.text) == self.cpu.PC: self.step_button.config(state = DISABLED) self.run_button.config(state = DISABLED) def run(self): while(len(self.cpu.text) != self.cpu.PC and self.running): self.step_program() def stop_program(self): self.running = False def run_program(self): self.running = True t = threading.Thread(target=self.run) t.start() # self.run() def update_text(self, obj, text): # Update the text in an Entry object obj.delete(0, END) obj.insert(0, text) def update_regs(self, data): # Update the general registers for i, reg in enumerate(self.cpu.regs): self.update_text(self.register_text[i], hex(reg)) # Update SP, PC, and O self.update_text(self.register_text[8], hex(self.cpu.SP)) self.update_text(self.register_text[9], hex(self.cpu.PC)) self.update_text(self.register_text[10], hex(self.cpu.O)) def handle_close(self): self.reg_list.unregister() self.parent.quit() def open_watcher(self): self.watcher_window = Toplevel(self.parent) self.app = MemoryWatcher(self.watcher_window) def open_monitor(self): # Open the monitor self.monitor_window = Toplevel(self.parent) self.app = Monitor(self.monitor_window)