主要介绍了Python flask框架实现浏览器点击自定义跳转页面,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
wxpython没提供界面跳转的方式,所以就需要借助threading模块,本文给大家分享python wxpython实现界面跳转功能,感兴趣的朋友跟随小编一起看看吧
真的。可能这问题真的挺愚蠢。。。但咱还是厚着脸皮问下大神了。。。 ...而且wireshark抓包也没发现任何post数据包 ...也是没任何post包,我...1、页面跳转后url和跳转前一致 2、没任何post数据包... 求大神解答,轻喷啊:
需求: 前台:一个页面是登录页面,另加三个功能页面。登录页面有用户名、密码,用户角色输入和一个登录按钮。另三个功能页面对应三个...python-flask服务运行框架 from flask import Flask, render_template,r...
使用不同的模板
后端代码
@app.route('/')defindex():return render_template('login.html') @app.route('/login',methods=['POST'])deflogin(): username= request.form.get('username') password= request.form.get('password')print("用户名:",username)print("密码:",password)if username=='haha':return render_template('haha.html')#使用模板hahaelif username=='hihi':return render_template('hihi.html')#使用模板hihielse:print('查无此人')return render_template('index.html')
使用重定向
@app.route('/')defindex():return render_template('login.html') @app.route('/login',methods=['POST'])deflogin(): username= request.form.get('username') password= request.form.get('password')print("用户名:",username)print("密码:",password)if username=='haha':return redirect(url_for('haha'))elif username=='hihi':return redirect(url_for('hihi'))else:print('查无此人')return render_template('index.html') @app.route('/haha')defhaha():return render_template('haha.html') @app.route('/hihi')defhihi():return render_template('hihi.html')
使用模板,登陆之后,路径还是/login。而使用重定向,则路径和模板一致,是/hihi或者是/haha,不过需要注意的是,可能会出现直接通过路径进入到一个页面,那登陆来进行验证的功能就没有意义。这可以设置全局变量来解决。
使用jinja
后端代码
@app.route('/')defindex():return render_template('index.html', page="login") @app.route('/login', methods=['POST','GET'])deflogin(): username= request.form.get('username') password= request.form.get('password') role= request.form.get('role')if role=='1':return render_template('index.html', page=1)elif role=='2':return render_template('index.html', page=2)elif role=='3':return render_template('index.html', page=3)else:return render_template('index.html', page="login")
index.html的代码
{% if page=="login" %}{% include 'login.html' %}{% elif page==1 %}{% include '1.html' %}{% elif page==2 %}{% include '2.html' %}{% elif page==3 %}{% include '3.html' %}{% endif %}
tkinter实现页面跳转 主函数main.py from tkinter import * from LoginPage import * root = Tk() root.title('小程序') LoginPage(root) root.mainloop() 登陆界面函数LoginPage.py from tkinter import * ...
tkinter实现页面跳转
from tkinter import * from LoginPage import * root = Tk() root.title('小程序') LoginPage(root) root.mainloop()from tkinter import * from tkinter.messagebox import * from MainPage import * class LoginPage(object): def __init__(self, master=None): self.root = master #定义内部变量root self.root.geometry('%dx%d' % (300, 180)) #设置窗口大小 self.username = StringVar() self.password = StringVar() self.createPage() def createPage(self): self.page = Frame(self.root) #创建Frame self.page.pack() Label(self.page).grid(row=0, stick=W) Label(self.page, text = '账户: ').grid(row=1, stick=W, pady=10) Entry(self.page, textvariable=self.username).grid(row=1, column=1, stick=E) Label(self.page, text = '密码: ').grid(row=2, stick=W, pady=10) Entry(self.page, textvariable=self.password, show='*').grid(row=2, column=1, stick=E) Button(self.page, text='登陆', command=self.loginCheck).grid(row=3, stick=W, pady=10) Button(self.page, text='退出', command=self.page.quit).grid(row=3, column=1, stick=E) def loginCheck(self): name = self.username.get() secret = self.password.get() if name=='wangliang' and secret=='123456': self.page.destroy() MainPage(self.root) else: showinfo(title='错误', message='账号或密码错误!')from tkinter import * from view import * #菜单栏对应的各个子页面 class MainPage(object): def __init__(self, master=None): self.root = master #定义内部变量root self.root.geometry('%dx%d' % (600, 400)) #设置窗口大小 self.createPage() def createPage(self): self.inputPage = InputFrame(self.root) # 创建不同Frame self.queryPage = QueryFrame(self.root) self.countPage = CountFrame(self.root) self.aboutPage = AboutFrame(self.root) self.inputPage.pack() #默认显示数据录入界面 menubar = Menu(self.root) menubar.add_command(label='数据录入', command = self.inputData) menubar.add_command(label='查询', command = self.queryData) menubar.add_command(label='统计', command = self.countData) menubar.add_command(label='关于', command = self.aboutDisp) self.root['menu'] = menubar # 设置菜单栏 def inputData(self): self.inputPage.pack() self.queryPage.pack_forget() self.countPage.pack_forget() self.aboutPage.pack_forget() def queryData(self): self.inputPage.pack_forget() self.queryPage.pack() self.countPage.pack_forget() self.aboutPage.pack_forget() def countData(self): self.inputPage.pack_forget() self.queryPage.pack_forget() self.countPage.pack() self.aboutPage.pack_forget() def aboutDisp(self): self.inputPage.pack_forget() self.queryPage.pack_forget() self.countPage.pack_forget() self.aboutPage.pack()
子界面函数view,py
from tkinter import * from tkinter.messagebox import * class InputFrame(Frame): # 继承Frame类def __init__(self, master=None): Frame.__init__(self, master) self.root = master #定义内部变量root self.itemName = StringVar() self.importPrice = StringVar() self.sellPrice = StringVar() self.deductPrice = StringVar() self.createPage() def createPage(self): Label(self).grid(row=0, stick=W, pady=10) Label(self, text = '药品名称: ').grid(row=1, stick=W, pady=10) Entry(self, textvariable=self.itemName).grid(row=1, column=1, stick=E) Label(self, text = '进价 /元: ').grid(row=2, stick=W, pady=10) Entry(self, textvariable=self.importPrice).grid(row=2, column=1, stick=E) Label(self, text = '售价 /元: ').grid(row=3, stick=W, pady=10) Entry(self, textvariable=self.sellPrice).grid(row=3, column=1, stick=E) Label(self, text = '优惠 /元: ').grid(row=4, stick=W, pady=10) Entry(self, textvariable=self.deductPrice).grid(row=4, column=1, stick=E) Button(self, text='录入').grid(row=6, column=1, stick=E, pady=10) class QueryFrame(Frame): # 继承Frame类def __init__(self, master=None): Frame.__init__(self, master) self.root = master #定义内部变量root self.itemName = StringVar() self.createPage() def createPage(self): Label(self, text='查询界面').pack() class CountFrame(Frame): # 继承Frame类def __init__(self, master=None): Frame.__init__(self, master) self.root = master #定义内部变量root self.createPage() def createPage(self): Label(self, text='统计界面').pack() class AboutFrame(Frame): # 继承Frame类def __init__(self, master=None): Frame.__init__(self, master) self.root = master #定义内部变量root self.createPage() def createPage(self): Label(self, text='关于界面').pack()
效果图:
用wxpython设计界面时可能会出现界面嵌套的情况 这样就需要进行界面的跳转 但是貌似wxpython没提供界面跳转的方式(也可能是我菜。。。) 所以就需要借助threading模块 主要思想: 注:该代码为源码的一部分,经过...
用wxpython设计界面时可能会出现界面嵌套的情况 这样就需要进行界面的跳转
但是貌似wxpython没提供界面跳转的方式(也可能是我菜。。。)
所以就需要借助threading模块
主要思想:
注:该代码为源码的一部分,经过删减可能会导致程序错误,但 主要是通过一个按钮进行跳转,在点击该按钮时关闭当前界面,打开新界面。。
主要函数doClose 按钮触发的函数QU
import wx import pymysql,time,threading from MySQL import Make_bill,function class Withdrawal1(wx.App): def doClose(self,j): time.sleep(j) self.frame.Close() def __init__(self,YuanZhangH): self.YuanZhangH=YuanZhangH wx.App.__init__(self) self.frame = wx.Frame(parent=None,title='取款',size=(535,450),style=wx.DEFAULT_FRAME_STYLE ^ wx.RESIZE_BORDER ^ wx.MAXIMIZE_BOX ) panel=wx.Panel(self.frame,-1) label_pass = wx.StaticText(panel,-1,"取款金额:", pos=(80,200)) #style 为设置输入 self.JinE = wx.TextCtrl(panel,-1, size=(250,35), pos=(140,190)) self.QueDing_button = wx.Button(panel, -1, "确认", size=(80,60), pos=(120,280)) self.QuXiao_button = wx.Button(panel, -1, "反回", size=(80, 60), pos=(340,280)) self.QueDing_button.SetBackgroundColour('#0a74f7') self.QuXiao_button.SetBackgroundColour('#0a74f7') self.Bind(wx.EVT_BUTTON, self.QuK, self.QueDing_button) self.Bind(wx.EVT_BUTTON, self.QU, self.QuXiao_button) #通过一个按钮触发界面跳转 self.frame.Center() self.frame.Show(True) def QuK(self, event): pass def QU(self, event): t = threading.Thread(target=self.doClose, args=(0.05,)) t.start() #通过threading和doClose函数关闭界面 jie = function.Jiemian(self.YuanZhangH) #打开新界面 jie.MainLoop()
点击取款按钮跳转到取款界面原界面关闭:
index.html下面写了一个跳转: ```Switch to baidu ``` 如果单独运行这个index.html的话可以跳转到test.html, 但是如果通过后端的index.py运行的话 ``` index.py: @app....
页面跳转基于HTML实现 基于HTML实现