{"id":20369,"date":"2025-06-09T09:27:31","date_gmt":"2025-06-09T01:27:31","guid":{"rendered":"https:\/\/blog.iyatt.com\/?p=20369"},"modified":"2025-06-09T09:27:31","modified_gmt":"2025-06-09T01:27:31","slug":"%e5%9f%ba%e4%ba%8e-tkinter-button-%e5%ae%9e%e7%8e%b0%e7%9a%84%e5%8f%af%e4%bb%a5%e9%97%aa%e7%83%81%e7%9a%84%e6%8c%89%e9%92%ae","status":"publish","type":"post","link":"https:\/\/blog.iyatt.com\/?p=20369","title":{"rendered":"\u57fa\u4e8e tkinter Button \u5b9e\u73b0\u7684\u53ef\u4ee5\u95ea\u70c1\u7684\u6309\u94ae"},"content":{"rendered":"<p>blinkbutton.py<\/p>\n<pre><code class=\"language-python\">import tkinter as tk\n\nclass BlinkingButton(tk.Button):\n    def __init__(self, master=None, blinkColor=&quot;red&quot;, blinkInterval=500, **kwargs):\n        &quot;&quot;&quot;\n        \u95ea\u70c1\u6309\u94ae\n\n        Args:\n            master: \u7236\u7ec4\u4ef6\n            blinkColor: \u95ea\u70c1\u989c\u8272\n            blinkInterval: \u95ea\u70c1\u5468\u671f\uff08\u6beb\u79d2\uff09\n            kwargs: \u5176\u5b83Button\u5c5e\u6027\n        &quot;&quot;&quot;\n        super().__init__(master, **kwargs)\n        self.master = master\n        self._blinkColor = blinkColor\n        self._blinkInterval = blinkInterval\n        self._normalBg = self[&quot;bg&quot;] if &quot;bg&quot; in kwargs else self.cget(&quot;bg&quot;)\n        self._blinking = False\n        self._blinkState = False\n\n    def startBlinking(self):\n        if not self._blinking:\n            self._blinking = True\n            self._blink()\n\n    def stopBlinking(self):\n        self._blinking = False\n        self.configure(bg=self._normalBg)\n\n    def _blink(self):\n        if not self._blinking:\n            return\n\n        new_color = self._blinkColor if not self._blinkState else self._normalBg\n        self.configure(bg=new_color)\n        self._blinkState = not self._blinkState\n\n        self.after(self._blinkInterval, self._blink)\n\nclass App(tk.Frame):\n    def __init__(self, master):\n        super().__init__(master)\n        self.master = master\n        self.pack()\n\n    def _onChangeButtonText(self):\n        buttonText = self.blinkingButton[&#039;text&#039;]\n        if buttonText == &quot;\u5f00\u59cb\u95ea\u70c1&quot;:\n            self.blinkingButton.startBlinking()\n            self.blinkingButton.config(text=&quot;\u505c\u6b62\u95ea\u70c1&quot;)\n        else:\n            self.blinkingButton.stopBlinking()\n            self.blinkingButton.config(text=&quot;\u5f00\u59cb\u95ea\u70c1&quot;)\n\n    def createWidgets(self):\n        self.blinkingButton = BlinkingButton(self, &#039;red&#039;, 500, text=&#039;\u5f00\u59cb\u95ea\u70c1&#039;, command=self._onChangeButtonText)\n        self.blinkingButton.pack()\n\n# \u793a\u4f8b\u7a0b\u5e8f\nif __name__ == &quot;__main__&quot;:\n    root = tk.Tk()\n    root.title(&quot;\u95ea\u70c1\u6309\u94ae\u793a\u4f8b&quot;)\n    root.geometry(&quot;300x50&quot;)\n    app = App(root)\n    app.createWidgets()\n    root.mainloop()<\/code><\/pre>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2025\/06\/image-1749432340201.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 306px; --smush-placeholder-aspect-ratio: 306\/86;\" \/><br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2025\/06\/image-1749432358654.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 299px; --smush-placeholder-aspect-ratio: 299\/85;\" \/><br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2025\/06\/image-1749432382577.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 304px; --smush-placeholder-aspect-ratio: 304\/85;\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>blinkbutton.py import tkinter as tk class BlinkingButto [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"zakra_page_container_layout":"customizer","zakra_page_sidebar_layout":"customizer","zakra_remove_content_margin":false,"zakra_sidebar":"customizer","zakra_transparent_header":"customizer","zakra_logo":0,"zakra_main_header_style":"default","zakra_menu_item_color":"","zakra_menu_item_hover_color":"","zakra_menu_item_active_color":"","zakra_menu_active_style":"","zakra_page_header":true,"_lmt_disableupdate":"no","_lmt_disable":"no","footnotes":""},"categories":[1,592],"tags":[],"class_list":["post-20369","post","type-post","status-publish","format-standard","hentry","category-all","category-python"],"modified_by":"IYATT-yx","_links":{"self":[{"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=\/wp\/v2\/posts\/20369","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=20369"}],"version-history":[{"count":1,"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=\/wp\/v2\/posts\/20369\/revisions"}],"predecessor-version":[{"id":20373,"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=\/wp\/v2\/posts\/20369\/revisions\/20373"}],"wp:attachment":[{"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=20369"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=20369"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=20369"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}