def OnTeleport(self, event): selectedCount = self.panel.list.GetSelectedItemCount() if selectedCount != 1: wx.MessageBox('选择传送坐标的数量错误', style = wx.OK) return index = self.panel.list.GetFirstSelected() posList = [] for col in xrange(1, 5): posList.append(self.panel.getColumnText(index, col).strip()) command = '$teleport %s %s %s' % (posList[0], posList[1], posList[2]) if posList[3] != '': command += ' ' + posList[3] gmString = '\ngm("%s")' % command + '\nself.wfile.write("1")' gmString = GM_FUNC + gmString self.conn = HTTPTransfer('127.0.0.1', int(self.portEdit.GetValue()), 10) self.conn.send(gmString) self.conn.recv()
def OnGetPos(self, event): self.conn = HTTPTransfer('127.0.0.1', int(self.portEdit.GetValue()), 10) self.conn.send(GET_POS) recvStr = self.conn.recv() pos = cPickle.loads(recvStr) newKey = max(self.panel.itemDataMap.keys()) + 1 for i, data in enumerate(pos[:3]): pos[i] = '%.2f' % pos[i] if pos[3] >= 100 and pos[3] < 1000: pos[3] = str(pos[3]) else: pos[3] = '' self.panel.itemDataMap[newKey] = ['0备注名'] + pos self.panel.UpdateList() self.panel.writeData() for i in xrange(self.panel.list.GetItemCount()): if self.panel.list.GetItemData(i) == newKey: self.panel.list.Select(i) break
class MyFrame(wx.Frame): def __init__( self, parent, ID, title, pos = wx.DefaultPosition, size = wx.DefaultSize, style = wx.DEFAULT_FRAME_STYLE ^ (wx.RESIZE_BORDER | wx.MAXIMIZE_BOX) ): wx.Frame.__init__(self, parent, ID, title, pos, size, style) posBox = wx.StaticBox(self, -1, '坐标列表') opreationBox = wx.StaticBox(self, -1, '操作') getPosBtn = wx.Button(self, -1, '获取坐标') teleportBtn = wx.Button(self, -1, '传送') deleteBtn = wx.Button(self, -1, '删除') readBtn = wx.Button(self, -1, '读取坐标') backupBtn = wx.Button(self, -1, '备份坐标') label = wx.StaticText(self, -1, '游戏端口') self.portEdit = wx.TextCtrl(self, -1, '21929', size = (60, -1)) posSizer = wx.StaticBoxSizer(posBox, wx.HORIZONTAL) opreationSizer = wx.StaticBoxSizer(opreationBox, wx.VERTICAL) self.panel = TestListCtrlPanel(self) posSizer.Add(self.panel, 0, wx.ALL) opreationSizer.Add(getPosBtn, 0, wx.ALL, 10) opreationSizer.Add(teleportBtn, 0, wx.ALL, 10) opreationSizer.Add(deleteBtn, 0, wx.ALL, 10) opreationSizer.Add(readBtn, 0, wx.ALL, 10) opreationSizer.Add(backupBtn, 0, wx.ALL, 10) opreationSizer.Add(label, 0, wx.ALL, 10) opreationSizer.Add(self.portEdit, 0, wx.ALL, 5) globalSizer = wx.BoxSizer(wx.HORIZONTAL) globalSizer.Add(posSizer, 0, wx.ALL, 10) globalSizer.Add(opreationSizer, 0, wx.ALL, 10) self.SetSizer(globalSizer) self.Fit() self.Bind(wx.EVT_BUTTON, self.OnGetPos, getPosBtn) self.Bind(wx.EVT_BUTTON, self.OnTeleport, teleportBtn) self.Bind(wx.EVT_BUTTON, self.panel.OnDeletePos, deleteBtn) self.Bind(wx.EVT_BUTTON, self.OnReadData, readBtn) self.Bind(wx.EVT_BUTTON, self.OnBackupData, backupBtn) self.panel.list.Bind(wx.EVT_COMMAND_RIGHT_CLICK, self.OnRightClick) if self.panel.path: self.SetTitle('Teleport - ' + self.panel.path) def OnRightClick(self, event): if not hasattr(self, "popupID1"): self.popupID1 = wx.NewId() self.popupID2 = wx.NewId() self.Bind(wx.EVT_MENU, self.OnTeleport, id=self.popupID1) self.Bind(wx.EVT_MENU, self.panel.OnDeletePos, id=self.popupID2) menu = wx.Menu() menu.Append(self.popupID1, "传送") menu.Append(self.popupID2, "删除") selectedCount = self.panel.list.GetSelectedItemCount() if selectedCount == 0: menu.Enable(self.popupID2, False) if selectedCount != 1: menu.Enable(self.popupID1, False) self.PopupMenu(menu) menu.Destroy() def OnGetPos(self, event): self.conn = HTTPTransfer('127.0.0.1', int(self.portEdit.GetValue()), 10) self.conn.send(GET_POS) recvStr = self.conn.recv() pos = cPickle.loads(recvStr) newKey = max(self.panel.itemDataMap.keys()) + 1 for i, data in enumerate(pos[:3]): pos[i] = '%.2f' % pos[i] if pos[3] >= 100 and pos[3] < 1000: pos[3] = str(pos[3]) else: pos[3] = '' self.panel.itemDataMap[newKey] = ['0备注名'] + pos self.panel.UpdateList() self.panel.writeData() for i in xrange(self.panel.list.GetItemCount()): if self.panel.list.GetItemData(i) == newKey: self.panel.list.Select(i) break def OnTeleport(self, event): selectedCount = self.panel.list.GetSelectedItemCount() if selectedCount != 1: wx.MessageBox('选择传送坐标的数量错误', style = wx.OK) return index = self.panel.list.GetFirstSelected() posList = [] for col in xrange(1, 5): posList.append(self.panel.getColumnText(index, col).strip()) command = '$teleport %s %s %s' % (posList[0], posList[1], posList[2]) if posList[3] != '': command += ' ' + posList[3] gmString = '\ngm("%s")' % command + '\nself.wfile.write("1")' gmString = GM_FUNC + gmString self.conn = HTTPTransfer('127.0.0.1', int(self.portEdit.GetValue()), 10) self.conn.send(gmString) self.conn.recv() def OnReadData(self, event): dlg = wx.FileDialog( self, message="选择坐标文件", defaultDir=os.getcwd(), defaultFile="", style=wx.OPEN | wx.CHANGE_DIR ) if dlg.ShowModal() == wx.ID_OK: path = dlg.GetPaths()[0] self.panel.readData(path) self.panel.UpdateList() self.SetTitle('Teleport - ' + self.panel.path) dlg.Destroy() def OnBackupData(self, event): currentPath = self.panel.path.encode('gbk') backupPath = self.panel.path.encode('gbk') + '.bak' os.system('copy /Y "%s" "%s"' % (currentPath, backupPath)) wx.MessageBox('备份成功,路径:%s' % backupPath, style = wx.OK)