写好服务器接收发送,连接已近测试
This commit is contained in:
parent
534e2b2892
commit
d48d38851b
@ -1,10 +1,12 @@
|
|||||||
import wx
|
import wx
|
||||||
import threading
|
import threading
|
||||||
|
import time
|
||||||
|
from tkinter import messagebox
|
||||||
|
|
||||||
|
|
||||||
class LoginFrame(wx.Frame):
|
class LoginFrame(wx.Frame):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
wx.Frame.__init__(self, None, id=1001, title='登录', pos=wx.DefaultPosition, size=(400, 300))
|
wx.Frame.__init__(self, None, id=1001, title='登录', pos=wx.DefaultPosition, size=(380, 300))
|
||||||
|
|
||||||
# 创建菜单栏
|
# 创建菜单栏
|
||||||
menu_bar = wx.MenuBar()
|
menu_bar = wx.MenuBar()
|
||||||
@ -16,30 +18,42 @@ class LoginFrame(wx.Frame):
|
|||||||
# 更多菜单
|
# 更多菜单
|
||||||
more_menu = wx.Menu()
|
more_menu = wx.Menu()
|
||||||
self.register_id = wx.NewId()
|
self.register_id = wx.NewId()
|
||||||
self.retrieve_id = wx.NewId()
|
|
||||||
self.set_server_id = wx.NewId()
|
self.set_server_id = wx.NewId()
|
||||||
more_menu.Append(self.register_id, "注册账号")
|
more_menu.Append(self.register_id, "注册账号")
|
||||||
more_menu.Append(self.retrieve_id, "找回密码")
|
|
||||||
more_menu.Append(self.set_server_id, "服务器设置")
|
more_menu.Append(self.set_server_id, "服务器设置")
|
||||||
menu_bar.Append(more_menu, "更多")
|
menu_bar.Append(more_menu, "更多")
|
||||||
|
|
||||||
self.SetMenuBar(menu_bar)
|
self.SetMenuBar(menu_bar)
|
||||||
|
|
||||||
# 创建状态栏
|
# 创建状态栏
|
||||||
self.status_bar = self.CreateStatusBar(4)
|
self.status_bar = self.CreateStatusBar(2)
|
||||||
self.status_bar.SetStatusText("服务器连接:", 0)
|
self.server_status = False # 服务器状态
|
||||||
self.status_bar.SetStatusText("状态:", 2)
|
status_thread = threading.Thread(target=self.update_status_bar(None))
|
||||||
|
status_thread.daemon = True
|
||||||
|
status_thread.start()
|
||||||
|
|
||||||
|
# 启动定时器,每秒钟触发一次
|
||||||
|
self.timer = wx.Timer(self)
|
||||||
|
self.Bind(wx.EVT_TIMER, self.update_status_bar, self.timer)
|
||||||
|
self.timer.Start(1000) # 设置定时器间隔为1000毫秒(1秒
|
||||||
|
|
||||||
# 获取菜单点击事件
|
# 获取菜单点击事件
|
||||||
self.Bind(wx.EVT_MENU, self.click_menu, id=self.register_id)
|
self.Bind(wx.EVT_MENU, self.click_menu, id=self.register_id)
|
||||||
self.Bind(wx.EVT_MENU, self.click_menu, id=self.retrieve_id)
|
|
||||||
self.Bind(wx.EVT_MENU, self.click_menu, id=self.set_server_id)
|
self.Bind(wx.EVT_MENU, self.click_menu, id=self.set_server_id)
|
||||||
self.Bind(wx.EVT_MENU_OPEN, self.click_menu_title)
|
self.Bind(wx.EVT_MENU_OPEN, self.click_menu_title)
|
||||||
|
|
||||||
# 创建注册面板
|
# 创建注册面板
|
||||||
self.panel = RegisterPanel(self)
|
self.panel = LoginPanel(self)
|
||||||
self.panel.Show()
|
self.panel.Show()
|
||||||
|
|
||||||
|
def update_status_bar(self, event):
|
||||||
|
if self.server_status:
|
||||||
|
self.status_bar.SetStatusText("服务器\t已连接", 0)
|
||||||
|
else:
|
||||||
|
self.status_bar.SetStatusText("服务器\t未连接", 0)
|
||||||
|
|
||||||
|
self.status_bar.SetStatusText("时间\t" + time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()), 1)
|
||||||
|
|
||||||
def click_menu_title(self, event):
|
def click_menu_title(self, event):
|
||||||
menu = event.GetMenu()
|
menu = event.GetMenu()
|
||||||
menu_title = menu.GetTitle()
|
menu_title = menu.GetTitle()
|
||||||
@ -49,8 +63,6 @@ class LoginFrame(wx.Frame):
|
|||||||
self.panel.Show()
|
self.panel.Show()
|
||||||
self.Layout()
|
self.Layout()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# 点击菜单检测
|
# 点击菜单检测
|
||||||
def click_menu(self, event):
|
def click_menu(self, event):
|
||||||
menu_id = event.GetId()
|
menu_id = event.GetId()
|
||||||
@ -59,11 +71,6 @@ class LoginFrame(wx.Frame):
|
|||||||
self.panel = RegisterPanel(self)
|
self.panel = RegisterPanel(self)
|
||||||
self.panel.Show()
|
self.panel.Show()
|
||||||
self.Layout()
|
self.Layout()
|
||||||
elif menu_id == self.retrieve_id:
|
|
||||||
self.panel.Destroy()
|
|
||||||
self.panel = LoginPanel(self)
|
|
||||||
self.panel.Show()
|
|
||||||
self.Layout()
|
|
||||||
elif menu_id == self.set_server_id:
|
elif menu_id == self.set_server_id:
|
||||||
self.panel.Destroy()
|
self.panel.Destroy()
|
||||||
self.panel = LoginPanel(self)
|
self.panel = LoginPanel(self)
|
||||||
@ -79,7 +86,7 @@ class LoginPanel(wx.Panel):
|
|||||||
|
|
||||||
# 顶部盒子,目前只放了软件名
|
# 顶部盒子,目前只放了软件名
|
||||||
top_box = wx.BoxSizer(wx.VERTICAL) # 使用垂直盒子
|
top_box = wx.BoxSizer(wx.VERTICAL) # 使用垂直盒子
|
||||||
show_title = wx.StaticText(self, label='Lsy chat')
|
show_title = wx.StaticText(self, label='登录')
|
||||||
show_title.SetFont(wx.Font(30, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL))
|
show_title.SetFont(wx.Font(30, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL))
|
||||||
top_box.Add(show_title, 1, wx.ALIGN_CENTER_HORIZONTAL | wx.ALL, 10)
|
top_box.Add(show_title, 1, wx.ALIGN_CENTER_HORIZONTAL | wx.ALL, 10)
|
||||||
main_box.Add(top_box, 0, wx.EXPAND)
|
main_box.Add(top_box, 0, wx.EXPAND)
|
||||||
@ -91,9 +98,9 @@ class LoginPanel(wx.Panel):
|
|||||||
account_label = wx.StaticText(self, label=' 账号:')
|
account_label = wx.StaticText(self, label=' 账号:')
|
||||||
account_label.SetFont(wx.Font(15, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL))
|
account_label.SetFont(wx.Font(15, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL))
|
||||||
account_box.Add(account_label, 0, wx.ALIGN_CENTER_VERTICAL)
|
account_box.Add(account_label, 0, wx.ALIGN_CENTER_VERTICAL)
|
||||||
account_text = wx.TextCtrl(self, size=(300, 30))
|
self.account_text = wx.TextCtrl(self, size=(300, 30))
|
||||||
account_text.SetHint('请输入账号')
|
self.account_text.SetHint('请输入账号')
|
||||||
account_box.Add(account_text, 1, wx.ALIGN_CENTER_VERTICAL)
|
account_box.Add(self.account_text, 1, wx.ALIGN_CENTER_VERTICAL)
|
||||||
content_box.Add(account_box)
|
content_box.Add(account_box)
|
||||||
# 添加空白控件来增加间距
|
# 添加空白控件来增加间距
|
||||||
content_box.Add(wx.StaticText(self, label=''), 0, wx.ALL, 5)
|
content_box.Add(wx.StaticText(self, label=''), 0, wx.ALL, 5)
|
||||||
@ -102,9 +109,9 @@ class LoginPanel(wx.Panel):
|
|||||||
password_label = wx.StaticText(self, label=' 密码:')
|
password_label = wx.StaticText(self, label=' 密码:')
|
||||||
password_label.SetFont(wx.Font(15, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL))
|
password_label.SetFont(wx.Font(15, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL))
|
||||||
password_box.Add(password_label, 0, wx.ALIGN_CENTER_VERTICAL)
|
password_box.Add(password_label, 0, wx.ALIGN_CENTER_VERTICAL)
|
||||||
password_text = wx.TextCtrl(self, size=(300, 30))
|
self.password_text = wx.TextCtrl(self, size=(300, 30))
|
||||||
password_text.SetHint('请输入密码')
|
self.password_text.SetHint('请输入密码')
|
||||||
password_box.Add(password_text, 1, wx.ALIGN_CENTER_VERTICAL)
|
password_box.Add(self.password_text, 1, wx.ALIGN_CENTER_VERTICAL)
|
||||||
content_box.Add(password_box)
|
content_box.Add(password_box)
|
||||||
main_box.Add(content_box, 0, wx.EXPAND)
|
main_box.Add(content_box, 0, wx.EXPAND)
|
||||||
|
|
||||||
@ -122,33 +129,56 @@ class LoginPanel(wx.Panel):
|
|||||||
self.SetSizer(main_box)
|
self.SetSizer(main_box)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class RegisterPanel(wx.Panel):
|
class RegisterPanel(wx.Panel):
|
||||||
def __init__(self, parent):
|
def __init__(self, parent):
|
||||||
super().__init__(parent)
|
super().__init__(parent)
|
||||||
|
|
||||||
|
# 主盒子
|
||||||
main_box = wx.BoxSizer(wx.VERTICAL)
|
main_box = wx.BoxSizer(wx.VERTICAL)
|
||||||
# 内容盒子,放账号和密码
|
|
||||||
|
# 顶部盒子,目前只放了软件名
|
||||||
|
top_box = wx.BoxSizer(wx.VERTICAL) # 使用垂直盒子
|
||||||
|
show_title = wx.StaticText(self, label='注册')
|
||||||
|
show_title.SetFont(wx.Font(30, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL))
|
||||||
|
top_box.Add(show_title, 1, wx.ALIGN_CENTER_HORIZONTAL | wx.ALL, 10)
|
||||||
|
main_box.Add(top_box, 0, wx.EXPAND)
|
||||||
|
|
||||||
|
# 中部盒子,放账号和密码
|
||||||
content_box = wx.BoxSizer(wx.VERTICAL)
|
content_box = wx.BoxSizer(wx.VERTICAL)
|
||||||
# 账号
|
# 账号
|
||||||
account_box = wx.BoxSizer(wx.HORIZONTAL)
|
account_box = wx.BoxSizer(wx.HORIZONTAL)
|
||||||
account_label = wx.StaticText(self, label=' 账号:')
|
account_label = wx.StaticText(self, label=' 用户名:')
|
||||||
account_label.SetFont(wx.Font(15, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL))
|
account_label.SetFont(wx.Font(15, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL))
|
||||||
account_box.Add(account_label, 0, wx.ALIGN_CENTER_VERTICAL)
|
account_box.Add(account_label, 0, wx.ALIGN_CENTER_VERTICAL)
|
||||||
account_text = wx.TextCtrl(self, size=(300, 30))
|
self.account_text = wx.TextCtrl(self, size=(300, 30))
|
||||||
account_text.SetHint('请输入账号')
|
self.account_text.SetHint('请输入用户名')
|
||||||
account_box.Add(account_text, 1, wx.ALIGN_CENTER_VERTICAL)
|
account_box.Add(self.account_text, 1, wx.ALIGN_CENTER_VERTICAL)
|
||||||
content_box.Add(account_box)
|
content_box.Add(account_box)
|
||||||
# 添加空白控件来增加间距
|
# 添加空白控件来增加间距
|
||||||
content_box.Add(wx.StaticText(self, label=''), 0, wx.ALL, 5)
|
content_box.Add(wx.StaticText(self, label=''), 0, wx.ALL, 5)
|
||||||
# 密码
|
# 密码
|
||||||
password_box = wx.BoxSizer(wx.HORIZONTAL)
|
password_box = wx.BoxSizer(wx.HORIZONTAL)
|
||||||
password_label = wx.StaticText(self, label=' 密码:')
|
password_label = wx.StaticText(self, label=' 密码: ')
|
||||||
password_label.SetFont(wx.Font(15, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL))
|
password_label.SetFont(wx.Font(15, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL))
|
||||||
password_box.Add(password_label, 0, wx.ALIGN_CENTER_VERTICAL)
|
password_box.Add(password_label, 0, wx.ALIGN_CENTER_VERTICAL)
|
||||||
password_text = wx.TextCtrl(self, size=(300, 30))
|
self.password_text = wx.TextCtrl(self, size=(300, 30))
|
||||||
password_text.SetHint('请输入密码')
|
self.password_text.SetHint('请输入密码')
|
||||||
password_box.Add(password_text, 1, wx.ALIGN_CENTER_VERTICAL)
|
password_box.Add(self.password_text, 1, wx.ALIGN_CENTER_VERTICAL)
|
||||||
content_box.Add(password_box)
|
content_box.Add(password_box)
|
||||||
main_box.Add(content_box, 0, wx.EXPAND)
|
main_box.Add(content_box, 0, wx.EXPAND)
|
||||||
|
|
||||||
|
# 底部盒子
|
||||||
|
bottom_box = wx.BoxSizer(wx.VERTICAL)
|
||||||
|
# 登录按钮
|
||||||
|
register_box = wx.BoxSizer(wx.VERTICAL) # 使用垂直盒子布局
|
||||||
|
login_label = wx.Button(self, size=(200, 50), label='确认')
|
||||||
|
register_box.AddStretchSpacer() # 添加一个可伸缩的空间,将登录按钮推到垂直中间
|
||||||
|
register_box.Add(login_label, 0, wx.ALIGN_CENTER_HORIZONTAL) # 将登录按钮添加到垂直盒子中
|
||||||
|
register_box.AddStretchSpacer() # 再次添加一个可伸缩的空间,将登录按钮推到垂直中间
|
||||||
|
bottom_box.Add(register_box, 1,
|
||||||
|
wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_CENTER_HORIZONTAL) # 将垂直盒子添加到底部盒子中,设置垂直和水平居中对齐
|
||||||
|
main_box.Add(bottom_box, 1, wx.EXPAND) # 将底部盒子添加到主盒子中,使其填满剩余空间
|
||||||
|
|
||||||
self.SetSizer(main_box)
|
self.SetSizer(main_box)
|
||||||
|
47
python/test/Cilent/Session_server.py
Normal file
47
python/test/Cilent/Session_server.py
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
import string
|
||||||
|
import time
|
||||||
|
import socket
|
||||||
|
from threading import Thread
|
||||||
|
import random
|
||||||
|
import json
|
||||||
|
|
||||||
|
|
||||||
|
class Session_server:
|
||||||
|
def __init__(self, ip_socker, port_socker):
|
||||||
|
self.ip_socker = ip_socker
|
||||||
|
self.port_socker = port_socker
|
||||||
|
self.server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||||
|
self.server_status = False # 服务器状态
|
||||||
|
|
||||||
|
def Link_server(self):
|
||||||
|
Verification_code = ""
|
||||||
|
for _ in range(20):
|
||||||
|
if random.choice([True, False]):
|
||||||
|
Verification_code += str(random.randint(0, 9))
|
||||||
|
else:
|
||||||
|
Verification_code += random.choice(string.ascii_letters)
|
||||||
|
data = {"genre": "test", "source": "Link_server", "data": Verification_code,
|
||||||
|
"datetime": time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())}
|
||||||
|
data_json = json.dumps(data)
|
||||||
|
self.server_socket.sendto(data_json.encode("utf-8"), (self.ip_socker, self.port_socker))
|
||||||
|
receive_content_json = self.server_socket.recv(1024).decode('utf-8')
|
||||||
|
receive_content = json.loads(receive_content_json)
|
||||||
|
if receive_content["data"] == Verification_code:
|
||||||
|
self.server_status = True # 服务器状态
|
||||||
|
Receive_server_Thread = Thread(target=self.Receive_server)
|
||||||
|
Receive_server_Thread.daemon = True
|
||||||
|
Receive_server_Thread.start()
|
||||||
|
|
||||||
|
|
||||||
|
def Receive_server(self):
|
||||||
|
while self.server_status:
|
||||||
|
receive_content_json = self.server_socket.recv(1024).decode('utf-8') # 追加接收到的数据
|
||||||
|
receive_content = json.loads(receive_content_json)
|
||||||
|
print(receive_content)
|
||||||
|
|
||||||
|
def Send_server(self, genre, source, content):
|
||||||
|
if self.server_status:
|
||||||
|
data = {"genre": genre, "source": source, "data": content,
|
||||||
|
"datetime": time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())}
|
||||||
|
data_json = json.dumps(data)
|
||||||
|
self.server_socket.sendto(data_json.encode("utf-8"), (self.ip_socker, self.port_socker))
|
@ -1 +1,15 @@
|
|||||||
from .Login import *
|
from .Login import *
|
||||||
|
from .Session_server import *
|
||||||
|
|
||||||
|
|
||||||
|
class Client_main(LoginFrame, Session_server):
|
||||||
|
def __init__(self, ip_socker, port_socker):
|
||||||
|
Session_server.__init__(self, ip_socker, port_socker)
|
||||||
|
LoginFrame.__init__(self)
|
||||||
|
Session_server.Link_server(self)
|
||||||
|
|
||||||
|
# 主页按键绑定
|
||||||
|
|
||||||
|
def Sign_Account(self, event):
|
||||||
|
if self.GetParent().server_status:
|
||||||
|
pass
|
||||||
|
Binary file not shown.
BIN
python/test/Cilent/__pycache__/Session_server.cpython-312.pyc
Normal file
BIN
python/test/Cilent/__pycache__/Session_server.cpython-312.pyc
Normal file
Binary file not shown.
Binary file not shown.
8
python/test/StartClient.py
Normal file
8
python/test/StartClient.py
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
import wx
|
||||||
|
from Cilent import Client_main
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
app = wx.App()
|
||||||
|
frame = Client_main("127.0.0.1", 8000) # 这里填写你的 ip_socker 和 port_socker
|
||||||
|
frame.Show()
|
||||||
|
app.MainLoop()
|
@ -1,7 +0,0 @@
|
|||||||
import wx
|
|
||||||
from Cilent import LoginFrame
|
|
||||||
if __name__ == '__main__':
|
|
||||||
app = wx.App()
|
|
||||||
frame = LoginFrame()
|
|
||||||
frame.Show()
|
|
||||||
app.MainLoop()
|
|
@ -1,121 +1,46 @@
|
|||||||
import wx,time
|
import tkinter as tk
|
||||||
ID_EXIT=200
|
from tkinter import messagebox
|
||||||
ID_ABOUT=201
|
|
||||||
|
|
||||||
class Frame(wx.Frame): #2 wx.Frame子类
|
# 创建主窗口
|
||||||
def __init__(self,parent = None,id = -1,title ='系统管理界面'):
|
root = tk.Tk()
|
||||||
wx.Frame.__init__(self,parent,id,title,size=(900,600))
|
root.withdraw() # 隐藏主窗口
|
||||||
self.panel_Celan1 = None
|
|
||||||
self.panel_Celan2 = None
|
|
||||||
self.panel_Celan3 = None
|
|
||||||
self.panel_Celan1_1 =None
|
|
||||||
self.setupStatusBar()
|
|
||||||
self.InitCelan()
|
|
||||||
self.InitButton()
|
|
||||||
|
|
||||||
|
# 弹出消息框
|
||||||
|
messagebox.showinfo("标题", "消息内容")
|
||||||
|
|
||||||
#初始化状态栏
|
# 弹出警告框
|
||||||
def setupStatusBar(self):
|
messagebox.showwarning("警告", "警告内容")
|
||||||
# 状态栏
|
|
||||||
sb = self.CreateStatusBar(2) # 2代表将状态栏分为两个
|
|
||||||
self.SetStatusWidths([-1, -2]) # 比例为1:2
|
|
||||||
self.SetStatusText("Ready", 0) # 0代表第一个栏,Ready为内容
|
|
||||||
# timmer
|
|
||||||
self.timer = wx.PyTimer(self.Notify)
|
|
||||||
self.timer.Start(1000, wx.TIMER_CONTINUOUS)
|
|
||||||
self.Notify()
|
|
||||||
|
|
||||||
# 实时显示时间
|
# 弹出错误框
|
||||||
def Notify(self):
|
messagebox.showerror("错误", "错误内容")
|
||||||
t = time.localtime(time.time())
|
|
||||||
st = time.strftime('%Y-%m-%d %H:%M:%S', t)
|
|
||||||
self.SetStatusText(st, 1) # 这里的1代表将时间放入状态栏的第二部分上
|
|
||||||
|
|
||||||
|
# 弹出询问框
|
||||||
|
result = messagebox.askquestion("询问", "是否继续?")
|
||||||
|
if result == 'yes':
|
||||||
|
print("用户选择了继续")
|
||||||
|
else:
|
||||||
|
print("用户选择了取消")
|
||||||
|
|
||||||
# 初始化登陆
|
# 弹出确认框
|
||||||
def InitButton(self):
|
result = messagebox.askokcancel("确认", "是否继续?")
|
||||||
self.panel_Celan1 = wx.Panel(self, pos=(400, 150), size=(300, 300))
|
if result:
|
||||||
wx.StaticText(self.panel_Celan1,label="Username",pos=(20,20))
|
print("用户选择了继续")
|
||||||
wx.StaticText(self.panel_Celan1, label="Password", pos=(20, 50))
|
else:
|
||||||
self._username=wx.TextCtrl(self.panel_Celan1,pos=(110,15))
|
print("用户选择了取消")
|
||||||
self._passwd = wx.TextCtrl(self.panel_Celan1, pos=(110, 45),style=wx.TE_PASSWORD)
|
|
||||||
|
|
||||||
self._submit_btn=wx.Button(self.panel_Celan1,label=u'提交',pos=(100,100),size=(50,30))
|
# 弹出是/否框
|
||||||
self.panel_Celan1.Bind(wx.EVT_BUTTON,self.Onclick,self._submit_btn)
|
result = messagebox.askyesno("是/否", "是否继续?")
|
||||||
|
if result:
|
||||||
|
print("用户选择了是")
|
||||||
|
else:
|
||||||
|
print("用户选择了否")
|
||||||
|
|
||||||
|
# 弹出重试/取消框
|
||||||
|
result = messagebox.askretrycancel("重试/取消", "是否继续?")
|
||||||
|
if result:
|
||||||
|
print("用户选择了重试")
|
||||||
|
else:
|
||||||
|
print("用户选择了取消")
|
||||||
|
|
||||||
#处理登陆事件
|
# 显示主窗口
|
||||||
def Onclick(self,event):
|
root.mainloop()
|
||||||
global denglu_flag
|
|
||||||
if event.GetEventObject()==self._submit_btn:
|
|
||||||
user = self.GetUsername()
|
|
||||||
passwd = self.GetPasswd()
|
|
||||||
print(user+":"+passwd)
|
|
||||||
if(user == "wenli"and passwd == "123456"):
|
|
||||||
denglu_flag=True
|
|
||||||
self.panel_Celan1.Destroy()
|
|
||||||
self.panel_Celan1_1 =wx.Panel(self, pos=(400, 150), size=(300, 300))
|
|
||||||
wx.StaticText(self.panel_Celan1_1, label="欢迎登陆", pos=(130, 150))
|
|
||||||
def GetUsername(self):
|
|
||||||
return self._username.GetValue()
|
|
||||||
|
|
||||||
def GetPasswd(self):
|
|
||||||
return self._passwd.GetValue()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#处理侧栏的点击事件
|
|
||||||
def Onclick_Ce(self,event):
|
|
||||||
global denglu_flag
|
|
||||||
if event.GetEventObject() == self._caidan1:
|
|
||||||
# 如果需要显示的地方存在其他面板,删除
|
|
||||||
if self.panel_Celan2:
|
|
||||||
self.panel_Celan2.Destroy()
|
|
||||||
if self.panel_Celan3:
|
|
||||||
self.panel_Celan3.Destroy()
|
|
||||||
if not self.panel_Celan1 :
|
|
||||||
if(denglu_flag == False):
|
|
||||||
self.InitButton()
|
|
||||||
else:
|
|
||||||
if not self.panel_Celan1_1:
|
|
||||||
self.panel_Celan1_1 = wx.Panel(self, pos=(400, 150), size=(300, 300))
|
|
||||||
wx.StaticText(self.panel_Celan1_1, label="欢迎登陆", pos=(130, 150))
|
|
||||||
|
|
||||||
|
|
||||||
if event.GetEventObject()==self._caidan2:
|
|
||||||
# 如果需要显示的地方存在其他面板,删除
|
|
||||||
if self.panel_Celan1:
|
|
||||||
self.panel_Celan1.Destroy()
|
|
||||||
if self.panel_Celan1_1:
|
|
||||||
self.panel_Celan1_1.Destroy()
|
|
||||||
if self.panel_Celan3:
|
|
||||||
self.panel_Celan3.Destroy()
|
|
||||||
if not self.panel_Celan2 :
|
|
||||||
self.panel_Celan2 = wx.Panel(self, pos=(200, 0), size=(700, 700))
|
|
||||||
|
|
||||||
if event.GetEventObject() == self._caidan3:
|
|
||||||
if self.panel_Celan1:
|
|
||||||
self.panel_Celan1.Destroy()
|
|
||||||
if self.panel_Celan1_1:
|
|
||||||
self.panel_Celan1_1.Destroy()
|
|
||||||
if self.panel_Celan2 :
|
|
||||||
self.panel_Celan2.Destroy()
|
|
||||||
if not self.panel_Celan3:
|
|
||||||
self.panel_Celan3 = wx.Panel(self, pos=(400, 150), size=(300, 300))
|
|
||||||
wx.StaticText(self.panel_Celan3, label="公告", pos=(130, 150))
|
|
||||||
|
|
||||||
|
|
||||||
class App(wx.App): #5 wx.App子类
|
|
||||||
def __init__(self):
|
|
||||||
#如果要重写__init__,必须调用wx.App的__init__,否则OnInit方法不会被调用
|
|
||||||
wx.App.__init__(self)
|
|
||||||
def OnInit(self):
|
|
||||||
self.frame=Frame()
|
|
||||||
self.SetTopWindow(self.frame)
|
|
||||||
self.frame.Show()
|
|
||||||
|
|
||||||
return True
|
|
||||||
if __name__=="__main__":
|
|
||||||
denglu_flag = False
|
|
||||||
app = App()
|
|
||||||
app.MainLoop()
|
|
||||||
|
Loading…
Reference in New Issue
Block a user