def pack_windows(root):
    main_paned_window = PanedWindow(root)
    main_paned_window.pack(fill=BOTH, expand=True)

    tone_paned_window=PanedWindow(relief=tk.GROOVE,bd=3,orient=tk.VERTICAL)
    main_paned_window.add(tone_paned_window)
    
    sub_tone_paned_window=PanedWindow(tone_paned_window)
    tone_paned_window.add(sub_tone_paned_window)
    
    plot_window=PanedWindow()
    main_paned_window.add(plot_window)
    plot_window=ImageViewer(plot_window)
    plot_window.canvas.get_tk_widget().pack(fill=tk.BOTH,expand=True)

    tone_window=ToneCurveViewer(sub_tone_paned_window,plot_window)
    tone_window.canvas.get_tk_widget().pack(fill=tk.BOTH,expand=True)
    space_frame=Frame()
    tone_paned_window.add(space_frame)
    
    button=Button(space_frame,text="something")
    button.pack()

    def quit_app():
        root.quit()
        root.destroy()

    quitbutton=Button(space_frame,text="exit",command=quit_app)
    quitbutton.pack()
Exemple #2
0
 def __init__(self, master=None):
     Frame.__init__(self, master)
     self.pack(expand=1, fill='both')
     self.master.geometry('1440x900')
     paned_window = PanedWindow(self)
     self.treeview_kspelements = TreeviewKSPElements(self)
     self.treeview_kspobjects = TreeviewKSPObjects(self)
     paned_window.pack(expand=1, fill='both')
     paned_window.add(self.treeview_kspelements)
     paned_window.add(self.treeview_kspobjects)
     
     menubar = Menu(self)
     
     filemenu = Menu(self)
     filemenu.add_command(label='Open', command=self._open)
     filemenu.add_command(label='Save', command=self._save)
     filemenu.add_command(label='Save As', command=self._save_as)
     filemenu.add_separator()
     filemenu.add_command(label='Exit', command=self.master.destroy)
     menubar.add_cascade(menu=filemenu, label='File')
     
     insertmenu = Menu(self)
     insertmenu.add_command(label='KSP Element', command=self._insert_element, state='disabled')
     insertmenu.add_command(label='KSP Object', command=self._insert_object)
     menubar.add_cascade(menu=insertmenu, label='Insert')
     self.master.config(menu=menubar)
    def __init__(self, tk: Tk):
        tk.title("Layered Polygons")

        menubar = Menu(tk)

        menu_file = Menu(menubar, tearoff=0)
        menu_file.add_command(label="New...", command=self._new_scene)
        menu_file.add_command(label="Open...", command=self._open_scene)
        menu_file.add_separator()
        menu_file.add_command(label="Save", command=self._save_scene)
        menu_file.add_command(label="Save As...", command=self._save_scene_as)
        menu_file.add_separator()
        menu_export = Menu(menu_file, tearoff=0)
        menu_export.add_command(label="Wavefront (.obj)...",
                                command=self._export_obj)
        menu_file.add_cascade(label="Export As", menu=menu_export)
        menu_file.add_separator()
        menu_file.add_command(label="Quit", command=self._quit_app)
        menubar.add_cascade(label="File", menu=menu_file)

        tk.config(menu=menubar)

        paned = PanedWindow(tk, relief=RAISED)
        paned.pack(fill=BOTH, expand=1)

        frame = Frame(paned)
        paned.add(frame)
        self._canvas = LayPolyCanvas(frame)
        bar_x = Scrollbar(frame, orient=HORIZONTAL)
        bar_x.pack(side=BOTTOM, fill=X)
        bar_x.config(command=self._canvas.xview)
        bar_y = Scrollbar(frame, orient=VERTICAL)
        bar_y.pack(side=RIGHT, fill=Y)
        bar_y.config(command=self._canvas.yview)
        self._canvas.config(xscrollcommand=bar_x.set, yscrollcommand=bar_y.set)
        self._canvas.pack(side=LEFT, expand=True, fill=BOTH)
        # Thanks to the two guys on Stack Overflow for that!
        # ( http://stackoverflow.com/a/7734187 )

        self._layer_list = Listbox(paned, selectmode=SINGLE)
        paned.add(self._layer_list)

        self._scene = None
        self._current_layer = None
        self._is_drawing_polygon = False
        self._tk = tk

        self._canvas.bind("<Button-1>", self._canvas_left_click)
        self._canvas.bind("<Button-3>", self._canvas_right_click)
        self._canvas.bind("<Motion>", self._canvas_mouse_moved)
        self._layer_list.bind("<<ListboxSelect>>", self._layer_change)

        self._current_path = None
def main():
    root=tk.Tk()
    #top frame configuration
    

    fig,ax=plt.subplots()
    xs=np.arange(-np.pi,np.pi,0.001)
    ys=np.sin(xs)
    ax.plot(xs,ys)

    plot_window=PanedWindow(root)

    canvas=FigureCanvasTkAgg(fig,master=plot_window)
    canvas.get_tk_widget().pack(side=TOP,fill=BOTH,expand=True)

    toolbar = NavigationToolbar2TkAgg(canvas, plot_window)
    toolbar.update()

    top_frame=Frame(root,)
    left_frame=Frame(root, relief=tk.SUNKEN,bd=4)
    bottom_frame=Frame(root)

    left_frame.pack(side=LEFT,fill=BOTH,expand=False)
    
    plot_window.pack(side=TOP,fill=BOTH,expand=True)
    top_frame.pack(side=TOP,fill=X,expand=False)
    bottom_frame.pack(side=TOP,fill=X,expand=False)

    Button(top_frame,text="top left button").pack(side=LEFT, fill=X, expand=True)
    Button(top_frame,text="top right button").pack(side=LEFT,fill=X,expand=True)
    #left frame configuration

    Button(left_frame,text="left button 1").pack(side=TOP,ipady=90,fill=X,anchor=tk.N, expand=True)
    Button(left_frame,text="left button 2").pack(side=TOP,ipady=90,fill=X,anchor=tk.N, expand=True)

    #right frame configuratioion

    Button(bottom_frame,text="right button 1").pack(side=TOP, fill=BOTH, expand=True)
    Button(bottom_frame,text="right button 2").pack(side=TOP, fill=BOTH, expand=True)    


    root.mainloop()
Exemple #5
0
class DatabaseView:
    def __init__(self, root, config_save, rest_client_factory):
        self.config = config_save.get_configuration()
        self.root = root
        application_folder = BrowserConfiguration.get_application_directory_and_create_if_necessary()
        self.database = XnatDatabase(rest_client_factory.create_rest_client(self.config), self.config, application_folder)
        self.database_models = XnatModelFactory(self.database)
        self.config_save = config_save

        self.master_paned_window = PanedWindow(root)
        self.master_paned_window.pack(fill=BOTH, expand=1)

        self._project_listbox = LabeledListBox(self.master_paned_window, self.database_models.project_list_model, 'Project:')
        self.master_paned_window.add(self._project_listbox)

        self._subject_listbox = LabeledListBox(self.master_paned_window, self.database_models.subject_list_model, 'Subject:')
        self.master_paned_window.add(self._subject_listbox)

        self._scan_listbox = LabeledProgressListBox(self.master_paned_window, self.database_models.scan_list_model, "Scans:")
        self.master_paned_window.add(self._scan_listbox)

    def close(self):
        self.master_paned_window.destroy()
Exemple #6
0
def main():
    root=tk.Tk()

    main_paned_window = PanedWindow(root)
    main_paned_window.pack(fill=BOTH, expand=1)

    tone_curve_paned_window=PanedWindow(main_paned_window)
    main_paned_window.add(tone_curve_paned_window)
    
    tone_curve_window=PanedWindow(tone_curve_paned_window,relief=tk.GROOVE,bd=3,orient=tk.VERTICAL)
    mlp_tone_curve_window=MatplotlibWindow2(tone_curve_window)
    mlp_tone_curve_window.canvas.get_tk_widget().pack(fill=tk.BOTH,expand=True)

    #text_panel_left = Text(main_paned_window, height=6, width =15,relief=tk.GROOVE,bd=2)
    #main_paned_window.add(text_panel_left)

    sub_paned_window = PanedWindow(main_paned_window, orient=tk.VERTICAL)

    #plot sin curve
    plot_paned_window=PanedWindow(sub_paned_window,relief=tk.GROOVE,bd=3,orient=tk.VERTICAL)
    mlp_window=MatplotlibWindow(plot_paned_window)
    mlp_window.canvas.get_tk_widget().pack(fill=tk.BOTH,expand=True)


    main_paned_window.add(sub_paned_window)
    bottom_pane_text = Text(sub_paned_window, height=3, width =3, relief=tk.SUNKEN,bd=2)
    
    sub_paned_window.add(plot_paned_window)
    sub_paned_window.add(bottom_pane_text)




    button=Button(root,text="Hello")
    button.pack()

    root.mainloop()
Exemple #7
0
    def __init__(self, master):
        self.master = PanedWindow()
        master.title("Nonogram")
        m1 = PanedWindow()
        m1.pack(fill=BOTH, expand=1)

        left = Label(m1, text="left pane")

        m1.add(left)

        m2 = PanedWindow(m1, orient=VERTICAL)
        m1.add(m2)

        self.new_button = Button(m2,
                                 text="New puzzle",
                                 command=self.new_puzzle)
        self.new_button.pack()
        self.save_button = Button(m2,
                                  text="Save puzzle",
                                  command=self.save_puzzle)
        self.save_button.pack()

        bottom = Label(m2, text="bottom pane")
        m2.add(bottom)
	def __init__(self, controller, width, height, *args, **kwargs):
		BaseWindow.__init__(self, controller, *args, **kwargs)
		self.controller = controller
		self.controller.configure_toplevel(self)
		self.resizable(True, True)
		self.attributes('-topmost', False) #Remove the toplevel priority
		self.set_exit_function(self.exit)
		self.set_title("Canvas")
		self.file = None
		self.width = int(width)
		self.height = int(height)
		self.geometry(f"{WIDTH}x{HEIGHT}")
		self.bind("<Escape>", self.exit)
		self.top_bar.pack(side = "top", fill = "x", pady = (2,0))
		self.magnifying_glass_image = load_tk_image_from_bytes_array(magnifying_glass_bytes)
		self.floppy_image = load_tk_image_from_bytes_array(floppy_bytes)
		self.bytes_image=  load_tk_image_from_bytes_array(export_to_bytes_bytes)
		self.horizontal_flip_image =  load_tk_image_from_bytes_array(flip_horizontal_bytes)
		self.vertical_flip_image = load_tk_image_from_bytes_array(flip_vertical_bytes)
		self.rotate_left_image = load_tk_image_from_bytes_array(rotate_left_bytes)
		self.rotate_right_image = load_tk_image_from_bytes_array(rotate_right_bytes)
		self.to_grayscale_image = load_tk_image_from_bytes_array(to_grayscale_bytes)
		self.selection_options_image = load_tk_image_from_bytes_array(selection_options_bytes)
		self.layers_symbol_image = load_tk_image_from_bytes_array(layers_symbol_bytes)
		self.folder_options_symbol = load_tk_image_from_bytes_array(folder_options_symbol_bytes)
		self.effects_wand_symbol = load_tk_image_from_bytes_array(effects_wand_symbol_bytes)
		self.copy_options_symbol = load_tk_image_from_bytes_array(copy_options_symbol_bytes)
		self.undo_symbol = load_tk_image_from_bytes_array(undo_symbol_bytes)
		self.redo_symbol = load_tk_image_from_bytes_array(redo_symbol_bytes)

		self.drawtips_references = []
		self.project = PixelProject(self.width, self.height)

		panes = PanedWindow(self, orient = "horizontal", sashpad=3, sashrelief ="sunken")
		panes.pack(fill = "both", expand = True)
		panes.config(borderwidth = 0)

		self.left_side_frame = Frame(panes)
		self.left_side_frame.pack(fill = "both", expand = False, side = "left")
		panes.add(self.left_side_frame)

		tool_buttons = []
		self.gif_tool_bar = ToolBar(tool_buttons, self.left_side_frame)
		self.gif_tool_bar.pack(side = "top", fill = "x", pady = (0,2))

		save_options_button = Label(self.gif_tool_bar, image = self.floppy_image, font = "bold")
		save_options_button.pack(side = "left")
		save_menu = Menu(self, tearoff=0)
		save_menu.add_command(label="Export Gif", command=self.export_gif)
		save_menu.add_command(label="Export Selected Frame", command=self.export_selected_layer)
		save_menu.add_command(label="Export Selected Layer", command=self.export_selected_frame)
		# gif_menu.add_command(label="Export Project as Zip", command=self.export_zip)
		# gif_menu.add_command(label="Export Project as .lpixel", command=self.flip_selection_horizontal)
		# gif_menu.add_command(label="Load Folder as Layers in Current Frame", command=self.load_folder_as_layers)
		bind_popup("<Button-1>", save_options_button, save_menu)

		load_options_button = Label(self.gif_tool_bar, image = self.folder_options_symbol, font = "bold")
		load_options_button.pack(side = "left")
		load_options_menu = Menu(self, tearoff=0)
		load_options_menu.add_command(label="Import Gif as Frames", command=self.import_gif)
		load_options_menu.add_command(label="Load Folder as Frames", command=self.load_folder_as_frames)
		load_options_menu.add_command(label="Load Folder as Layers in Selected Frame", command=self.load_folder_as_layers)
		bind_popup("<Button-1>", load_options_button, load_options_menu)

		preview_options_button = Label(self.gif_tool_bar, image = self.magnifying_glass_image, font = "bold")
		preview_options_button.pack(side = "left")
		preview_options_menu = Menu(self, tearoff=0)
		preview_options_menu.add_command(label="Inspect Selected Frame", command=self.inspect_frame)
		preview_options_menu.add_command(label="Inspect Selected Layer", command=self.inspect_layer)
		bind_popup("<Button-1>", preview_options_button, preview_options_menu)

		panes2 = PanedWindow(self.left_side_frame, orient = "vertical", sashpad=3, sashrelief ="sunken")
		panes2.pack(fill = "both", expand = True, padx = 4, pady = (0,4))
		panes2.config(borderwidth = 0)

		self.gif_view = LayerViewer(self.project, self.width, self.height, panes2)
		self.gif_view.pack(fill = "both", expand = True)
		panes2.add(self.gif_view)
		
		self.frame_manager = LayerManager(self, self.project, panes2)
		self.frame_manager.pack(side = "left", fill = "both", expand = True, pady = 0)
		panes2.add(self.frame_manager)

		self.right_side_frame = Frame(panes)
		self.right_side_frame.pack(fill = "both", expand = True, side = "right")
		panes.add(self.right_side_frame)

		tool_buttons = [
			(self.vertical_flip_image, self.flip_vertical),
			(self.horizontal_flip_image, self.flip_horizontal),
			(self.rotate_left_image, self.rotate_left),
			(self.rotate_right_image, self.rotate_right),
		]
		self.tool_bar = ToolBar(tool_buttons, self.right_side_frame)
		self.tool_bar.pack(side = "top", fill = "x")


		layer_menu = Menu(self, tearoff = 0)
		layer_menu.add_command(label = "Rename Current Layer", command = self.rename_selected_layer)
		layer_menu.add_command(label = "Export Current Layer", command = self.save)
		layer_menu.add_command(label = "Export Current Layer as Bytes (Console)", command = self.export_selected_layer_as_bytes)
		layer_menu.add_command(label = "Delete Current Layer", command = self.delete_selected_layer)
		layer_menu.add_command(label = "Duplicate Current Layer", command = self.copy_selected_layer)
		layer_menu.add_command(label = "Promote Current Layer", command = self.promote_selected_layer)
		layer_menu.add_command(label = "Demote Current Layer", command = self.demote_selected_layer)
		layer_menu.add_command(label = "Merge Layer Down", command = self.merge_selected_layer_down)
		layer_menu.add_separator()
		layer_menu.add_command(label = "Rename Current Frame", command = self.rename_selected_frame)
		layer_menu.add_command(label = "Export Current Frame", command = self.save_selected_frame)
		layer_menu.add_command(label = "Export Current Frame as Bytes (Console)", command = self.export_selected_frame_as_bytes)
		layer_menu.add_command(label = "Delete Current Frame", command = self.delete_selected_frame)
		layer_menu.add_command(label = "Duplicate Current Frame", command = self.copy_selected_frame)
		layer_menu.add_command(label = "Promote Current Frame", command = self.promote_selected_frame)
		layer_menu.add_command(label = "Demote Current Frame", command = self.demote_selected_frame)
		layer_menu.add_command(label = "New Layer in Current Frame", command = self.new_layer_in_selected_frame)
		layer_menu.add_command(label = "New Layer from Image in Current Frame", command = self.new_layer_from_image_in_selected_frame)
		self.layer_options_menu_button = Label(self.tool_bar, image = self.layers_symbol_image, font = "bold")
		self.layer_options_menu_button.pack(side = "left")
		bind_popup("<Button-1>", self.layer_options_menu_button, layer_menu)

		selection_menu = Menu(self, tearoff=0)
		selection_menu.add_command(label = "Flood Fill Selection", command = self.fill_selection)
		selection_menu.add_command(label = "Flip Selection Vertical", command = self.flip_selection_vertical)
		selection_menu.add_command(label = "Flip Selection Horizontal", command = self.flip_selection_horizontal)
		selection_menu.add_command(label = "Rotate Selection Right", command = self.rotate_selection_right)
		selection_menu.add_command(label = "Rotate Selection Left", command = self.rotate_seletion_left)
		selection_menu.add_command(label = "Export Selection", command = self.export_selection)
		selection_menu.add_command(label = "Export Selection as Bytes (Console)", command = self.export_selection_as_bytes)
		selection_menu.add_separator()
		selection_menu.add_command(label = "Copy Selection to Clipboard", command = self.copy_selection_to_clipboard)
		selection_menu.add_command(label = "New Layer from Selection", command = self.new_layer_image_from_selection)
		selection_menu.add_separator()
		selection_menu.add_command(label = "Apply Blur Filter to Selection", command = self.effect_blur_selection)
		selection_menu.add_command(label = "Apply Contour Filter to Selection", command = self.effect_contour_selection)
		selection_menu.add_command(label = "Apply Detail Filter to Selection", command = self.effect_detail_selection)
		selection_menu.add_command(label = "Apply Edge Enhance Filter to Selection", command = self.effect_edge_enhance_selection)
		selection_menu.add_command(label = "Apply Edge Enhance More Filter to Selection", command = self.effect_edge_enhance_more_selection)
		selection_menu.add_command(label = "Apply Emboss Filter to Selection", command = self.effect_emboss_selection)
		selection_menu.add_command(label = "Apply Find Edges Filter to Selection", command = self.effect_find_edges_selection)
		selection_menu.add_command(label = "Apply Sharpen Filter to Selection", command = self.effect_sharpen_selection)
		selection_menu.add_command(label = "Apply Smooth Filter to Selection", command = self.effect_smooth_selection)
		selection_menu.add_command(label = "Apply Smooth More Filter to Selection", command = self.effect_smooth_more_selection)
		selection_menu.add_command(label = "Apply Gaussian Filter to Selection", command = self.effect_gaussian_selection)
		selection_menu.add_command(label = "Apply Box Blur Filter to Selection", command = self.effect_box_blur_selection)
		selection_menu.add_command(label = "Apply Median Filter to Selection", command = self.effect_median_filter_selection)
		selection_menu.add_command(label = "Apply Min Filter to Selection", command = self.effect_min_filter_selection)
		selection_menu.add_command(label = "Apply Max Filter to Selection", command = self.effect_max_filter_selection)
		selection_menu.add_command(label = "Apply Mode Filter to Selection", command = self.effect_mode_filter_selection)
		self.selections_options_menu_button = Label(self.tool_bar, image = self.selection_options_image, font = "bold")
		self.selections_options_menu_button.pack(side = "left")
		bind_popup("<Button-1>", self.selections_options_menu_button, selection_menu)

		effects_menu = Menu(self, tearoff=0)
		effects_menu.add_command(label = "Apply Blur Filter", command = self.effect_blur_layer)
		effects_menu.add_command(label = "Apply Contour Filter", command = self.effect_contour_layer)
		effects_menu.add_command(label = "Apply Detail Filter", command = self.effect_detail_layer)
		effects_menu.add_command(label = "Apply Edge Enhance Filter", command = self.effect_edge_enhance_layer)
		effects_menu.add_command(label = "Apply Edge Enhance More Filter", command = self.effect_edge_enhance_more_layer)
		effects_menu.add_command(label = "Apply Emboss Filter", command = self.effect_emboss_layer)
		effects_menu.add_command(label = "Apply Find Edges Filter", command = self.effect_find_edges_layer)
		effects_menu.add_command(label = "Apply Sharpen Filter", command = self.effect_sharpen_layer)
		effects_menu.add_command(label = "Apply Smooth Filter", command = self.effect_smooth_layer)
		effects_menu.add_command(label = "Apply Smooth More Filter", command = self.effect_smooth_more_layer)
		effects_menu.add_command(label = "Apply Gaussian Filter", command = self.effect_gaussian_layer)
		effects_menu.add_command(label = "Apply Box Blur Filter", command = self.effect_box_blur_layer)
		effects_menu.add_command(label = "Apply Median Filter", command = self.effect_median_filter_layer)
		effects_menu.add_command(label = "Apply Min Filter", command = self.effect_min_filter_layer)
		effects_menu.add_command(label = "Apply Max Filter", command = self.effect_max_filter_layer)
		effects_menu.add_command(label = "Apply Mode Filter", command = self.effect_mode_filter_layer)
		self.effects_options_menu_button = Label(self.tool_bar, image = self.effects_wand_symbol, font = "bold")
		self.effects_options_menu_button.pack(side = "left")
		bind_popup("<Button-1>", self.effects_options_menu_button, effects_menu)

		copy_options_menu = Menu(self, tearoff=0)
		copy_options_menu.add_command(label = "Copy Current Layer to Clipboard", command = self.copy_selected_layer_to_clipboard)
		copy_options_menu.add_command(label = "Copy Current Frame to Clipboard", command = self.copy_selected_frame_to_clipboard)
		copy_options_menu.add_command(label = "Copy Selection to Clipboard", command = self.copy_selection_to_clipboard)
		copy_options_menu.add_separator()
		copy_options_menu.add_command(label = "Paste As New Layer in Current Frame", command = self.paste_as_new_layer_in_current_frame)
		copy_options_menu.add_command(label = "Paste As New Layer in New Frame", command = self.paste_as_new_layer_in_new_frame)
		copy_options_button = Label(self.tool_bar, image = self.copy_options_symbol, font = "bold")
		copy_options_button.pack(side = "left")
		bind_popup("<Button-1>", copy_options_button, copy_options_menu)

		undo_button =  Label(self.tool_bar, image = self.undo_symbol)
		undo_button.pack(side = "left")
		undo_button.bind("<Button-1>", self.undo)

		redo_button =  Label(self.tool_bar, image = self.redo_symbol)
		redo_button.pack(side = "left")
		redo_button.bind("<Button-1>", self.redo)

		self.canvas_frame = ttk.LabelFrame(self.right_side_frame, text = "")
		self.canvas_frame.pack(fill = "both", expand = True, anchor = "n", padx = 3)
		inner_frame = Frame(self.canvas_frame)
		inner_frame.pack(fill = "both", expand = True, side = "top", anchor = "n", padx = 4, pady = 4)
		self.canvas = LyfeCanvas(self.project, inner_frame)
		force_aspect(self.canvas, inner_frame, float(self.width)/float(self.height))

		self.footer = Frame(self.right_side_frame)
		self.footer.pack(side = "bottom", fill = "x", expand = False, padx = 3)
		self.footer_var = StringVar()
		self.footer_label = Label(self.footer, textvariable = self.footer_var)
		self.footer_label.pack(side = "left", expand = False, fill = "x")

		self.grip = ttk.Sizegrip(self)
		self.grip.place(relx=1.0, rely=1.0, anchor="se")
		self.grip.bind("<ButtonPress-1>", self.on_press)
		self.grip.bind("<B1-Motion>", self.on_resize)
		self.grip.bind("<ButtonRelease-1>", self.on_release)

		self.canvas.bind_middle(self.eyedrop)
		self.canvas.bind_movement(self.on_mouse_move)
		self.canvas.canvas.bind("<ButtonPress-1>", self.on_canvas_click)
		self.canvas.canvas.bind("<B1-Motion>", self.on_canvas_drag)
		self.canvas.canvas.bind("<ButtonRelease-1>", self.on_canvas_release)
		self.canvas.canvas.bind("<ButtonPress-3>", self.on_erase_start)
		self.canvas.bind_right_drag(self.on_erase)
		self.canvas.canvas.bind("<ButtonRelease-3>", self.on_erase_end)

		self.canvas.after_idle(self.refresh)
