class MyDialog44(wx.Dialog): def __init__(self, parent): wx.Dialog.__init__(self, parent, id=wx.ID_ANY, title=u"修改订单", pos=wx.DefaultPosition, size=wx.Size(400, 300), 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=(160, 20), size=(120, 25)) wx.StaticText(self.panel, -1, "请输入买家电话:", (20, 80)) self.t2 = wx.TextCtrl(self.panel, pos=(160, 80), size=(120, 25)) wx.StaticText(self.panel, -1, "请更正订单金额:", (20, 140)) self.t3 = wx.TextCtrl(self.panel, pos=(160, 140), size=(120, 25)) def OnClick(self, e): dialog44 = MyDialog44(None) btn = wx.Button(parent=dialog44.panel, label="确认修改", pos=(20, 200), size=(100, 45)) btn.Bind(wx.EVT_BUTTON, dialog44.change) dialog44.ShowModal() def change(self, e): conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='root', db='wm', charset='utf8') cursor = conn.cursor() server_id = self.t1.GetValue().encode('utf8') student_phone = self.t2.GetValue().encode('utf8') order_money = self.t3.GetValue().encode('utf8') data = (order_money, server_id, student_phone) try: sql = "update book set order_money=%s where server_id=%s and student_phone=%s" cursor.execute(sql, data) conn.commit() dial = wx.MessageDialog(None, '成功修改订单!', '结果', wx.YES_NO) # 创建一个带按钮的对话框, 语法是(self, 内容, 标题, ID) dial.ShowModal() # 显示对话框 except: conn.rollback() finally: cursor.close() conn.close()
时间: 2024-04-26 20:22:46 浏览: 71
这是一个使用wxPython开发的GUI程序,用于修改数据库中的订单信息。程序中创建了一个名为MyDialog44的类,继承了wx.Dialog类,用于创建一个对话框。在对话框中,创建了三个文本框分别用于输入客服编号、买家电话和订单金额。同时,还创建了一个确认修改的按钮,当用户点击该按钮时,程序会连接到数据库,将用户输入的信息写入到数据库中,并弹出一个对话框显示修改结果。
相关问题
“class MyDialog33(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): dialog33 = MyDialog33(None) btn = wx.Button(parent=dialog33.panel, label="解雇", pos=(20, 90), size=(90, 40)) btn.Bind(wx.EVT_BUTTON, dialog33.delete) dialog33.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() server_id = self.t1.GetValue().encode('utf8') # 注意GetValue()获取的是unicode编码 try: sql = "delete from server where server_id=%s" cursor.execute(sql, server_id) conn.commit() dial = wx.MessageDialog(None, '成功解雇客服!', '结果', wx.YES_NO) # 创建一个带按钮的对话框, 语法是(self, 内容, 标题, ID) dial.ShowModal() # 显示对话框 except: conn.rollback() finally: cursor.close() conn.close()”逐行解释代码
这段代码是一个基于 wxPython 的图形用户界面程序,用于解雇客服人员。下面逐行解释它的代码逻辑:
1. 创建一个对话框类 MyDialog33,该类继承自 wx.Dialog 类,表示一个弹出的对话框窗口。
2. 在构造函数 __init__() 中,调用父类 wx.Dialog 的构造函数,设置对话框的各个参数,如 ID、标题、位置、大小等。然后创建一个名为 panel 的 wx.Panel 对象,并设置其背景颜色为白色。
3. 在 panel 上创建一个 wx.StaticText 对象,用于显示“客服人员编号:”的文本。接着在 panel 上创建一个 wx.TextCtrl 对象,用于用户输入客服人员的编号。
4. 定义一个名为 OnClick() 的方法,该方法用于响应用户的点击事件。在该方法中,创建一个 MyDialog33 对象 dialog33,并在该对话框上创建一个名为 btn 的 wx.Button 对象。该按钮的文本为“解雇”,位置在 panel 上的(20, 90),大小为(90, 40)。然后为该按钮绑定一个事件处理函数 dialog33.delete()。
5. 定义一个名为 delete() 的方法,用于实现解雇客服人员的功能。在该方法中,首先创建一个 MySQL 数据库连接 conn,并获取客服人员编号的值。然后定义一个 SQL 语句,使用执行 cursor.execute() 函数执行该语句并提交到数据库中。如果执行成功,则创建一个带有“成功解雇客服!”文本和“结果”标题的 wx.MessageDialog 对象 dial,并在屏幕上显示该对话框。如果执行失败,则进行回滚操作。最后关闭 cursor 和 conn 连接。
"class MyDialog23(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): dialog23 = MyDialog23(None) btn = wx.Button(parent=dialog23.panel, label="解雇", pos=(20, 90), size=(90, 40)) btn.Bind(wx.EVT_BUTTON, dialog23.delete) dialog23.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() courier_id = self.t1.GetValue().encode('utf8') # 注意GetValue()获取的是unicode编码 try: sql = "delete from courier where courier_id=%s" cursor.execute(sql, courier_id) conn.commit() dial = wx.MessageDialog(None, '成功解雇派送员!', '结果', wx.YES_NO) # 创建一个带按钮的对话框, 语法是(self, 内容, 标题, ID) dial.ShowModal() # 显示对话框 except: conn.rollback() finally: cursor.close() conn.close()"逐行解释代码
这是另一个wxPython的界面程序,用于从MySQL数据库中删除指定的派送员信息。
同样是定义了一个类MyDialog23继承自wx.Dialog类。在类的初始化方法中,定义了窗口的位置、大小、标题等属性,并且创建了一个wx.Panel对象,并将其背景颜色设置为白色。接着在Panel中添加了一个静态文本和一个文本框,用于输入要删除的派送员的编号。
OnClick方法用于响应一个按钮的点击事件,该方法创建了一个新的MyDialog23对象,并在其Panel中添加了一个“解雇”按钮,并绑定了一个delete方法,用于从数据库中删除指定的派送员信息。最后显示该对话框。
delete方法用于从数据库中删除指定的派送员信息。首先连接了MySQL数据库,并获取了要删除的派送员的编号。然后将该编号对应的记录从courier表中删除。如果删除成功,则弹出一个提示框,显示“成功解雇派送员!”。如果出现异常,则回滚操作。最后关闭数据库连接。
注意,代码中同样使用了encode('utf8')方法将获取到的unicode编码转换为utf-8编码,以防止在从MySQL数据库中读取和删除数据时出现乱码。
阅读全文