2015-08-15 53 views
0

我寫了一個python-cgi腳本(樹莓),在瀏覽器中用一些數據顯示頁面。我將從瀏覽器中輸入常用地址(//localhost/cgi-bin/myscript.py)的其他pc(linux,mac等)進入此頁面。該頁面將以全屏模式顯示。我會在頁面上有一個按鈕,按下後,頁面將關閉並退出瀏覽器。我試着用pygame按鈕和submit(post或get method)按鈕,但沒有成功(我不是真正的專家!)。 有人可以幫助我嗎? 感謝如何從cgi退出?

#!/usr/bin/python 
import os.path, sys, datetime, time 
import cgi, cgitb 
import os 
import RPi.GPIO as io 
import pygame, random, pygame.font, pygame.event, pygame.draw, string 

import common 
pygame.init() 
io.setmode(io.BCM) 
os.system('modprobe w1-gpio') 
os.system('modprobe w1-therm') 

ctime = datetime.datetime.now() 

clock = ctime.strftime("%H:%M") 
date = ctime.strftime("%A %d") 

form = cgi.FieldStorage() 

fileobj = open('/sys/bus/w1/devices/28-0000065fb5c1/w1_slave','r') 
lines1 = fileobj.readlines() 
fileobj.close() 
Temp2 = int(5) 

Temp= form.getvalue(Temp2) 

print "Content-type: text/html\n\n" 

def main(): 

     print "<html>" 
     print "<head>" 
     print "<meta http-equiv='refresh' content='5' >" 

     print "</head>" 
     print "<body>" 
     print "<body bgcolor=""#000000"">" 

     fileobj = open('/sys/bus/w1/devices/28-0000065fb5c1/w1_slave','r') 
     lines1 = fileobj.readlines() 
     fileobj.close() 
     Temp2 = int(5) 
     if (lines1[0][-4])=='Y': 
       pos1=lines1[1].index('t=') 
       Temp2 = int(lines1[1][pos1+2:])/1000 
       Temp2=round(Temp2,1) 
       time.sleep(1) 

     print "<table style=""width:1920px"">" 
     print "<tr height=""60"">" 
     print "</tr>" 
     print "<tr height=""400"">" 

     print "<td width=""442px"" >" 
     print "</td>" 
     if Temp2 <= 32: 

      print "<td width=""345"" background=""//192.168.10.32/dashblue.png"" >" 
      print "<font size=""7"" color=""#00FFF"" face=""sans-serif"" >" 
      print "<p align=""center"">" 
      print "<b>" 
      print Temp2 
      degree = chr(176) 
      print degree 
      print "</b>" 
      print "</p>" 
      print "</font>" 
      print "</td>" 
     elif Temp2 > 32 and Temp2 <= 37: 
      print "<td width=""345"" background=""//192.168.10.32/dashgreen.png"" >" 
      print "<font size=""7"" color=""#00FFF"" face=""sans-serif"" >" 
      print "<p align=""center"">" 
      print "<b>" 
      print Temp2 
      degree = chr(176) 
      print degree 
      print "</b>" 
      print "</p>" 
      print "</font>" 
      print "</td>" 
     if Temp2 > 37: 
      print "<td width=""345"" background=""//192.168.10.32/dashred.png"" >" 
      print "<font size=""7"" color=""#00FFF"" face=""sans-serif"" >" 
      print "<p align=""center"">" 
      print "<b>" 
      print Temp2  
      degree = chr(176) 
      print degree 
      print "</b>" 
      print "</p>" 
      print "</font>" 
      print "</td>" 
     file = open('/home/pi/Downloads/temperat.txt','r') 
     lines = file.readlines() 
     file.close() 
     Temp = float(lines[0][:4]) 
     Temp=round(Temp,1) 
     if Temp <= 22: 

      print "<td width=""345"" background=""//192.168.10.32/dashblue.png"" >" 
      print "<font size=""7"" color=""#00FFF"" face=""sans-serif"" >" 
      print "<p align=""center"">" 
      print "<b>" 
      print Temp 
      degree = chr(176) 
      print degree 
      print "</b>" 
      print "</p>" 
      print "</font>" 
      print "</td>" 
     elif Temp > 22 and Temp <= 26: 
      print "<td width=""345"" background=""//192.168.10.32/dashgreen.png"" >" 
      print "<font size=""7"" color=""#00FFF"" face=""sans-serif"" >" 
      print "<p align=""center"">" 
      print "<b>" 
      print Temp 
      degree = chr(176) 
      print degree 
      print "</b>" 
      print "</p>" 
      print "</font>" 
      print "</td>" 
     if Temp > 27: 
      print "<td width=""345"" background=""//192.168.10.32/dashred.png"" >" 
      print "<font size=""7"" color=""#00FFF"" face=""sans-serif"" >" 
      print "<p align=""center"">" 
      print "<b>" 
      print Temp  
      degree = chr(176) 
      print degree 
      print "</b>" 
      print "</p>" 
      print "</font>" 
      print "</td>" 

     Hum=int(lines[1]) 
     print "<td width=""345"" background=""//192.168.10.32/dashblue.png"" >" 
     print "<font size=""7"" color=""#00FFF"" face=""sans-serif"" >" 
     print"<p align=""center"">" 
     print "<b>" 
     print Hum 
     degree = chr(37) 
     print degree 
     print "</b>" 
     print "</p>" 
     print "</td>" 
     print "<td width=""6%"" >" 
     print "</font>" 
     print "</td>" 

     print "</tr>" 


     print "<tr height=""80"">" 
     print "<td width=""6%"" >" 
     print "</td>" 
     print "<td width=""345"">" 
     print "<font size=""7"" color=""#00FFF"" face=""sans-serif"" >" 
     print "</p>" 
     print "<p align=""center"">" 
     print "Water Temperature" 
     print "</p>" 
     print "</font>" 
     print "</td>" 
     print "<td width=""345"" >" 
     print "<font size=""7"" color=""#00FFF"" face=""sans-serif"" >" 
     print "<p align=""center"">" 
     print "Bath Temperature" 
     print "</p>" 
     print "</font>" 
     print "</td>"  

     print "<td width=""345"" >" 
     print "<font size=""7"" color=""#00FFF"" face=""sans-serif"" >" 
     print"<p align=""center"">" 
     print "Bath Humidity" 
     print "</p>" 
     print "</font>" 
     print "</td>" 
     print "<td width=""442px"" >" 
     print "</td>" 

     print "</tr>" 

     print "</table>" 

     print "<font size=""10"" color=""#00FFF"" face=""sans-serif"" >" 
     print "<h1 align=""center"">now..%s&nbsp&nbsp&nbsp&nbsp%s</h1>" % (date,clock) 

     print "</font>" 
     print "</body>" 
     print "</html>" 
     for event in pygame.event.get(): 
      if event.type == QUIT or (event.type == pygame.KEYUP and event.key == pygame.K_F6): 
       pygame.quit() 
       sys.exit() 


if (__name__=='__main__'): 
     main() 
+0

可能的重複:http://stackoverflow.com/questions/2076299/how-to-close-current-tab-in-a-browser-window –

回答

0

你的問題不是一個Python的問題,這是一個JavaScript的問題,像@rob說,這是這個問題的一個副本:stackoverflow.com/questions/2076299/...

,總結它爲您;您需要使用JavaScript來關閉窗口,但正如其發生的情況一樣,JavaScript以沙盒方式阻止其關閉未由相同腳本在頁面上打開的窗口,因此如果在您的窗口中打開一個選項卡或窗口瀏覽器,並導航到一個頁面,該頁面不能自殺,也不能殺死瀏覽器,它只能關閉並殺死它通過JavaScript啓動的任何窗口。

你唯一能做的就是導航到不同的頁面,比如在JavaScript中執行window.location = 'A DIFFERENT URL';你甚至可以導航到about:blank,在大多數瀏覽器上顯示一個空白頁面。

+0

我試過在javascript中的解決方案,但因爲我得到了在頁面上「關閉」ref,點擊它沒有任何反應。我在上面寫了我的代碼(尚未完成,例如最後的quit函數必須被刪除)。正如你所看到的,我沒有使用JavaScript(我什麼都不知道!),也沒有讓頁面變得動態(我每5秒刷新一次頁面,簡單地說)。根據你的回答,我不認爲有可能得到我想要的。 – user3072083