{"id":626,"date":"2020-07-02T11:34:33","date_gmt":"2020-07-02T03:34:33","guid":{"rendered":"https:\/\/www.iotch.xyz\/?p=626"},"modified":"2020-07-02T11:34:33","modified_gmt":"2020-07-02T03:34:33","slug":"%e4%bd%bf%e7%94%a8pyqt%e6%a0%91%e8%8e%93%e6%b4%be%e5%88%b6%e4%bd%9c%e4%b8%80%e4%b8%aa%e7%94%b5%e5%ad%90%e8%a1%a8","status":"publish","type":"post","link":"https:\/\/www.iotch.xyz\/?p=626","title":{"rendered":"\u4f7f\u7528PyQT&#038;\u6811\u8393\u6d3e\u5236\u4f5c\u4e00\u4e2a\u7535\u5b50\u8868"},"content":{"rendered":"\n<p>\u5403\u7070\u7684\u5f88\u4e45\u6811\u8393\u6d3e b \u5076\u7136\u7ffb\u51fa\u6765 \u5e72\u8106\u62ff\u6765\u505a\u4e00\u4e2a\u8868\u5427,\u7cfb\u7edf\u91c7\u7528\u5b98\u65b9\u56fa\u4ef6 <strong>Raspberry Pi OS<\/strong>(Raspbian) ,\u7531\u4e8e\u6211\u7684\u5c4f\u5e55\u65f6\u7531HDMI \u9a71\u52a8\u6240\u4ee5\u65e0\u9700\u7279\u6b8a\u914d\u7f6e\u5176\u4ed6\u9a71\u52a8<\/p>\n\n\n\n<p>\u88c5\u5b8c\u7cfb\u7edf\u76f4\u63a5\u5b89\u88c5PyQt\u5373\u53ef sudo apt-get install python3-pyqt5<\/p>\n\n\n\n<p>\u4ee3\u7801\u6bd4\u8f83\u7b80\u5355 \u7b80\u5355\u8bf4\u4e00\u4e0b,\u56e0\u4e3a\u65f6\u95f4\u9700\u8981\u6bcf\u79d2\u5237\u65b0,\u6240\u4ee5\u9700\u8981\u7528\u5230\u591a\u7ebf\u7a0b\u6765\u9632\u6b62\u5361\u6b7bUI<\/p>\n\n\n\n<p>\u6211\u4eec\u53ef\u4ee5\u91cd\u5199run\u65b9\u6cd5\u6765\u5b9e\u73b0<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class UpdateTime(QThread):\n    signal = pyqtSignal(str,str,str)   #\u62ec\u53f7\u91cc\u586b\u5199\u4fe1\u53f7\u4f20\u9012\u7684\u53c2\u6570\u7c7b\u578b\uff0c\u8c03\u7528TimeTick\u7684\u51fd\u6570\u8981\u548c\u8fd9\u91cc\u5bf9\u5e94\n\n    def __init__(self):\n        super().__init__()\n\n    def __del__(self):\n        self.wait()\n\n    def run(self):\n        global picInt\n        global timeUpdate\n        while True:\n            timeUpdate = datetime.datetime.now() #\u6bcf\u79d2\u83b7\u53d6\u4e0b\u65f6\u95f4\n            strtime0 = timeUpdate.strftime('%S')\n\n            strtime1 = timeUpdate.strftime('%H:%M:%S') #\u65f6 \u5206 \u79d2 \n            strtime2 = timeUpdate.strftime('%w') #\u661f\u671f\n            strtime3 = timeUpdate.strftime('%m') #\u6708\n            strtime4 = timeUpdate.strftime('%d') #\u65e5\n\n            self.signal.emit(strtime1,todayWeek(strtime2),str(strtime3+\"\u6708\"+strtime4+\"\u65e5\"))    # \u53d1\u5c04\u4fe1\u53f7\n\n            picInt = int(strtime0)#\u8fd9\u91cc\u5355\u72ec\u5b58\u4e00\u4e2a\u79d2\u7528\u6765\u5224\u65ad\u6362\u56fe\u65f6\u95f4\n            time.sleep(1)<\/code><\/pre>\n\n\n\n<p>\u4e0b\u9762\u662f\u5b8c\u6574\u4ee3\u7801<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import os\nimport sys\nimport subprocess # \u6ce8\u610fPython3.X commands\u5df2\u7ecf\u6539\u540d subprocess \nfrom PyQt5 import QtCore, QtWidgets, QtWidgets ,uic\nfrom PyQt5.QtCore import Qt, QThread,pyqtSignal\nfrom PyQt5.QtGui import QPalette, QBrush, QPixmap\nimport time\nimport datetime\nimport socket\n\nrunDirectory = sys.path&#91;0] #py\u811a\u672c\u8fd0\u884c\u76ee\u5f55\npalette = QPalette()\npicInt = 0\npicCount = 0\n#timeUpdate = 0\n\n\ndef get_cpu_temp():\n    tempFile = open( \"\/sys\/class\/thermal\/thermal_zone0\/temp\" )\n    cpu_temp = tempFile.read()\n    tempFile.close()\n    return float(cpu_temp)\/1000\n \ndef get_gpu_temp():\n    gpu_temp = subprocess.getoutput( '\/opt\/vc\/bin\/vcgencmd measure_temp' ).replace( 'temp=', '' ).replace( '\\'C', '' )\n    return  float(gpu_temp)\n\ndef get_host_ip():\n\n    try:\n        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)\n        s.connect(('8.8.8.8', 80))\n        ip = s.getsockname()&#91;0]\n    finally:\n        s.close()\n    return str(ip)\n\ndef todayWeek(nowWeek):\n    if nowWeek == \"0\":\n        return\"\u661f\u671f\u5929\"\n    elif nowWeek ==\"1\":\n        return\"\u661f\u671f\u4e00\"\n    elif nowWeek ==\"2\":\n        return\"\u661f\u671f\u4e8c\"\n    elif nowWeek ==\"3\":\n        return\"\u661f\u671f\u4e09\"\n    elif nowWeek ==\"4\":\n        return\"\u661f\u671f\u56db\"\n    elif nowWeek ==\"5\":\n        return\"\u661f\u671f\u4e94\"\n    elif nowWeek ==\"6\":\n        return\"\u661f\u671f\u516d\"\n\nclass UpdateTime(QThread):\n    signal = pyqtSignal(str,str,str)   #\u62ec\u53f7\u91cc\u586b\u5199\u4fe1\u53f7\u4f20\u9012\u7684\u53c2\u6570\u7c7b\u578b\uff0c\u8c03\u7528TimeTick\u7684\u51fd\u6570\u8981\u548c\u8fd9\u91cc\u5bf9\u5e94\n\n    def __init__(self):\n        super().__init__()\n\n    def __del__(self):\n        self.wait()\n\n    def run(self):\n        global picInt\n        global timeUpdate\n        while True:\n            timeUpdate = datetime.datetime.now() #\u6bcf\u79d2\u83b7\u53d6\u4e0b\u65f6\u95f4\n            strtime0 = timeUpdate.strftime('%S')\n\n            strtime1 = timeUpdate.strftime('%H:%M:%S') #\u65f6 \u5206 \u79d2 \n            strtime2 = timeUpdate.strftime('%w') #\u661f\u671f\n            strtime3 = timeUpdate.strftime('%m') #\u6708\n            strtime4 = timeUpdate.strftime('%d') #\u65e5\n\n            self.signal.emit(strtime1,todayWeek(strtime2),str(strtime3+\"\u6708\"+strtime4+\"\u65e5\"))    # \u53d1\u5c04\u4fe1\u53f7\n\n            picInt = int(strtime0)\n            time.sleep(1)\n\n\nclass UpdateBackground(QThread):\n    signa2 = pyqtSignal(int,float,float,str)\n\n    def __init__(self):\n        super().__init__()\n\n    def __del__(self):\n        self.wait()\n\n    def run(self):\n        global picInt\n        global picCount\n        while True:\n            if picInt == 59:  #\u6bcf\u5206\u949f\u66f4\u65b0 \u6e29\u5ea6,ip,\u53ca\u80cc\u666f\u56fe\u7247\n                cpuTemp = get_cpu_temp()\n                gpuTemp = get_gpu_temp()\n                ipTemp = get_host_ip()\n                picCount += 1\n                if picCount == 6: #\u6211\u5c316\u5f20\u56fe\u7247\n                    picCount = 0\n                self.signa2.emit(picCount,cpuTemp,gpuTemp,ipTemp)\n            time.sleep(1)\n \nclass Ui(QtWidgets.QMainWindow):\n    def __init__(self):\n        super(Ui, self).__init__()\n        uic.loadUi(runDirectory + \"\/test.ui\", self)\n\n\n        self.thread = UpdateTime() # \u521b\u5efa\u4e00\u4e2a\u7ebf\u7a0b\n        self.thread.signal.connect(self.TimeTick) #\u7ed1\u5b9a\u4fe1\u53f7\u89e6\u6cd5\u7684\u51fd\u6570\n        self.thread.start()    # \u542f\u52a8\u7ebf\u7a0b\n\n        self.thread2 = UpdateBackground() #\u521b\u5efa\u7b2c\u4e8c\u4e2a\u7ebf\u7a0b\u7528\u6765\u66f4\u65b0\u80cc\u666f\u56fe\u7247\n        self.thread2.signa2.connect(self.setBackground) \n        self.thread2.start()  \n\n        cpuTemp = get_cpu_temp()\n        gpuTemp = get_gpu_temp()\n        ipTemp = get_host_ip()\n        self.label_Temp.setText(\"CPU\u6e29\u5ea6:\"+str(cpuTemp) +\" GPU\u6e29\u5ea6:\"+ str(gpuTemp) )\n        self.label_IP.setText(\"IP:\"+ipTemp)\n        self.show()\n\n    def TimeTick(self,msg,msg2,msg3): #\u6ce8\u610f\u4f20\u53c2\u53d8\u91cf\u8981\u5199\n        self.label.setText(msg) \n        self.label_2.setText(msg2)\n        self.label_3.setText(msg3)\n\n    def setBackground(self,intCount,cpuTemp,gpuTemp,ipTemp):\n        palette = QPalette() #\u8bbe\u7f6e\u8c03\u8272\u677f\n        palette.setBrush(QPalette.Background, QBrush(QPixmap(runDirectory+\"\/Background\"+ str(intCount)+\".png\")))\n        self.setPalette(palette)\n        self.label_Temp.setText(\"CPU\u6e29\u5ea6:\"+str(cpuTemp) +\" GPU\u6e29\u5ea6:\"+ str(gpuTemp))\n        self.label_IP.setText(\"IP:\"+ipTemp)\napp = QtWidgets.QApplication(sys.argv)\nwindow = Ui()\n\npalette = QPalette() #\u542f\u52a8\u65f6\u5148\u8bbe\u4e00\u4e2a\u80cc\u666f\npalette.setBrush(QPalette.Background, QBrush(QPixmap(runDirectory+\"\/Background4.png\")))\n\nwindow.setPalette(palette)\nwindow.showFullScreen() #\u5168\u5c4f\u663e\u793a\napp.exec_()\n<\/code><\/pre>\n\n\n\n<p>\u6548\u679c<\/p>\n\n\n\n<p>\u5de5\u7a0b\u4e0b\u8f7d <a href=\"https:\/\/link.zhihu.com\/?target=https%3A\/\/github.com\/ShaderFallback\/Raspberry-Pi-PyQt\" target=\"_blank\" rel=\"noreferrer noopener\" rel=\"nofollow\" >https:\/\/github.com\/ShaderFallback\/Raspberry-Pi-PyQt<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/pic4.zhimg.com\/80\/v2-a498b4ca7e64cb865bfa4f650bfd833f_720w.jpg\" alt=\"\"\/><\/figure>\n\n\n\n<p>\u539f\u6587\u94fe\u63a5\uff1a<a href=\"https:\/\/zhuanlan.zhihu.com\/p\/149887210\" target=\"_blank\"  rel=\"nofollow\" >https:\/\/zhuanlan.zhihu.com\/p\/149887210<\/a><\/p>\n<button class=\"simplefavorite-button\" data-postid=\"626\" data-siteid=\"1\" data-groupid=\"1\" data-favoritecount=\"0\" style=\"\">\u6536\u85cf <i class=\"sf-icon-star-empty\"><\/i><\/button>","protected":false},"excerpt":{"rendered":"<p>\u5403\u7070\u7684\u5f88\u4e45\u6811\u8393\u6d3e b \u5076\u7136\u7ffb\u51fa\u6765 \u5e72\u8106\u62ff\u6765\u505a\u4e00\u4e2a\u8868\u5427,\u7cfb\u7edf\u91c7\u7528\u5b98\u65b9\u56fa\u4ef6 Raspberry Pi OS(Raspbian) ,\u7531\u4e8e &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[],"class_list":["post-626","post","type-post","status-publish","format-standard","hentry","category-11"],"_links":{"self":[{"href":"https:\/\/www.iotch.xyz\/index.php?rest_route=\/wp\/v2\/posts\/626","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.iotch.xyz\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.iotch.xyz\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.iotch.xyz\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.iotch.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=626"}],"version-history":[{"count":0,"href":"https:\/\/www.iotch.xyz\/index.php?rest_route=\/wp\/v2\/posts\/626\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.iotch.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=626"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.iotch.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=626"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.iotch.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=626"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}