Exemple #9
0
    def __init__(self, controller):
        ttk.Frame.__init__(self)
        self.controller = controller
        self.window = self._nametowidget(self.winfo_parent())
        self.window.bind("<Escape>", self.exit)
        self.window.title("LyfePixel")
        self.window.protocol("WM_DELETE_WINDOW", self.exit)

        self.controller.configure_toplevel(self.window)
        self.window.overrideredirect(0)
        self.place(relwidth=1, relheight=1)
        self.state = TOOLCONST.DRAW
        self.window.resizable(True, True)
        self.project = PixelProject(8, 8)
        self.pallet = self.project.selected_frame.selected_layer
        self.pallet.selection = [
            f"{self.pallet.width - 1}x{self.pallet.height - 1}"
        ]
        self.alpha = 255

        menubar = Menu(self.window)
        menubar.add_command(label="New", command=self.open_start_window)
        menubar.add_separator()
        menubar.add_command(label="Help",
                            command=lambda: HelpWindow(self.controller))
        menubar.add_separator()
        # display the menu
        self.window.config(menu=menubar)

        panes = PanedWindow(self,
                            orient="vertical",
                            sashpad=3,
                            sashrelief="sunken")
        panes.pack(fill="both", expand=True)
        panes.config(borderwidth=0)

        canvas_frame = Frame(panes)
        canvas_frame.pack(fill="both", expand=True, side="top", anchor="n")
        panes.add(canvas_frame)
        panes.paneconfigure(canvas_frame, height=150)
        self.pallet_box = LyfeCanvas(self.project, canvas_frame)
        force_aspect(self.pallet_box, canvas_frame, 1.0)
        colors = get_gradient(8)
        colors.extend(get_rainbow(56))
        for id in self.pallet_box.itterate_canvas():
            self.pallet.set_pixel_color(id, hex_to_rgba(colors.pop()))
        self.pallet_box.bind_left(self.select_color)
        self.pallet_box.bind_double_left(self.change_color)
        self.pallet_box.bind("<Configure>", self.on_configure)
        self.pallet_box.configure()

        outer_frame = Frame(panes)
        outer_frame.pack(fill="both", expand=True, padx=4)
        panes.add(outer_frame)
        panes.paneconfigure(outer_frame, height=250)

        color_label_frame = Frame(outer_frame)
        self.color_label_text_var = StringVar()
        self.color_label_text_var.set(ToolController.get_color())
        color_label = Label(color_label_frame,
                            textvariable=self.color_label_text_var)
        color_label.pack(side="bottom", fill="x", expand=True)
        color_label_frame.pack(fill="x", expand=True)

        self.alpha_scale = Scale(outer_frame,
                                 orient="horizontal",
                                 from_=0,
                                 to=255,
                                 command=self.set_alpha)
        self.alpha_scale.set(self.alpha)
        self.alpha_scale.pack(fill="x", expand=True, pady=2)

        div_1 = ttk.Separator(outer_frame)
        div_1.pack(fill="x", expand=True, pady=2)

        self.toolbox = ToolBox(outer_frame)
        self.toolbox.pack(fill="both", expand=True, pady=2)

        self.grip = ttk.Sizegrip(self)
        self.grip.place(relx=1.0, rely=1.0, anchor="se")
        self.grip.bind("<ButtonPress-1>", self.on_press)
        self.grip.bind("<B1-Motion>", self.on_resize)
        self.grip.bind("<ButtonRelease-1>", self.on_release)

        self.clipboard_box = ClipBoardBox(self.controller, panes)
        self.clipboard_box.pack(fill="both", expand=True)
        panes.add(self.clipboard_box)

        self.window.minsize(250, 400)
        self.window.geometry(f"250x720")
        self.pallet_box.after_idle(self.refresh)

        color = self.pallet.array[self.pallet.width - 1][self.pallet.height -
                                                         1]
        ToolController.set_color(color)
        self.alpha = color[3]
        self.alpha_scale.set(self.alpha)
        self.pallet.start_selection = id
        self.pallet.end_selection = id
        self.update()
Exemple #10
0
class PyEd(Frame):
    def __init__(self, file=None, parent=None):
        Frame.__init__(self, parent, name="base")
        self.file = file
        self.make_menu()

        self.pw = PanedWindow(self, orient=VERTICAL)
        self.pw.pack(side=TOP, expand=YES)
        self.text = Text(self.pw)
        self.pw.add(self.text)
        self.output = Text(self.pw)
        self.pw.add(self.output)

        if self.file:
            self.master.title(self.file)
            self.settext()
        else:
            self.master.title("Untitled")
        self.text.focus()

        self.makestatus()
        self.update_status_msg("Welcome")

        self.bind_all("<Control-n>", self.new)
        self.bind_all("<Control-s>", self.save)
        self.bind_all("<Control-q>", self.quit)
        self.text.bind("<KeyPress>", self.update_pos)

    def make_menu(self):
        self.menubar = Frame(self)
        self.menubar.pack(side=TOP)

        filebtn = Menubutton(self.menubar, text='File')
        filebtn.pack(side=LEFT)
        file = Menu(filebtn, tearoff=0)
        file.add_command(label='New', command=self.new, accelerator="Ctrl+N")
        file.add_command(label='Save', command=self.save, accelerator="Ctrl+S")
        file.add_command(label='Quit', command=self.quit, accelerator="Ctrl+Q")
        filebtn.config(menu=file)

        editbtn = Menubutton(self.menubar, text='Edit')
        editbtn.pack(side=LEFT)
        edit = Menu(editbtn, tearoff=0)
        edit.add_command(label='Cut', command=self.cut)
        edit.add_command(label='Copy', command=self.copy)
        edit.add_command(label='Paste', command=self.paste)
        editbtn.config(menu=edit)

        if self.file:
            self.make_file_type_menu(self.menubar)

    def make_file_type_menu(self, menubar):
        _, e = os.path.splitext(self.file)
        ext = e[1:]
        if ext == "py":
            pybtn = Menubutton(menubar, text='Python', name=ext)
            pybtn.pack(side=LEFT)
            py = Menu(pybtn, tearoff=0)
            py.add_command(label='Compile',
                           command=self.compile_python,
                           accelerator="Ctrl+F5")
            py.add_command(label='Run',
                           command=self.run_python,
                           accelerator="F5")
            pybtn.config(menu=py)
            self.bind_all("<Control-F5>", self.compile_python)
            self.bind_all("<F5>", self.run_python)
        elif ext == "tcl":
            tclbtn = Menubutton(menubar, text='TCL', name=ext)
            tclbtn.pack(side=LEFT)
            tcl = Menu(tclbtn, tearoff=0)
            tcl.add_command(label='Run',
                            command=self.run_tcl,
                            accelerator="F5")
            tclbtn.config(menu=tcl)
            self.bind_all("<F5>", self.run_tcl)

    def makestatus(self):
        statusbar = Frame(self, name="status")
        statusbar.pack(side=BOTTOM)
        msg = Label(statusbar, name="msg")
        msg.pack(side=LEFT)
        pos = Label(statusbar, name="pos")
        pos.pack(side=RIGHT)

    def update_pos(self, event):
        index = self.text.index(INSERT)
        l = self.nametowidget("status.pos")
        l.config(text=index)

    def update_status_msg(self, message):
        l = self.nametowidget("status.msg")
        l.config(text=message)
        self.after(5000, self.clear_status_msg)

    def clear_status_msg(self):
        l = self.nametowidget("status.msg")
        l.config(text="")

    def settext(self):
        if os.path.exists(self.file):
            txt = self.read_file(self.file)
            self.text.insert('1.0', txt)

    def quit(self, event=None):
        Frame.quit(self)

    def save(self, event=None):
        txt = self.text.get('1.0', END + '-1c')
        if not self.file:
            self.file = asksaveasfilename()
            self.master.title(self.file)
            self.make_file_type_menu(self.menubar)
        self.write_to_file(self.file, txt)
        self.update_status_msg("Saved")

    def new(self, event=None):
        _, e = os.path.splitext(self.file)
        ext = e[1:]
        b = self.menubar.children.get(ext)
        if b:
            b.destroy()
        self.file = None
        self.master.title("Untitled")
        self.text.delete('1.0', END)

    def write_to_file(self, file, txt):
        with open(file, 'w') as f:
            f.write(txt)

    def read_file(self, file):
        with open(file, 'r+') as f:
            txt = f.read()
            return txt

    def cut(self):
        txt = self.text.get(SEL_FIRST, SEL_LAST)
        self.text.delete(SEL_FIRST, SEL_LAST)
        self.clipboard_clear()
        self.clipboard_append(txt)

    def copy(self):
        txt = self.text.get(SEL_FIRST, SEL_LAST)
        self.clipboard_clear()
        self.clipboard_append(txt)

    def paste(self):
        txt = self.selection_get(selection='CLIPBOARD')
        self.text.insert(INSERT, txt)

    def run_python(self, event=None):
        p = subprocess.run([sys.executable, self.file],
                           stdout=subprocess.PIPE,
                           stderr=subprocess.PIPE)
        self.output.insert('end', p.stdout)
        self.output.insert('end', p.stderr)
        self.output.see(END)

    def compile_python(self, event=None):
        try:
            py_compile.compile(self.file, doraise=True)
            self.output.insert('end', "%s compiled successfully\n" % self.file)
        except py_compile.PyCompileError as pyce:
            lere = re.compile('\s*File \".*\", line(\d*)')
            r = lere.match(pyce.msg)
            lineno = r.group(1)
            print(lineno)

    def run_tcl(self, event=None):
        p = subprocess.run(["tclsh8.7", self.file],
                           stdout=subprocess.PIPE,
                           stderr=subprocess.PIPE)
        self.output.insert('end', p.stdout)
        self.output.insert('end', p.stderr)
        self.output.see(END)
Exemple #11
0
class MainWindow(Frame):
    GRAPH_TYPES = OrderedDict([("Prime Graph", graphs.PrimeGraph),
                               ("Fast Graph", graphs.FastGraph)])

    def __init__(self, **kw):
        Frame.__init__(self, **kw)
        self.winfo_toplevel().minsize(width=600, height=400)
        width = min(self.winfo_screenwidth(), 1280)
        height = min(self.winfo_screenheight(), 720)
        self.winfo_toplevel().geometry("{}x{}".format(width, height))
        self.pack(expand=True, fill='both')
        self._init_variables()
        self._init_components()
        self._init_menu()

    def _init_components(self):
        self._panes = PanedWindow(self,
                                  orient='horizontal',
                                  sashrelief="raised")
        self._panes.pack(expand=True, fill='both')

        self._left_pane = Frame(self._panes, padx=10, pady=5)
        self._right_pane = PanedWindow(self._panes)
        self._panes.add(self._left_pane, sticky='n')
        self._panes.add(self._right_pane)

        self._group_select = GroupSelect(self._left_pane)
        self._group_select.pack(expand=True, fill='x')

        # spacer
        Frame(self._left_pane, height=10).pack()

        graph_controls = LabelFrame(self._left_pane,
                                    text="Graph options",
                                    padx=10,
                                    pady=5)
        graph_controls.columnconfigure(1, weight=1)
        graph_controls.pack(expand=True, fill='x')

        self._show_graph_checkbutton = CheckBox(graph_controls,
                                                text='Show graph')
        self._show_graph_checkbutton.select()
        self._show_graph_checkbutton.grid(row=0, columnspan=2, sticky='w')

        Label(graph_controls, text='Algorithm').grid(row=1, sticky='w')
        self._graph_type = OptionList(graph_controls,
                                      values=tuple(
                                          MainWindow.GRAPH_TYPES.keys()))
        self._graph_type.config(width=15)
        self._graph_type.grid(row=1, column=1, sticky='we')

        # spacer
        Frame(self._left_pane, height=10).pack()

        self._go_button = Button(self._left_pane, text='Go', command=self._go)
        self._go_button.pack()

    def _init_variables(self):
        # init default properties
        self.setvar("graphframeview", "onlyone")
        self.setvar("vertexlabelposition", "auto")

    def _init_menu(self):
        toplevel = self.winfo_toplevel()
        self._menu = Menu(toplevel)
        toplevel['menu'] = self._menu

        view = Menu(self._menu, tearoff=0)
        self._menu.add_cascade(label="View", menu=view)

        graph_view = Menu(view, tearoff=0)
        view.add_cascade(label="View graphs", menu=graph_view)

        graph_view.add_radiobutton(variable="graphframeview",
                                   label="Only one",
                                   value="onlyone")
        #        graph_view.add_radiobutton(label="In a row", value="row",
        #            variable=graph_view_var)
        graph_view.add_radiobutton(variable="graphframeview",
                                   label="In separate window",
                                   value="window")

    def _go(self):
        view = self.getvar("graphframeview")

        if view == "onlyone":
            for child in self._right_pane.winfo_children():
                child.destroy()
                #if view in ("onlyone", "row"):
            container = FrameWithCloseButton(self._right_pane)
            self._right_pane.add(container, minsize=600)
        else:
            container = Toplevel()

        graph_class = MainWindow.GRAPH_TYPES[self._graph_type.variable.get()]

        facade = Facade(container,
                        self._group_select.selected_group,
                        show_graph=self._show_graph_checkbutton.is_selected(),
                        graph_class=graph_class)

        facade.pack(expand=True, fill='both')
class Program:
    def __init__(self):
        self.root = Tk()
        self.frame = Frame()
        self.frame.pack(side="top")
        self.title = Label(self.frame, text=TITLE)
        self.canvas = Canvas(self.root,
                             width=WIDTH,
                             height=HEIGHT,
                             borderwidth=0,
                             highlightthickness=0,
                             bg="black")
        self.painel = PanedWindow(orient="horizontal")
        self.list_money = []
        self.ents = []
        self.num_itens = 0
        self.wallet = 0
        self.loss = 0
        self.typ = ""

    def create_form(self):
        entries = []
        fields = ["Wallet", "Loss", "Coin"]
        for field in fields:
            row = Frame(self.painel)
            lab = Label(self.painel, width=15, text=field, anchor='w')
            ent = Entry(self.painel)
            entries.append((row, lab, ent))
        return entries

    def create_money(self):
        values_list = [
            100.0, 50.0, 20.0, 10.0, 5.0, 2.0, 1.0, 0.5, 0.25, 0.1, 0.05, 0.01
        ]

        change = self.wallet - self.loss
        count = 0
        while change > 0.0:
            if change - values_list[count] >= 0.0:
                change -= values_list[count]
                change = round(change, 2)
                print(change)
                money = Money(values_list[count], self.typ)
                self.list_money.append(money)
            else:
                count += 1

    def render_notes(self):
        print(self.list_money)
        place = [0, 0]
        for each in self.list_money:
            img = each.render_money()
            imge = Label(self.canvas, image=img)
            imge.image = img
            imge.place(x=place[0], y=place[1])
            if place[0] >= 1000:
                place[1] += 150
                place[0] = 0
                continue
            place[0] += 150

    def fetch(self):
        count = 0
        self.list_money = []
        self.canvas.delete("all")
        self.canvas.update()
        for entry in self.ents:
            count += 1
            text = entry.get()
            if count == 1:
                self.wallet = float(text)
            if count == 2:
                self.loss = float(text)
            if count == 3:
                self.typ = str(text)

        print("WALLET: {}\nLOSS: {}\nTyp: {}".format(self.wallet, self.loss,
                                                     self.typ))
        self.create_money()
        self.render_notes()
        self.canvas.update()

    def create_painel(self):
        ents = self.create_form()
        for row, lab, ent in ents:
            self.painel.add(row)
            self.painel.add(lab)
            self.painel.add(ent)
            self.ents.append(ent)

        self.painel.add(Button(self.painel, text="submit", command=self.fetch))

    def main(self):
        self.canvas.pack()
        self.painel.pack()
        self.title.pack(side="top")
        self.create_painel()
        self.root.mainloop()
