{"id":1081,"date":"2023-06-10T00:02:00","date_gmt":"2023-06-09T16:02:00","guid":{"rendered":"http:\/\/xinyixx.com\/?p=1081"},"modified":"2023-06-11T22:41:52","modified_gmt":"2023-06-11T14:41:52","slug":"python12","status":"publish","type":"post","link":"https:\/\/www.xinyixx.com\/index.php\/2023\/06\/10\/python12\/","title":{"rendered":"python\u7a0b\u5e8f12\uff1a\u5199\u4e00\u4e2a\u6587\u4ef6\u6d4f\u89c8\u5668"},"content":{"rendered":"<p class=\"wp-block-paragraph\">\u8fd9\u4e2a\u7a0b\u5e8f\u9700\u8981\u4e24\u4e2a\u6a21\u5757os\u548cwx<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">wxPython\u662fwxWidgets C++ GUI\u5de5\u5177\u7bb1\u7684\u4e00\u4e2aPython\u5c01\u88c5\u5668\u3002\u5b83\u5141\u8bb8\u5f00\u53d1\u8005\u5728Windows\u3001macOS\u548cLinux\u4e0a\u521b\u5efa\u5177\u6709\u672c\u5730\u5916\u89c2\u548c\u611f\u89c9\u7684\u8de8\u5e73\u53f0GUI\u5e94\u7528\u7a0b\u5e8f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">wxPython\u63d0\u4f9b\u4e86\u4e00\u5957\u90e8\u4ef6\u548c\u63a7\u4ef6\uff0c\u53ef\u7528\u4e8e\u521b\u5efa\u5404\u79cdGUI\u5e94\u7528\u7a0b\u5e8f\uff0c\u5305\u62ec\u6587\u4ef6\u6d4f\u89c8\u5668\u3001\u6587\u672c\u7f16\u8f91\u5668\u3001\u56fe\u50cf\u67e5\u770b\u5668\u7b49\u3002\u5b83\u8fd8\u63d0\u4f9b\u4e86\u5bf9\u4e8b\u4ef6\u9a71\u52a8\u7f16\u7a0b\u7684\u652f\u6301\uff0c\u8fd9\u4f7f\u5f97\u5f00\u53d1\u8005\u80fd\u591f\u5bf9\u7528\u6237\u7684\u64cd\u4f5c\uff08\u5982\u6309\u94ae\u70b9\u51fb\u3001\u9f20\u6807\u79fb\u52a8\u548c\u952e\u76d8\u8f93\u5165\uff09\u505a\u51fa\u53cd\u5e94\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7531\u4e8ewxPython\u7684\u6613\u7528\u6027\u3001\u8de8\u5e73\u53f0\u517c\u5bb9\u6027\u548c\u4e30\u5bcc\u7684\u529f\u80fd\u96c6\uff0c\u5b83\u5728Python\u793e\u533a\u88ab\u5e7f\u6cdb\u7528\u4e8e\u521b\u5efa\u684c\u9762\u5e94\u7528\u7a0b\u5e8f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>os<\/code>\u662f\u4e00\u4e2aPython\u5185\u7f6e\u6a21\u5757\uff0c\u63d0\u4f9b\u4e86\u4e00\u79cd\u4e0e\u64cd\u4f5c\u7cfb\u7edf\u4ea4\u4e92\u7684\u65b9\u5f0f\u3002\u5b83\u63d0\u4f9b\u4e86\u8bb8\u591a\u5904\u7406\u6587\u4ef6\u548c\u76ee\u5f55\u7684\u529f\u80fd\uff0c\u4ee5\u53ca\u7528\u4e8e\u8fdb\u7a0b\u7ba1\u7406\u3001\u73af\u5883\u53d8\u91cf\u7b49\u7684\u529f\u80fd\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>os<\/code>\u6a21\u5757\u63d0\u4f9b\u7684\u4e00\u4e9b\u4e3b\u8981\u529f\u80fd\u5305\u62ec\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>os.getcwd()<\/code>: \u8fd4\u56de\u5f53\u524d\u5de5\u4f5c\u76ee\u5f55\u3002<\/li>\n\n\n\n<li><code>os.listdir(path)<\/code>: \u8fd4\u56de\u6307\u5b9a\u8def\u5f84\u4e0b\u7684\u6587\u4ef6\u548c\u76ee\u5f55\u7684\u5217\u8868\u3002<\/li>\n\n\n\n<li><code>os.mkdir(path)<\/code>: \u7528\u6307\u5b9a\u7684\u8def\u5f84\u521b\u5efa\u4e00\u4e2a\u65b0\u76ee\u5f55\u3002<\/li>\n\n\n\n<li><code>os.remove(path)<\/code>: \u5220\u9664\u6307\u5b9a\u8def\u5f84\u4e0b\u7684\u6587\u4ef6\u3002<\/li>\n\n\n\n<li><code>os.rename(src, dst)<\/code>\uff1a\u5c06\u6587\u4ef6\u6216\u76ee\u5f55\u4ece<code>src<\/code>\u91cd\u547d\u540d\u5230<code>dst<\/code>\u3002<\/li>\n\n\n\n<li><code>os.path.join(path, *paths)<\/code>\uff1a\u5c06\u4e00\u4e2a\u6216\u591a\u4e2a\u8def\u5f84\u7ec4\u4ef6\u8fde\u63a5\u8d77\u6765\u3002<\/li>\n\n\n\n<li><code>os.path.existence(path)<\/code>\uff1a\u5982\u679c\u6307\u5b9a\u7684\u8def\u5f84\u5b58\u5728\uff0c\u8fd4\u56de<code>True'\uff0c\u5426\u5219\u8fd4\u56de<\/code>False&#8217;\u3002<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><code>os<\/code>\u6a21\u5757\u5728Python\u7f16\u7a0b\u4e2d\u88ab\u5e7f\u6cdb\u7528\u4e8e\u6587\u4ef6\u548c\u76ee\u5f55\u64cd\u4f5c\uff0c\u4ee5\u53ca\u8fdb\u7a0b\u7ba1\u7406\u548c\u7cfb\u7edf\u7ba1\u7406\u4efb\u52a1\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0b\u9762\u5199\u4e00\u4e0b\u8fd9\u4e2a\u4ee3\u7801\uff0c\u6309\u7167\u4ee5\u524d\u65b9\u6cd5\uff0c\u5148\u4e0b\u8f7d\u6a21\u5757\uff1a<code>pip install wxpython<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7a0b\u5e8f\u6e90\u7801\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>import os\nimport wx\n\n\nclass FileBrowser(wx.Frame):\n    def __init__(self, parent, title):\n        super(FileBrowser, self).__init__(parent, title=title, size=(<\/code>400, 300<code>))\n\n        # \u521b\u7acb\u9762\u677f\n        panel = wx.Panel(self)\n\n        # \u521b\u5efa\u76ee\u5f55\u63a7\u4ef6\n        self.dir_ctrl = wx.GenericDirCtrl(panel, dir=wx.GetHomeDir(), style=wx.DIRCTRL_DIR_ONLY)\n\n        #\u521b\u7acb\u4e2asizer\n        sizer = wx.BoxSizer(wx.VERTICAL)\n\n        # \u5c06\u76ee\u5f55\u63a7\u4ef6\u6dfb\u52a0\u5230sizer\u91cc\n        sizer.Add(self.dir_ctrl, 1, wx.EXPAND)\n\n        # \u521b\u7acb\u4e2a\u5de5\u5177\u6761\n        toolbar = self.CreateToolBar()\n        toolbar.SetToolBitmapSize((16, 16))\n\n        # \u589e\u52a0\u65b0\u5efa\u6587\u4ef6\u5939\u6309\u94ae\n        new_folder_bmp = wx.ArtProvider.GetBitmap(wx.ART_NEW_DIR, wx.ART_TOOLBAR, (16, 16))\n        new_folder_tool = toolbar.AddTool(wx.ID_NEW, '\u65b0\u6587\u4ef6\u5939', new_folder_bmp)\n        self.Bind(wx.EVT_TOOL, self.OnNewFolder, new_folder_tool)\n\n        # \u589e\u52a0\u62f7\u8d1d\u6309\u94ae\n        copy_bmp = wx.ArtProvider.GetBitmap(wx.ART_COPY, wx.ART_TOOLBAR, (16, 16))\n        copy_tool = toolbar.AddTool(wx.ID_COPY, '\u62f7\u8d1d', copy_bmp)\n        self.Bind(wx.EVT_TOOL, self.OnCopy, copy_tool)\n\n        # \u589e\u52a0\u526a\u5207\u6309\u94ae\n        cut_bmp = wx.ArtProvider.GetBitmap(wx.ART_CUT, wx.ART_TOOLBAR, (16, 16))\n        cut_tool = toolbar.AddTool(wx.ID_CUT, '\u526a\u5207', cut_bmp)\n        self.Bind(wx.EVT_TOOL, self.OnCut, cut_tool)\n\n        # \u589e\u52a0\u7c98\u8d34\u6309\u94ae\n        paste_bmp = wx.ArtProvider.GetBitmap(wx.ART_PASTE, wx.ART_TOOLBAR, (16, 16))\n        paste_tool = toolbar.AddTool(wx.ID_PASTE, '\u7c98\u8d34', paste_bmp)\n        self.Bind(wx.EVT_TOOL, self.OnPaste, paste_tool)\n\n        # \u589e\u52a0\u5220\u9664\u6309\u94ae\n        delete_bmp = wx.ArtProvider.GetBitmap(wx.ART_DELETE, wx.ART_TOOLBAR, (16, 16))\n        delete_tool = toolbar.AddTool(wx.ID_DELETE, '\u5220\u9664', delete_bmp)\n        self.Bind(wx.EVT_TOOL, self.OnDelete, delete_tool)\n\n        # \u589e\u52a0\u91cd\u547d\u540d\u6309\u94ae\n        rename_bmp = wx.ArtProvider.GetBitmap(wx.ART_EDIT, wx.ART_TOOLBAR, (16, 16))\n        rename_tool = toolbar.AddTool(wx.ID_ANY, '\u91cd\u547d\u540d', rename_bmp)\n        self.Bind(wx.EVT_TOOL, self.OnRename, rename_tool)\n\n        # \u589e\u52a0\u6253\u5f00\u6587\u4ef6\u6309\u94ae\n        open_file_bmp = wx.ArtProvider.GetBitmap(wx.ART_FILE_OPEN, wx.ART_TOOLBAR, (16, 16))\n        open_file_tool = toolbar.AddTool(wx.ID_OPEN, '\u6253\u5f00\u6587\u4ef6', open_file_bmp)\n        self.Bind(wx.EVT_TOOL, self.OnOpenFile, open_file_tool)\n\n        # \u5b8c\u6210\u5de5\u5177\u6761\u7684\u8bbe\u7f6e\n        toolbar.Realize()\n\n        # \u8bbe\u7f6e\u9762\u677f\u7684\u5c3a\u5bf8\n        panel.SetSizer(sizer)\n        # \u663e\u793a\u6846\u67b6\n        self.Show()\n\n    def OnNewFolder(self, event):\n        dlg = wx.TextEntryDialog(self, '\u4e3a\u6587\u4ef6\u5939\u8d77\u4e2a\u65b0\u540d\u5b57', '\u65b0\u6587\u4ef6\u5939')\n\n        if dlg.ShowModal() == wx.ID_OK:\n            path = self.dir_ctrl.GetPath()\n            name = dlg.GetValue()\n            folder_path = os.path.join(path, name)\n\n            if os.path.exists(folder_path):\n                wx.MessageBox('\u8fd9\u4e2a\u6587\u4ef6\u5939\u5df2\u7ecf\u5b58\u5728', '\u5931\u8d25', wx.OK | wx.ICON_ERROR)\n            else:\n                os.mkdir(folder_path)\n\n                # \u5237\u65b0\u76ee\u5f55\u63a7\u4ef6\n                self.dir_ctrl.ReCreateTree()\n\n    def OnCopy(self, event):\n        pass\n\n    def OnCut(self, event):\n        pass\n\n    def OnPaste(self, event):\n        pass\n\n    def OnDelete(self, event):\n        path = self.dir_ctrl.GetPath()\n\n        for item in self.dir_ctrl.GetSelections():\n            item_path = os.path.join(path, item.GetText())\n\n            if os.path.isdir(item_path):\n                dlg = wx.MessageDialog(self,\n                                       '\u4f60\u786e\u5b9a\u8981\u5220\u9664\u8fd9\u4e2a\u6587\u4ef6\u5939\u548c\u5b83\u7684\u6240\u6709\u5185\u5bb9\u5417\uff1f',\n                                       '\u786e\u8ba4\u5220\u9664',\n                                       wx.YES_NO | wx.NO_DEFAULT | wx.ICON_WARNING)\n\n                if dlg.ShowModal() == wx.ID_YES:\n                    try:\n                        os.rmdir(item_path)\n                    except OSError as e:\n                        wx.MessageBox(str(e), '\u9519\u8bef', wx.OK | wx.ICON_ERROR)\n            else:\n                dlg = wx.MessageDialog(self,\n                                       '\u4f60\u786e\u5b9a\u8981\u5220\u9664\u8fd9\u4e2a\u6587\u4ef6\u5417\uff1f',\n                                       '\u786e\u8ba4\u5220\u9664',\n                                       wx.YES_NO | wx.NO_DEFAULT | wx.ICON_WARNING)\n\n                if dlg.ShowModal() == wx.ID_YES:\n                    try:\n                        os.remove(item_path)\n                    except OSError as e:\n                        wx.MessageBox(str(e), '\u9519\u8bef', wx.OK | wx.ICON_ERROR)\n\n        # \u5237\u65b0\u76ee\u5f55\u63a7\u4ef6\n        self.dir_ctrl.ReCreateTree()\n\n    def OnRename(self, event):\n        path = self.dir_ctrl.GetPath()\n\n        for item in self.dir_ctrl.GetSelections():\n            item_path = os.path.join(path, item.GetText())\n\n            dlg = wx.TextEntryDialog(self,\n                                     '\u8f93\u5165\u8fd9\u4e2a\u9879\u76ee\u7684\u65b0\u540d\u79f0\uff1a',\n                                     '\u65b0\u9879\u76ee\u540d\u79f0',\n                                     value=item.GetText())\n\n            if dlg.ShowModal() == wx.ID_OK:\n                new_name = dlg.GetValue()\n                new_path = os.path.join(path, new_name)\n\n                try:\n                    os.rename(item_path, new_path)\n                except OSError as e:\n                    wx.MessageBox(str(e), 'Error', wx.OK | wx.ICON_ERROR)\n\n        # \u5237\u65b0\u76ee\u5f55\u63a7\u4ef6\n        self.dir_ctrl.ReCreateTree()\n\n    def OnOpenFile(self, event):\n        path = self.dir_ctrl.GetPath()\n\n        for item in self.dir_ctrl.GetSelections():\n            item_path = os.path.join(path, item.GetText())\n\n            if os.path.isfile(item_path):\n                os.startfile(item_path)\n\n\nif __name__ == '__main__':\n    app = wx.App()\n    browser = FileBrowser(None, title='\u6587\u4ef6\u6d4f\u89c8\u5668')\n    browser.SetSize((800, 600))  # \u8bbe\u7f6e\u7a97\u53e3\u5927\u5c0fto 800x600\n    browser.Show()\n    app.MainLoop()<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u6bb5\u4ee3\u7801\u662f\u4e00\u4e2aPython GUI\u5e94\u7528\u7a0b\u5e8f\uff0c\u521b\u5efa\u4e86\u4e00\u4e2a\u6587\u4ef6\u6d4f\u89c8\u5668\u3002\u5b83\u5141\u8bb8\u7528\u6237\u6d4f\u89c8\u76ee\u5f55\uff0c\u521b\u5efa\u65b0\u6587\u4ef6\u5939\uff0c\u590d\u5236\u3001\u526a\u5207\u3001\u7c98\u8d34\u3001\u5220\u9664\u548c\u91cd\u547d\u540d\u6587\u4ef6\u548c\u6587\u4ef6\u5939\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">wx\u6a21\u5757\u7528\u4e8e\u521b\u5efaGUI\u5143\u7d20\uff0cos\u6a21\u5757\u7528\u4e8e\u4e0e\u6587\u4ef6\u7cfb\u7edf\u4ea4\u4e92\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">FileBrowser\u7c7b\u662fwx.Frame\u7684\u4e00\u4e2a\u5b50\u7c7b\u3002\u5b83\u521b\u5efa\u4e86\u4e00\u4e2a\u9762\u677f\u5e76\u5728\u5176\u4e2d\u6dfb\u52a0\u4e86\u4e00\u4e2a\u76ee\u5f55\u63a7\u4ef6\u3002OnNewFolder\u65b9\u6cd5\u5728\u5f53\u524d\u76ee\u5f55\u4e0b\u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u6587\u4ef6\u5939\u3002OnDelete\u65b9\u6cd5\u5220\u9664\u4e86\u6240\u9009\u7684\u6587\u4ef6\u6216\u6587\u4ef6\u5939\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5176\u4ed6\u65b9\u6cd5\uff08\u62f7\u8d1d\uff0c\u526a\u5207\uff0c\u7c98\u8d34\uff0c\u91cd\u547d\u540d\u7b49\uff09\u8fd8\u6ca1\u6709\u5b9e\u73b0\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd0\u884c\u8bd5\u4e00\u4e0b\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><noscript><img decoding=\"async\" width=\"1024\" height=\"819\" src=\"http:\/\/xinyixx.com\/wp-content\/uploads\/2023\/06\/image-35-1024x819.png\" alt class=\"wp-image-1082\" srcset=\"https:\/\/www.xinyixx.com\/wp-content\/uploads\/2023\/06\/image-35-1024x819.png 1024w, https:\/\/www.xinyixx.com\/wp-content\/uploads\/2023\/06\/image-35-300x240.png 300w, https:\/\/www.xinyixx.com\/wp-content\/uploads\/2023\/06\/image-35-768x614.png 768w, https:\/\/www.xinyixx.com\/wp-content\/uploads\/2023\/06\/image-35.png 1147w\" sizes=\"(max-width: 1024px) 100vw, 1024px\"><\/noscript><img decoding=\"async\" width=\"1024\" height=\"819\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201024%20819%22%3E%3C%2Fsvg%3E\" alt class=\"wp-image-1082 lazyload\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201024%20819%22%3E%3C%2Fsvg%3E 1024w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" data-srcset=\"https:\/\/www.xinyixx.com\/wp-content\/uploads\/2023\/06\/image-35-1024x819.png 1024w, https:\/\/www.xinyixx.com\/wp-content\/uploads\/2023\/06\/image-35-300x240.png 300w, https:\/\/www.xinyixx.com\/wp-content\/uploads\/2023\/06\/image-35-768x614.png 768w, https:\/\/www.xinyixx.com\/wp-content\/uploads\/2023\/06\/image-35.png 1147w\" data-src=\"http:\/\/xinyixx.com\/wp-content\/uploads\/2023\/06\/image-35-1024x819.png\"><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u6ca1\u6709\u95ee\u9898\uff0c\u65b0\u5efa\u4e00\u4e2a123\u6587\u4ef6\u5939\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><noscript><img decoding=\"async\" width=\"1000\" height=\"750\" src=\"http:\/\/xinyixx.com\/wp-content\/uploads\/2023\/06\/image-36.png\" alt class=\"wp-image-1083\" srcset=\"https:\/\/www.xinyixx.com\/wp-content\/uploads\/2023\/06\/image-36.png 1000w, https:\/\/www.xinyixx.com\/wp-content\/uploads\/2023\/06\/image-36-300x225.png 300w, https:\/\/www.xinyixx.com\/wp-content\/uploads\/2023\/06\/image-36-768x576.png 768w\" sizes=\"(max-width: 1000px) 100vw, 1000px\"><\/noscript><img decoding=\"async\" width=\"1000\" height=\"750\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201000%20750%22%3E%3C%2Fsvg%3E\" alt class=\"wp-image-1083 lazyload\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201000%20750%22%3E%3C%2Fsvg%3E 1000w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" data-srcset=\"https:\/\/www.xinyixx.com\/wp-content\/uploads\/2023\/06\/image-36.png 1000w, https:\/\/www.xinyixx.com\/wp-content\/uploads\/2023\/06\/image-36-300x225.png 300w, https:\/\/www.xinyixx.com\/wp-content\/uploads\/2023\/06\/image-36-768x576.png 768w\" data-src=\"http:\/\/xinyixx.com\/wp-content\/uploads\/2023\/06\/image-36.png\"><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><noscript><img decoding=\"async\" width=\"1000\" height=\"750\" src=\"http:\/\/xinyixx.com\/wp-content\/uploads\/2023\/06\/image-37.png\" alt class=\"wp-image-1085\" srcset=\"https:\/\/www.xinyixx.com\/wp-content\/uploads\/2023\/06\/image-37.png 1000w, https:\/\/www.xinyixx.com\/wp-content\/uploads\/2023\/06\/image-37-300x225.png 300w, https:\/\/www.xinyixx.com\/wp-content\/uploads\/2023\/06\/image-37-768x576.png 768w\" sizes=\"(max-width: 1000px) 100vw, 1000px\"><\/noscript><img decoding=\"async\" width=\"1000\" height=\"750\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201000%20750%22%3E%3C%2Fsvg%3E\" alt class=\"wp-image-1085 lazyload\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201000%20750%22%3E%3C%2Fsvg%3E 1000w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" data-srcset=\"https:\/\/www.xinyixx.com\/wp-content\/uploads\/2023\/06\/image-37.png 1000w, https:\/\/www.xinyixx.com\/wp-content\/uploads\/2023\/06\/image-37-300x225.png 300w, https:\/\/www.xinyixx.com\/wp-content\/uploads\/2023\/06\/image-37-768x576.png 768w\" data-src=\"http:\/\/xinyixx.com\/wp-content\/uploads\/2023\/06\/image-37.png\"><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u53ef\u4ee5\u6210\u529f\uff0c\u5176\u4ed6\u529f\u80fd\u9700\u8981\u540e\u671f\u6162\u6162\u6dfb\u52a0\u3002\u6700\u540e\u518d\u7528pyinstaller\u6253\u5305\u6210exe\u6587\u4ef6\u3002\u5927\u529f\u544a\u6210\uff01<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u8fd9\u4e2a\u7a0b\u5e8f\u9700\u8981\u4e24\u4e2a\u6a21\u5757os\u548cwx wxPython\u662fwxWidgets C++ GUI\u5de5\u5177\u7bb1\u7684\u4e00\u4e2aPython\u5c01 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[14,10],"tags":[71,69,77],"class_list":["post-1081","post","type-post","status-publish","format-standard","hentry","category-teacher","category-coding","tag-python","tag-learning","tag-coding","entry"],"_links":{"self":[{"href":"https:\/\/www.xinyixx.com\/index.php\/wp-json\/wp\/v2\/posts\/1081","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xinyixx.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xinyixx.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xinyixx.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xinyixx.com\/index.php\/wp-json\/wp\/v2\/comments?post=1081"}],"version-history":[{"count":0,"href":"https:\/\/www.xinyixx.com\/index.php\/wp-json\/wp\/v2\/posts\/1081\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.xinyixx.com\/index.php\/wp-json\/wp\/v2\/media?parent=1081"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xinyixx.com\/index.php\/wp-json\/wp\/v2\/categories?post=1081"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xinyixx.com\/index.php\/wp-json\/wp\/v2\/tags?post=1081"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}