当前位置: 首页 > news >正文

长沙旅游网站制作wordpress怎么屏蔽注册链接

长沙旅游网站制作,wordpress怎么屏蔽注册链接,东莞网页制作,wow做宏的网站Tkinter制作登录界面以及登陆后页面切换#xff08;一#xff09; 前言序言1. 由来2. 思路3. 项目结构描述4. 项目实战1. 登录界面实现#xff08;代码#xff09;2. 首页界面实现#xff08;代码#xff09;3. 打包build.py#xff08;与main.py同级目录#xff09;4.… Tkinter制作登录界面以及登陆后页面切换一 前言序言1. 由来2. 思路3. 项目结构描述4. 项目实战1. 登录界面实现代码2. 首页界面实现代码3. 打包build.py与main.py同级目录4. 打包安装包 前言 本帖子默认您已了解Tkinter的基础操作以及原理文中仅会对部分逻辑描述不会对Tkinter讲解. 序言 1. 由来 入职以来很长时间都是在做网页版的后台用到最多的就是Java语言框架主要是Spring BootSpring Cloud 。中间件大多用:MqRedisNacos等但是随着项目的发展网页版已经无法满足客户的需求以及业务生态的发展需要增加客户端应用由于公司没有此类开发经验重担就留给了俺一个小趴菜报头痛哭…好了废话不多说开搞。说到客户端第一时间想到的就是python的PyQt5因为以前了解过。但是随着深入了解好是好功能也齐全但是由于作者比较笨也比较懒实在不想去烧脑学习了就盯上了较为简单快捷的Tkinter。 2. 思路 制作客户端主要流程被我分为不考虑后台服务情况下明白需求了解业务、设计架构主要是使用的语言以及怎么模块化开发方便后续升级管理、打包部署Inno setup 打包、测试调优测试人员。 3. 项目结构描述 下文中出现的如 login/ui.py 这样的文件名称时则代表的是在包login下的ui.py文件后续可以自行修改。 4. 项目实战 1. 登录界面实现代码 图片展示 login/ui.py from tkinter import * from tkinter.ttk import *class WinGUI(Tk):def __init__(self):super().__init__()self.__win()self.iconbitmap(favicon.ico)self.tk_input_username_label Entry(self, )self.tk_input_username_label.place(relx0.5367, rely0.2471, relwidth0.4000, relheight0.1471)self.tk_input_password_label Entry(self, show*)self.tk_input_password_label.place(relx0.5367, rely0.4441, relwidth0.4000, relheight0.1471)self.tk_button_login_button Button(self, text立即登录, takefocusFalse, )self.tk_button_login_button.place(relx0.5367, rely0.6824, relwidth0.4000, relheight0.1471)self.tk_label_register Label(self, text还没有账号立即注册, anchorcenter, )self.tk_label_register.place(relx0.6933, rely0.8676, relwidth0.2250, relheight0.0882)self.tk_canvas_login_canvas Canvas(self, )self.tk_canvas_login_canvas.place(relx0.0000, rely0.0000, relwidth0.4667, relheight1.0000)self.tk_label_welcome Label(self, text项目介绍自定义, anchorcenter, )self.tk_label_welcome.place(relx0.4667, rely0.0588, relwidth0.5333, relheight0.1471)def __win(self):self.title(登录界面)width, height 600, 340screenwidth self.winfo_screenwidth()screenheight self.winfo_screenheight()geometry %dx%d%d%d % (width, height, (screenwidth - width) / 2, (screenheight - height) / 2)self.geometry(geometry)self.minsize(widthwidth, heightheight)def login(self):username self.tk_input_username_label.get()password self.tk_input_password_label.get()return username, passwordclass Win(WinGUI):def __init__(self, controller):self.ctl controllersuper().__init__()self.__event_bind()self.__style_config()self.ctl.init(self)def __event_bind(self):self.tk_input_password_label.bind(Return, self.ctl.login_submit)self.tk_button_login_button.bind(Button-1, self.ctl.login_submit)self.tk_button_login_button.bind(Return, self.ctl.login_submit)self.tk_label_register.bind(Button-1, self.ctl.register)passdef __style_config(self):passlogin/control.py import tkinter.messageboxfrom login.ui import WinGUIclass Controller:# 导入UI类后替换以下的 object 类型将获得 IDE 属性提示功能ui: WinGUIdef __init__(self):self.url 登录地址def init(self, ui):得到UI实例对组件进行初始化配置self.ui uidef close_windows(self):print(点击了菜单)if self.ui:self.ui.destroy()def version(self):print(点击了菜单)tkinter.messagebox.showinfo(版本信息, 当前版本: V1.0.0)def login_submit(self, evt):u, p self.ui.login()if u is None or len(u) 0:tkinter.messagebox.showinfo(登录提示, 请输入登录用户名)elif p is None or len(p) 0:tkinter.messagebox.showinfo(登录提示, 请输入登录密码)print(f触发了登录操作地址{self.url},账号{u},密码{p})# 模拟登录操作if u admin and p admin:print(f登录成功)# 关闭登录窗口self.ui.destroy()from home.control import Controller as HomeUIControllerfrom home.ui import Win as MainWin# 这里创建首页界面并进入GUI循环可以将登陆后的Token统一管理不想管理的可以当作参数传过去不过比较麻烦app MainWin(HomeUIController())app.mainloop()else:tkinter.messagebox.showinfo(登录提示, 登陆失败了请检查账号密码是否正确.)def register(self, evt):print(f触发了注册操作地址{self.url}) 启动类main.py # 导入窗口控制器 from login.control import Controller as MainUIController # 导入布局文件 from login.ui import Win as MainWinif __name__ __main__:app MainWin(MainUIController())app.iconbitmap(favicon.ico)# 启动app.mainloop()2. 首页界面实现代码 图片展示 home/ui.py from tkinter import * from tkinter.ttk import *class WinGUI(Tk):def __init__(self):super().__init__()self.__win()# 当前页数self.index 1self.total 10self.data []self.tk_table_m1ef1meg self.__tk_table_m1ef1meg(self)self.tk_label_m1ef4id7 self.__tk_label_m1ef4id7(self)self.tk_input_query self.__tk_input_query(self)self.tk_button_query self.__tk_button_query(self)self.tk_button_head self.__tk_button_head(self)self.tk_button_previous__page self.__tk_button_previous__page(self)self.tk_button_next_page self.__tk_button_next_page(self)self.tk_button_last self.__tk_button_last(self)def __win(self):self.title(项目名称)# 设置窗口大小、居中width 800height 600screenwidth self.winfo_screenwidth()screenheight self.winfo_screenheight()geometry %dx%d%d%d % (width, height, (screenwidth - width) / 2, (screenheight - height) / 2)self.iconbitmap(favicon.ico)self.geometry(geometry)self.minsize(widthwidth, heightheight)def scrollbar_autohide(self, vbar, hbar, widget):自动隐藏滚动条def show():if vbar: vbar.lift(widget)if hbar: hbar.lift(widget)def hide():if vbar: vbar.lower(widget)if hbar: hbar.lower(widget)hide()widget.bind(Enter, lambda e: show())if vbar: vbar.bind(Enter, lambda e: show())if vbar: vbar.bind(Leave, lambda e: hide())if hbar: hbar.bind(Enter, lambda e: show())if hbar: hbar.bind(Leave, lambda e: hide())widget.bind(Leave, lambda e: hide())def v_scrollbar(self, vbar, widget, x, y, w, h, pw, ph):widget.configure(yscrollcommandvbar.set)vbar.config(commandwidget.yview)vbar.place(relx(w x) / pw, relyy / ph, relheighth / ph, anchorne)def h_scrollbar(self, hbar, widget, x, y, w, h, pw, ph):widget.configure(xscrollcommandhbar.set)hbar.config(commandwidget.xview)hbar.place(relxx / pw, rely(y h) / ph, relwidthw / pw, anchorsw)def create_bar(self, master, widget, is_vbar, is_hbar, x, y, w, h, pw, ph):vbar, hbar None, Noneif is_vbar:vbar Scrollbar(master)self.v_scrollbar(vbar, widget, x, y, w, h, pw, ph)if is_hbar:hbar Scrollbar(master, orienthorizontal)self.h_scrollbar(hbar, widget, x, y, w, h, pw, ph)self.scrollbar_autohide(vbar, hbar, widget)def __tk_table_m1ef1meg(self, parent):# 表头字段 表头宽度columns {序列: 79, 姓名: 239, 民族: 79, 年龄: 79, 简介: 319}tk_table Treeview(parent, showheadings, columnslist(columns), )for text, width in columns.items(): # 批量设置列属性tk_table.heading(text, texttext, anchorcenter)tk_table.column(text, anchorcenter, widthwidth, stretchFalse) # stretch 不自动拉伸tk_table.place(relx0.0000, rely0.1817, relwidth0.9988, relheight0.7500)return tk_tabledef __tk_button_next_page(self, parent):btn Button(parent, text下一页, takefocusFalse, )btn.place(relx0.8313, rely0.9500, relwidth0.0625, relheight0.0500)return btndef __tk_button_previous__page(self, parent):btn Button(parent, text上一页, takefocusFalse, )btn.place(relx0.7462, rely0.9500, relwidth0.0625, relheight0.0500)return btndef __tk_label_m1ef4id7(self, parent):label Label(parent, text当前第3页/总130页, anchorcenter, )label.place(relx0.4625, rely0.9500, relwidth0.1938, relheight0.0500)return labeldef __tk_input_query(self, parent):ipt Entry(parent, )ipt.place(relx0.0000, rely0.1183, relwidth0.2500, relheight0.0500)return iptdef __tk_button_query(self, parent):btn Button(parent, text搜索, takefocusFalse, )btn.place(relx0.2612, rely0.1183, relwidth0.0788, relheight0.0500)return btndef __tk_button_head(self, parent):btn Button(parent, text首页, takefocusFalse, )btn.place(relx0.6675, rely0.9500, relwidth0.0625, relheight0.0500)return btndef __tk_button_last(self, parent):btn Button(parent, text尾页, takefocusFalse, )btn.place(relx0.9187, rely0.9500, relwidth0.0625, relheight0.0500)return btndef page_add_index(self):# 下一页if self.index self.total:self.index 1return self.indexdef page_sub_index(self):# 上一页if self.index 1:self.index - 1return self.indexdef update_table(self):if self.data and len(self.data) 0:if self.tk_table_m1ef1meg.get_children():for get_child in self.tk_table_m1ef1meg.get_children():self.tk_table_m1ef1meg.delete(get_child)for index, datum in enumerate(self.data):self.tk_table_m1ef1meg.insert(, end, text,values(index 1, datum.get(name, ), datum.get(nation, ),datum.get(age, ), datum.get(info, )))class Win(WinGUI):def __init__(self, controller):self.ctl controllersuper().__init__()self.__event_bind()self.__style_config()self.config(menuself.create_menu())self.ctl.init(self)def create_menu(self):创建自定义的菜单可以不要menu Menu(self, tearoffFalse)menu.add_cascade(label设置, menuself.menu_m1ecaoyu(menu))menu.add_cascade(label帮助, menuself.menu_m1eccdqt(menu))return menudef menu_m1ecaoyu(self, parent):menu Menu(parent, tearoffFalse)menu.add_command(label关闭界面, commandself.ctl.close_windows)return menudef menu_m1eccdqt(self, parent):menu Menu(parent, tearoffFalse)menu.add_command(label版本信息, commandself.ctl.version)return menudef __event_bind(self):此处对组件绑定事件# 搜索框绑定回车事件回车直接搜索self.tk_input_query.bind(Return, self.ctl.select_member_data)# 搜索按钮绑定点击事件self.tk_button_query.bind(Button-1, self.ctl.select_member_data)# 首页事件self.tk_button_head.bind(Button-1, lambda event: self.ctl.load_member_data_next(self.index))self.tk_button_last.bind(Button-1, lambda event: self.ctl.load_member_data_next(self.total))self.tk_button_previous__page.bind(Button-1,lambda event: self.ctl.load_member_data_next(self.page_sub_index()))self.tk_button_next_page.bind(Button-1, lambda event: self.ctl.load_member_data_next(self.page_add_index()))passdef __style_config(self):pass3. 打包build.py与main.py同级目录 import subprocessdef main_windows_package():# 定义 PyInstaller 命令pyinstaller_command [pyinstaller, --onefile, -w,--icon, favicon.ico, main.py]try:subprocess.run(pyinstaller_command, checkTrue)except subprocess.CalledProcessError as e:print(fAn error occurred while running PyInstaller: {e})if __name__ __main__:main_windows_package()4. 打包安装包 各位可以自行选择工具由于此处项目过于简单即开即用没有做打包的脚本后续做到需要打包时会在后面写出来当然有需要的也可以留言看到后可以义务帮助。 执行了 build.py 后同级会出现一个dist目录里边会有main.exe可执行文件这个就是程序打包后的啦好啦到此结束。
http://www.hkea.cn/news/14583997/

