class MainApplication(tk.Frame): def __init__(self, parent, *args, **kwargs): tk.Frame.__init__(self, parent, *args, **kwargs) self.parent = parent LC_result = None old_age_choice = None old_gender_choices = None old_smk_years_choices = None old_qt_years_choices = None old_cpd_choices = None old_race_choices = None old_emp_choices = None old_flt_choices = None old_bmi_entry = None old_edu6_choices = None # init reading data table life_table = read_life_table_from_file( "input/Copy of Lung cancer_7-19-2019.xlsx") local_cancer = read_LC_table_from_file( "input/Copy of Lung cancer_7-19-2019.xlsx") regional_cancer = read_regional_cancer_table_from_file( "input/Copy of Lung cancer_7-19-2019.xlsx") distant_cancer = read_distant_cancer_table_from_file( "input/Copy of Lung cancer_7-19-2019.xlsx") # initiate the basehaz and the model_coef array to calculate the LCRAT_1mon_risk basehaz_G = get_basehaz_from_file("input/lcrisk_tool.xlsx", 6) basehaz_H = get_basehaz_from_file("input/lcrisk_tool.xlsx", 7) basehaz_J = get_basehaz_from_file("input/lcrisk_tool.xlsx", 9) model_coef_D = get_model_coef_from_file("input/lcrisk_tool.xlsx", 3) model_coef_F = get_model_coef_from_file("input/lcrisk_tool.xlsx", 5) self.memubar = MenuBar(parent) self.statusbar = StatusBar(self) self.toolbar = ToolBar(self) self.navbar = NavigationBar(self) self.main = Main(root) self.statusbar.pack(side="bottom", fill="x") self.toolbar.pack(side="top", fill="x") self.navbar.pack(side="left", fill="y") self.main.pack(side="right", fill="both", expand=True) def set_new_changing_state(p): global old_age_choice, old_gender_choices, old_smk_years_choices, old_qt_years_choices, old_cpd_choices, \ old_race_choices, old_emp_choices, old_flt_choices, old_bmi_entry, old_edu6_choices old_age_choice = p.age old_gender_choices = p.gender old_smk_years_choices = p.smkyears old_qt_years_choices = p.qtyears old_cpd_choices = p.cpd old_race_choices = p.race old_emp_choices = p.emp old_flt_choices = p.fam_lung_trend old_bmi_entry = p.bmi old_edu6_choices = p.edu6
def Create_Main(): root = Tk() root.geometry("1280x700") root.resizable(0, 0) # Code to ensure that the window did not resize. root.title("Main") # Set Main Title. font = ("Forte", 12) bkg = PhotoImage(file="Imgs/background2.gif") bkg_lbl = Label(root, image=bkg) bkg_lbl.place(x=0, y=0, relwidth=1, relheight=1) lbl_1 = Label(root, text="Player 1", font=font, bg="White", fg="gray") lbl_1.place(x=180, y=130) lbl_1 = Label(root, text="Player 2", font=font, bg="White", fg="gray") lbl_1.place(x=950, y=130) # --------------------------- Barras de Estado ------------------------ Bar_Turno = StatusBar(root) Bar_Turno.set("Turno: %s", "Jugador 1") Bar_Turno.pack(padx=30, pady=65) Bar_Tiros_Player1 = StatusBar(root) Bar_Tiros_Player2 = StatusBar(root) Bar_Tiros_Player1.place(x=265, y=130) Bar_Tiros_Player2.place(x=1040, y=130) Bar_Tiros_Acert_Play1 = StatusBar(root) Bar_Tiros_Acert_Play2 = StatusBar(root) Bar_Tiros_Acert_Play1.place(x=365, y=130) Bar_Tiros_Acert_Play2.place(x=1145, y=130) Bar_Tiros_Player1.set("Tiros Totales: %s", "0") Bar_Tiros_Player2.set("Tiros Totales: %s", "0") Bar_Tiros_Acert_Play1.set("Tiros Acertados: %s", "0") Bar_Tiros_Acert_Play2.set("Tiros Acertados: %s", "0") frm_2 = Frame(root, width=520, height=520, bd=-2, bg="gray") frm_1 = Frame(root, width=520, height=520, bd=-2, bg="gray") frm_1.pack(side=LEFT) #frm_1.pack_propagate(0) frm_2.pack(side=RIGHT) def dialog_cons(n, msg): """ :rtype : object """ widg = Dialog(root, n) root.wait_window(widg.top) while widg.result == "": if msg != None: messagebox.showinfo("Warning!", msg) else: messagebox.showinfo("Warning!", "Please insert the name for the %s Player!" % n) widg = Dialog(root, n) root.wait_window(widg.top) return widg.result OneTwoPlayer = messagebox.askyesno("Player or PC", "Do you want to play with other human? (No = PC)") if OneTwoPlayer == 1: player1 = dialog_cons(1, None) player2 = dialog_cons(2, None) print(player1, player2) # Testing Lines else: player1 = dialog_cons(1, None) player2 = "Computer" print(player1, player2) # Testing Lines try: ships = int(dialog_cons("Ships", "Please Quantity of ships for the Game!")) except ValueError: messagebox.showinfo("Warning!", "La variable debe ser numero") ships = int(dialog_cons("Ships", "Please Quantity of ships for the Game!")) print(ships) # Testing Lines try: xy = int(dialog_cons("Quantity of matrix: (Ej: nxn, insert n)", "Please insert the size for Game's matrix!")) except ValueError: messagebox.showinfo("Warning!", "La variable debe ser numero!") xy = int(dialog_cons("Ships", "Please Quantity of ships for the Game!")) print(xy) # Testing Lines game = Main(player1, player2, xy, xy, ships) game.imprimir game.imprimir2 game.images(frm_1, game.matrix_shoots_player_1, game.matrix_player_1) game.images(frm_2, game.matrix_shoots_comp_player_2, game.matrix_comp_player_2) frm_1.bind("<Button-1>", callback) frm_2.bind("<Button-1>", callback) root.bind("<Button-1>", callback) root.mainloop()
class PyDrawCanvas(tk.Canvas): def __init__(self, master=None, **kwargs): super().__init__(master=master, **kwargs) self.elements = [] self.init_events() self.init_menubar() self.init_context() self.set_appicon() self.set_title() self.statusbar = None self.drp_Operation = None self.selectedObject = None # region Inits def set_appicon(self): self.master.tk.call('wm', 'iconphoto', self.master._w, PhotoImage(file='appicon.png')) def set_title(self): self.master.title("PyDraw by Festina Lente Software ") def init_events(self): self.focus_set() self.bind("<Key>", self.on_keypress) self.bind("<Configure>", self.on_resize) self.bind("<ButtonPress-1>", self.on_left_click) self.bind("<B1-Motion>", self.on_drag) self.bind("<ButtonRelease-1>", self.on_drop) self.master.protocol('WM_DELETE_WINDOW', self.on_closing) def init_menubar(self): self.menubar = MainMenu(self.master, self) def init_after_pack(self): self.create_statusbar() # endregion # region DrawingContext def init_context(self): self.drawing_area = Rectangle((0, 0, 1000, 1000)) self.canvas_area = Rectangle((0, 0, self.winfo_width(), self.winfo_height())) self.drawing_context = DrawingContext(orig=self.drawing_area, target=self.canvas_area, border=0.05) def transposeBack(self, pos): return self.drawing_context.transposeBack(pos) def transpose(self, pos): return self.drawing_context.transpose(pos) # endregion # region Events def on_keypress(self, event): ec = event.char ek = event.keysym if ek == 'Escape': self.selectedObject = None def on_resize(self, event): self.canvas_area = Rectangle((0, 0, self.winfo_width(), self.winfo_height())) self.drawing_context.target_rect = self.canvas_area self.redraw() def on_left_click(self, event): x, y = event.x, event.y d_point = self.drawing_context.transposeBack(Point(x, y)) if not self.drawing_area.contains_point(d_point): # ignore outside border return if self.selectedObject: self.drp_Operation = Drp_MoveObject(self, Point(x, y), self.selectedObject) else: newLine = LineElement(start=d_point, end=d_point + (1, 1)) self.add_element(newLine) self.redraw() self.drp_Operation = Drp_DrawLine(self, Point(x, y), newLine) self.selectedObject = newLine def on_object_click(self, object, event): self.selectedObject = object # print(f"on_object_click: event={event},object={object}") def on_closing(self): if not messagebox.askokcancel( 'Exit Tool', 'Do you really want to exit this tool?'): return self.master.destroy() def on_drag(self, event): if self.drp_Operation: self.drp_Operation.on_drag((event.x, event.y)) def on_drop(self, event): if self.drp_Operation: self.drp_Operation.on_drop((event.x, event.y)) self.drp_Operation = None # endregion # region Elements def add_element(self, drawing_element): self.elements.append(drawing_element) self.redraw() def new_drawing(self): self.setStatusMessage(text='Creating new drawing') self.elements = [] self.redraw() self.setStatusMessage(text='Created new drawing', resetInSecs=5) # endregion # region Drawing def redraw(self): self.delete("all") self.draw_border() for element in self.elements: element.draw_on_canvas(self, self.drawing_context) def draw_border(self): ctx = self.drawing_context p1 = ctx.transpose(self.drawing_area.start) p3 = ctx.transpose(self.drawing_area.end) p2, p4 = Point(p1.x, p3.y), Point(p3.x, p1.y) points = [p1, p2, p3, p4, p1] flat_points = [item for p in points for item in p.xy] self.create_line(*flat_points) # endregion # region Statusbar def create_statusbar(self): self.statusbar = StatusBar(master=self.master) self.statusbar.pack(fill=tk.X) def setStatusMessage(self, **kwargs): if self.statusbar: self.statusbar.setMessage(**kwargs) else: txt = kwargs.get("text", "") print(f'{datetime.now()} Status: {txt}') def setProgress(self, **kwargs): if self.statusbar: self.statusbar.setProgress(**kwargs) else: ptext = kwargs.get('text', '') value = kwargs.get('value', 0) range = kwargs.get('maximum', 0) progr = "" if not value \ else f'[{value}]' if not range \ else f'[{value}/{range}]' print(f'{datetime.now()} Progress: {progr} - {ptext}')