Exemple #13
0
profiles_adjust_ROI_text.pack(side=LEFT, padx=(70,0))


global profiles_redefine_film_ROI_frame
profiles_redefine_film_ROI_frame = tk.Frame(profiles_choose_profile_canvas)
profiles_redefine_film_ROI_frame.pack(side=LEFT, padx=(0,100))
profiles_redefine_film_ROI_frame.config(bg='#ffffff')
global profiles_adjust_button_left
global profiles_adjust_button_right
global profiles_adjust_button_down
global profiles_adjust_button_up


global profiles_film_panedwindow
profiles_film_panedwindow = PanedWindow(profiles_view_film_doseplan_ROI, orient='vertical')
profiles_film_panedwindow.pack()
profiles_film_panedwindow.configure(sashrelief = RAISED, showhandle=True)


#global profiles_film_tab_parent
#profiles_film_tab_parent = ttk.Notebook(profiles_film_notebook_canvas)
#profiles_film_tab_parent.borderWidth=0
#profiles_film_tab_parent.pack()

#global profiles_film_tab_image
#profiles_film_tab_image = ttk.Frame(profiles_film_tab_parent)
#profiles_film_tab_image.config(relief=FLAT)



#global profiles_film_tab_dose
Exemple #14
0
from tkinter import Tk, Label, PanedWindow, BOTH, VERTICAL

master = Tk()
m1 = PanedWindow(master)
m1.pack(fill=BOTH, expand=1)

left = Label(m1, text="left pane")
m1.add(left)

m2 = PanedWindow(m1, orient=VERTICAL)
m1.add(m2)

top = Label(m2, text="top pane")
m2.add(top)

bottom = Label(m2, text="bottom pane")
m2.add(bottom)

master.mainloop()
Exemple #15
0
class TotvsService3(Tk):

    log = logController
    topMenu = TopMenu
    timeInterval = int()
    timeIntervalIsRun = False
    bottomPanels = BottomPanels
    linhaDeSeparacao = PanedWindow
    GroupsOfServices = list()

    def configTotvsServiceLayout(self):

        self.title('Totvs Services 3')

        self.log = logController()
        self.log.clearLog()
        self.log.consoleLogAdd(self.menssageInit())

        self.Positioninthecenter()

        self["bg"] = "#616161"

        self.iconbitmap(self.resource_path("icon.ico"))

        self.LoadPainels()

        self.bind("<Configure>", self.callback)

        self.readCsv()

    def menssageInit(self):

        TextIni = ''

        TextIni += "##################### Totvs Service 3 ############################\n"
        TextIni += "### Autor: Gabriel Da Silva Souza                              ###\n"
        TextIni += "### Descrição: App para controlar serviços do Windows, voltado ###\n"
        TextIni += "### para Serviços do Protheus                                  ###\n"
        TextIni += "### Versão: 3.0 15/07/2020                                     ###\n"
        TextIni += "##################################################################"

        return TextIni

    def iniScheduleAtuService(self):

        self.timeIntervalIsRun = True
        self.timeInterval = 5

        schedule = Thread(target=self.scheduleAtuService, args=[])
        schedule.start()

    def scheduleAtuService(self):

        while (self.timeIntervalIsRun):

            self.AtuService()
            sleep(self.timeInterval)

    def AtuService(self):

        for Group in self.bottomPanels.interior.winfo_children():

            Group.AtuServices()

    def closingApp(self):

        self.timeIntervalIsRun = False

    def Positioninthecenter(self):

        largura = 650
        altura = 600

        largura_tela = self.winfo_screenwidth()
        altura_tela = self.winfo_screenheight()

        posx = largura_tela / 2 - largura / 2
        posy = altura_tela / 2 - altura / 2

        self.geometry("%dx%d+%d+%d" % (largura, altura, posx, posy))
        self.minsize(650, 600)

    def LoadPainels(self):

        self.topMenu = TopMenu(self)
        self.topMenu.AdButtons()
        self.topMenu["bg"] = "#616161"
        self.topMenu.pack()

        self.linhaDeSeparacao = PanedWindow()
        self.linhaDeSeparacao["bg"] = "#9E9E9E"
        self.linhaDeSeparacao.pack()

        self.bottomPanels = BottomPanels(self)
        self.bottomPanels["bg"] = "#616161"
        self.bottomPanels.pack()

        self.configPainels()

    def callback(self, event):

        self.configPainels()

    def ReloadBottonPanel(self):

        self.bottomPanels.ClearServicesGroups()

        self.update()

        self.readCsv()

    def resource_path(self, relative_path):
        try:
            base_path = sys._MEIPASS
        except Exception:
            base_path = os.path.abspath("./icons")

        return os.path.join(base_path, relative_path)

    def configPainels(self):

        self.topMenu["height"] = self.winfo_height() * 0.12
        self.topMenu["width"] = self.winfo_width()

        self.linhaDeSeparacao["height"] = 4
        self.linhaDeSeparacao["width"] = self.winfo_width()

        self.bottomPanels["height"] = self.winfo_height() * 0.88
        self.bottomPanels["width"] = self.winfo_width()

    #Lê o CSV e cria os criar os Grupos de Serviços especificado no CSV
    def readCsv(self):

        linha = ''
        groupName = ''
        groupIndex = 0
        StringErro = ''
        self.GroupsOfServices.clear()

        try:
            with open('services.csv', 'r') as arquivo_csv:

                leitor = reader(arquivo_csv, delimiter=';')

                for linha in leitor:

                    if (linha[0] == 'Group'):

                        if (len(linha) > 2):

                            self.GroupsOfServices.append(
                                [linha[1], int(linha[2]), []])
                            groupName = linha[1]
                        else:

                            self.GroupsOfServices.append([linha[1], 1, []])
                            groupName = linha[1]

                        groupIndex += 1
                    else:

                        if (groupName == ''):
                            groupName = 'Grupo Nulo'
                            self.GroupsOfServices.append(['Grupo Nulo', 1, []])
                            groupIndex += 1

                        self.GroupsOfServices[groupIndex - 1][2].append(
                            [linha[0], linha[1]])

            self.bottomPanels.AddGroupsAndServices(self.GroupsOfServices)
        except Exception as e:

            StringErro += '###########################################################\n'
            StringErro += "Erro no CSV: \t" + str(e) + "\n"
            StringErro += '###########################################################\n'

            self.log.consoleLogAdd(StringErro)
Exemple #16
0
class entermenu:
    def reset(self):
        for i in self.treeview.get_children():
            self.treeview.delete(i)

    def searchfun(self):

        search = self.menuText.get()
        cur = con.cursor()
        query = 'select * from menu where name like "' + search + '%"'
        cur.execute(query)
        self.data = cur.fetchall()
        self.insertData()

    def insertData(self):

        self.reset()

        for i in range(0, len(self.data)):

            self.treeview.insert("", i, values=self.data[i])

        # ''''''''FRAME1''''

    def __init__(self):

        self.window = Tk()

        self.window.config(bg="lightcyan",
                           highlightthickness=8,
                           highlightbackground="navy",
                           highlightcolor="navy")

        self.frame1 = PanedWindow(self.window)

        self.enter = Label(self.frame1,
                           text="ENTER MENU",
                           bg="lightcyan",
                           fg="red",
                           font=("Harlow Solid Italic", 40, "italic", "bold"))

        self.menuText = Entry(self.frame1)

        self.searchbttn = Button(self.frame1,
                                 text="Search",
                                 command=self.searchfun)

        self.enter.grid(row=0, column=0)
        self.menuText.grid(row=0, column=1)
        self.searchbttn.grid(row=0, column=2)

        # ''''''''FRAME 2''''

        self.frame2 = PanedWindow(self.window)

        self.treeview = Treeview(self.frame2,
                                 columns=("menuid", "name", "description",
                                          "price"))
        self.treeview.heading("menuid", text="MENU ID")
        self.treeview.heading("name", text="NAME")
        self.treeview.heading("description", text="DESCRIPTION")
        self.treeview.heading("price", text="PRICE")

        # for table color

        style = Style()
        style.configure("Treeview.Heading", font=("Script MT Bold", 16))
        style.configure("Treeview", font=("calibri", 13))

        self.treeview["show"] = "headings"

        self.treeview.pack()

        self.frame1.pack()
        self.frame2.pack()

        self.window.mainloop()


#obj=entermenu()
class App:
    def __init__(self, win):
        self.video = Capture()
        self.win = win
        self.imgcount = 1
        self.win['bg'] = 'white'
        Label(self.win,
              bg='white',
              fg='black',
              text="Attendance Registration",
              font=('times new roman', 25)).pack()
        # master pane contains the seperation
        self.m1 = PanedWindow(self.win, bd=5, background="black")
        self.m1.pack(fill=BOTH, expand=1)

        # leftpane
        self.leftpane = PanedWindow(self.m1,
                                    orient=VERTICAL,
                                    bd=1,
                                    background="white")
        self.m1.add(self.leftpane)

        pic = Image.open('resources/emptyFace.jpg')
        self.ima = ImageTk.PhotoImage(pic)

        self.P1 = Label(self.leftpane,
                        image=self.ima,
                        borderwidth=2,
                        relief="solid",
                        height=150,
                        width=180)
        self.P1.pack(padx=(2, 2), pady=(2, 2))
        self.P1.image = self.ima

        self.P2 = Label(self.leftpane,
                        image=self.ima,
                        borderwidth=2,
                        relief="solid",
                        height=150,
                        width=180)
        self.P2.pack(padx=(2, 2), pady=(2, 2))
        self.P2.image = self.ima

        self.P3 = Label(self.leftpane,
                        image=self.ima,
                        borderwidth=2,
                        relief="solid",
                        height=150,
                        width=180)
        self.P3.pack(padx=(2, 2), pady=(2, 2))
        self.P3.image = self.ima

        # rightpane
        self.rightpane = PanedWindow(self.m1,
                                     orient=VERTICAL,
                                     bd=2,
                                     background="white")
        self.m1.add(self.rightpane)
        h, w = 480, 640
        self.frame2 = Frame(self.rightpane, bg='cyan')
        self.frame2.pack(expand=TRUE)
        self.canvas = Canvas(self.frame2, width=w, height=h, bd=2)
        self.canvas.grid(row=0, column=0)

        self.frame3 = Frame(self.rightpane, bg='white')
        self.frame3.pack(fill=X)

        # inside frame 3
        self.suid = StringVar(value="Enter UID")

        self.Uid = Entry(self.frame3,
                         textvariable=self.suid,
                         font=('times new roman', 13),
                         borderwidth=2,
                         relief="solid",
                         fg='black').grid(row=0, column=1, padx=80, pady=5)

        Button(self.frame3,
               text="CAPTURE",
               font=('times new roman', 12),
               fg='black',
               bg='green',
               height=1,
               width=10,
               command=lambda: [self.activate_threads()]).grid(row=0,
                                                               column=2,
                                                               padx=10,
                                                               pady=5)

        Button(self.frame3,
               text="SUBMIT",
               font=('times new roaman', 12),
               fg='black',
               bg='red',
               height=1,
               width=10,
               command=self.details).grid(row=0, column=3, padx=10, pady=5)

        self.updates()

        self.win.mainloop()

    def preview(self):
        s = self.suid.get()

        list_of_faces = os.listdir("dataset/" + s + "/")
        size_of_faces = len(list_of_faces)

        if size_of_faces >= 3:
            temp_list = list_of_faces[size_of_faces - 3:]
        else:
            temp_list = list_of_faces

        path = 'dataset/' + s + '/' + temp_list[-1]

        if os.path.exists(path):
            image1 = ImageTk.PhotoImage(Image.open(path))
            self.P1.config(image=image1)
            self.P1.image = image1

        if len(temp_list) > 1:
            path = 'dataset/' + s + '/' + temp_list[-2]
            if os.path.exists(path):
                image2 = ImageTk.PhotoImage(Image.open(path))
                self.P2.config(image=image2)
                self.P2.image = image2

        if len(temp_list) > 2:
            path = 'dataset/' + s + '/' + temp_list[-3]
            if os.path.exists(path):
                image3 = ImageTk.PhotoImage(Image.open(path))
                self.P3.config(image=image3)
                self.P3.image = image3

    def activate_threads(self):
        self.thread_var = True
        self.threads()

    def updates(self):

        r, f = self.video.get_frame()
        if r:
            self.img = ImageTk.PhotoImage(image=Image.fromarray(f))
            self.canvas.create_image(0, 0, image=self.img, anchor=NW)
        self.win.after(6, self.updates)

    def threads(self):
        if self.thread_var:
            if self.check_fields():
                print("threads started..")
                self.video.create_dataset(self.suid.get(), self.imgcount)
                self.imgcount += 1

            else:
                from tkinter import messagebox
                messagebox.showerror("Error",
                                     "Enter valid details! and try again.")

            t3 = threading.Thread(target=self.preview)
            t3.start()

    def check_fields(self):
        uid = self.suid.get()
        if uid == "Enter UID":
            return False
        else:
            return True

    def details(self):
        if not self.check_fields:
            from tkinter import messagebox
            messagebox.showerror("Error", "Enter valid UID!")
        else:
            # call for post
            print(self.suid.get())

    def close_btn(self):
        try:
            self.win.destroy()
        except:
            pass
Exemple #18
0
        total_time = (end_time - begin_time).total_seconds()
        if total_time == 0:
            total_time = 2.23E-308  # 当begin_time和end_time相等时,将total_time设为IEEE 745标准中规定的最小浮点数
        bytes_per_second = total_bytes / total_time / 1024
        # bytes_per_second = total_bytes / ((end_time - begin_time).total_seconds()) / 1024
        status_bar.set('已经发送了%d个%s数据包, 已经发送了%d个字节,发送速率: %0.2fK字节/秒', n,
                       packet_proto, total_bytes, bytes_per_second)


def create_welcome_page(root):
    welcome_string = 'simple protocol sender \n IPv6 will come soon\n ICMPv6 also on the road'
    Label(
        root,
        justify=CENTER,
        padx=10,
        pady=150,
        text=welcome_string,
        font=('隶书', '30', 'bold')).pack()


if __name__ == '__main__':
    # 创建协议导航树并放到左右分隔窗体的左侧
    main_panedwindow.add(create_protocols_tree())
    # 将协议编辑区窗体放到左右分隔窗体的右侧
    main_panedwindow.add(protocol_editor_panedwindow)
    # 创建欢迎界面
    create_welcome_page(protocol_editor_panedwindow)
    main_panedwindow.pack(fill=BOTH, expand=1)
    # 启动消息处理
    tk.mainloop()
from tkinter import (PanedWindow, mainloop, BOTH, Entry, VERTICAL, Scale,
                     Button, HORIZONTAL)

pw1 = PanedWindow()
pw1.pack(fill=BOTH, expand=1)

ent1 = Entry(master=pw1, bd=5)
pw1.add(ent1)

pw2 = PanedWindow(master=pw1, orient=VERTICAL)
pw1.add(pw2)

sc1 = Scale(master=pw2, orient=HORIZONTAL)
pw2.add(sc1)

bt1 = Button(master=pw2, text="OK")
pw2.add(bt1)

mainloop()
class treeview:
    def clearTreeData(self):
        for x in self.treeview.get_children():
            self.treeview.delete(x)

    def fullDataFetchQuery(self):
        cur = con.cursor()
        query = "select * from menu"

        cur.execute(query)

        self.data = cur.fetchall()
        print(self.data)

    def showFullData(self):

        self.fullDataFetchQuery()

        for i in range(0, len(self.data)):
            self.treeview.insert("", i, values=self.data[i])

    def deleteCommand(self):
        v = self.treeview.focus()
        c = self.treeview.item(v)
        v1 = c['values']
        if len(v1) > 0:
            ''' GET DATA FROM TREEVIEW'''
            self.treeData = self.treeview.item(self.treeview.focus())['values']
            print(self.treeData)
            print(self.treeData[0])
            ''' ASK YES NO CONFIRMATION '''
            confirm = askyesno("ARE YOU SURE YOU WANT TO DELETE")
            if confirm == True:
                cur = con.cursor()
                query = "delete from menu where menuid=" + str(
                    self.treeData[0])
                print(query)
                cur.execute(query)
                con.commit()

                message = "Data Deleted for MenuId:" + str(
                    self.treeData[0]) + " with Menu Item:" + str(
                        self.treeData[1])
                showinfo("Message", message)

                self.clearTreeData()
                self.showFullData()
        else:
            showinfo('', 'select any menu first')

    def __init__(self):

        self.window = Toplevel()

        self.window.config(bg="lightcyan",
                           highlightthickness=8,
                           highlightbackground="navy",
                           highlightcolor="navy")

        # *******************FRAME 1 Tree view***************************

        #DATA QUERY

        self.frame1 = PanedWindow(self.window)
        self.treeview = Treeview(self.frame1,
                                 columns=("menu", "name", "description",
                                          "price"))
        self.treeview.heading("menu", text="Menu Item")
        self.treeview.heading("name", text="Name")
        self.treeview.heading("description", text="Description")
        self.treeview.heading("price", text="Price")

        self.treeview["show"] = "headings"

        # for table color

        style = Style()
        style.configure("Treeview.Heading", font=("Script MT Bold", 16))
        style.configure("Treeview", font=("calibri", 13))

        self.treeview.pack()

        #*********EVENT BIND TREEVIW**************

        self.frame1.pack()
        self.showFullData()

        # ***************FRAME 2********************

        self.frame2 = PanedWindow(self.window)

        self.delBtn = Button(self.frame2,
                             text="Delete",
                             command=self.deleteCommand)
        self.delBtn.grid(row=0, column=1)

        self.frame2.pack()
        self.window.mainloop()
