{"id":314,"date":"2022-02-16T17:07:20","date_gmt":"2022-02-16T09:07:20","guid":{"rendered":"https:\/\/himpqblog.cn\/?p=314"},"modified":"2022-02-19T21:37:02","modified_gmt":"2022-02-19T13:37:02","slug":"pyqt-%e5%9c%a8windows%e4%b8%8b%e5%ae%9e%e7%8e%b0%e7%b1%bb%e4%bc%bclinux%e7%aa%97%e5%8f%a3%e7%95%8c%e9%9d%a2","status":"publish","type":"post","link":"https:\/\/himpqblog.cn\/index.php\/archives\/314","title":{"rendered":"PyQt \u5728Windows\u4e0b\u5b9e\u73b0\u7c7b\u4f3cLinux\u7a97\u53e3\u754c\u9762"},"content":{"rendered":"\n<p>\u53c2\u8003\uff1a<\/p>\n\n\n\n<p><a href=\"https:\/\/www.cnblogs.com\/zhiyiYo\/p\/14644099.html\"><a href=\"https:\/\/www.cnblogs.com\/zhiyiYo\/p\/14644099.html\">\u5982\u4f55\u5728pyqt\u4e2d\u5728\u5b9e\u73b0\u65e0\u8fb9\u6846\u7a97\u53e3\u7684\u540c\u65f6\u4fdd\u7559Windows\u7a97\u53e3\u52a8\u753b\u6548\u679c\uff08\u4e00\uff09<\/a><\/a><\/p>\n\n\n\n<p>\u6548\u679c\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"600\" src=\"https:\/\/himpqblog.cn\/wp-content\/uploads\/2022\/02\/image.png\" alt=\"\" class=\"wp-image-316\" srcset=\"https:\/\/himpqblog.cn\/wp-content\/uploads\/2022\/02\/image.png 800w, https:\/\/himpqblog.cn\/wp-content\/uploads\/2022\/02\/image-300x225.png 300w, https:\/\/himpqblog.cn\/wp-content\/uploads\/2022\/02\/image-768x576.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1908\" height=\"1004\" src=\"https:\/\/himpqblog.cn\/wp-content\/uploads\/2022\/02\/q-3.gif\" alt=\"\" class=\"wp-image-324\"\/><\/figure>\n\n\n\n<p>\u7f3a\u70b9\uff1a\u5de6\u53f3\u4e0a\u9760\u8fb9\u6700\u5927\u5316\/1\/2\u5316\u672a\u5b9e\u73b0\uff0c\u4e0a\u5c42\u8fb9\u6846\u7684\u5706\u89d2<\/p>\n\n\n\n<p>\u601d\u8def\uff1a<\/p>\n\n\n\n<p>\u901a\u8fc7paintEvent\u91cd\u5199\u9634\u5f71\u548c\u8fb9\u6846\uff08\u5373\u7070\u8272\u90e8\u5206\uff09\uff0c\u518d\u4f7f\u7528QPushButton\u8bbe\u7f6eQSS\u4e3a\u5706\u5f62\u653e\u7f6e\u5728\u53f3\u4e0a\u89d2<\/p>\n\n\n\n<p>paintEvent\u90e8\u5206\u4ee3\u7801\uff1a<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">        def paintEvent(<span class=\"hljs-keyword\">self<\/span>, event):\n            <span class=\"hljs-comment\"># \u9634\u5f71<\/span>\n            path = QPainterPath()\n            path.setFillRule(Qt.WindingFill)\n\n            pat = QPainter(<span class=\"hljs-keyword\">self<\/span>)\n            pat.setRenderHint(pat.Antialiasing)\n            pat.fillPath(path, QBrush(Qt.white))\n\n            color = QColor(<span class=\"hljs-number\">192<\/span>, <span class=\"hljs-number\">192<\/span>, <span class=\"hljs-number\">192<\/span>, <span class=\"hljs-number\">50<\/span>)\n\n            <span class=\"hljs-keyword\">for<\/span> i in range(<span class=\"hljs-number\">10<\/span>):\n                i_path = QPainterPath()\n                i_path.setFillRule(Qt.WindingFill)\n                ref = QRectF(<span class=\"hljs-number\">10<\/span>-i, <span class=\"hljs-number\">10<\/span>-i, <span class=\"hljs-keyword\">self<\/span>.width()-(<span class=\"hljs-number\">10<\/span>-i)*<span class=\"hljs-number\">2<\/span>, <span class=\"hljs-keyword\">self<\/span>.height()-(<span class=\"hljs-number\">10<\/span>-i)*<span class=\"hljs-number\">2<\/span>)\n                <span class=\"hljs-comment\"># i_path.addRect(ref)<\/span>\n                i_path.addRoundedRect(ref, <span class=\"hljs-keyword\">self<\/span>.border_width, <span class=\"hljs-keyword\">self<\/span>.border_width)\n                color.setAlpha(<span class=\"hljs-number\">150<\/span> - i**<span class=\"hljs-number\">0.5<\/span>*<span class=\"hljs-number\">50<\/span>)\n                pat.setPen(color)\n                pat.drawPath(i_path)\n\n            <span class=\"hljs-comment\"># \u5706\u89d2<\/span>\n            pat2 = QPainter(<span class=\"hljs-keyword\">self<\/span>)\n            pat2.setRenderHint(pat2.Antialiasing)  <span class=\"hljs-comment\"># \u6297\u952f\u9f7f<\/span>\n            pat2.setBrush(Qt.white)\n            pat2.setPen(Qt.transparent)\n\n            rect = <span class=\"hljs-keyword\">self<\/span>.rect()\n            rect.setLeft(<span class=\"hljs-number\">9<\/span>)\n            rect.setTop(<span class=\"hljs-number\">9<\/span>)\n            rect.setWidth(rect.width()<span class=\"hljs-number\">-9<\/span>)\n            rect.setHeight(rect.height()<span class=\"hljs-number\">-9<\/span>)\n            pat2.drawRoundedRect(rect, <span class=\"hljs-number\">4<\/span>, <span class=\"hljs-number\">4<\/span>)\n\n            <span class=\"hljs-comment\">#\u4e0a\u5c42\u8fb9\u6846<\/span>\n            pat3 = QPainter(<span class=\"hljs-keyword\">self<\/span>)\n            pat3.setRenderHint(pat3.Antialiasing)\n            pat3.setBrush(QColor(<span class=\"hljs-number\">231<\/span>,<span class=\"hljs-number\">234<\/span>,<span class=\"hljs-number\">237<\/span>,<span class=\"hljs-number\">255<\/span>))\n            pat3.setPen(Qt.transparent)\n            rect2 = QRect(<span class=\"hljs-number\">9<\/span>, <span class=\"hljs-number\">9<\/span>, <span class=\"hljs-keyword\">self<\/span>.width() - <span class=\"hljs-number\">18<\/span>, <span class=\"hljs-number\">36<\/span>)\n            pat3.drawRoundedRect(rect2, <span class=\"hljs-number\">4<\/span>, <span class=\"hljs-number\">4<\/span>)\n\n            <span class=\"hljs-keyword\">for<\/span> i in <span class=\"hljs-keyword\">self<\/span>.repaint:\n                i()<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>\u6700\u540efor i in self,repaint: i()\u5904\u662f\u5f53\u7a97\u53e3\u7f29\u653e\u65f6\u53ef\u4ee5\u901a\u8fc7\u5728__init__\u58f0\u660e\u91cd\u7ed8\u51fd\u6570\u5217\u8868\u518d\u6dfb\u52a0\u51fd\u6570\u8fdb\u53bb<\/p>\n\n\n\n<p>\u5373\u53ef\u5b9e\u73b0\u81ea\u9002\u5e94<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>\u4e0b\u9762\u662f\u8c03\u7528\u4e2d\u7684\u90e8\u5206\u4ee3\u7801\uff08\u6846\u67b6\u539f\u56e0\uff0c\u4f60\u4eec\u53ef\u80fd\u770b\u4e0d\u61c2\uff09<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">def maxWindowChange(ev):\n    <span class=\"hljs-keyword\">global<\/span> maxiWindow, maxiBefore, win\n    <span class=\"hljs-keyword\">if<\/span> not maxiWindow:\n        maxiBefore = win.win.geometry()\n        maxiWindow = <span class=\"hljs-keyword\">True<\/span>\n        <span class=\"hljs-keyword\">print<\/span>(maxiBefore)\n        win.showMaxi()\n    <span class=\"hljs-keyword\">else<\/span>:\n        maxiWindow = <span class=\"hljs-keyword\">False<\/span>\n        win.win.setWindowState(qk.Qt.WindowNoState)\n        win.win.setGeometry(maxiBefore)\ndef resetMaxiWindow():\n    <span class=\"hljs-keyword\">global<\/span> maxiWindow\n    maxiWindow = <span class=\"hljs-keyword\">False<\/span>\n\nwin.setNoWindowFrame()\n\n\ncloseBtn = qk.Button(win, text = <span class=\"hljs-string\">''<\/span>, width=<span class=\"hljs-number\">20<\/span>, height=<span class=\"hljs-number\">20<\/span>, click=win.win.close)\ncloseBtn.place(win.win.width()<span class=\"hljs-number\">-25<\/span><span class=\"hljs-number\">-36<\/span>, <span class=\"hljs-number\">-28<\/span>)\ncloseBtn.setQSS(<span class=\"hljs-string\">\"QPushButton{background-color:red;border-style:none;border-radius:10px;}\"<\/span>)\ncloseBtn.setQSS(<span class=\"hljs-string\">\"QPushButton:hover{background-color:#e60000;}\"<\/span>)\ncloseBtn.setQSS(<span class=\"hljs-string\">\"QPushButton:pressed{background-color:#d60000;}\"<\/span>)\n\n\nMaxBtn = qk.Button(win, text = <span class=\"hljs-string\">''<\/span>, width=<span class=\"hljs-number\">20<\/span>, height=<span class=\"hljs-number\">20<\/span>, click=maxWindowChange)\nMaxBtn.place(win.win.width()<span class=\"hljs-number\">-25<\/span><span class=\"hljs-number\">-36<\/span><span class=\"hljs-number\">-25<\/span>, <span class=\"hljs-number\">-28<\/span>)\nMaxBtn.setQSS(<span class=\"hljs-string\">\"QPushButton{background-color:#f8ff78;border-style:none;border-radius:10px;}\"<\/span>)\nMaxBtn.setQSS(<span class=\"hljs-string\">\"QPushButton:hover{background-color:#ced900;}\"<\/span>)\nMaxBtn.setQSS(<span class=\"hljs-string\">\"QPushButton:pressed{background-color:#bac400;}\"<\/span>)\n\nMinBtn = qk.Button(win, text = <span class=\"hljs-string\">''<\/span>, width=<span class=\"hljs-number\">20<\/span>, height=<span class=\"hljs-number\">20<\/span>, click=win.showMini)\nMinBtn.place(win.win.width()<span class=\"hljs-number\">-25<\/span><span class=\"hljs-number\">-36<\/span><span class=\"hljs-number\">-25<\/span><span class=\"hljs-number\">-25<\/span>, <span class=\"hljs-number\">-28<\/span>)\nMinBtn.setQSS(<span class=\"hljs-string\">\"QPushButton{background-color:#0fe800;border-style:none;border-radius:10px;}\"<\/span>)\nMinBtn.setQSS(<span class=\"hljs-string\">\"QPushButton:hover{background-color:#13c406;}\"<\/span>)\nMinBtn.setQSS(<span class=\"hljs-string\">\"QPushButton:pressed{background-color:#14990b;}\"<\/span>)\n\n\ntest = qk.Button(win, text=<span class=\"hljs-string\">'Hello World!'<\/span>, width=<span class=\"hljs-number\">120<\/span>)\ntest.place(<span class=\"hljs-number\">0<\/span>, <span class=\"hljs-number\">0<\/span>)\n        \n\nwin.repaint.append(lambda:closeBtn.place(win.win.width()<span class=\"hljs-number\">-25<\/span><span class=\"hljs-number\">-36<\/span>, <span class=\"hljs-number\">-28<\/span>))\nwin.repaint.append(lambda:MaxBtn.place(win.win.width()<span class=\"hljs-number\">-25<\/span><span class=\"hljs-number\">-36<\/span><span class=\"hljs-number\">-25<\/span>, <span class=\"hljs-number\">-28<\/span>))\nwin.repaint.append(lambda:MinBtn.place(win.win.width()<span class=\"hljs-number\">-25<\/span><span class=\"hljs-number\">-36<\/span><span class=\"hljs-number\">-25<\/span><span class=\"hljs-number\">-25<\/span>, <span class=\"hljs-number\">-28<\/span>))<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>\u53ef\u4ee5\u4e3b\u8981\u53c2\u8003\u6700\u5927\u5316\u6700\u5c0f\u5316\u5173\u95ed\u6309\u94ae\u7684QSS<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u53c2\u8003\uff1a \u5982\u4f55\u5728pyqt\u4e2d\u5728\u5b9e\u73b0\u65e0\u8fb9\u6846\u7a97\u53e3\u7684\u540c\u65f6\u4fdd\u7559Windows\u7a97\u53e3\u52a8\u753b\u6548\u679c\uff08\u4e00\uff09 \u6548\u679c\uff1a \u7f3a\u70b9\uff1a\u5de6\u53f3\u4e0a\u9760\u8fb9\u6700 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-314","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/himpqblog.cn\/index.php\/wp-json\/wp\/v2\/posts\/314","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/himpqblog.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/himpqblog.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/himpqblog.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/himpqblog.cn\/index.php\/wp-json\/wp\/v2\/comments?post=314"}],"version-history":[{"count":3,"href":"https:\/\/himpqblog.cn\/index.php\/wp-json\/wp\/v2\/posts\/314\/revisions"}],"predecessor-version":[{"id":325,"href":"https:\/\/himpqblog.cn\/index.php\/wp-json\/wp\/v2\/posts\/314\/revisions\/325"}],"wp:attachment":[{"href":"https:\/\/himpqblog.cn\/index.php\/wp-json\/wp\/v2\/media?parent=314"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/himpqblog.cn\/index.php\/wp-json\/wp\/v2\/categories?post=314"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/himpqblog.cn\/index.php\/wp-json\/wp\/v2\/tags?post=314"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}