相关文章:

  • 网站开发面试问题以及回答重庆企业做网站
  • 建站系统破解源码湖北网络广播电视台
  • 网站建设增城网站建设 表扬信
  • 代码高亮网站常州创新优典网站建设
  • 网站建设人文类长春火车站最新通知
  • 宝塔软件怎么做网站上海专业做网站公司
  • 杭州服装论坛网站建设互联网设计公司网站
  • 小区网站建设一般企业网站建设合同
  • 做的好的农产品网站深圳网站建设乐云seo
  • 网站怎样做地理位置定位营销型网站开发制作
  • 建设部网站业绩如何录入duplicator wordpress
  • 深圳专业做网站排名多少钱网站买东西第三方怎么做
  • 网站开发和程序开发gif表情包制作网站
  • 深圳商业网站建设哪家好用源码做网站步骤
  • 政协网站 是政协信息化建设枣庄做网站的公司
  • 网站开发长期合作网站方案策划书
  • 网站百度搜索情况和反链接优化建议做网站工资多少钱
  • 承德微网站开发企业建设网站公司哪家好
  • 小游戏网站开发多用户wordpress主题
  • dede网站经常被挂马 怎么办成都有哪些做网站的
  • 站长网站素材做网站好的网络公司
  • 三明网站建设tudouly备案 填写网站信息
  • 网站购买域名之后再怎么做网站有什么优势
  • 网站建网站建设网页正规软件开发培训学校
  • 网站海外seoapp软件开发技术pdf百度云
  • 长沙网站建设索王道下拉魔方 网站建设 有限公司
  • 上海网站建设lv cn青岛市住房和城乡建设局网站查询
  • 企业网站建设代理加盟wordpress 3.8.2
  • 网站建设合同2018网站开发技术考试题
  • 海盐县建设门户网站网站模板织梦