Exemple #21
0
class Interface:

    root = Tk()
    chosenFolder = ""
    edited_list_songs = []
    count = 0

    def __init__(self):
        logging.basicConfig(
            format='%(asctime)s  %(levelname)s : %(funcName)s  %(message)s',
            level=logging.INFO)
        self.config = ConfigParser()
        self.config.read(os.path.abspath('themes/default.ini'))
        self.root.title('Cover CD v1.6')
        self.root.minsize(600, 500)
        self.root.config(background=self.config['color']['rootBackground'])
        self.setup()

    def setup(self):
        logging.info("Start application")
        self.displayMenuBar()

        #Panel Choix Dossier & Liste Mp3
        self.main_pane = PanedWindow(self.root,
                                     orient=HORIZONTAL,
                                     bg=self.config["color"]["paneBackground"])
        self.main_pane.pack(side=TOP)

        self.Paned2 = PanedWindow(self.root,
                                  orient=HORIZONTAL,
                                  bg=self.config["color"]["paneBackground"])
        self.Paned2.pack()

        self.root.protocol("WM_DELETE_WINDOW", self.on_closing)
        self.root.mainloop()

    def displayMenuBar(self):

        menu_bar = Menu(self.root)
        self.root.config(menu=menu_bar)
        self.menu_fichier = Menu(menu_bar, tearoff=0)
        menu_bar.add_cascade(label="File", menu=self.menu_fichier)
        self.menu_fichier.add_command(label="Open folder",
                                      command=self.openDirectory)
        self.menu_fichier.add_command(label="Save tracklist",
                                      command=self.generate,
                                      state="disabled")
        self.menu_fichier.add_separator()
        self.menu_fichier.add_command(label="Quit", command=self.root.destroy)

    # Bouton choisir un dossier
    def openDirectory(self):
        logging.info("start")

        # La fenetre de selection de dossier apparait
        self.chosenFolder = filedialog.askdirectory(initialdir=getLastPath(),
                                                    title='Choose a folder')
        logging.info("self.chosenfolder : {}".format(self.chosenFolder))
        self.chosenFolder = os.path.abspath(self.chosenFolder)

        if self.chosenFolder:
            try:
                self.deleteFigletTitle()
                self.deletePathFolder()
                self.deleteNameFolder()
                self.deleteFontScrollableList()
                self.deleteSongsLabels()
                self.deleteSongsList()
                self.deleteSaveButton()
                self.labelSucess.destroy()

            except AttributeError:
                pass
            try:
                # Affichage du label du path complet
                self.path = StringVar()
                self.path.set(self.chosenFolder)

                # declaration des objets
                self.C = Mp3Processing(self.chosenFolder)
                self.B = BuildCover(self.C)

                # reinitialise les objets lors de l'ouverture d'un nouveau dossier
                if self.count > 0:
                    self.C.__init__(self.chosenFolder)
                    self.B.__init__(self.C)
                self.count += 1
                self.menu_fichier.entryconfig(1, state="active")

                self.displayFigletTitle()
                self.displayPathFolder()
                self.displayNameFolder(self.C.getDefautCDName())
                self.displayFontScrollableList()
                self.displaySongsLabels()
                self.displaySongsList(self.C.list_mp3)
                self.displaySaveButton()

            except HeaderNotFoundError:
                print("Aucun fichier .mp3 trouvé !")

    def displayFigletTitle(self):
        f = Figlet(font=self.B.default_font)
        text = str(f.renderText(self.B.defaut_CD_title))
        self.figlet_title = Label(self.main_pane,
                                  text=text,
                                  font=self.config["font"]["FigletTitle"],
                                  justify=LEFT,
                                  bg=self.config["color"]["paneBackground"])
        self.figlet_title.pack()

    def deleteFigletTitle(self):
        try:
            self.figlet_title.destroy()
        except AttributeError:
            pass

    def displayPathFolder(self):
        logging.info("start")
        self.labelPathCD = Label(self.main_pane,
                                 textvariable=self.path,
                                 width=60,
                                 bg=self.config["color"]["paneBackground"])
        self.labelPathCD.pack()

    def deletePathFolder(self):
        try:
            self.labelPathCD.destroy()
        except AttributeError:
            pass

    def displayNameFolder(self, nameCD):
        logging.info("start")
        self.CDtitre = StringVar()
        self.CDtitre.set(nameCD)
        self.entryTitreCD = Entry(self.main_pane,
                                  textvariable=self.CDtitre,
                                  width=20,
                                  justify=CENTER,
                                  bg=self.config["color"]["paneBackground"],
                                  relief="solid")
        self.entryTitreCD.pack()
        self.edited_list_songs = []

    def deleteNameFolder(self):
        try:
            self.entryTitreCD.destroy()
            logging.info("OK")
        except AttributeError:
            pass

    def displaySongsLabels(self):
        logging.info("start")
        # Déclaration des Labels
        i = 0
        self.labeltitre = Label(self.Paned2,
                                text="Title",
                                bg=self.config["color"]["paneBackground"])
        self.labeltitre.grid(row=i, column=0)
        self.labelduree = Label(self.Paned2,
                                text="Length",
                                bg=self.config["color"]["paneBackground"])
        self.labelduree.grid(row=i, column=1)
        self.labelbpm = Label(self.Paned2,
                              text="Key",
                              bg=self.config["color"]["paneBackground"])
        self.labelbpm.grid(row=i, column=2)
        self.labelkey = Label(self.Paned2,
                              text="Tempo",
                              bg=self.config["color"]["paneBackground"])
        self.labelkey.grid(row=i, column=3)

    def deleteSongsLabels(self):
        try:
            self.labeltitre.destroy()
            self.labelbpm.destroy()
            self.labelduree.destroy()
            self.labelkey.destroy()
            logging.info("OK")
        except AttributeError:
            pass

    def displaySongsList(self, mp3_dict):
        logging.info("start")
        i = 1
        logging.info('edited_list_songs'.format(self.edited_list_songs))
        self.edited_list_songs.clear()
        logging.info('edited_list_songs'.format(self.edited_list_songs))
        logging.info('mp3_dict items'.format(mp3_dict.items()))

        for key, value in sorted(mp3_dict.items()):
            temp = []
            temp.append(list(mp3_dict.keys())[i - 1])
            titre = StringVar(self.Paned2, value=value['display_title'])
            bpm = StringVar(self.Paned2, value=value['tempo'])
            key = StringVar(self.Paned2, value=value['key'])
            duree = StringVar(self.Paned2, value=value['length'])

            # Affichage des titres
            entryTitre = Entry(self.Paned2,
                               textvariable=titre,
                               width=55,
                               bg=self.config['color']['paneBackground'],
                               relief="solid")
            if len(value["display_title"]) > self.B.title_limit:
                entryTitre.configure(
                    background=self.config['color']['exceedLimitLength'])
            entryTitre.grid(row=i, column=0)
            temp.append(entryTitre)

            entryDuree = Entry(
                self.Paned2,
                textvariable=duree,
                width=8,
                state='disabled',
                disabledbackground=self.config["color"]["paneBackground"],
                disabledforeground="black",
                relief="solid")
            entryDuree.grid(row=i, column=1)
            temp.append(entryDuree)

            entryKey = Entry(self.Paned2,
                             textvariable=key,
                             width=8,
                             bg=self.config["color"]["paneBackground"],
                             relief="solid")
            entryKey.grid(row=i, column=2)
            temp.append(entryKey)

            entryBpm = Entry(self.Paned2,
                             textvariable=bpm,
                             width=8,
                             bg=self.config["color"]["paneBackground"],
                             relief="solid")
            entryBpm.grid(row=i, column=3)
            temp.append(entryBpm)

            self.edited_list_songs.append(list(temp))
            i += 1

    def displaySaveButton(self):
        logging.info("start")
        self.saveButton = Button(self.Paned2,
                                 text='Save',
                                 command=self.save,
                                 padx=5,
                                 pady=5,
                                 bg=self.config["color"]["paneBackground"],
                                 relief="solid")
        self.saveButton.grid()

    def deleteSaveButton(self):
        try:
            self.saveButton.destroy()
            logging.info("OK")
        except AttributeError:
            pass

    def deleteSongsList(self):
        try:
            for sons in self.edited_list_songs:
                for a in sons[1:]:
                    a.get()
                    a.destroy()
            logging.info("OK")
        except AttributeError:
            pass

    def displayFontScrollableList(self):
        logging.info("start")
        self.varFont = StringVar(self.Paned2)
        self.varFont.set(self.B.default_font)
        self.spinBoxFont = OptionMenu(self.main_pane, self.varFont,
                                      *self.B.list_font)
        self.spinBoxFont.config(
            bg=self.config["color"]["paneBackground"],
            activebackground=self.config["color"]["paneBackground"],
            padx=1,
            pady=1,
            relief="solid",
            highlightthickness=0,
            highlightcolor=self.config["border"]["scrollableList"],
            borderwidth=1)
        self.spinBoxFont.pack()

    def deleteFontScrollableList(self):
        try:
            self.spinBoxFont.destroy()
            logging.info("OK")
        except AttributeError:
            pass

    # Enregistre les valeurs des Entry
    def save(self):
        logging.info("start")
        # On recupere la fonte choisie (defaut : standard)
        self.B.default_font = self.varFont.get()
        # On récupere le Titre du CD
        self.B.defaut_CD_title = self.CDtitre.get()

        for elem in self.edited_list_songs:
            self.B.mp3_dict[elem[0]]["display_title"] = str(elem[1].get())
            self.B.mp3_dict[elem[0]]["length"] = str(elem[2].get())
            self.B.mp3_dict[elem[0]]["key"] = str(elem[3].get())
            self.B.mp3_dict[elem[0]]["tempo"] = str(elem[4].get())

        self.generate()
        try:
            self.saveButton.destroy()
        except AttributeError:
            pass

        # Suppression de l'entry titre du CD
        self.deleteFigletTitle()
        self.deleteNameFolder()
        self.deletePathFolder()
        self.deleteSongsLabels()
        self.deleteSongsList()
        self.deleteFontScrollableList()

        self.B.buildHeader()
        self.B.buildListSongs()

        self.displayFigletTitle()
        self.displayPathFolder()
        self.displayNameFolder(self.B.defaut_CD_title)
        self.displayFontScrollableList()
        self.displaySongsLabels()
        self.displaySongsList(self.B.mp3_dict)
        self.displaySaveButton()

    # Genere la cover
    def generate(self):
        logging.info("start")
        try:
            self.labelSucess.destroy()
        except AttributeError:
            pass

        self.B.buildListSongs()
        self.B.writeTemplate()
        self.labelSucess = Label(self.root,
                                 text="Tracklist générée",
                                 bg=self.config["label"]["generateBackground"])
        self.labelSucess.pack(side="bottom")

    def on_closing(self):
        logging.info("start")
        if messagebox.askokcancel("Quit", "Do you want to quit?"):
            self.root.destroy()
