import sys
from PyQt4 import QtGui, QtCore
from PyQt4.QtCore import Qt
import pywapi
class Main(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.initUI()
def initUI(self):
self.line = QtGui.QLineEdit(self)
self.line.move(90,35)
self.line.resize(500,35)
self.line.setStyleSheet("font-size:15px;")
self.src = QtGui.QPushButton(QtGui.QIcon("icons/find.png"),"",self)
self.src.move(600,34)
self.src.resize(50,35)
self.src.clicked.connect(self.Src)
self.src.setShortcut("RETURN")
self.pix = QtGui.QPixmap("")
self.pic = QtGui.QLabel(self)
self.pic.move(90,110)
self.pic.resize(128,128)
self.pic.setPixmap(self.pix)
self.loc = QtGui.QLabel(self)
self.loc.move(250,90)
self.loc.resize(500,100)
self.loc.setStyleSheet("font-size: 30px;")
self.temp = QtGui.QLabel(self)
self.temp.move(250,160)
self.temp.resize(150,100)
self.temp.setStyleSheet("font-size:50px;")
self.hum = QtGui.QLabel(self)
self.hum.move(410,160)
self.hum.resize(250,100)
self.hum.setStyleSheet("font-size:50px;")
self.text = QtGui.QLabel(self)
self.text.move(70,236)
self.text.resize(180,50)
self.text.setStyleSheet("font-size: 20px;")
self.text.setAlignment(Qt.AlignCenter)
self.time = QtGui.QLabel(self)
self.time.move(250,211)
self.time.resize(400,100)
self.time.setStyleSheet("font-size: 20px;")
self.error = QtGui.QLabel("No such place found ...",self)
self.error.move(90,70)
self.error.resize(500,200)
self.error.setStyleSheet("font-size:40px;")
self.error.hide()
# 1
self.first = QtGui.QLabel(self)
self.first.move(100,300)
self.first.resize(300,100)
self.first.setStyleSheet("font-size:20px;")
self.firstTemp = QtGui.QLabel(self)
self.firstTemp.move(380,300)
self.firstTemp.resize(150,100)
self.firstTemp.setStyleSheet("font-size:20px;")
self.firstHum = QtGui.QLabel(self)
self.firstHum.move(460,300)
self.firstHum.resize(150,100)
self.firstHum.setStyleSheet("font-size:20px;")
self.firstText = QtGui.QLabel(self)
self.firstText.move(550,300)
self.firstText.resize(200,100)
self.firstText.setStyleSheet("font-size:20px;")
# 2
self.sec = QtGui.QLabel(self)
self.sec.move(100,330)
self.sec.resize(300,100)
self.sec.setStyleSheet("font-size:20px;")
self.secTemp = QtGui.QLabel(self)
self.secTemp.move(380,330)
self.secTemp.resize(150,100)
self.secTemp.setStyleSheet("font-size:20px;")
self.secHum = QtGui.QLabel(self)
self.secHum.move(460,330)
self.secHum.resize(150,100)
self.secHum.setStyleSheet("font-size:20px;")
self.secText = QtGui.QLabel(self)
self.secText.move(550,330)
self.secText.resize(200,100)
self.secText.setStyleSheet("font-size:20px;")
# 3
self.three = QtGui.QLabel(self)
self.three.move(100,360)
self.three.resize(300,100)
self.three.setStyleSheet("font-size:20px;")
self.threeTemp = QtGui.QLabel(self)
self.threeTemp.move(380,360)
self.threeTemp.resize(150,100)
self.threeTemp.setStyleSheet("font-size:20px;")
self.threeHum = QtGui.QLabel(self)
self.threeHum.move(460,360)
self.threeHum.resize(150,100)
self.threeHum.setStyleSheet("font-size:20px;")
self.threeText = QtGui.QLabel(self)
self.threeText.move(550,360)
self.threeText.resize(200,100)
self.threeText.setStyleSheet("font-size:20px;")
# 4
self.four = QtGui.QLabel(self)
self.four.move(100,390)
self.four.resize(300,100)
self.four.setStyleSheet("font-size:20px;")
self.fourTemp = QtGui.QLabel(self)
self.fourTemp.move(380,390)
self.fourTemp.resize(150,100)
self.fourTemp.setStyleSheet("font-size:20px;")
self.fourHum = QtGui.QLabel(self)
self.fourHum.move(460,390)
self.fourHum.resize(150,100)
self.fourHum.setStyleSheet("font-size:20px;")
self.fourText = QtGui.QLabel(self)
self.fourText.move(550,390)
self.fourText.resize(200,100)
self.fourText.setStyleSheet("font-size:20px;")
# 5
self.five = QtGui.QLabel(self)
self.five.move(100,420)
self.five.resize(300,100)
self.five.setStyleSheet("font-size:20px;")
self.fiveTemp = QtGui.QLabel(self)
self.fiveTemp.move(380,420)
self.fiveTemp.resize(150,100)
self.fiveTemp.setStyleSheet("font-size:20px;")
self.fiveHum = QtGui.QLabel(self)
self.fiveHum.move(460,420)
self.fiveHum.resize(150,100)
self.fiveHum.setStyleSheet("font-size:20px;")
self.fiveText = QtGui.QLabel(self)
self.fiveText.move(550,420)
self.fiveText.resize(200,100)
self.fiveText.setStyleSheet("font-size:20px;")
#---------Window settings --------------------------------
self.setGeometry(300,300,750,500)
self.setFixedSize(760,520)
self.setWindowTitle("PySun")
self.setWindowIcon(QtGui.QIcon("icons/partly.png"))
self.setStyleSheet("background-color:")
self.show()
def Src(self):
global text
global temp
global loc
global time
global hum
global day1
global day1Temp
global day1Hum
global day1Text
global day2
global day2Temp
global day2Hum
global day2Text
global day3
global day3Temp
global day3Hum
global day3Text
global day4
global day4Temp
global day4Hum
global day4Text
global day5
global day5Temp
global day5Hum
global day5Text
try:
text = self.line.text()
location_info = pywapi.get_location_ids(text)
for i in location_info:
location_id = i
for i in location_info.values():
loc = i
print(location_id,loc)
except:
self.text.hide()
self.time.hide()
self.pic.hide()
self.temp.hide()
self.loc.hide()
self.hum.hide()
self.error.show()
self.first.hide()
self.firstTemp.hide()
self.firstHum.hide()
self.firstText.hide()
self.sec.hide()
self.secTemp.hide()
self.secHum.hide()
self.secText.hide()
self.three.hide()
self.threeTemp.hide()
self.threeHum.hide()
self.threeText.hide()
self.four.hide()
self.fourTemp.hide()
self.fourHum.hide()
self.fourText.hide()
self.five.hide()
self.fiveTemp.hide()
self.fiveHum.hide()
self.fiveText.hide()
weather_com_result = pywapi.get_weather_from_weather_com(location_id)
print(weather_com_result['current_conditions']['text'],weather_com_result['current_conditions']['temperature']+"°",weather_com_result['current_conditions']['last_updated'],weather_com_result["current_conditions"]["humidity"])
text = weather_com_result['current_conditions']['text']
temp = weather_com_result['current_conditions']['temperature']+"°C"
time = "last updated "+weather_com_result['current_conditions']['last_updated']
hum = "☂ "+weather_com_result['current_conditions']['humidity']+"%"
day1 = weather_com_result['forecasts'][0]['day_of_week'] + " " + weather_com_result['forecasts'][0]['date']
day1Temp = weather_com_result['forecasts'][0]['high'] + "/" + weather_com_result['forecasts'][0]['low']
day1Hum = "☂ "+weather_com_result['forecasts'][0]['day']['humidity']+"%"
day1Text = weather_com_result['forecasts'][0]['day']['text']
day2 = weather_com_result['forecasts'][1]['day_of_week'] + " " + weather_com_result['forecasts'][1]['date']
day2Temp = weather_com_result['forecasts'][1]['high'] + "/" + weather_com_result['forecasts'][1]['low']
day2Hum = "☂ "+weather_com_result['forecasts'][1]['day']['humidity']+"%"
day2Text = weather_com_result['forecasts'][1]['day']['text']
day3 = weather_com_result['forecasts'][2]['day_of_week'] + " " + weather_com_result['forecasts'][2]['date']
day3Temp = weather_com_result['forecasts'][2]['high'] + "/" + weather_com_result['forecasts'][2]['low']
day3Hum = "☂ "+weather_com_result['forecasts'][2]['day']['humidity']+"%"
day3Text = weather_com_result['forecasts'][2]['day']['text']
day4 = weather_com_result['forecasts'][3]['day_of_week'] + " " + weather_com_result['forecasts'][3]['date']
day4Temp = weather_com_result['forecasts'][3]['high'] + "/" + weather_com_result['forecasts'][3]['low']
day4Hum = "☂ "+weather_com_result['forecasts'][3]['day']['humidity']+"%"
day4Text = weather_com_result['forecasts'][3]['day']['text']
day5 = weather_com_result['forecasts'][4]['day_of_week'] + " " + weather_com_result['forecasts'][4]['date']
day5Temp = weather_com_result['forecasts'][4]['high'] + "/" + weather_com_result['forecasts'][4]['low']
day5Hum = "☂ "+weather_com_result['forecasts'][4]['day']['humidity']+"%"
day5Text = weather_com_result['forecasts'][4]['day']['text']
self.Forecast()
def Forecast(self):
global text
global temp
global loc
global time
global hum
global day1
global day1Temp
global day1Hum
global day1Text
global day2
global day2Temp
global day2Hum
global day2Text
global day3
global day3Temp
global day3Hum
global day3Text
global day4
global day4Temp
global day4Hum
global day4Text
global day5
global day5Temp
global day5Hum
global day5Text
self.text.show()
self.time.show()
self.pic.show()
self.temp.show()
self.loc.show()
self.hum.show()
self.first.show()
self.firstTemp.show()
self.firstHum.show()
self.firstText.show()
self.sec.show()
self.secTemp.show()
self.secHum.show()
self.secText.show()
self.three.show()
self.threeTemp.show()
self.threeHum.show()
self.threeText.show()
self.four.show()
self.fourTemp.show()
self.fourHum.show()
self.fourText.show()
self.five.show()
self.fiveTemp.show()
self.fiveHum.show()
self.fiveText.show()
self.error.hide()
self.loc.setText(loc)
self.temp.setText(temp)
self.text.setText(text)
self.time.setText(time)
self.hum.setText(hum)
self.first.setText(day1)
self.firstTemp.setText(day1Temp)
self.firstHum.setText(day1Hum)
self.firstText.setText(day1Text)
self.sec.setText(day2)
self.secTemp.setText(day2Temp)
self.secHum.setText(day2Hum)
self.secText.setText(day2Text)
self.three.setText(day3)
self.threeTemp.setText(day3Temp)
self.threeHum.setText(day3Hum)
self.threeText.setText(day3Text)
self.four.setText(day4)
self.fourTemp.setText(day4Temp)
self.fourHum.setText(day4Hum)
self.fourText.setText(day4Text)
self.five.setText(day5)
self.fiveTemp.setText(day5Temp)
self.fiveHum.setText(day5Hum)
self.fiveText.setText(day5Text)
if text == "Partly Cloudy" or text == "Fair" or text == "AM Clouds / PM Sun":
self.pix = QtGui.QPixmap("icons/partly.png")
self.pic.setPixmap(self.pix)
elif text == "Cloudy" or text == "Mostly Cloudy":
self.pix = QtGui.QPixmap("icons/cloudy.png")
self.pic.setPixmap(self.pix)
elif text == "Sunny" or text == "Mostly Sunny":
self.pix = QtGui.QPixmap("icons/sunny.png")
self.pic.setPixmap(self.pix)
elif text == "Showers Early" or text == "Showers" or text == "AM Showers" or text == "Few Showers" or text == "Scattered Showers" or text == "Light Rain Shower":
self.pix = QtGui.QPixmap("icons/rainy.png")
self.pic.setPixmap(self.pix)
elif text == "Clear" or text == "Mostly Clear":
self.pix = QtGui.QPixmap("icons/clear.png")
self.pic.setPixmap(self.pix)
self.pic.move(110,110)
elif text == "Isolated T-Storms" or text == "PM T-Storms" or text == "Scattered T-Storms":
self.pix = QtGui.QPixmap("icons/stormy.png")
self.pic.setPixmap(self.pix)
def main():
app = QtGui.QApplication(sys.argv)
main= Main()
main.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main()
Enter any location in the world! Copy the code or take any parts you might find useful. If you have any questions or ideas for improvements (I know I could reduce the code by making some lists) leave me a comment. Have fun!
No comments :
Post a Comment