def splash(self): """启动屏幕""" image_file = os.path.join( glv.get_variable("APP_PATH"), glv.get_variable("DATA_DIR"), "image", "splash.jpg", ) canvas = Canvas(self, width=self.w, height=250, bg="white") # if os.path.exists(image_file): # img = Image.open(image_file) # 打开图片 # image = ImageTk.PhotoImage(img) # 用PIL模块的PhotoImage打开 # canvas.create_image(self.w / 2, 250 / 2, image=image) # else: canvas.create_text(self.w / 2, 250 / 2, text="Crogram, Inc.", font="time 20", tags="string") canvas.pack(fill="both") Label(self, text="欢迎使用", bg="green", fg="#fff", height=2).pack(fill="both", side="bottom") # 设置splash显示的时间,单位是毫秒(milliseconds) self.after(4000, self.destroy) self.mainloop()
def mouse_event(self,e): CREATENODE = "create-node" CURSOR = "cursor" RELATIONSHIP = "relationship" nameTool = get_variable("toolTarget")._nameTool nodeList = get_variable("nodeList") x = e.x y = e.y if(nameTool == CREATENODE): self.create_node(e) return if(nameTool == CURSOR): #check position self.previous = (x,y) for node in nodeList: iX = node._x iY = node._y if( x >= iX and x <= iX + 30 and y >= iY and y <= iY + 30): self.item = node return self.item = None if(nameTool == RELATIONSHIP): #find node start for i in nodeList: nodeX = i._x nodeY = i._y diameter = i._diameter if(x > nodeX and x < (nodeX + diameter) and y > nodeY and y < (nodeY + diameter)): self._relationship[1] = i return return
def key_event(self,event): properties = get_variable("properties") toolList = get_variable("toolList") if(event.keysym == "Delete"): properties.delete_node() if(event.char == "\x11"): toolList[0].target_tool() if(event.char == "\x01"): toolList[1].target_tool() if(event.char == "\x1a"): toolList[2].target_tool()
def __init__(self, master): self.root = master self.root.title(glv.get_variable("APP_NAME")) self.root.minsize(800, 600) set_window_center(self.root, 800, 600) self.root.resizable(False, False) self.root.update() self.var_port = IntVar(value=3333) self.var_address = StringVar(value="0.0.0.0") self.default_timeout = IntVar(value=-999) self.path_remote = StringVar() self.path_local = StringVar() self.inputFileName = "" self.filelist_local = None self.filelist_remote = None self.toolbar_box = None # 工具按钮栏 self.quickbar_box = None # 快速连接栏 self.footer_box = None # 底部状态栏 self.content_box = None # 主要内容视图容器 self.remote_box = None # 远程服务端资源 self.local_box = None # 本地资源 self.ftp_connect = FTP() self.init_view()
def remove_parent(self, parent): for item in self._parentNodes: if (item == parent): item.remove_child(self) properties = get_variable("properties") properties.target_node(self)
def find_origin_coor(self): nodeList = get_variable("nodeList") originX = None originY = None originMaxX = None first = True for node in nodeList: if(first == True): originX = node._x originY = node._y originMaxX = node._x first = False continue if(originX > node._x): originX = node._x if(originY > node._y): originY = node._y if(originMaxX < node._x): originMaxX = node._x delt = int((800 - (originMaxX-originX))/2) if(delt > 0): originX = originX - delt originY = originY - 50 return originX,originY
def init_page(self): """加载控件""" username = str(global_variable.get_variable("CURRENT_USER_NAME")) self.list = dbcontent.content_list_by_username(username) head_frame = LabelFrame(self, text="文章操作") head_frame.grid(row=0, column=0, columnspan=2, sticky="nswe") Label(head_frame, textvariable=self.selected_name).pack() btn_info = Button(head_frame, text="详情", command=self.info) btn_info.pack(side="left") btn_edit = Button(head_frame, text="编辑", command=self.edit) btn_edit.pack(side="left") btn_delete = Button(head_frame, text="删除", command=self.delete) btn_delete.pack(side="left") # 表格 self.tree_view = ttk.Treeview(self, show="headings") self.tree_view["columns"] = ("id", "title", "content", "tag") # 列设置 self.tree_view.column("id", width=100) # self.tree_view.column("title", width=100) # self.tree_view.column("content", width=100) # self.tree_view.column("tag", width=100) # 显示表头 self.tree_view.heading("id", text="ID") self.tree_view.heading("title", text="标题") self.tree_view.heading("content", text="内容") self.tree_view.heading("tag", text="标签") # 插入数据 num = 1 for item in self.list: self.tree_view.insert( "", num, text="", values=(item["id"], item["title"], item["content"], item["tag"]), ) # 选中行 self.tree_view.bind("<<TreeviewSelect>>", self.select) # 排序 for col in self.tree_view["columns"]: # 给所有标题加 self.tree_view.heading( col, text=col, command=lambda _col=col: treeview_sort_column( self.tree_view, _col, False), ) vbar = ttk.Scrollbar(self, orient="vertical", command=self.tree_view.yview) self.tree_view.configure(yscrollcommand=vbar.set) self.tree_view.grid(row=1, column=0, sticky="nsew") vbar.grid(row=1, column=1, sticky="ns")
def target_tool(self, e=None): toolTarget = get_variable('toolTarget') if (toolTarget != None): toolTarget.config(relief=FLAT) self.config(relief=GROOVE) set_variable('toolTarget', self)
def show_graph(self,result): self._label = Label(self._mainFrame,text="Kết quả",pady=10,font="Arial 18 bold",bg = WHITE) self._label.pack() self._canvas = Canvas(self._mainFrame,bg=WHITE,bd=0,highlightthickness=0) self._canvas.pack(fill=BOTH,expand=True) nodeList = get_variable("nodeList") originX,originY = self.find_origin_coor() for node in nodeList: x = node._x - originX y = node._y - originY diameter = node._diameter radius = int(diameter/2) nameNode = node._nameNode heuristic = node._heuristic isWay = False index = None for i,item in enumerate(result): if(item == nameNode): isWay = True index = i + 1 if(isWay): self._canvas.create_oval(x,y,x+diameter,y+diameter, width="2",outline="red") else: self._canvas.create_oval(x,y,x+diameter,y+diameter, width="2") self._canvas.create_text(x+diameter/2,y+diameter/2,text=nameNode,font="TkDefaultFont 10 bold") self._canvas.create_text(x + diameter + 5, y - 5,text = heuristic,fill="blue") #draw arrows for child in node._childNodes: x1 = x + radius y1 = y + radius x2 = child["Node"]._x + radius - originX y2 = child["Node"]._y + radius - originY pointStart = ClosestIntersection(x1,y1,radius,(x2,y2),(x1,y1)) pointEnd = ClosestIntersection(x2,y2,radius,(x1,y1),(x2,y2)) if(index == None): arrow = self._canvas.create_line(pointStart[0],pointStart[1],pointEnd[0],pointEnd[1],arrow = LAST) elif(index >= len(result)): arrow = self._canvas.create_line(pointStart[0],pointStart[1],pointEnd[0],pointEnd[1],arrow = LAST) elif(child["Node"]._nameNode == result[index]): arrow = self._canvas.create_line(pointStart[0],pointStart[1],pointEnd[0],pointEnd[1],arrow = LAST,fill="red") else: arrow = self._canvas.create_line(pointStart[0],pointStart[1],pointEnd[0],pointEnd[1],arrow = LAST) self._canvas.tag_lower(arrow) #show cost cost = child["cost"] xCost = int((pointStart[0]+pointEnd[0])/2) if(pointStart[0] > pointEnd[0]): xCost -= 10 else: xCost += 10 yCost = int((pointStart[1]+pointEnd[1])/2) - 10 self._canvas.create_text(xCost,yCost,text = cost, font="TkDefaultFont 10 bold")
def init_page(self): """加载控件""" Label(self, text="用户:").pack() Label(self, text="欢迎" + str(global_variable.get_variable("CURRENT_USER_NAME"))).pack() Button(self, text="查看").pack()
def create_node(self,e): nodeList = get_variable("nodeList") properties = get_variable("properties") #check position x = e.x y = e.y for item in nodeList: iX = item._x iY = item._y if( x > iX - 20 and x < iX + 50 and y > iY - 20 and y < iY + 50): return #create new node newNode = Node(self._canvas,"",0,x-15,y-15,30) nodeList.append(newNode) properties.target_node(newNode)
def end_drag(self,event): CURSOR = "cursor" RELATIONSHIP = "relationship" properties = get_variable("properties") nameTool = get_variable("toolTarget")._nameTool nodeList = get_variable("nodeList") x = event.x y = event.y if(nameTool == CURSOR): self.item = None return if(nameTool == RELATIONSHIP): #delete line temp self._canvas.delete(self._relationship[0]) if(self._relationship[1] == None): return #find node end for i in nodeList: nodeX = i._x nodeY = i._y diameter = i._diameter if(x > nodeX and x < (nodeX + diameter) and y > nodeY and y < (nodeY + diameter)): self._relationship[2] = i if(self._relationship[2] == None or self._relationship[1] == self._relationship[2]): return #add child relParent = self._relationship[1] relChild = self._relationship[2] flag = True for i in relParent._childNodes: if (i["Node"] == relChild): flag = False break if(flag): relParent.add_child(relChild,0) properties.target_node(relParent) properties.focus_cost(relChild) self._relationship = [None,None,None] return
def delete(self): nodeList = get_variable("nodeList") self._canvas.delete(self._oval) self._canvas.delete(self._txtOval) self._canvas.delete(self._txtHeuristic) for node in nodeList: if (node == self): nodeList.remove(node) while (self._childNodes != []): self.remove_child(self._childNodes[0]["Node"]) while (self._parentNodes != []): self.remove_parent(self._parentNodes[0]) properties = get_variable("properties") properties.target_node()
def edit_name(self,e = None): self._entName.config(highlightthickness=0) nameNode = self.varName.get() if(self.target == None): return nodeList = get_variable("nodeList") for item in nodeList: if(item._nameNode.lower() == nameNode.lower() and item._nameNode.lower() != self.target._nameNode.lower()): self._entName.config(highlightthickness=1,highlightcolor="red") return self.target.edit_node(name = nameNode)
def do_add(self): title = self.content_title.get() content = self.content_textarea.get() tag = self.content_tag.get() username = str(global_variable.get_variable("CURRENT_USER_NAME")) res = dbcontent.content_add(username, title, content, tag) if res is True: self.content_title.set("") self.content_tag.set("") self.content_textarea.set("") # 清空 #self.content_textarea.update() messagebox.showinfo(title="success", message="Added successfully") else: messagebox.showinfo(title="error", message="add failed")
def do_add(self): """添加文章""" title = self.content_title.get() content = self.content_textarea.get(0.0, "end") tag = self.content_tag.get() username = str(global_variable.get_variable("CURRENT_USER_NAME")) res = dbcontent.content_add(username, title, content, tag) if res is True: self.content_title.set("") self.content_tag.set("") self.content_textarea.delete(1.0, "end") # 清空 self.content_textarea.update() messagebox.showinfo(title="成功", message="添加成功") else: messagebox.showinfo(title="错误", message="添加失败")
def remove_child(self, child): for item in self._childNodes: if (item["Node"] == child): #remove child self._canvas.delete(item["arrow"]) self._canvas.delete(item["txtCost"]) self._childNodes.remove(item) #remove parent for parent in item["Node"]._parentNodes: if (parent == self): item["Node"]._parentNodes.remove(parent) break properties = get_variable("properties") properties.target_node(self)
def create_new_child(self): if(self.target == None): return nodeList = get_variable("nodeList") children = self.target._childNodes x = None y = None if(children == []): x = self.target._x + 20 y = self.target._y + 80 else: x = children[-1]["Node"]._x + 50 y = children[-1]["Node"]._y newChild = Node(self.target._canvas,"",0,x,y,30) nodeList.append(newChild) self.target.add_child(newChild,0) self.target_node(newChild)
def __initUI(self): self.pack(side=LEFT, fill="both", expand=True) self._canvas = Canvas(self,bg=WHITE,bd=0, highlightthickness=0) self._canvas.pack(fill="both", expand=True, padx=5, pady=5) self.item = None self.previous = (0,0) self._canvas.bind('<Button-1>',self.mouse_event) self._canvas.bind('<B1-Motion>',self.drag) self._canvas.bind('<ButtonRelease-1>',self.end_drag) self._parent.bind("<Key>",self.key_event) nodeList = get_variable("nodeList") A = Node(self._canvas,"A",1000,150,20,30) C = Node(self._canvas,"C",25,100,100,30) D = Node(self._canvas,"D",20,200,100,30) E = Node(self._canvas,"E",24,300,100,30) F = Node(self._canvas,"F",22,400,20,30) H = Node(self._canvas,"H",16,180,200,30) I = Node(self._canvas,"I",17,450,200,30) K = Node(self._canvas,"K",11,250,250,30) B = Node(self._canvas,"B",0,150,250,30) A.add_child(C,17) A.add_child(D,12) A.add_child(E,15) A.add_child(F,20) D.add_child(E,8) D.add_child(H,10) E.add_child(I,4) E.add_child(K,5) H.add_child(K,1) H.add_child(B,18) K.add_child(B,8) nodeList = [A,C,D,E,F,H,K,I,B] set_variable("nodeList",nodeList)
def drag(self, event): CURSOR = "cursor" RELATIONSHIP = "relationship" nameTool = get_variable("toolTarget")._nameTool x = event.x y = event.y #cursor if(nameTool == CURSOR): if(self.item == None): return widget = event.widget xc = widget.canvasx(x) - self.previous[0] yc = widget.canvasx(y) - self.previous[1] self.item.drag_node(xc,yc) self.item._x = self.item._x + xc self.item._y = self.item._y + yc self.previous = (xc + self.previous[0], yc + self.previous[1]) return #relationship if(nameTool == RELATIONSHIP): nodeStart = self._relationship[1] if(nodeStart == None): return radius = nodeStart._diameter / 2 if(self._relationship[0] != None): self._canvas.delete(self._relationship[0]) Templine = self._canvas.create_line(nodeStart._x + radius,nodeStart._y + radius,x,y,arrow = LAST) self._relationship[0] = Templine
def __init__(self): self.db_path = os.path.join(glv.get_variable("APP_PATH"), glv.get_variable("DATA_DIR"), 'database.db') self.conn = sqlite3.connect(self.db_path) self.cursor = self.conn.cursor()
def init_page(self): Label(self, text="User:"******"Welcome" + str(global_variable.get_variable("CURRENT_USER_NAME"))).pack() Button(self, text="View").pack() self.list = dbcontent.user_list() head_frame = LabelFrame(self, text="User action") head_frame.grid(row=0, column=0, columnspan=2, sticky="nswe") Label(head_frame, textvariable=self.selected_name).pack() btn_info = Button(head_frame, text="Details", command=self.info) btn_info.pack(side="left") btn_edit = Button(head_frame, text="edit", command=self.edit) btn_edit.pack(side="left") btn_reset = Button(head_frame, text="reset Password", command=self.reset) btn_reset.pack(side="left") btn_delete = Button(head_frame, text="delete", command=self.delete) btn_delete.pack(side="left") self.tree_view = ttk.Treeview(self, show="headings") self.tree_view["columns"] = ("id", "name", "username", "password", "op") # self.tree_view.column("id", width=100) # self.tree_view.column("name", width=100) # self.tree_view.column("password", width=100) # self.tree_view.column("op", width=100) self.tree_view.heading("id", text="ID") self.tree_view.heading("name", text="Name") self.tree_view.heading("username", text="User Name") self.tree_view.heading("password", text="Password") self.tree_view.heading("op", text="OP") num = 1 for item in self.list: self.tree_view.insert( "", num, text="", values=(item["id"], item["name"], item["username"], item["password"], "Details"), ) self.tree_view.bind("<<TreeviewSelect>>", self.select) for col in self.tree_view["columns"]: self.tree_view.heading( col, text=col, command=lambda _col=col: treeview_sort_column( self.tree_view, _col, False ), ) vbar = ttk.Scrollbar(self, orient="vertical", command=self.tree_view.yview) self.tree_view.configure(yscrollcommand=vbar.set) self.tree_view.grid(row=1, column=0, sticky="nsew") vbar.grid(row=1, column=1, sticky="ns") Label(self, text="Bottom action bar").grid(sticky="swe")
def clicked(self): properties = get_variable("properties") properties.target_node(self)