wxPython是一个流行的跨平台GUI工具包。用这个就可以给程序做窗口界面了。官方网站:www.wxpython.org我这也没好好学,就整了个小项目的例子。把代码完整贴下面了,下次做界面的时候可以参考这改改。
文档结构
主要就是几个py文件。resources文件夹里是放资源原件的,也就两张图片
Cart
│ app_main.py
│
├─conf
│ settings.py
│ __init__.py
│
├─resources
│ bats.ico
│ dragon.jpg
│
└─ui
list_frame.py
list_grid_table.py
login_frame.py
my_frame.py
__init__.py
settings 文件
这里也没设置,不过把数据放这里了,主要是搞定做界面,就不连数据库了:
# 登录的用户名和密码
ACCOUNTS = {
'admin': {'pwd': 'admin'},
'root': {'pwd': '123456'},
'user': {'pwd': 'user123'},
}
# 商品列名
COLUMN_NAMES = ["商品编号", "商品类别", "商品中文名", "商品英文名"]
# 商品类别
CATEGORY = ["食品", "酒类", "男装", "女装", "童装"]
# 商品信息,商品信息有点少,最好多搞几十条
PRODUCTS = [
{'id': "001", 'category': "食品", 'name_cn': "薯片", 'name_en': "ShuPian"},
{'id': "002", 'category': "酒类", 'name_cn': "葡萄酒", 'name_en': "PuTaoJiu"},
{'id': "003", 'category': "男装", 'name_cn': "西装", 'name_en': "XiZhuang"},
{'id': "004", 'category': "女装", 'name_cn': "短裙", 'name_en': "DuanQun"},
{'id': "005", 'category': "童装", 'name_cn': "连衣裙", 'name_en': "LianYiQun"},
]
启动文件
通过启动文件,启动我们的项目,这里主要是调用创建一个登录窗口,然后进入主事件循环
import wx
from ui.login_frame import LoginFrame
from ui.list_frame import ListFrame
class App(wx.App):
"""启动模块"""
def OnInit(self):
"""创建窗口对象"""
frame = LoginFrame()
# frame = ListFrame() # 单独调试商品界面的时候,省的每次都要登录一下
frame.Show()
return True
if __name__ == '__main__':
app = App() # 实例化
app.MainLoop() # 进入主事件循环
窗口基类
先给所有的窗口定义个基类,把所有窗口共有的属性定义在这个基类里。之后各个窗口都基础这个类:
"""定义Frame窗口基类"""
import sys
import wx
class MyFrame(wx.Frame):
session = {} # 模拟Web的session,保留会话的数据
def __init__(self, title, size):
super().__init__(parent=None, title=title, size=size,
style=wx.DEFAULT_FRAME_STYLE ^ wx.MAXIMIZE_BOX)
# style是定义窗口风格,具体看官网。https://docs.wxpython.org/wx.Frame.html#wx-frame
# 上面的DEFAULT就是包含了下面所有的风格的:
# wx.MINIMIZE_BOX | wx.MAXIMIZE_BOX | wx.RESIZE_BORDER |
# wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX | wx.CLIP_CHILDREN
# 上面的例子是去掉了其中的一个。官网的例子是这样的:
# style = wx.DEFAULT_FRAME_STYLE & ~(wx.RESIZE_BORDER | wx.MAXIMIZE_BOX) 去掉了2个来固定窗口大小
# 设置窗口居中
self.Center()
# 设置Frame窗口内容面板
self.contentpanel = wx.Panel(parent=self)
# 图标文件
ico = wx.Icon("resources/bats.ico", wx.BITMAP_TYPE_ICO)
# 设置图标