Exemple #22
0
    def refreshWidget(self) :
        #print "refresh"
        self.card_win.pack_forget()
        import unicodedata
        #Card window      
        self.card_win = PanedWindow(self.card_win.master, orient=VERTICAL)
        self.card_win.pack(side=TOP, expand=True, fill=BOTH, pady=2, padx=2)
        
        
        #Create the name zone
        name_zone=PanedWindow(self.card_win, orient=HORIZONTAL)
        name = StringVar() 
        name.set(self.name)
        def modifName(*args) :
            try :
                assert('"' not in name.get())
                name.get().encode('ascii')
            except Exception as e:
                print ("error on name")
                name.set(self.name)
                return
            old = self.name in Card.blocked_creature
            self.name=name.get()
            if old or self.name in Card.blocked_creature :
                self.refreshWidget()
        name.trace("w", modifName)
        name_wid=Entry(name_zone, width=30,textvariable=name)
        name_wid.pack()
        name_zone.add(name_wid)
        #Create the cost ad star stringvar
        #print int(floor(self.getCost()))
        self.cost=StringVar()
        self.stars=StringVar()
        cost_wid=Label(None, textvariable=self.cost, background='red',width=5, anchor=W)
        star_wid=Label(None, textvariable=self.stars, background='blue', anchor=E)
        self.cost.set(str(int(floor(self.getCost()))))
        self.stars.set("*"*self.getStars())
        #Add them in name zone
        name_zone.add(cost_wid)
        name_zone.add(star_wid)
        
        
        #Create an Image Zone
        image_zone=Button(self.card_win,  command=self.choosePhoto)
        if hasattr(self,"photofile") and self.photofile :            
            print ("Image: ",self.photofile)
            try :
                pilImage=Image.open(self.photofile)
                img=PhotoImage(pilImage,master=image_zone)
            except :
               decomp=self.photofile.split('/')
               for i in range(1,6) :
                   try :
                       fname="/".join(decomp[-i:])
                       print ("try to open",fname)
                       pilImage = Image.open(fname)
                       img=PhotoImage(pilImage,master=image_zone)
                       self.photofile=fname
                       break
                   except :
                       self.photofile=None
        if self.photofile :
            w, h = img.width(), img.height()
            print('wh',w,h)
            if h>400 :
                print("reduction")
                img=PhotoImage(pilImage.resize((w//2,h//2), Image.ANTIALIAS),master=image_zone)
            image_zone=Button(self.card_win,image=img,  command=self.choosePhoto)
            image_zone.image=img
            #image_zone.configure(image=image_zone.image,width=50,height=50,compound=RIGHT)
            #image_zone.pack()
            #print "IMAGE CHANGED"
        else :
            from os import path
            fname=self.name.replace(" ","_")
            if path.isfile("Cards/"+fname+".png") :
                image_zone.config(text='image can be taken from\n'+"Cards/"+fname+".png",background='white',anchor=CENTER)
            else :
                image_zone.config(text='clic to choose image',background='white',anchor=CENTER)

        #image_zone.pack()
        
        
        # POWER ZONE
        power_zone=PanedWindow(self.card_win, orient=VERTICAL)
        #fenetre=self.card_win.master
        def removePowerCreator(px) :
            def removePower(*args) :
                #print 'avant',list_pow
                self.bonus.remove(px)
                #print 'apres',list_pow
                #self.card_win.pack_forget()
                self.refreshWidget()
            return removePower
        for p in self.bonus :
            powline =  PanedWindow(self.card_win, orient=HORIZONTAL)
            pow_wid=p.initWidget(powline)
            powline.add(pow_wid)
            removepow=Button(powline, text="X", command=removePowerCreator(p), anchor=E)
            removepow.pack()
            powline.add(removepow)
            power_zone.add(powline) 
        def addPower(*args) :
            if addBonus.get()!= "add bonus":
                name=addBonus.get()
            else:
                name=add_cost_alteration.get()
            print ("added :",name)
            import CardPowers
            self.bonus+=[eval('CardPowers.'+name+'()')]
            self.bonus[-1].parent=self.bonus
            self.bonus[-1].card=self
            #self.card_win.pack_forget()
            self.refreshWidget()
        #Add bonus Option menu
        addBonus = StringVar(power_zone)
        addBonus.set("add bonus") # default value
        if not self.pv:  
            addBonus_wid = Spell.getSpellMenu(power_zone, addBonus)
        else: addBonus_wid = getBonusMenu(power_zone, addBonus) 
        addBonus.trace('w', addPower)
        if self.pv>0 or len(self.bonus)==0 or all([b.is_cost_alterator for b in self.bonus]):
            addBonus_wid.pack()
            #Add this to power zone
            power_zone.add(addBonus_wid)
        
        #Create save zone
        save_zone = PanedWindow(self.card_win, orient=HORIZONTAL)
        if self.monster_type != "all" and not(self.name in Card.blocked_creature) :
            save_wid = Button(save_zone, text="Save", command=self.postAndSave)
        elif self.monster_type != "all" : 
            save_wid = Button(save_zone, text="creature in campaign", command=None)
        else:
            save_wid = Button(save_zone, text="nead type", command=None)
        save_wid.pack()
        #Create the open button
        save_zone.pack()        
        if Card.monster_list.keys():
            self.opening = StringVar(save_zone)
            self.opening.set("Open")
            choice = [na for na in Card.monster_list.keys() if na not in Card.blocked_creature]
            choice.sort()
            #print all_monsters.keys()
            open_wid = OptionMenu(save_zone, self.opening,*choice)
            self.opening.trace('w', self.Open)
            open_wid.pack()
            save_zone.add(open_wid)
        
        if Card.monster_list.keys():
            self.delete = StringVar(save_zone)
            self.delete.set("Delete")
            choice = [na for na in Card.monster_list.keys() if na not in Card.blocked_creature]
            choice.sort()
            delete_wid = OptionMenu(save_zone, self.delete,*choice)
            self.delete.trace('w', self.clicDelete)
            delete_wid.pack()
            save_zone.add(delete_wid)
        
        #Create the type button
        self.category = StringVar(save_zone)
        self.category.set(self.monster_type)
        choice = [file2name(t,"_monsters.sav") for t in glob.glob("CardFiles/*_monsters.sav")]
        if "recup" in choice:
            choice.remove("recup")
        #print all_monsters.keys()
        category_wid = OptionMenu(save_zone, self.category,*choice)
        self.category.trace('w', self.setFile)
        
        
        
        category_wid.pack()
        
        #Add it to save zone
        save_zone.add(save_wid)
        save_zone.add(category_wid)
        
        #Create a new Strength zone for att and pv
        strength_zone=PanedWindow(self.card_win, orient=HORIZONTAL)
        att=StringVar()
        att.set(str(self.att))
        pv=StringVar() ; pv.set(str(self.pv))
        def modifiedAttPv(*args) :
            print ("modifiedAttPv")
            self.pv=int(pv.get())
            if self.pv<1 and self.is_spell==False :
                if len(self.bonus)==0 :
                    self.is_spell=True
                    self.refreshWidget()
                else :
                    self.pv=1
                    self.refreshWidget()
            if self.pv>0 and self.is_spell==True :
                if len(self.bonus)==0 :
                    self.is_spell=False
                    self.refreshWidget()
                else :
                    self.pv=0
                    self.refreshWidget()            
            self.att=int(att.get())
            self.getCost()
        att_wid = Spinbox(strength_zone, from_=0, to=1000,textvariable=att,command=modifiedAttPv)
        att_wid.pack()
        strength_zone.add(att_wid)
        strength_zone.add(Label(strength_zone, text='       ', background='white', 
             anchor=CENTER))
        pv_wid = Spinbox(strength_zone, from_=0, to=1000,textvariable=pv,command=modifiedAttPv)
        pv_wid.pack()
        strength_zone.add(pv_wid)
        
        #Put it all in window
        self.card_win.add(name_zone)
        self.card_win.add(image_zone)
        self.card_win.add(power_zone)  
        self.card_win.add(strength_zone)
        self.card_win.add(save_zone)
        
        
        self.card_win.pack()                      
Exemple #23
0
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.title("i.MX Smart-Boot Tool")
        self.wm_minsize(600, 450)

        # Top separator
        ttk.Frame(self).pack(fill='x', pady=4)

        # --------------------------------------------------------------------------------------------------------------
        # Device selection drop-box with scan button
        # --------------------------------------------------------------------------------------------------------------
        frame = ttk.Frame(self)
        frame.pack(fill='x', padx=5)

        self.devices_box = ttk.Combobox(frame, state='readonly')
        self.devices_box.pack(side='left', fill='x', expand=True, padx=2, pady=3)

        self.scan_button = ttk.Button(frame, text="Scan", command=self.on_scan_button_clicked)
        self.scan_button.pack(side='right', padx=2, pady=2)

        # --------------------------------------------------------------------------------------------------------------
        # SMX File inbox with open button
        # --------------------------------------------------------------------------------------------------------------
        frame = ttk.Frame(self)
        frame.pack(fill='x', padx=5)

        self.smx_path = ttk.Entry(frame)
        self.smx_path.pack(side='left', fill='x', expand=True, padx=2, pady=0)

        self.open_button = ttk.Button(frame, text="Open", command=self.on_open_button_clicked)
        self.open_button.pack(side='right', padx=2, pady=2)

        # --------------------------------------------------------------------------------------------------------------
        # Body
        # --------------------------------------------------------------------------------------------------------------
        pw = PanedWindow(self, orient='vertical')
        pw.pack(fill='both', expand=True, padx=6, pady=2)

        frame = ttk.Frame()
        frame.pack(fill='x', padx=4)

        self.script_view = ttk.Treeview(frame, height=5, columns=('num', 'name', 'desc'), show="headings")
        self.script_view.heading('num', text='-')
        self.script_view.heading('name', text='Name')
        self.script_view.heading('desc', text='Description')
        self.script_view.column('num', minwidth=25, width=25, anchor='center', stretch='no')
        self.script_view.column('name', minwidth=160, width=160, anchor='center', stretch='no')
        self.script_view.column('desc', width=100, anchor='w')
        self.script_view.pack(side='left', fill='both', expand=True)

        vsb1 = ttk.Scrollbar(frame, orient="vertical", command=self.script_view.yview)
        vsb1.pack(side='right', fill='y')
        self.script_view.configure(yscrollcommand=vsb1.set)

        pw.add(frame)
        pw.paneconfig(frame, minsize=95, height=95)

        frame = ttk.Frame()
        frame.pack(fill='both', padx=4)

        self.log_view = ttk.Treeview(frame, height=5, columns=('desc',), show='', selectmode='none')
        self.log_view.column('desc', anchor='w')
        self.log_view.pack(side='left', fill='both', expand=True)

        vsb2 = ttk.Scrollbar(frame, orient="vertical", command=self.log_view.yview)
        vsb2.pack(side='right', fill='y')
        self.log_view.configure(yscrollcommand=vsb2.set)

        pw.add(frame)
        pw.paneconfig(frame, minsize=85)

        self.progressbar = ttk.Progressbar(self, orient="horizontal", mode="determinate")
        self.progressbar["maximum"] = PGRANGE
        self.progressbar.pack(fill='x', padx=6, pady=2)

        # --------------------------------------------------------------------------------------------------------------
        # Buttons
        # --------------------------------------------------------------------------------------------------------------
        frame = ttk.Frame(self)
        frame.pack(fill='x', side='bottom', padx=4, pady=5)

        self.about_button = ttk.Button(frame, text="About", command=self.on_about_button_clicked)
        self.about_button.pack(side='left', padx=2, pady=2)
        self.info_button = ttk.Button(frame, text="DevInfo", command=self.on_info_button_clicked, state='disabled')
        self.info_button.pack(side='left', padx=2, pady=2)
        self.exit_button = ttk.Button(frame, text="Exit", command=self.on_exit_button_clicked)
        self.exit_button.pack(side='right', padx=2, pady=2)
        self.start_button = ttk.Button(frame, text="Start", command=self.on_start_button_clicked, state='disabled')
        self.start_button.pack(side='right', padx=2, pady=2)

        self.queue = queue.Queue()

        # USB hotplug (Linux only)
        # self.hotplug.attach(self.scan_usb)
        # self.hotplug.start()
        # TODO: Fix USB hot-plug
        self.scan_usb()
Exemple #24
0
class ServiceGroup(Frame):

    log = logController
    NameGroup = StringVar
    DelayTime = 1
    lbServiceGroupName = Label
    progressBarProcessing = Progressbar
    progressBarStyle = Style
    progressNumber = DoubleVar
    btStarGroup = Button
    imagebtStarGroup = PhotoImage
    btStopGroup = Button
    imagebtStopGroup = PhotoImage
    linhaDeSeparacao = PanedWindow
    OrganizerButtons = PanedWindow
    StyleServiceGroup = StylesInterface

    def __init__(self, *args, **kw):

        Frame.__init__(self, *args, **kw)

        self.NameGroup = StringVar()

        self.log = logController()

    def SetInformationGroup(self, name="", delay=0):

        self.NameGroup.set(name)
        self.DelayTime = delay

    def resource_path(self, relative_path):
        try:
            base_path = sys._MEIPASS
        except Exception:
            base_path = os.path.abspath("./icons")

        return os.path.join(base_path, relative_path)

    def AtuServices(self):

        serviceTool = win32.lib.win32serviceutil

        for service in self.winfo_children():

            if ('service' in service._name):

                StringMen = 'Atualizando Status do Serviço... ' + service.ServiceName

                self.log.consoleLogAdd(StringMen)

                Status = self.StringStatus(
                    serviceTool.QueryServiceStatus(service.ServiceName)[1])

                service.atuStatus(service.ServiceNameDisplay + "\n" + Status,
                                  Status)

    #Retorna a string de cada status do serviço
    def StringStatus(self, nService=0):

        if (nService == 1):
            return "STOPPED"
        elif (nService == 2):
            return "START PENDING"
        elif (nService == 3):
            return "STOP PENDING"
        elif (nService == 4):
            return "RUNNING"
        elif (nService == 5):
            return "CONTINUE PENDING"
        elif (nService == 6):
            return "PAUSE PENDING"
        elif (nService == 7):
            return "PAUSED"

    def ConfigComponents(self, NumberOfServices=0):

        self.lbServiceGroupName = Label(self)
        self.lbServiceGroupName["bg"] = "#616161"
        self.lbServiceGroupName["textvariable"] = self.NameGroup
        self.lbServiceGroupName["font"] = "Roboto 20"
        self.lbServiceGroupName["fg"] = "white"
        self.lbServiceGroupName.pack(pady=5)

        self.progressNumber = DoubleVar()
        self.progressBarStyle = Style()
        self.progressBarStyle.theme_use('clam')
        self.progressBarStyle.configure("Horizontal.TProgressbar",
                                        troughcolor='#616161',
                                        background="#34A853",
                                        lightcolor='#34A853',
                                        darkcolor="#34A853")
        self.progressBarProcessing = Progressbar(
            self,
            style="Horizontal.TProgressbar",
            variable=self.progressNumber,
            maximum=NumberOfServices)
        self.progressBarProcessing.pack(fill=X, padx=10, pady=10)

        self.OrganizerButtons = PanedWindow(self)
        self.OrganizerButtons["height"] = 80
        self.OrganizerButtons["bg"] = "#616161"
        self.OrganizerButtons.pack(fill=X, padx=10)

        self.btStarGroup = Button(self.OrganizerButtons,
                                  command=self.StartGroup)
        self.btStarGroup["bg"] = "#616161"
        self.btStarGroup["bd"] = 0
        self.btStarGroup["command"] = self.StartGroup
        self.imagebtStarGroup = PhotoImage(
            file=self.resource_path("btStartGroupIcon.png"))
        self.btStarGroup.config(image=self.imagebtStarGroup)
        self.btStarGroup.pack(fill=X, side=LEFT, padx=10)

        self.btStopGroup = Button(self.OrganizerButtons,
                                  command=self.StopGroup)
        self.btStopGroup["bg"] = "#616161"
        self.btStopGroup["bd"] = 0
        self.btStopGroup["command"] = self.StopGroup
        self.imagebtStopGroup = PhotoImage(
            file=self.resource_path("btStopGroupIcon.png"))
        self.btStopGroup.config(image=self.imagebtStopGroup)
        self.btStopGroup.pack(fill=X, side=LEFT, padx=5)

        self.linhaDeSeparacao = PanedWindow(self)
        self.linhaDeSeparacao["height"] = 2
        self.linhaDeSeparacao["bg"] = "#9E9E9E"
        self.linhaDeSeparacao.pack(fill=X, padx=20, pady=5)

    def StartGroup(self):

        taskStartServices = Thread(target=self.OptionRunGroup, args=[1])
        taskStartServices.start()

    def StopGroup(self):

        taskStopServices = Thread(target=self.OptionRunGroup, args=[2])
        taskStopServices.start()

    def OptionRunGroup(self, Tipo=0):

        self.progressNumber.set(0)

        for service in self.winfo_children():

            if ('service' in service._name):

                if (Tipo == 1):

                    service.StartService()

                    updProgress = Thread(target=self.updateProgress, args=[])
                    updProgress.start()

                    sleep(self.DelayTime)
                if (Tipo == 2):

                    service.StopService()

                    updProgress = Thread(target=self.updateProgress, args=[])
                    updProgress.start()

                    sleep(self.DelayTime)

        self.progressNumber.set(0)

    def updateProgress(self):

        self.progressNumber.set(self.progressNumber.get() + 1)
Exemple #25
0
class Facade(Frame):
    """This is a Frame that contains group info, group order, apex and prime
    graph.
    """
    def __init__(self, parent, group, show_graph=True, graph_class=None, **kw):
        """
        Parameters:
            show_graph: whether to create and show graph instantly or provide a button to do that lately
            graph_factory: callable accepting one argument - the Group instance and returning Graph instance. Note that
                __str__ method of the callable is used in the UI.
        """
        Frame.__init__(self, parent, **kw)
        self._group = group
        #        self._show_apex = True
        self._show_graph = show_graph
        self._graph_class = graph_class
        # self._init_variables()  # TODO: fix vertex label automatic positioning
        self._init_menu()
        self._init_components()

    @property
    def group(self):
        return self._group

    @property
    def apex_list_container(self):
        return self._apex_container

    @property
    def graph_canvas(self):
        return self._graph_canvas

    def _show_graph_canvas(self):
        self._show_graph_button.forget()
        # TODO: add different layouts and other options
        graph_class = self._graph_class
        self.graph = graph_class(self._group)
        self._graph_canvas = GraphCanvas(self._right_pane, SpringLayout(self.graph), caption=str(graph_class))
        self._graph_canvas.pack(expand=True, fill='both')

        self._graph_canvas.vertex_label_mode = self.getvar(
            name=self.winfo_name() + ".vertexlabelposition")

        self._iterations_plugin = IterationsPlugin()
        self._iterations_plugin.apply(self._graph_canvas)

        self.update_layout()

    def _init_components(self):
        self._panes = PanedWindow(self, orient='horizontal', sashrelief='raised')
        self._panes.pack(expand=True, fill='both')

        self._left_pane = Frame(self._panes, padx=2, pady=2)
        self._right_pane = Frame(self._panes)
        self._panes.add(self._left_pane, width=250)
        self._panes.add(self._right_pane)

        # group name
        group_name_pane = LabelFrame(self._left_pane, text="Group", padx=10, pady=5)
        group_name_pane.pack(fill='x')

        self._group_name = GroupNameLabel(group_name_pane, self._group)
        self._group_name.pack(expand=True, fill='both')

        # group order
        group_order_pane = LabelFrame(self._left_pane, text="Order", padx=10, pady=5)
        group_order_pane.pack(fill='x')

        self._group_order = IntegerContainer(group_order_pane, integer=self._group.order())
        self._group_order.pack(expand=True, fill='both')

        # apex
        self._apex_pane = LabelFrame(self._left_pane, text="Apex", padx=10, pady=5)
        self._apex_pane.pack(expand=True, fill='both')

        self._apex_container = ApexListContainer(self._apex_pane, apex=self._group.apex())
        self._apex_container.pack(expand=True, fill='both')

        # graph controls
        cocliques_frame = LabelFrame(self._left_pane, text="Cocliques", padx=10, pady=5)
        cocliques_frame.pack(fill='x')

        self._cocliques_button = Button(cocliques_frame, text="Calculate", command=self._show_cocliques)
        self._cocliques_button.pack(anchor='nw')

        self._cocliques_container = ListContainer(cocliques_frame)
        self._cocliques_list = Listbox(self._cocliques_container)
        self._cocliques_container.set_listbox(self._cocliques_list)

        # Button(graph_controls, text='Group equivalent vertices').pack(anchor='nw')

        # this is a button that show up instead of graph canvas if we uncheck 'Show graph' checkbox.
        self._show_graph_button = Button(self._right_pane, text='Show graph',
                                         command=self._show_graph_canvas)
        self._graph_canvas = None
        if self._show_graph:
            self._show_graph_canvas()
        else:
            self._show_graph_button.pack()

    def _init_variables(self):
        def set_default_var(name):
            """Sets widget-specific var with same value as root.
            """
            default_var = self.getvar(name)
            local_var_name = self.winfo_name() + "." + name
            self.setvar(local_var_name, default_var)
            return local_var_name

        local_name = set_default_var("vertexlabelposition")
        tools.trace_variable(self, local_name, "w",
                             self._change_vertex_label_position)

    def _change_vertex_label_position(self, name, *arg):
        # override default value
        self.setvar("vertexlabelposition", self.getvar(name))
        if self._graph_canvas is not None:
            self._graph_canvas.vertex_label_mode = self.getvar(name)

    def _init_menu(self):
        """Init menu bar content.
        """
        toplevel = self.winfo_toplevel()
        if toplevel['menu']:
            self._menu = self.nametowidget(name=toplevel['menu'])
        else:
            self._menu = Menu(toplevel)
            toplevel['menu'] = self._menu

        graph_options = Menu(self._menu, tearoff=0)
        self._menu.add_cascade(label="Graph", menu=graph_options)
        self._menu_index = self._menu.index("end")

        vertex_label_position_menu = Menu(graph_options, tearoff=0)
        graph_options.add_cascade(label="Label position", menu=vertex_label_position_menu)

        menu_var = self.winfo_name() + ".vertexlabelposition"
        vertex_label_position_menu.add_radiobutton(variable=menu_var, label="Auto", value="auto")
        vertex_label_position_menu.add_radiobutton(variable=menu_var, label="Center", value="center")

        graph_options.add_command(label="Save graph...", command=self.call_graph_save_dialog)

        self.bind("<Destroy>", self.__destroy_menu)

    #noinspection PyUnusedLocal
    def __destroy_menu(self, event):
        try:
            self._menu.delete(self._menu_index)
        except TclError:
            pass

    def _show_cocliques(self):
        cocliques = self.graph.max_cocliques()

        def select_coclique(*_):
            index = next(iter(self._cocliques_list.curselection()), None)
            if index is not None:
                selected = cocliques[int(index)]
                pick_state = self._graph_canvas.picked_vertex_state
                pick_state.clear()
                for value in selected:
                    pick_state.pick(self._graph_canvas.get_vertex(value))

        self._cocliques_list.insert(0, *[', '.join(map(str, coclique)) for coclique in cocliques])
        self._cocliques_list.bind("<Double-Button-1>", select_coclique)

        self._cocliques_button.forget()
        self._cocliques_container.pack(expand=True, fill='both')

    def call_graph_save_dialog(self):
        file_name = filedialog.asksaveasfilename(defaultextension='.ps',
                                                   filetypes=[('PostScript', '.ps')], parent=self.winfo_toplevel(),
                                                   title="Save graph as image")
        if file_name:
            with codecs.open(file_name, 'w', encoding='utf-8') as f:
                f.write(self._graph_canvas.postscript())

    def update_layout(self):
        try:
            self._iterations_plugin.iterate(50)
        except AttributeError:
            pass
Exemple #26
0
def PanedWindow(root):
    pw = TKPanedWindow(root)
    pw.pack(expand=1)

    return pw
Exemple #27
0
class Card :
    def __init__(self,name="Nom monstre",att=1,pv=1,bonus=None,photo='',monster_type="unknown") :
        self.name=name
        self.att = att
        self.pv = pv
        if not bonus :
            bonus=[] # a cause du fonctionnement etrange de python pour les valeurs d arguments [] par defaut
        self.bonus=bonus
        self.is_spell=(pv<1)
        self.photofile=photo
        self.dumping_file = os.path.join("CardFiles",monster_type+"_monsters.sav")
        self.monster_type = monster_type
        #global all_monsters
        name=self.name.replace(" ","_")
        self.content=self
#        try :
#            self.image = image.load(os.path.join("Card",name+".png"))
#        except :
#            self.image=None
    def equivalentto(self,other) :
        return self==other
    def show(self) :
        pass
    def constructor(self) :
        return ('Card("'+self.name+'",'+str(self.att)+","+str(self.pv)+
            ",["+",".join([p.constructor() for p in self.bonus])+"],"+
             repr(self.photofile)+",'"+self.monster_type+"')")
    def takePlace(self,*ar1,**ars) :
        pass
    def addBonus(self,bonus) :
        self.bonus.append(bonus)
    def getCost(self) :
        if self.pv > 0 :
            cost=self.att/2.+self.pv/2.+sum([p.getCost(self) for p in self.bonus])
        else :
            #print self.bonus
            #if self.bonus :
            #print self.bonus[0].getCost
            #print self.bonus[0].getCost()           
            #if len(self.bonus)>1 : print "** anomalie **"
            S = 0
            for p in self.bonus:
                if p.is_cost_alterator:
                    S += p.getCost(self)
                else:
                    S += p.getCost()
            cost=S# +0.5*(len(self.bonus)-1): why?
        if cost < 0:            cost = 0
        if hasattr(self,"cost") and self.cost!=None :
            # pour les monstres du save, l attribut cost est None        
            print ("cout=",cost," so ",int(floor(cost)))
            self.cost.set(int(floor(cost)))
            self.getStars()
        return cost
    def getStars(self):
        stars = sum([p.getStars() for p in self.bonus])
        if stars>2 : stars=(stars-1)*2
        if stars<0 : stars=0
        if hasattr(self,"stars")  and self.stars != None :
            # pour les monstres du save, l attribut stars existe = None
            self.stars.set('* '*stars)
        #print "stars=",stars
        return stars
    def getDescription(self):
        for b in reversed(self.bonus) :
            try :
                b.getDescription()
            except Exception :
                self.bonus.remove(b)
        return self.name +" ("+str(self.att)+"  "+str(self.pv)+'\n'*bool(self.bonus)+'\n'.join(
            [b.getDescription() for b in self.bonus]) +" )"
    def getInlineDescription(self):
        for b in reversed(self.bonus) :
            try :
                b.getInlineDescription()
            except Exception :
                self.bonus.remove(b)
        return self.name +" ("+str(self.att)+"  "+str(self.pv)+' '.join(
            [b.getInlineDescription() for b in self.bonus]) +" )"
    def postAndSave(self,*args):
        if self.name=="nom monstre" or self.name=="change name" or self.name in Card.blocked_creature :
            self.name="change name"
            self.refreshWidget()
            return
        if not self.verifyBonus() :
            return            
        self.deleteCreature(self.name)
        temp=self.category.get()
        pygame.init()
        fenetre=self.card_win.master
        self.card_win.pack_forget()
        self.save(None)
        

        done=False
        while not done :
            for event in pygame.event.get() :
                if event.type == pygame.QUIT :
                    done=True
        pygame.display.quit()
        self = Card("nom monstre",1,1)
        #card.pack_forget()
        self.initWidget(fenetre)
        self.category.set(temp)
        self.setFile("dummy_arg")

    def verifyBonus(self) :
        nb=[b.__class__.__name__ for b in self.bonus]
        if len(set(nb))!=len(nb) :
            showinfo("Not Allowed","You can't have twice the same bonus")
            return False
        for b1,b2 in [("Insaisissable","Provocation"),("Insaisissable","Inciblable"),("Errant","Incarnation"),
                      ("Camouflage","Provocation"),("Camouflage","ChaqueTour"),("NePeutPasAttaquer","ALaPlaceDeLAttaque"),
                      ("NePeutPasAttaquer","NePeutPasAttaquerLesHeros"),("NePeutPasAttaquerLesHeros","ALaPlaceDeLAttaque"),
                    ("GardienDeVie","QuandIlEstBlesse"),("Charge","NePeutPasRisposter"),("Furie","ALaPlaceDeLAttaque"),
                    ("NePeutPasRiposter","NePeutPasAttaquer"),("NePeutPasRiposter","CoutReduit"),("CriDeGuerre","Incarnation"),
                    ("Charge","CriDeGuerrre"),("Insaisissable","InsensibleALaMagie"),("Charge","Errant"),("CriDeGuerre","Errant"),
                    ("Errant","RaleDAgonie"),("AttaqueADistance","AvecAttaque"),("Errant","AuDebutDuProchainTour"),
                    ("BonusParEnnemi","Determine"),("QuandIlEstBlesse","Incassable"),("Souffrant","QuandIlEstBlesse") ] :
            if b1 in nb and b2 in nb :
                showinfo("Not Allowed","You can't have this combination of powers: {0} and {1}".format(b1,b2))
                return False
        total=self.constructor()
        if "QuandUnAllieEstTue" in nb and (("Spell.Invocation" in total) or ("CopieMain"  in total) or ("PlaceCarteDansMain" in total)):
            showinfo("Not Allowed","You can't have anything to do with Invocation or card creation if you have QuandUnAllieEstTue")
            return False
        return True
 
    def save(self,*args):
        if (self.name in Card.blocked_creature) :
            return
        for b in self.bonus : # on veut que la plainte maudite soit en dernier
            if b.__class__.__name__=="PlainteMaudite" :
                self.bonus.remove(b)
                self.bonus.append(b)
                break
        image = self.createImage()
        
        print ("apres createImage")
        name=self.name.replace(" ","_")
        pygame.image.save(image,"Cards/"+name+".png")
        print ("save image done")
        # now new monster
        loaded_monsters=readMonsters(self.dumping_file)
        #print "Monsters from file = ",file_monsters
        #remove_widget(self)
        loaded_monsters[self.name] = self
        #print "Monsters from file (after) = ",file_monsters
        global all_monsters
        all_monsters.update(loaded_monsters)
        #print "window reinit done"
        with open(self.dumping_file,"wb") as savefile :      
            savefile.write(bytes("\n".join([m.constructor() for k,m in sorted(loaded_monsters.items())]),'UTF-8'))
#        with open(self.dumping_file+".old","rb") as filepickle :
#            print "now in file", self.dumping_file,":",pickle.load(filepickle).keys()
#            filepickle.close()
        with open(os.path.join("CardFiles","all_monsters.sav"), "wb" ) as f :
            f.write(bytes("\n".join([m.constructor() for m in all_monsters.values()]),'UTF-8'))
        recupfile=os.path.join("CardFiles","recup_monsters.sav")
        if (not os.path.isfile(recupfile)) or len(all_monsters)>=len(open(recupfile,'r').readlines()):
            with open(recupfile, "wb" ) as f :
                f.write(bytes("\n".join([m.constructor() for k,m in sorted(all_monsters.items())]),'UTF-8'))
            print ("SAVED in all_monsters.sav and recup_monsters.sav")
        else:
            print ("WARNING : Recup monster file bigger than all monsters file")

    def initWidget(self,fenetre) :
        #print "init"
        self.card_win = PanedWindow(fenetre, orient=VERTICAL)
        fenetre.child=self
        self.refreshWidget()
    def Open(self,*args) :
        print ("open monster ",  self.opening.get())
        #deck_with_card =  self.deck_check(self.opening.get())
        creature = Card.monster_list[self.opening.get()]
        if not ( creature.name in Card.blocked_creature) :
            self.card_win.pack_forget()
            fenetre=self.card_win.master
            #for i in Card.monster_list.keys() :
            #    print i, Card.monster_list[i].getInlineDescription()
            self = Card.monster_list[self.opening.get()]
            print (self.name +" loaded")
            if self.pv<1 :
                self.is_spell=True
            else :
                self.is_spell=False
            #self.card_win.pack_forget()
            for b in self.bonus:
                b.parent = self.bonus
                b.card = self
            self.initWidget(fenetre)
        else:
            showinfo("Sorry","You can't open this monsters because he comes from the campaign.")
         
    def clicDelete(self,*args) :
        #self.card_win.pack_forget()
        #fenetre=self.card_win.master
        """
        for i in all_monsters.keys() :
            print i, all_monsters[i].getInlineDescription()
            
        """
        
        creature= self.delete.get()
        if creature in Card.blocked_creature :
            print ("not possible : creature in campaign")
            self.delete.set('delete')
            return
        if askyesno('Beware!', 'Confirm the deletion of '+creature+"?"):                
            self.deleteCreature(creature)
        self.card_win.pack_forget()
        #self.initWidget(fenetre)
        self.setFile(*args)
    

    def deleteCreature(self,creature) :
        dm=None
        global all_monsters
        if not creature in all_monsters :
            print (creature," is not in all_monsters")
            try :
                fm=os.path.join("CardFiles",self.category.get()+"_monsters.sav")
                dm = readMonsters(fm)
            except:
                print ("error reading file ",fm)
        else :
            print ("delete monster ",  creature)
            try :
                fm = os.path.join("CardFiles",(all_monsters[creature].monster_type)+"_monsters.sav")
                dm = readMonsters(fm)
            except:
                print ("ERROR : no type for ",creature, " or read error")
            del all_monsters[creature]
            fall=os.path.join("CardFiles","all_monsters.sav") 
            with open(fall,"wb") as savefile :
                savefile.write(bytes("\n".join([m.constructor() for m in all_monsters.values()]), 'UTF-8'))            
            print ("deletion of monster ",  creature, "done")
            shutil.copyfile(fall,"CardFiles/recup_monsters.sav")
        if dm and creature in dm :
            del dm[creature]
            with open(fm,"wb") as savefile :
                print('dmv',dm.values())
                savefile.write(bytes("\n".join([m.constructor() for m in dm.values()]), 'UTF-8'))
            print ("deletion of monster ",  creature, " in ",fm," done" )
        else :
            print (creature," not found in dedicated file")
            
            
        
    def choosePhoto(self,*args) :
        from tkinter.filedialog import askopenfilename
        #Tk().withdraw() # we don't want a full GUI, so keep the root window from appearing
        filename = askopenfilename(defaultextension=".gif",filetypes=[ ("image",("*.jpg", "*.gif","*.png")),('PNG file','*.png'),('Jpg file','*.jpg'),('GIF file','*.gif')]) # show an "Open" dialog box and return the path to the selected file
        if filename:
            import os.path
            chem=os.path.dirname(os.path.realpath(__file__)).replace('\\','/')+'/'
            #print chem
            if chem in filename :
                filename=filename.replace(chem,'')
                print ("filename modif",filename)
            try :
                pilImage = Image.open(filename)
                PhotoImage(pilImage,master=None)
                #ImageTk.PhotoImage(monimage)
                self.photofile=filename
                print ("photo choosen !")
            except Exception :
                print ("echec ouverture image")
                raise
        self.refreshWidget()

    def setFile(self,*args):
        self.dumping_file = os.path.join("CardFiles",self.category.get()+"_monsters.sav")
        print ("Change dumping file to ",self.dumping_file)
        self.monster_type = self.category.get()
        Card.monster_list=readMonsters(self.dumping_file)
        #from cardPowers import *
        self.refreshWidget()

    def refreshWidget(self) :
        #print "refresh"
        self.card_win.pack_forget()
        import unicodedata
        #Card window      
        self.card_win = PanedWindow(self.card_win.master, orient=VERTICAL)
        self.card_win.pack(side=TOP, expand=True, fill=BOTH, pady=2, padx=2)
        
        
        #Create the name zone
        name_zone=PanedWindow(self.card_win, orient=HORIZONTAL)
        name = StringVar() 
        name.set(self.name)
        def modifName(*args) :
            try :
                assert('"' not in name.get())
                name.get().encode('ascii')
            except Exception as e:
                print ("error on name")
                name.set(self.name)
                return
            old = self.name in Card.blocked_creature
            self.name=name.get()
            if old or self.name in Card.blocked_creature :
                self.refreshWidget()
        name.trace("w", modifName)
        name_wid=Entry(name_zone, width=30,textvariable=name)
        name_wid.pack()
        name_zone.add(name_wid)
        #Create the cost ad star stringvar
        #print int(floor(self.getCost()))
        self.cost=StringVar()
        self.stars=StringVar()
        cost_wid=Label(None, textvariable=self.cost, background='red',width=5, anchor=W)
        star_wid=Label(None, textvariable=self.stars, background='blue', anchor=E)
        self.cost.set(str(int(floor(self.getCost()))))
        self.stars.set("*"*self.getStars())
        #Add them in name zone
        name_zone.add(cost_wid)
        name_zone.add(star_wid)
        
        
        #Create an Image Zone
        image_zone=Button(self.card_win,  command=self.choosePhoto)
        if hasattr(self,"photofile") and self.photofile :            
            print ("Image: ",self.photofile)
            try :
                pilImage=Image.open(self.photofile)
                img=PhotoImage(pilImage,master=image_zone)
            except :
               decomp=self.photofile.split('/')
               for i in range(1,6) :
                   try :
                       fname="/".join(decomp[-i:])
                       print ("try to open",fname)
                       pilImage = Image.open(fname)
                       img=PhotoImage(pilImage,master=image_zone)
                       self.photofile=fname
                       break
                   except :
                       self.photofile=None
        if self.photofile :
            w, h = img.width(), img.height()
            print('wh',w,h)
            if h>400 :
                print("reduction")
                img=PhotoImage(pilImage.resize((w//2,h//2), Image.ANTIALIAS),master=image_zone)
            image_zone=Button(self.card_win,image=img,  command=self.choosePhoto)
            image_zone.image=img
            #image_zone.configure(image=image_zone.image,width=50,height=50,compound=RIGHT)
            #image_zone.pack()
            #print "IMAGE CHANGED"
        else :
            from os import path
            fname=self.name.replace(" ","_")
            if path.isfile("Cards/"+fname+".png") :
                image_zone.config(text='image can be taken from\n'+"Cards/"+fname+".png",background='white',anchor=CENTER)
            else :
                image_zone.config(text='clic to choose image',background='white',anchor=CENTER)

        #image_zone.pack()
        
        
        # POWER ZONE
        power_zone=PanedWindow(self.card_win, orient=VERTICAL)
        #fenetre=self.card_win.master
        def removePowerCreator(px) :
            def removePower(*args) :
                #print 'avant',list_pow
                self.bonus.remove(px)
                #print 'apres',list_pow
                #self.card_win.pack_forget()
                self.refreshWidget()
            return removePower
        for p in self.bonus :
            powline =  PanedWindow(self.card_win, orient=HORIZONTAL)
            pow_wid=p.initWidget(powline)
            powline.add(pow_wid)
            removepow=Button(powline, text="X", command=removePowerCreator(p), anchor=E)
            removepow.pack()
            powline.add(removepow)
            power_zone.add(powline) 
        def addPower(*args) :
            if addBonus.get()!= "add bonus":
                name=addBonus.get()
            else:
                name=add_cost_alteration.get()
            print ("added :",name)
            import CardPowers
            self.bonus+=[eval('CardPowers.'+name+'()')]
            self.bonus[-1].parent=self.bonus
            self.bonus[-1].card=self
            #self.card_win.pack_forget()
            self.refreshWidget()
        #Add bonus Option menu
        addBonus = StringVar(power_zone)
        addBonus.set("add bonus") # default value
        if not self.pv:  
            addBonus_wid = Spell.getSpellMenu(power_zone, addBonus)
        else: addBonus_wid = getBonusMenu(power_zone, addBonus) 
        addBonus.trace('w', addPower)
        if self.pv>0 or len(self.bonus)==0 or all([b.is_cost_alterator for b in self.bonus]):
            addBonus_wid.pack()
            #Add this to power zone
            power_zone.add(addBonus_wid)
        
        #Create save zone
        save_zone = PanedWindow(self.card_win, orient=HORIZONTAL)
        if self.monster_type != "all" and not(self.name in Card.blocked_creature) :
            save_wid = Button(save_zone, text="Save", command=self.postAndSave)
        elif self.monster_type != "all" : 
            save_wid = Button(save_zone, text="creature in campaign", command=None)
        else:
            save_wid = Button(save_zone, text="nead type", command=None)
        save_wid.pack()
        #Create the open button
        save_zone.pack()        
        if Card.monster_list.keys():
            self.opening = StringVar(save_zone)
            self.opening.set("Open")
            choice = [na for na in Card.monster_list.keys() if na not in Card.blocked_creature]
            choice.sort()
            #print all_monsters.keys()
            open_wid = OptionMenu(save_zone, self.opening,*choice)
            self.opening.trace('w', self.Open)
            open_wid.pack()
            save_zone.add(open_wid)
        
        if Card.monster_list.keys():
            self.delete = StringVar(save_zone)
            self.delete.set("Delete")
            choice = [na for na in Card.monster_list.keys() if na not in Card.blocked_creature]
            choice.sort()
            delete_wid = OptionMenu(save_zone, self.delete,*choice)
            self.delete.trace('w', self.clicDelete)
            delete_wid.pack()
            save_zone.add(delete_wid)
        
        #Create the type button
        self.category = StringVar(save_zone)
        self.category.set(self.monster_type)
        choice = [file2name(t,"_monsters.sav") for t in glob.glob("CardFiles/*_monsters.sav")]
        if "recup" in choice:
            choice.remove("recup")
        #print all_monsters.keys()
        category_wid = OptionMenu(save_zone, self.category,*choice)
        self.category.trace('w', self.setFile)
        
        
        
        category_wid.pack()
        
        #Add it to save zone
        save_zone.add(save_wid)
        save_zone.add(category_wid)
        
        #Create a new Strength zone for att and pv
        strength_zone=PanedWindow(self.card_win, orient=HORIZONTAL)
        att=StringVar()
        att.set(str(self.att))
        pv=StringVar() ; pv.set(str(self.pv))
        def modifiedAttPv(*args) :
            print ("modifiedAttPv")
            self.pv=int(pv.get())
            if self.pv<1 and self.is_spell==False :
                if len(self.bonus)==0 :
                    self.is_spell=True
                    self.refreshWidget()
                else :
                    self.pv=1
                    self.refreshWidget()
            if self.pv>0 and self.is_spell==True :
                if len(self.bonus)==0 :
                    self.is_spell=False
                    self.refreshWidget()
                else :
                    self.pv=0
                    self.refreshWidget()            
            self.att=int(att.get())
            self.getCost()
        att_wid = Spinbox(strength_zone, from_=0, to=1000,textvariable=att,command=modifiedAttPv)
        att_wid.pack()
        strength_zone.add(att_wid)
        strength_zone.add(Label(strength_zone, text='       ', background='white', 
             anchor=CENTER))
        pv_wid = Spinbox(strength_zone, from_=0, to=1000,textvariable=pv,command=modifiedAttPv)
        pv_wid.pack()
        strength_zone.add(pv_wid)
        
        #Put it all in window
        self.card_win.add(name_zone)
        self.card_win.add(image_zone)
        self.card_win.add(power_zone)  
        self.card_win.add(strength_zone)
        self.card_win.add(save_zone)
        
        
        self.card_win.pack()                      

    def createImage(self,black=False):
        width=189*2; height=277*2
        screen = pygame.display.set_mode((width,height))

        print ("Type = ",self.monster_type)
        if self.monster_type in all_backgrounds.keys():
            try:
                bg = pygame.image.load(all_backgrounds[self.monster_type])
            except:
                print ("error (? when load of bg")
        else:
            bg = pygame.image.load('gameAnimationImages/Card_face_avant.gif')
        #fond = PhotoImage(file =bg,master=fenetre) pilImage = Image.open(
        #ligne1 = canvas.create_line(75, 0, 75, 120)
        #ligne2 = canvas.create_line(0, 60, 150, 60)      
        if self.photofile and not black:
            try :
               img=pygame.image.load(self.photofile)
            except :
               decomp=self.photofile.split('/')
               for i in range(1,6) :
                   try :
                       fname="/".join(decomp[-i:])
                       print ("try to open",fname)
                       img=pygame.image.load(fname)
                       self.photofile=fname
                       break
                   except:
                       pass
            img = pygame.image.load(self.photofile)
            w, h = img.get_size()
            factor=max(150.*2./w,90.*2./h)
            img=pygame.transform.scale(img,(int(w*factor),int(h*factor)))
            #fenetre.photo=PhotoImage(file=self.photofile,master=canvas)
            #img=ImageTk.PhotoImage(img,master=fenetre)
            screen.blit(img,(width/2.-w*factor/2.,140.-h*factor/4.))
        else :
            try :
                name=self.name.replace(" ","_")
                img=pygame.image.load("Cards/"+name+".png")
                print ("* Found for image ","Cards/"+name+".png")
                screen.blit(img,(0,0))
            except :
                pass
        screen.blit(bg,(0,0))    
        
        pygame.font.init()
        #print  pygame.font.get_fonts()
        if self.monster_type in white_font_types:
            color = (255,255,255)
        else:
            color = (0,0,0)
        centerText(screen,(width/2.+10.,33.*2.),self.name,36-(len(self.name)>11)*(len(self.name)-11)//3,color)
        #txt = canvas.create_text(101, 32, text=self.name, font=("Calibri",12-(len(self.name)>11)*(len(self.name)-11)/5,"bold"), anchor=CENTER)
        if not(self.is_spell):
            centerText(screen,(24*2.,258*2.),str(self.att),40,color)
            centerText(screen,(169*2.,255*2.),str(self.pv),40,color)
        else :
            centerText(screen,(width/2.,265*2.),"SPELL",30,color)
        #elif self.is_spell:
        #    txt = canvas.create_text(100,265, text="SPELL", anchor=CENTER, font=("Calibri",14,'bold'))
        #txt = canvas.create_text(22,35, text=int(floor(self.getCost())), anchor=CENTER, font=("Calibri",18,'bold'))
        centerText(screen,(22*2.,35*2.),str(int(floor(self.getCost()))),50,color)
        #txt1 = canvas.create_text(92,257, text='*'*self.getStars(), anchor=CENTER, font=("Calibri",26,'bold'))
        centerText(screen,(92*2.,257*2.),'*'*self.getStars(),60,color)
        if not(self.monster_type == "unknown"):
            if self.monster_type in all_type_colors:
                Color = all_type_colors[self.monster_type]
            else:
                Color = "human"
        else:
            Color = "human"
        centerText(screen,(95*2.,142*2.),self.monster_type.capitalize(),26,Color)
        
        if len(self.bonus)>0 :
            powers = "e%96".join([b.getDescription() for b in self.bonus if b.getDescription()])
            powers = [p.split("\n") for p in powers.split("e%96")]
            print ("powers are ",powers)
        else :
            powers =""
        #print "POWERS = ", powers
        if powers: 
            space=min([80., 160./sum([len(p)*3+2 for p in powers])])
            print ("Space: ",space)
        line = 0
        for i,b in enumerate(powers):
            if b!=[''] :
                print ("power",b)
                size = min([36.,500./max([len(p) for p in b]) * 2.])
                for x,part in enumerate(b):
                    centerText(screen,(90*2.,167*2.+line*space),part,int(size),color)
                    line += 3
                line += 2
        #canvas.pack()
        #print "toto!"
        pygame.display.flip()
        return screen
      
    def init_as_invocation(self,master,spells=False):
        # monster widget in invocation widget        
        #print "monster init_as_invocation"
        self.content=StringVar()
        self.content.set(self.name)
        self.content.trace("w", self.is_changed_as_invocation)
        l = [ m for m in Card.monster_list.keys() if (spells or all_monsters[m].pv>0) and not(m in Card.blocked_creature) 
                  and (spells or not "PlainteMaudite" in all_monsters[m].constructor())
                   and not any([b.__class__.__name__=="Charge" for b in all_monsters[m].bonus])
                   and not any([b.__class__.__name__=="Errant" for b in all_monsters[m].bonus])
                   and not any([b.__class__.__name__=="Essentiel" for b in all_monsters[m].bonus])
                   and not any([b.__class__.__name__=="Incarnation" for b in all_monsters[m].bonus])
                   #and not any([b.__class__.__name__=="AuDebutDuProchainTour" for b in all_monsters[m].bonus])
                   ]
        self.widget=OptionMenu(master,self.content,*l)
        return self.widget
 
    def init_as_card(self,master):
        # monster widget in invocation widget        
        #print "monster init_as_invocation"
        self.content=StringVar()
        self.content.set(self.name)
        self.content.trace("w", self.is_changed_as_invocation)
        l = [ m for m in Card.monster_list.keys() if  not(m in Card.blocked_creature)  ]
        self.widget=OptionMenu(master,self.content,*l)
        return self.widget
 
       
    def is_changed_as_invocation(self,*args):
        print ("monster is_changed_as_invocation")
        if self.content.get()!= "Troll gris":
            new= Card.monster_list[self.content.get()]
        else:
            new = Card("Troll gris",4,4)

        #print self.content.get()
        if self.parent :
            #parent.spell=new
            #print "self.parent = True"
            self.parent.monster=new
            new.parent = self.parent
            new.card=self.card
        else :
            raise "ce cas existe ?! me dire comment"
            self.bonus[self.bonus.index(self)]=new
        #self.card_win.pack_forget()
        self.card.refreshWidget()
Exemple #28
0
    def __init__(self, config: Config = None):
        """Constructs the GUI element of the Validation Tool"""
        self.task = None
        self.config = config or Config()

        self._root = Tk()
        self._root.title(self.config.app_name)
        self._root.protocol("WM_DELETE_WINDOW", self.shutdown)

        if self.config.terms_link_text:
            menubar = Menu(self._root)
            menubar.add_command(
                label=self.config.terms_link_text,
                command=lambda: webbrowser.open(self.config.terms_link_url),
            )
            self._root.config(menu=menubar)

        parent_frame = Frame(self._root)
        main_window = PanedWindow(parent_frame)
        main_window.pack(fill=BOTH, expand=1)

        control_panel = PanedWindow(
            main_window, orient=HORIZONTAL, sashpad=4, sashrelief=RAISED
        )
        actions = Frame(control_panel)
        control_panel.add(actions)
        control_panel.paneconfigure(actions, minsize=250)

        if self.config.disclaimer_text or self.config.requirement_link_text:
            self.footer = self.create_footer(parent_frame)
        parent_frame.pack(fill=BOTH, expand=True)

        # profile start
        number_of_categories = len(self.config.category_names)
        category_frame = LabelFrame(actions, text="Additional Validation Categories:")
        category_frame.grid(row=1, column=1, columnspan=3, pady=5, sticky="we")

        self.categories = []

        for x in range(0, number_of_categories):
            category_name = self.config.category_names[x]
            category_value = IntVar(value=0)
            category_value._name = "category_{}".format(category_name.replace(" ", "_"))
            # noinspection PyProtectedMember
            category_value.set(self.config.get_category_value(category_value._name))
            self.categories.append(category_value)
            category_checkbox = Checkbutton(
                category_frame, text=category_name, variable=self.categories[x]
            )
            ToolTip(category_checkbox, self.config.get_description(category_name))
            category_checkbox.grid(row=x + 1, column=1, columnspan=2, sticky="w")

        settings_frame = LabelFrame(actions, text="Settings")
        settings_frame.grid(row=3, column=1, columnspan=3, pady=10, sticky="we")
        verbosity_label = Label(settings_frame, text="Verbosity:")
        verbosity_label.grid(row=1, column=1, sticky=W)
        self.verbosity = StringVar(self._root, name="verbosity")
        self.verbosity.set(self.config.default_verbosity(self.VERBOSITY_LEVELS))
        verbosity_menu = OptionMenu(
            settings_frame, self.verbosity, *tuple(self.VERBOSITY_LEVELS.keys())
        )
        verbosity_menu.config(width=25)
        verbosity_menu.grid(row=1, column=2, columnspan=3, sticky=E, pady=5)

        report_format_label = Label(settings_frame, text="Report Format:")
        report_format_label.grid(row=2, column=1, sticky=W)
        self.report_format = StringVar(self._root, name="report_format")
        self.report_format.set(self.config.default_report_format)
        report_format_menu = OptionMenu(
            settings_frame, self.report_format, *self.config.report_formats
        )
        report_format_menu.config(width=25)
        report_format_menu.grid(row=2, column=2, columnspan=3, sticky=E, pady=5)

        input_format_label = Label(settings_frame, text="Input Format:")
        input_format_label.grid(row=3, column=1, sticky=W)
        self.input_format = StringVar(self._root, name="input_format")
        self.input_format.set(self.config.default_input_format)
        input_format_menu = OptionMenu(
            settings_frame, self.input_format, *self.config.input_formats
        )
        input_format_menu.config(width=25)
        input_format_menu.grid(row=3, column=2, columnspan=3, sticky=E, pady=5)

        self.halt_on_failure = BooleanVar(self._root, name="halt_on_failure")
        self.halt_on_failure.set(self.config.default_halt_on_failure)
        halt_on_failure_label = Label(settings_frame, text="Halt on Basic Failures:")
        halt_on_failure_label.grid(row=4, column=1, sticky=E, pady=5)
        halt_checkbox = Checkbutton(
            settings_frame, offvalue=False, onvalue=True, variable=self.halt_on_failure
        )
        halt_checkbox.grid(row=4, column=2, columnspan=2, sticky=W, pady=5)

        directory_label = Label(actions, text="Template Location:")
        directory_label.grid(row=4, column=1, pady=5, sticky=W)
        self.template_source = StringVar(self._root, name="template_source")
        directory_entry = Entry(actions, width=40, textvariable=self.template_source)
        directory_entry.grid(row=4, column=2, pady=5, sticky=W)
        directory_browse = Button(actions, text="...", command=self.ask_template_source)
        directory_browse.grid(row=4, column=3, pady=5, sticky=W)

        validate_button = Button(
            actions, text="Validate Templates", command=self.validate
        )
        validate_button.grid(row=5, column=1, columnspan=2, pady=5)

        self.result_panel = Frame(actions)
        # We'll add these labels now, and then make them visible when the run completes
        self.completion_label = Label(self.result_panel, text="Validation Complete!")
        self.result_label = Label(
            self.result_panel, text="View Report", fg="blue", cursor="hand2"
        )
        self.underline(self.result_label)
        self.result_label.bind("<Button-1>", self.open_report)
        self.result_panel.grid(row=6, column=1, columnspan=2)
        control_panel.pack(fill=BOTH, expand=1)

        main_window.add(control_panel)

        self.log_panel = ScrolledText(main_window, wrap=WORD, width=120, height=20)
        self.log_panel.configure(font=font.Font(family="Courier New", size="11"))
        self.log_panel.pack(fill=BOTH, expand=1)

        main_window.add(self.log_panel)

        # Briefly add the completion and result labels so the window size includes
        # room for them
        self.completion_label.pack()
        self.result_label.pack()  # Show report link
        self._root.after_idle(
            lambda: (
                self.completion_label.pack_forget(),
                self.result_label.pack_forget(),
            )
        )

        self.config.watch(
            *self.categories,
            self.verbosity,
            self.input_format,
            self.report_format,
            self.halt_on_failure,
        )
        self.schedule(self.execute_pollers)
        if self.config.terms_link_text and not self.config.are_terms_accepted:
            TermsAndConditionsDialog(parent_frame, self.config)
            if not self.config.are_terms_accepted:
                self.shutdown()
Exemple #29
0
class UserInterface(UIfunctions):
    def __init__(self, filehandler, databasehandler, path=None):
        self.title = "OpenKeynote (BETA)"
        self._filehandler = filehandler
        self._databasehandler = databasehandler
        self.path = path
        self.itemlist = []
        self.root = Tk()
        self.previeweditem = ""
        self.editeditem = ""
        self.case_selected = IntVar()
        self.parentname = ""
        self.autosave = IntVar()
        self._html_path = None

        self._default_title = self.title
        self.main_window()
        self.tree_view()
        self.frame_vertical_bar()
        self.bindings_and_menu()
        self.frame_setup()

        self.update_status()
        self.root.mainloop()

    def main_window(self, *args):
        self.mainframe = Frame(self.root)
        self.mainframe.grid(column=0, row=0, sticky=E+W+N+S)
        self.bottomframe = Frame(self.root)
        self.bottomframe.grid(column=0, row=1, sticky=E+W)
        self.statusbar = Label(
            self.bottomframe, text=self._filehandler.statustext, anchor=W)
        self.statusbar.pack(fill=BOTH, padx=0, pady=0)
        self.root.columnconfigure(0, weight=1)
        self.root.rowconfigure(0, weight=1)
        self.root.rowconfigure(1, pad=10)
        self.pw = PanedWindow(self.mainframe, orient=HORIZONTAL)
        self.pw.pack(fill=BOTH, expand=1)
        self.pane_left = Frame(self.root)
        self.pw.add(self.pane_left)
        self.pane_right = Frame(self.root)
        self.pw.add(self.pane_right)

        self.frame_left = Frame(self.pane_left)
        self.frame_left.pack(fill=BOTH, expand=1, padx=3, pady=3)
        self.frame_center = Frame(self.pane_right)
        self.frame_center.grid(row=0, column=0, sticky=W+N, rowspan=4)
        self.frame_right = Frame(self.pane_right)
        self.frame_right.grid(row=0, column=1, sticky=W+E+N+S, padx=3, pady=3)
        self.pane_right.columnconfigure(1, weight=1)
        self.pane_right.rowconfigure(0, weight=1)
        self.sf1 = Text(self.frame_left, height=1, width=25, borderwidth=1,
                        relief="solid", highlightthickness=0)
        self.sf1.insert(1.0, "TODO: Searchbar")
        self.sf1.grid(row=0, column=0, sticky=W+E+N+S, pady=5)
        self.sf1.config(state=DISABLED)
        self.cs = Button(self.frame_left, text="X", width=1)
        self.cs.grid(row=0, column=1)
        self.frame_left.columnconfigure(0, weight=1)

    def tree_view(self, *args):
        """
        Tree view
        """
        self.l1 = ttk.Treeview(self.frame_left, columns=["stuff"], show="tree")
        self.yscroll = Scrollbar(self.frame_left, orient=VERTICAL)
        self.yscroll.config(width=10)
        self.l1['yscrollcommand'] = self.yscroll.set
        self.yscroll['command'] = self.l1.yview
        self.l1.grid(row=1, column=0, columnspan=3,  padx=30,
                     pady=10, sticky=N+S+E+W)
        self.yscroll.grid(row=1, column=0, columnspan=3, sticky=N+S+E)
        self.l1.bind("<ButtonRelease-1>", self.change_selection)

        self.frame_left.rowconfigure(1, weight=1)

    def frame_vertical_bar(self, *args):
        self.vbs = []
        middlebuttons = ("New Item", "New Subitem", "Delete",
                         "Rename", "Change Parent","- Descriptions (BETA) -")
        middlefunctions = (
            lambda: self.add_item(parent=self.parentname),
            lambda: self.add_item(parent=self.previeweditem),
            lambda: self.delete_item_dialog(),
            self.rename_item_dialog,
            self.change_parent_dialog,
            lambda: self.description_window(database_rows=self._databasehandler.view())
            #lambda: self.save_keynote_to_database(title="title",keynote="KN10", entreprise="min entreprise", category="")
            #self.save_all_keynotes_to_database
            )

        for a, button_text in enumerate(middlebuttons):
            self.vbs.append(ttk.Button(self.frame_center, text=button_text))
            self.vbs[a].pack(fill=BOTH)
            self.vbs[a].config(command=middlefunctions[a], width=10)
        for x in [2, 3, 4]:
            self.vbs[x].config(state=DISABLED)
        self.tx1 = Label(self.frame_right, text="Preview", anchor=W)
        self.tx1.grid(row=0, column=0, columnspan=3, sticky=W+E)
        self.tx2 = Label(self.frame_right, text="Editing", anchor=W)
        self.tx2.grid(row=2, column=0, sticky=W+E)

        self.e1 = scrolledtext.ScrolledText(self.frame_right,
                                            fg="#555", font=("Courier", 13),
                                            padx=10, pady=10,
                                            highlightthickness=0,
                                            borderwidth=1, relief="solid")
        self.e1.grid(row=1, column=0, columnspan=3, sticky=N+S+E+W)
        # was Text before

        self.e2 = scrolledtext.ScrolledText(self.frame_right,
                                            font=("Courier", 13), borderwidth=1,
                                            relief="solid", padx=10, pady=10,
                                            highlightthickness=0)
        self.e2.grid(row=3, column=0, columnspan=3, sticky=E+W+S+N)
        # AUTOSAVE
        self.autosaveFrame = LabelFrame(self.frame_center, text=' Autosave ')
        self.autosaveFrame.pack(fill=BOTH)
        self.autosave.trace(
            'w', lambda *args: print(f"Autosave: {self.autosave.get()}"))
        self.autosaveCheck = Checkbutton(
            self.autosaveFrame, text="Enabled", variable=self.autosave, anchor=W)
        self.autosaveCheck.select()
        self.autosaveCheck.pack(fill=BOTH)
        self.labelsFrame = LabelFrame(self.frame_center, text=' Change Case ')
        self.labelsFrame.pack(fill=BOTH)

        # CASE BUTTONS
        self.case_radiobuttons = []
        self.case_selected.set(99)
        rbtns = ['No change', 'UPPERCASE', 'lowercase', 'First Letter']
        for a, button_text in enumerate(rbtns):
            self.case_radiobuttons.append(
                Radiobutton(self.labelsFrame, text=button_text,
                            variable=self.case_selected,
                            value=a, command=self.change_case, width=10, anchor=W))
            self.case_radiobuttons[a].grid(sticky="W", row=a)

    def change_case(self, *args):
        pass

    def bindings_and_menu(self, *args):
        """
        Main key bindings
        """
        if os.name == "nt":
            self.CTRL = "Control"
            self.MBTN = "3"
        else:
            self.CTRL = "Command"
            self.MBTN = "2"

        def bindings_key(event):
            if event.state == 8 or event.state == 12:
                return
            else:
                return("break")

        self.sf1.bind("<Tab>", lambda a: self.focus_on(target=self.l1))
        self.sf1.bind("<Shift-Tab>", lambda a: self.focus_on(target=self.vb2))
        self.e1.bind("<Key>", bindings_key)
        self.e1.bind("<Tab>", lambda a: self.focus_on(target=self.e2))
        self.e1.bind(
            "<Shift-Tab>", lambda a: self.focus_on(target=self.vbs[-1]))

        self.e2.bind("<Tab>", lambda a: self.focus_on(target=self.vb1))
        self.e2.bind("<Shift-Tab>", lambda a: self.focus_on(target=self.e1))

        self.vb1 = ttk.Button(self.frame_right, text="Edit")
        self.vb1.grid(row=2, column=1)
        self.vb1.config(command=self.edit_item)
        self.vb2 = ttk.Button(self.frame_right, text="Save")
        self.vb2.grid(row=2, column=2)
        self.vb2.config(command=self.saveitem)

        self.frame_right.rowconfigure(1, weight=1)
        self.frame_right.rowconfigure(3, weight=1)
        self.frame_right.columnconfigure(0, weight=1)

        self.menu = Menu(self.root)
        self.root.config(menu=self.menu)
        file = Menu(self.menu, tearoff=0)  # TODO is it a win thing?
        file.add_command(label='New File*', command=self.close_file)
        file.add_command(
            label='Open File...', accelerator=f"{self.CTRL}-o",
            command=self.open_file_dialog)
        file.add_command(label='Save File',
                         accelerator=f"{self.CTRL}-s", command=self.save_file)
        file.add_command(label='Save File As...',
                         command=self.save_file_dialog)
        file.add_command(label='Close file', command=self.close_file)
        file.add_command(
            label='Exit', accelerator=f"{self.CTRL}-q", command=self.client_exit)
        self.menu.add_cascade(label='File', menu=file)

        self.clickmenu = Menu(self.root, tearoff=0)
        self.clickmenu.add_command(label="Cut")
        self.clickmenu.add_command(label="Copy")
        self.clickmenu.add_command(label="Paste")
        self.root.bind_class(
            "Text", f"<Button-{self.MBTN}><ButtonRelease-{self.MBTN}>",
            lambda event=None: self.right_click_menu())

        menu_edit = Menu(self.menu, tearoff=0)
        menu_edit.add_command(label='Select All', accelerator=f"{self.CTRL}-a",
                              command=self.select_all)
        self.root.bind(f"<{self.CTRL}-a>", self.select_all)
        self.e1.bind(f"<{self.CTRL}-a>", self.select_all)

        self.e1.bind(f"<{self.CTRL}-c>", self.e1.event_generate("<<Copy>>"))
        self.e2.bind(f"<{self.CTRL}-a>", self.select_all)
        menu_edit.add_command(label='Cut', accelerator=f"{self.CTRL}-x",
                              command=lambda: self.root.event_generate("<<Cut>>"))
        menu_edit.add_command(label='Copy', accelerator=f"{self.CTRL}-c",
                              command=lambda: self.copy_text())
        menu_edit.add_command(label='Paste', accelerator=f"{self.CTRL}-v",
                              command=lambda: self.root.event_generate("<<Paste>>"))
        self.menu.add_cascade(label='Edit', menu=menu_edit)

        menu_help = Menu(self.menu, tearoff=0)
        menu_help.add_command(label='About', command=self.about)
        self.menu.add_cascade(label='Help', menu=menu_help)

        for i in "Up,Down,Right,Return,Left".split(","):
            self.root.bind("<"+i+">", self.change_selection)

        self.e1.bind("<F2>", self.rename_item_dialog)
        self.e1.bind(f"<{self.CTRL}-s>", None)
        self.e1.bind(f"<{self.CTRL}-o>", None)
        self.root.bind("<F2>", self.rename_item_dialog)
        self.root.bind(f"<{self.CTRL}-s>", self.save_file)
        self.root.bind(f"<{self.CTRL}-o>", self.open_file_dialog)

    def copy_text(self, event=None):
        w = self.root.focus_get()
        w.event_generate("<<Copy>>")

    def update_title(self, title=""):
        self.root.title(title)

    def frame_setup(self, *args):
        """
        Misc UI functions
        """

        # sharp fonts in high res (https://stackoverflow.com/questions/41315873/
        # attempting-to-resolve-blurred-tkinter-text-scaling-on-windows-10-high-dpi-disp)
        if os.name == "nt":
            # TODO
            # self.root.protocol("WM_DELETE_WINDOW", self.client_exit)
            from ctypes import windll, pointer, wintypes
            try:
                windll.shcore.SetProcessDpiAwareness(1)
            except Exception:
                pass  # this will fail on Windows Server and maybe early Windows
            # TODO: Put link to ico file on windows.
            try:
                iconpath = Path("icon.ico")
                self.root.iconbitmap(Path())
            except:
                print("error with icon")
            else:  # mac?
                self.root.createcommand('exit', self.client_exit)

        self.root.title(self.title)
        if self.path:
            self.open_file(path=self.path)

        """ TODO: ICON /Windows

        self.root.iconbitmap("/Users/msn/Dropbox/py/Git/OpenKeynote/images/ico.icns")

        img = Image(
            "photo", file="/Users/msn/Dropbox/py/Git/OpenKeynote/images/large.gif")
        self.root.iconphoto(True, img) # you may also want to try this.
        self.root.call('wm','iconphoto', self.root._w, img)
        """
        self.width = min(int(self.root.winfo_screenwidth()-500), 1500)
        self.height = int(self.root.winfo_screenheight()-500)
        self.root.winfo_width()
        self.root.winfo_height()
        self.x = (self.root.winfo_screenwidth() // 2) - (self.width // 2)
        # self.x = 0
        self.y = (self.root.winfo_screenheight() // 2) - (self.height // 2)
        # self.y = 50
        self.root.geometry(f"{self.width}x{self.height}+{self.x}+{self.y}")
        self.root.update()
        self.root.after(0, self.fixUI)

    def right_click_menu(self, event=None):
        x, y = self.root.winfo_pointerxy()
        w = self.root.winfo_containing(x, y)
        # https://stackoverflow.com/a/8476726/11514850
        # w = self.root
        self.clickmenu.entryconfigure("Cut",
                                      command=lambda: w.event_generate("<<Cut>>"))
        self.clickmenu.entryconfigure("Copy",
                                      command=lambda: w.event_generate("<<Copy>>"))
        self.clickmenu.entryconfigure("Paste",
                                      command=lambda: w.event_generate("<<Paste>>"))
        self.clickmenu.tk.call("tk_popup", self.clickmenu,
                               w.winfo_pointerx(), w.winfo_pointery())

    def update_status(self, event=None):
        """
        Set statusbar in bottom of the window
        """
        self.statusbar.config(text=self._filehandler.refresh_status())
        self.root.after(100, self.update_status)

    def client_exit(self, *args):
        answer = messagebox.askyesnocancel('quit?', 'Save file first?')
        if answer == True:
            self.save_file()
            sys.exit()
        if answer == None:
            return
        if answer == False:
            exit()
Exemple #30
0
def loadEvtHandler():
    print("파일로 로드 ...")


create_table()

win = Tk()
win.geometry('%dx%d+%d+%d' %(800, 600, 5, 5))

topFrame = Frame(win)
topFrame.pack(side='top')
topFrame.config(width=800, height=100, background="#eee")

panedwindow=PanedWindow(relief="raised", bd=0)
panedwindow.pack(expand=True)

leftFrame = Frame(win)
leftFrame.pack(side='left')
leftFrame.config(width=200, height=400, background="#eee")

rightFrame = Frame(win)
rightFrame.pack(side='right')
rightFrame.config(width=600, height=470, background="green")

panedwindow.add(leftFrame)
panedwindow.add(rightFrame)

bottomFrame = Frame(win)
bottomFrame.pack(side='bottom')
bottomFrame.config(width=800, height=30, background="blue")
Exemple #31
0
from tkinter import Tk, PanedWindow
from tkinter.ttk import Label, Entry, Button

win = Tk()

lbl = Label(win, text="성명: ")
entry = Entry(win)

lbl.pack()
entry.pack()

penedwindow = PanedWindow(relief="raised", bd=0)
penedwindow.pack()

btn_ok = Button(penedwindow, text="확인")
btn_cancel = Button(penedwindow, text="취소")
penedwindow.add(btn_ok)
penedwindow.add(btn_cancel)

if __name__ == '__main__':
    win.mainloop()
Exemple #32
0
    def create_widgets(self):
        pane = PanedWindow(self.master, orient='vertical')
        pane.pack(expand=True, fill=tk.BOTH, side='left')

        self.frame = Frame(pane, bd=2, relief='ridge')
        pane.add(self.frame)

        # Main frame
        Label(self.frame, text='Theoritical d of Base:').grid(row=0,
                                                              column=0,
                                                              padx=10,
                                                              pady=10)
        self.theoretical_d = Entry(self.frame, width=15)
        self.theoretical_d.grid(column=1, row=0)
        Label(self.frame, text='Å').grid(row=0, column=2)

        # Images of Base frame
        self.fm_base = Frame(pane, bd=2, relief='ridge', pady=20)
        pane.add(self.fm_base)
        Label(self.fm_base, text='○ Images of Base').grid(row=0, column=0)
        Label(self.fm_base, text='Images').grid(row=1, column=0, pady=100)
        Label(self.fm_base, text='Base Voltage[V]').grid(row=2,
                                                         column=0,
                                                         pady=20)

        self.fm_base_canvas = Canvas(self.fm_base,
                                     width=1000,
                                     highlightthickness=0)
        self.fm_base_canvas.grid(row=1,
                                 column=1,
                                 rowspan=2,
                                 sticky='news',
                                 padx=35)

        self.fm_base_bar = Scrollbar(self.fm_base,
                                     orient='horizontal',
                                     command=self.fm_base_canvas.xview)
        self.fm_base_bar.grid(row=3, column=1, sticky='ew', padx=35)
        self.fm_base_canvas.config(xscrollcommand=self.fm_base_bar.set)

        self.fm_base_canvas_frame = Frame(self.fm_base_canvas)
        self.fm_base_canvas.create_window((0, 20),
                                          window=self.fm_base_canvas_frame,
                                          anchor='nw')

        self.fm_base_btn = ttk.Button(self.fm_base, text='select images')
        self.fm_base_btn.config(command=lambda: self.select_file(isBase=True))
        self.fm_base_btn.grid(row=0, column=1, sticky='w', padx=30)

        # Images of Molecules frame
        self.fm_mole = Frame(pane, bd=2, relief='ridge', pady=20)
        pane.add(self.fm_mole)
        Label(self.fm_mole, text='○ Images of Molecules').grid(row=0, column=0)
        Label(self.fm_mole, text='Images').grid(row=1, column=0, pady=100)
        Label(self.fm_mole, text='Base Voltage[V]').grid(row=2,
                                                         column=0,
                                                         pady=20)

        self.fm_mole_canvas = Canvas(self.fm_mole,
                                     width=1000,
                                     highlightthickness=0)
        self.fm_mole_canvas.grid(row=1, column=1, rowspan=2, sticky='news')

        self.fm_mole_bar = Scrollbar(self.fm_mole,
                                     orient='horizontal',
                                     command=self.fm_mole_canvas.xview)
        self.fm_mole_bar.grid(row=3, column=1, sticky='ew')
        self.fm_mole_canvas.config(xscrollcommand=self.fm_mole_bar.set)

        self.fm_mole_canvas_frame = Frame(self.fm_mole_canvas)
        self.fm_mole_canvas.create_window((0, 20),
                                          window=self.fm_mole_canvas_frame,
                                          anchor='nw')

        self.fm_mole_btn = ttk.Button(self.fm_mole, text='select images')
        self.fm_mole_btn.config(command=lambda: self.select_file(isBase=False))
        self.fm_mole_btn.grid(row=0, column=1, sticky='w', padx=30)

        # Run blob detection
        self.fm_run = Frame(pane, bd=2, relief='ridge', pady=10)
        pane.add(self.fm_run)
        ttk.Button(self.fm_run, text='RUN', command=self.run).pack()
class Program:
    def __init__(self):
        self.root = Tk()
        self.frame = Frame()
        self.frame.pack(side='top')
        self.label = Label(self.frame, text=COMP.format(0))
        self.label2 = Label(self.frame, text="")
        self.canvas = Canvas(self.root, width=WIDTH, height=HIEGHT,
                             borderwidth=0, highlightthickness=0, bg="black")
        self.painel = PanedWindow(orient='vertical')
        self.list_of_no = []
        self.list_of_vert = []
        self.graph = []
        self.x = []
        self.y = []
        self.components = 0

    def __format_string(self, string):
        string = string.split(" ")
        neighbors = [int(no) for no in string[1:]]
        return (int(string[0]), neighbors)

    def __distance_no(self, x0, y0, x1, y1):
        return sqrt(((x0 * x1) + (y0 * y1)))

    def __create_circles(self, x, y, r):
        x0 = x - r
        y0 = y - r
        x1 = x + r
        y1 = y + r
        return self.canvas.create_oval(x0, y0, x1, y1, fill='red')

    def load_graph(self, path):
        graph = open(path, "r")
        text = ""
        for line in graph:
            formated_input = self.__format_string(line)
            no = No(formated_input[0])
            no.neighbors = formated_input[1]
            text += GRAU.format(formated_input[0], len(formated_input[1]))
            self.graph.append(no)
            self.label2.configure(text=text)

    def create_points(self):
        r = RAIO
        for no in self.graph:
            x = randint(0, WIDTH)
            y = randint(0, HIEGHT)
            if no.id == 1:
                self.x.append(x)
                self.y.append(y)
            else:
                for point in range(len(self.x)):
                    flag = True
                    while flag:
                        dist = self.__distance_no(self.x[point],
                                                  self.y[point],
                                                  x, y)
                        if dist < r + 10.0:
                            x = randint(0, WIDTH)
                            y = randint(0, HIEGHT)
                        else:
                            flag = False
                self.x.append(x)
                self.y.append(y)

    def create_no(self):
        for i in range(len(self.x)):
            self.list_of_no.append(
                self.__create_circles(self.x[i], self.y[i], RAIO))
            self.canvas.create_text(self.x[i], self.y[i],
                                    text=str(self.graph[i].id))

    def create_line(self):
        for no in self.graph:
            x0 = self.x[no.id - 1]
            y0 = self.y[no.id - 1]
            for nei in no.neighbors:
                x1 = self.x[nei - 1]
                y1 = self.y[nei - 1]
                vert = self.canvas.create_line(x0, y0, x1, y1, fill='yellow')
                self.list_of_vert.append(vert)

    def load(self):
        filename = filedialog.askopenfilename()
        print(filename)
        self.load_graph(filename)

    def draw_graph(self):
        self.create_points()
        print(len(self.x))
        self.create_line()
        self.create_no()

    def reset_graph(self):
        for no in self.graph:
            no.visited = False

        for item in self.list_of_no:
            self.canvas.itemconfig(item, fill="red")

    def change_color(self):
        for item in self.list_of_no:
            self.canvas.itemconfig(item, fill="blue")

    def use_bfs(self):
        self.components = 0
        for no in self.graph:
            if no.visited is False:
                self.components += 1
            self.canvas.update()
            self.canvas.after(500)
            if no.visited is False:
                no.visited = True
                self.canvas.itemconfig(self.list_of_no[no.id - 1], fill="blue")
                stack = no.neighbors
                for id in stack:
                    if self.graph[id-1].visited is False:
                        self.graph[id-1].visited = True
                        self.canvas.update()
                        self.canvas.after(500)
                        self.canvas.itemconfig(self.list_of_no[id - 1],
                                               fill="blue")
                        stack.extend(self.graph[id-1].neighbors)
                    else:
                        continue
            else:
                continue
        self.label.configure(text=COMP.format(self.components))

    def create_painel(self):
        commands = ['load graph', 'draw graph', 'reset graph', 'change color',
                    'BFS']
        callbacks = [self.load, self.draw_graph, self.reset_graph,
                     self.change_color, self.use_bfs]
        for button in range(len(commands)):
            self.painel.add(Button(self.painel, text=commands[button],
                                   command=callbacks[button]))

    def main(self):
        self.canvas.pack(side='right')
        self.painel.pack(side='left')
        self.label2.pack(side='top')
        self.label.pack(side='top')
        self.create_painel()
        self.root.mainloop()
class NetGame(Game) :
    def __init__(self) :
        Game.__init__(self)
        import socket
        import tkinter
        self.local = self.host=socket.gethostbyname(socket.gethostname()) # Get local machine ip
        from tkinter import Tk,PanedWindow,StringVar,Entry,Button,VERTICAL,HORIZONTAL,Label
        fenetre=Tk()
        fenetre.title('Socket parameters') 
        self.netgame_win = PanedWindow(fenetre, orient=VERTICAL)
        host_zone=PanedWindow(self.netgame_win, orient=HORIZONTAL)
        host=StringVar()
        host.set(self.local)
        def modifHost(*args) :
            self.host=host.get()
            if self.local==self.host :
                start_button.config(text="Create")
            else :
                start_button.config(text="Join")
        host.trace("w", modifHost)
        host_wid=Entry(host_zone, width=30,textvariable=host)
        host_wid.pack()
        host_label=Label(fenetre, text="Host (you are "+self.local+") :")
        host_zone.add(host_label)
        host_zone.add(host_wid)
        self.netgame_win.add(host_zone)
        port_zone=PanedWindow(self.netgame_win, orient=HORIZONTAL)
        port=StringVar()
        self.port=52333
        port.set(str(self.port))
        # adress_wid=Label(None, textvariable=self.cost, background='red',width=5, anchor=W)
        def modifPort(*args) :
            #print "modify port to",port.get()
            try :
                self.port=int(port.get())
            except :
                port.set("")
        port.trace("w", modifPort)
        port_wid=Entry(fenetre, width=30,textvariable=port)
        #port_wid.grid(column=0, row=1)
        host_wid.focus() 
        port_wid.pack()
        port_label=Label(fenetre, text="Port :")
        port_zone.add(port_label)
        port_zone.add(port_wid)
        self.netgame_win.add(port_zone)
        #Create the open button
        def start() :
            fenetre.destroy()
        start_button=Button(self.netgame_win,text="Create",command=start)
        self.netgame_win.add(start_button)
        self.netgame_win.pack()
        #fenetre.focus_set()
        #start_button.focus()        
        fenetre.mainloop()
             # Import socket module
        self.soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)    # Reserve a port for your service.
        if self.local==self.host :
            self.soc.bind((self.host, self.port))        # Bind to the port
            print( "socket listening")
            self.soc.listen(5)                 # Now wait for client connection.

            self.soc, addr = self.soc.accept()     # Establish connection with client.
            print( 'Got connection from', addr)
            #self.soc.send('Thank you for connecting')
            #c.close()                # Close the connection
            self.firstplayer=choice([1,2])
            print( "FIRST PLAYER IS",self.firstplayer)
            self.soc.send(str(3-self.firstplayer).encode('utf-8'))
        else :
            self.soc.connect((self.host, self.port))
            print( "connect ok")
            p=self.soc.recv(1024).decode('utf-8')
            try :
                self.firstplayer=int(p)
            except :
                print( "error concerning first player, got ",p)
        self.remains=""
            #self.soc.close()                     # Close the socket when done
    def initialize(self) :
        if self.firstplayer==1 : # player1 doit etre le local
            print( "first player is local")
            self.player1.sendDeck()
            self.player2.receiveDeck()
        else :
            print( "first player is hosted")
            self.player2.receiveDeck()
            self.player1.sendDeck()         
        Game.initialize(self)
        if self.player==self.player2 :
            self.endturn_button.update(self.player)
    def send(self,str):
        print("send :"+str)
        self.soc.send(str.encode('utf-8'))
    def random(self,n,intrange) :
        if self.local==self.host :
            jet=sample(list(range(intrange)),n)
            print( "send",jet)
            self.soc.send((" ".join(map(str,jet))+"\n" ).encode('utf-8'))
        else :
            print( "waiting ",n," random number in range",intrange)
            if self.remains  :
                p=self.remains
                self.remains=""
            else :
                p=self.soc.recv(1024).decode('utf-8')
                print( "recv ",p)
            p=p.strip()
            if "\n" in p :
                self.remains,p = p.split("\n",1)
            jet=list(map(int,p.strip().split()))
            print( "got",jet)
        return jet
Exemple #35
0
class staffTree:
    def reset(self):
        for i in self.treeview.get_children():
            self.treeview.delete(i)


    def delItem(self):
        v = self.treeview.focus()
        c = self.treeview.item(v)
        v1 = c['values']
        if len(v1) > 0:
            self.treeClick = self.treeview.item(self.treeview.focus())['values']
            self.email = self.treeClick[1]
            self.mobile = str(self.treeClick[2])

            confirm = askyesno("Confirmation Window", "Are You Sure To Delete?")
            if confirm:
                cur = con.cursor()
                query = 'delete from staff where email= '"+ self.email+"''
                print(query)
                cur.execute(query)
                con.commit()
                self.insertData()
                showinfo("", "Item Deleted!")
        else:
            showinfo('','select any staff first')








    def fullDataFetchQuery(self):
        cur = con.cursor()
        query = "Select * from staff"
        cur.execute(query)
        self.data = cur.fetchall()


    def insertData(self):
        self.reset()
        self.fullDataFetchQuery()
        for i in range(0, len(self.data)):
            self.treeview.insert("", i, values=self.data[i])



    def __init__(self):
        '''Treeview FUNCTION'''
        self.window=Tk()

        self.window.config(bg="lightcyan", highlightthickness=8, highlightbackground="navy", highlightcolor="navy")


        self.window.title("STAFF DETAILS TREE")

        self.frame1=PanedWindow(self.window)
        self.treeview = Treeview(self.frame1, columns=("Name", "Email","Mobile","Password","Type"))
        self.treeview.heading("Name", text="NAME")

        self.treeview.heading("Email", text="EMAIL")
        self.treeview.heading("Mobile", text="MOBILE")
        self.treeview.heading("Type", text="TYPE")







        # for table color


        self.treeview["show"] = "headings"

        style = Style()
        style.configure("Treeview.Heading", font=("Script MT Bold", 16))
        style.configure("Treeview", font=("calibri", 13))







        #
        # scroll=Scrollbar(self.frame1,orient="vertical",command=self.treeview.yview)
        # scroll.pack(side=RIGHT,fill=Y)
        # self.treeview.configure(yscrollcommand=scroll.set)
        self.treeview.pack()
        self.insertData()
        self.frame2=PanedWindow(self.window)
        delBtn=Button(self.frame2,text="Delete Item",command=self.delItem)
        delBtn.grid(row=0,column=0)



        self.frame1.pack()
        self.frame2.pack()


        self.window.mainloop()


#obj=staffTree()
Exemple #36
0
    def createpage(self):
        result_bangming = []
        result_yingyongming = []
        result_yingyongtupian = []
        result_xiazaidizhi = []
        result_yingyongtupian,result_bangming,result_yingyongming,result_xiazaidizhi=self.get_memory()

        print(result_xiazaidizhi,result_yingyongtupian,result_yingyongming,result_bangming)

        # 主界面
        top_1 = PanedWindow(orient="vertical")
        top_1.pack(fill='both', expand=1)

        # 右边界面
        top_2 = PanedWindow(top_1)
        top_1.add(top_2)

        # 左边5项
        top_3 = PanedWindow(top_2, orient="vertical")
        top_2.add(top_3)

        # 右边图片
        top_4 = PanedWindow(top_2, orient="vertical")
        top_2.add(top_4)

        # 右边文字
        top_5 = PanedWindow(top_2, orient="vertical")
        top_2.add(top_5)

        # 下方两个按钮
        top_6 = PanedWindow(top_1, orient="horizontal")
        top_1.add(top_6)

        # 左边5标签
        left1 = Label(top_1, text="1", height=5, width=15)
        top_3.add(left1)
        left2 = Label(top_1, text="2", height=5, width=15)
        top_3.add(left2)
        left3 = Label(top_1, text="3", height=5, width=15)
        top_3.add(left3)
        left4 = Label(top_1, text="4", height=5, width=15)
        top_3.add(left4)
        left5 = Label(top_1, text="5", height=5, width=15)
        top_3.add(left5)

        pic_size = 93
        w_box = pic_size
        h_box = pic_size
        LP = [0, 0, 0, 0, 0]
        pil_image = [0, 0, 0, 0, 0]
        tk_image = [0, 0, 0, 0, 0]
        pil_image_resized = [0, 0, 0, 0, 0]
        k = 0
        for i in result_yingyongtupian:
            response = request.urlopen(i)
            cat_img = response.read()
            with open('C:\\Users\\jaska\\Desktop\\cat_500_600' + str(k) + '.jpg', 'wb') as f:
                f.write(cat_img)
                f.close()
            pil_image[k] = Image.open(r'C:\Users\jaska\Desktop\cat_500_600' + str(k) + '.jpg')
            w, h = pil_image[k].size
            pil_image_resized[k] = self.resize(w, h, w_box, h_box, pil_image[k])
            tk_image[k] = ImageTk.PhotoImage(pil_image_resized[k])
            print(tk_image)
            LP[k] = Label(top_4, image=tk_image[k], height=w_box, width=h_box)
            top_4.add(LP[k])
            k += 1

        def button_1():
            messagebox.showinfo(title="Download", message=result_xiazaidizhi[0])

        def button_2():
            messagebox.showinfo(title="Download", message=result_xiazaidizhi[1])

        def button_3():
            messagebox.showinfo(title="Download", message=result_xiazaidizhi[2])

        def button_4():
            messagebox.showinfo(title="Download", message=result_xiazaidizhi[3])

        def button_5():
            messagebox.showinfo(title="Download", message=result_xiazaidizhi[4])

        def button_6():
            top_1.destroy()
            Third(self.root)

        def button_7():
            messagebox.showinfo(title="往后",message="可惜是最后了哟!")

        # 右边按钮
        button1_1 = Button(top_2, text=result_yingyongming[0], height=5, width=30, command=button_1, highlightcolor="blue",
                           activebackground="blue", justify="right", compound="right")
        top_5.add(button1_1)
        button1_2 = Button(top_2, text=result_yingyongming[1], height=5, width=30, command=button_2, highlightcolor="blue",
                           activebackground="blue", justify="right", compound="right")
        top_5.add(button1_2)
        button1_3 = Button(top_2, text=result_yingyongming[2], height=5, width=30, command=button_3, highlightcolor="blue",
                           activebackground="blue", justify="right", compound="right")
        top_5.add(button1_3)
        button1_4 = Button(top_2, text=result_yingyongming[3], height=5, width=30, command=button_4, highlightcolor="blue",
                           activebackground="blue", justify="right", compound="right")
        top_5.add(button1_4)
        button1_5 = Button(top_2, text=result_yingyongming[4], height=5, width=30, command=button_5, highlightcolor="blue",
                           activebackground="blue", justify="right", compound="right")
        top_5.add(button1_5)

        # 下方左右换页按钮
        button1_6 = Button(top_6, text="←", height=2, width=30, command=button_6, highlightcolor="blue",
                           activebackground="blue", justify="right", compound="right")
        top_6.add(button1_6)
        button1_7 = Button(top_6, text="→", height=2, width=30, command=button_7, highlightcolor="blue",
                           activebackground="blue", justify="right", compound="right")
        top_6.add(button1_7)
        root.mainloop()