import wx
#参数配置界面
class ChangeDepthDialog(wx.Dialog):
def __init__(self, parent):
wx.Dialog.__init__(self, parent, id=wx.ID_ANY, title='参数配置', pos=wx.DefaultPosition,
size=wx.Size(600, 400), style=wx.DEFAULT_DIALOG_STYLE)
self.SetSizeHints(wx.DefaultSize, wx.DefaultSize)
# 最外层 sizer
box_sizer = wx.BoxSizer(wx.VERTICAL)
# 客户端及服务器配置 sizer
sb_sizer_1 = wx.StaticBoxSizer(wx.StaticBox(self, wx.ID_ANY, u"客户端及服务器配置"), wx.VERTICAL)
fg_sizer_1 = wx.FlexGridSizer(2, 2, 0, 0)
fg_sizer_1.SetFlexibleDirection(wx.BOTH)
fg_sizer_1.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED)
# 服务器 IP 地址
self.label_ip = wx.StaticText(sb_sizer_1.GetStaticBox(), wx.ID_ANY, u"服务器 IP 地址 :",
wx.DefaultPosition, wx.Size(100, -1), wx.ALIGN_RIGHT)
self.label_ip.Wrap(-1)
fg_sizer_1.Add(self.label_ip, 0, wx.ALIGN_CENTER | wx.ALL, 5)
self.text_ip = wx.TextCtrl(sb_sizer_1.GetStaticBox(), wx.ID_ANY, wx.EmptyString,
wx.DefaultPosition, wx.Size(300, -1), 0)
fg_sizer_1.Add(self.text_ip, 0, wx.ALL, 5)
# SAP 程序路径
self.label_exe_path = wx.StaticText(sb_sizer_1.GetStaticBox(), wx.ID_ANY, u"SAP 程序路径 :",
wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_RIGHT)
self.label_exe_path.Wrap(-1)
fg_sizer_1.Add(self.label_exe_path, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT, 5)
self.text_exe_path = wx.FilePickerCtrl(sb_sizer_1.GetStaticBox(), wx.ID_ANY, wx.EmptyString,
u"请选择 SAP 可执行文件", u"*.exe", wx.DefaultPosition,
wx.Size(394, -1), wx.FLP_DEFAULT_STYLE)
fg_sizer_1.Add(self.text_exe_path, 0, wx.ALL, 5)
sb_sizer_1.Add(fg_sizer_1, 1, wx.EXPAND, 5)
box_sizer.Add(sb_sizer_1, 2, wx.ALL | wx.EXPAND, 5)
# 公司及业务代码 sizer
sb_sizer_2 = wx.StaticBoxSizer(wx.StaticBox(self, wx.ID_ANY, u"公司及业务代码配置"), wx.VERTICAL)
fg_sizer_2 = wx.FlexGridSizer(1, 4, 0, 0)
fg_sizer_2.SetFlexibleDirection(wx.BOTH)
fg_sizer_2.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED)
# 公司代码
self.label_company_code = wx.StaticText(sb_sizer_2.GetStaticBox(), wx.ID_ANY, u"公司代码 :",
wx.DefaultPosition, wx.Size(100, -1), wx.ALIGN_RIGHT)
self.label_company_code.Wrap(-1)
fg_sizer_2.Add(self.label_company_code, 0, wx.ALIGN_CENTER | wx.ALL, 5)
self.text_company_code = wx.TextCtrl(sb_sizer_2.GetStaticBox(), wx.ID_ANY, wx.EmptyString,
wx.DefaultPosition, wx.Size(90, -1), 0)
fg_sizer_2.Add(self.text_company_code, 0, wx.ALL, 5)
# 业务代码
self.label_biz_code = wx.StaticText(sb_sizer_2.GetStaticBox(), wx.ID_ANY, u"业务代码 :",
wx.DefaultPosition, wx.Size(100, -1), wx.ALIGN_RIGHT)
self.label_biz_code.Wrap(-1)
fg_sizer_2.Add(self.label_biz_code, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT, 5)
self.text_biz_code = wx.TextCtrl(sb_sizer_2.GetStaticBox(), wx.ID_ANY, wx.EmptyString,
wx.DefaultPosition, wx.Size(90, -1), 0)
fg_sizer_2.Add(self.text_biz_code, 0, wx.ALL, 5)
sb_sizer_2.Add(fg_sizer_2, 1, wx.EXPAND, 5)
box_sizer.Add(sb_sizer_2, 1, wx.ALL | wx.EXPAND, 5)
# 用户账户及密码 sizer
sb_sizer_3 = wx.StaticBoxSizer(wx.StaticBox(self, wx.ID_ANY, u"用户账户及密码配置"), wx.VERTICAL)
fg_sizer_3 = wx.FlexGridSizer(2, 4, 0, 0)
fg_sizer_3.SetFlexibleDirection(wx.BOTH)
fg_sizer_3.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED)
# 登录环境
self.label_login_env = wx.StaticText(sb_sizer_3.GetStaticBox(), wx.ID_ANY, u"登录环境 :",
wx.DefaultPosition, wx.Size(100, -1), wx.ALIGN_RIGHT)
self.label_login_env.Wrap(-1)
fg_sizer_3.Add(self.label_login_env, 0, wx.ALIGN_CENTER | wx.ALL, 5)
self.text_login_env = wx.TextCtrl(sb_sizer_3.GetStaticBox(), wx.ID_ANY, wx.EmptyString,
wx.DefaultPosition, wx.Size(90, -1), 0)
fg_sizer_3.Add(self.text_login_env, 0, wx.ALL, 5)
# 登录端口
self.label_login_port = wx.StaticText(sb_sizer_3.GetStaticBox(), wx.ID_ANY, u"登录端口 :",
wx.DefaultPosition, wx.Size(100, -1), wx.ALIGN_RIGHT)
self.label_login_port.Wrap(-1)
fg_sizer_3.Add(self.label_login_port, 0, wx.ALL, 5)
self.text_login_port = wx.TextCtrl(sb_sizer_3.GetStaticBox(), wx.ID_ANY, wx.EmptyString,
wx.DefaultPosition, wx.Size(90, -1), 0)
fg_sizer_3.Add(self.text_login_port, 0, wx.ALL, 5)
# 用户账号
self.label_user_account = wx.StaticText(sb_sizer_3.GetStaticBox(), wx.ID_ANY, u"用户账号 :",
wx.DefaultPosition, wx.Size(100, -1), wx.ALIGN_RIGHT)
self.label_user_account.Wrap(-1)
fg_sizer_3.Add(self.label_user_account, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT, 5)
self.text_user_account = wx.TextCtrl(sb_sizer_3.GetStaticBox(), wx.ID_ANY, wx.EmptyString,
wx.DefaultPosition, wx.Size(90, -1), 0)
fg_sizer_3.Add(self.text_user_account, 0, wx.ALL, 5)
# 用户密码
self.label_user_pwd = wx.StaticText(sb_sizer_3.GetStaticBox(), wx.ID_ANY, u"用户密码 :",
wx.DefaultPosition, wx.Size(100, -1), wx.ALIGN_RIGHT)
self.label_user_pwd.Wrap(-1)
fg_sizer_3.Add(self.label_user_pwd, 0, wx.ALL, 5)
self.text_user_pwd = wx.TextCtrl(sb_sizer_3.GetStaticBox(), wx.ID_ANY, wx.EmptyString,
wx.DefaultPosition, wx.Size(90, -1), wx.TE_PASSWORD)
fg_sizer_3.Add(self.text_user_pwd, 0, wx.ALL, 5)
sb_sizer_3.Add(fg_sizer_3, 0, wx.EXPAND, 5)
box_sizer.Add(sb_sizer_3, 2, wx.ALL | wx.EXPAND, 5)
sdb_sizer = wx.StdDialogButtonSizer()
self.btn_ok = wx.Button(self, wx.ID_OK, label='确定')
sdb_sizer.AddButton(self.btn_ok)
self.btn_cancel = wx.Button(self, wx.ID_CANCEL, label='取消')
sdb_sizer.AddButton(self.btn_cancel)
sdb_sizer.Realize()
box_sizer.Add(sdb_sizer, 1, wx.ALIGN_BOTTOM | wx.ALIGN_RIGHT, 5)
self.SetSizer(box_sizer)
self.Layout()
self.Centre(wx.BOTH)
def __del__(self):
pass
def settings_cancel(self, event):
self.Destroy()
#主界面
class MainFrame(wx.Frame):
def __init__(self, *args, **kwargs):
super(MainFrame, self).__init__(*args, **kwargs)
self.init_ui()
def init_ui(self):
menu_bar = wx.MenuBar()
menu_file = wx.Menu()
menu_edit=wx.Menu()
####菜单栏
self.CJ1=menu_file.Append(1,'事件1')
self.CJ2=menu_file.Append(2,'事件2')
menu_bar.Append(menu_file,'&开始')
self.end=menu_edit.Append(3,'结束')
self.Bind(wx.EVT_MENU,self.on_end,self.end)
menu_bar.Append(menu_edit,'&Help')
self.SetMenuBar(menu_bar)
self.SetWindowStyle(style=wx.MINIMIZE_BOX | wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX)
self.SetSize((470, 720))
self.SetTitle('小小界面')
self.Centre()
# 背景图片
# panel=wx.Panel(self)
background_img = 'image.jpg'
to_bmp_image = wx.Image(background_img, wx.BITMAP_TYPE_ANY).ConvertToBitmap()
self.bitmap = wx.StaticBitmap(self, -1, to_bmp_image, (0, 0))
#布局处理
sizer = wx.GridBagSizer(4, 4)
#场景1
self.button1 = wx.Button(self.bitmap,-1, label="场景1",size=(240, 120))
sizer.Add(self.button1, pos=(0, 0),
flag=wx.ALL, border=20)
self.button2 = wx.Button(self.bitmap,-1, label="配置参数",size=(100, 50))
sizer.Add(self.button2, pos=(0, 3),span=(1,1),
flag=wx.ALL, border=20)
#对按钮2进行事件绑定
self.Bind(wx.EVT_BUTTON,self.OnChangeDepth,self.button2)
#场景2
self.button3 = wx.Button(self.bitmap,-1, label="场景2",size=(240, 120))
sizer.Add(self.button3, pos=(1, 0),
flag=wx.ALL, border=20)
self.button4 = wx.Button(self.bitmap,-1, label="配置参数",size=(100, 50))
sizer.Add(self.button4, pos=(1, 3),span=(1,1),
flag=wx.ALL, border=20)
#场景3
self.button5 = wx.Button(self.bitmap,-1, label="场景2",size=(240, 120))
sizer.Add(self.button5, pos=(2, 0),
flag=wx.ALL, border=20)
self.button6 = wx.Button(self.bitmap,-1, label="配置参数",size=(100, 50))
sizer.Add(self.button6, pos=(2, 3),span=(1,1),
flag=wx.ALL, border=20)
#场景4
self.button7 = wx.Button(self.bitmap,-1, label="场景2",size=(240, 120))
sizer.Add(self.button7, pos=(3, 0),
flag=wx.ALL, border=20)
self.button8 = wx.Button(self.bitmap,-1, label="配置参数",size=(100, 50))
sizer.Add(self.button8, pos=(3, 3),span=(1,1),
flag=wx.ALL, border=20)
self.bitmap.SetSizer(sizer)
def on_end(self, event):
self.Close()
# 参数配置
def OnChangeDepth(self, e):
chgdep = ChangeDepthDialog(None)
chgdep.ShowModal()
chgdep.Destroy()
def main():
app = wx.App()
main_frame=MainFrame(None)
main_frame.Show()
app.MainLoop()
if __name__ == '__main__':
main()
里面的image.jpg自己随便找张图然后改一下命名
在这里推荐几个wxpython的学习网址
http://thisis.yorven.site/blog/index.php/category/tutorial/wxpython-jiaocheng/
学习教程
https://wxpython.org/Phoenix/docs/html/index.html
https://www.yiibai.com/wxpython
可惜查询wxpython中的各个类