“ class MyDialog13(wx.Dialog): def __init__(self, parent): wx.Dialog.__init__(self, parent, id=wx.ID_ANY, title=u"菜品下架", pos=wx.DefaultPosition, size=wx.Size(200, 200), style=wx.DEFAULT_DIALOG_STYLE) self.Center() self.panel = wx.Panel(self) self.panel.SetBackgroundColour('white') wx.StaticText(self.panel, -1, "菜品名称:", (20, 20)) self.t1 = wx.TextCtrl(self.panel, pos=(20, 50), size=(120, 25)) def OnClick(self, e): dialog13 = MyDialog13(None) btn = wx.Button(parent=dialog13.panel, label="下架", pos=(20, 90), size=(90, 40)) btn.Bind(wx.EVT_BUTTON, dialog13.delete) dialog13.ShowModal() def delete(self, e): conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='root', db='wm', charset='utf8') cursor = conn.cursor() shop_name = self.t1.GetValue().encode('utf8') # 注意GetValue()获取的是unicode编码 try: sql = "delete from foodshop where shop_name=%s" cursor.execute(sql, shop_name) conn.commit() dial = wx.MessageDialog(None, '成功下架!', '结果', wx.YES_NO) # 创建一个带按钮的对话框, 语法是(self, 内容, 标题, ID) dial.ShowModal() # 显示对话框 except: conn.rollback() finally: cursor.close() conn.close()”逐行解释代码
时间: 2024-01-09 16:05:11 浏览: 131
这段代码是一个使用 wxPython 库实现的 GUI 程序,用于下架一个餐厅菜品。以下是对代码逐行的解释:
```python
class MyDialog13(wx.Dialog):
def __init__(self, parent):
wx.Dialog.__init__(self, parent, id=wx.ID_ANY, title=u"菜品下架", pos=wx.DefaultPosition,
size=wx.Size(200, 200), style=wx.DEFAULT_DIALOG_STYLE)
self.Center() # 将对话框置于屏幕中央
self.panel = wx.Panel(self) # 创建一个面板
self.panel.SetBackgroundColour('white') # 设置面板背景颜色为白色
wx.StaticText(self.panel, -1, "菜品名称:", (20, 20)) # 创建一个静态文本控件,用于提示输入
self.t1 = wx.TextCtrl(self.panel, pos=(20, 50), size=(120, 25)) # 创建一个文本框控件,用于输入菜品名称
def OnClick(self, e):
dialog13 = MyDialog13(None) # 创建一个新的对话框
btn = wx.Button(parent=dialog13.panel, label="下架", pos=(20, 90), size=(90, 40)) # 创建一个按钮控件,用于触发下架操作
btn.Bind(wx.EVT_BUTTON, dialog13.delete) # 绑定按钮事件和下架函数
dialog13.ShowModal() # 显示对话框
def delete(self, e):
# 连接数据库
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='root', db='wm', charset='utf8')
cursor = conn.cursor()
shop_name = self.t1.GetValue().encode('utf8') # 获取菜品名称
try:
# 执行删除操作
sql = "delete from foodshop where shop_name=%s"
cursor.execute(sql, shop_name)
conn.commit()
# 显示成功对话框
dial = wx.MessageDialog(None, '成功下架!', '结果', wx.YES_NO)
dial.ShowModal()
except:
conn.rollback() # 出现异常时回滚
finally:
cursor.close() # 关闭游标
conn.close() # 关闭数据库连接
```
该程序中定义了一个 `MyDialog13` 类,继承自 `wx.Dialog` 类,用于创建一个对话框。在该类的构造函数中,先调用父类构造函数初始化对话框,然后创建一个面板,并在该面板上添加一个静态文本控件和一个文本框控件,用于输入要下架的菜品名称。在 `OnClick` 函数中,创建一个新的对话框,并在该对话框中添加一个按钮控件,用于触发下架操作,同时绑定按钮事件和下架函数。在 `delete` 函数中,连接数据库并获取要下架的菜品名称,然后执行删除操作,如果成功则显示一个成功对话框,否则回滚操作。最后关闭游标和数据库连接。
阅读全文