Avid reader
Posts: 825
Karma: 6377682
Join Date: Apr 2009
Location: UK
Device: Samsung Galaxy Z Flip 4 / Kindle Paperwhite
|
Quote:
Originally Posted by neonpolaris
Fantastic work, I was able to get the weather display working on my kobo wifi easily! I''m now working on making it display some custom data of my own. How did you edit the python file during development? vi is such a pain to use, is there some easy way to get nano (or similar) running on the device?
|
I've added a few bits to the display routine in my copy to make it run sensibly on Windows as well as the Kobo (though I haven't tested it on the device yet). I intend doing all the development under Windows then hopefully copy it across and off I go.
Code:
def display(days, highs, lows, conditions, img_links, unit):
print("Creating image . . .")
#### change for windows + python 2.6
if (platform.system() == 'Windows'):
pygame.init()
else:
pygame.display.init()
###
pygame.font.init()
pygame.mouse.set_visible(False)
white = (255, 255, 255)
black = (0, 0, 0)
gray = (125, 125, 125)
#### change for windows
###
if (platform.system() == 'Windows'):
display = pygame.display.set_mode((600, 800))
else:
display = pygame.display.set_mode((800, 600), pygame.FULLSCREEN)
###
screen = pygame.Surface((600, 800))
screen.fill(white)
tiny_font = pygame.font.Font("Cabin-Regular.otf", 18)
small_font = pygame.font.Font("Fabrica.otf", 22)
font = pygame.font.Font("Forum-Regular.otf", 40)
comfortaa = pygame.font.Font("Comfortaa-Regular.otf", 60)
comfortaa_small = pygame.font.Font("Comfortaa-Regular.otf", 35)
# Dividing lines
pygame.draw.line(screen, gray, (10, 200), (590, 200))
pygame.draw.line(screen, gray, (10, 400), (590, 400))
pygame.draw.line(screen, gray, (200, 410), (200, 790))
pygame.draw.line(screen, gray, (400, 410), (400, 790))
# Today
date = small_font.render(days[0], True, black, white)
date_rect = date.get_rect()
date_rect.topleft = 10, 15
high = small_font.render('high: ', True, black, white)
high_rect = high.get_rect()
high_temp = comfortaa.render(highs[0], True, black, white)
htemp_rect = high_temp.get_rect()
high_rect.topleft = (50, 100)
htemp_rect.topleft = high_rect.topright
low = small_font.render("low: ", True, black, white)
low_rect = low.get_rect()
low_rect.topleft = (400, 100)
low_temp = comfortaa.render(lows[0], True, black, white)
ltemp_rect = low_temp.get_rect()
ltemp_rect.topleft = low_rect.topright
condition = font.render(conditions[0], True, black, white)
con_rect = condition.get_rect()
con_rect.centerx = 300
con_rect.top = 5
# Make sure words don't overlap
if con_rect.left < date_rect.right:
con_rect.left = date_rect.right
image = pygame.image.load(img_links[0])
image.set_colorkey((255, 255, 255))
img_rect = image.get_rect()
img_rect.center = (300, 125)
degrees = pygame.image.load("icons/%s.png" % unit)
screen.blit(condition, con_rect)
screen.blit(high, high_rect)
screen.blit(degrees, htemp_rect.topright)
screen.blit(degrees, ltemp_rect.topright)
screen.blit(high_temp, htemp_rect)
screen.blit(low, low_rect)
screen.blit(low_temp, ltemp_rect)
screen.blit(image, img_rect)
screen.blit(date, date_rect)
# Tomorrow
date = small_font.render(days[1], True, black, white)
date_rect = date.get_rect()
date_rect.topleft = 10, 210
high = small_font.render('high: ', True, black, white)
high_rect = high.get_rect()
high_temp = comfortaa.render(highs[1], True, black, white)
htemp_rect = high_temp.get_rect()
high_rect.topleft = (50, 300)
htemp_rect.topleft = high_rect.topright
low = small_font.render("low: ", True, black, white)
low_rect = low.get_rect()
low_rect.topleft = (400, 300)
low_temp = comfortaa.render(lows[1], True, black, white)
ltemp_rect = low_temp.get_rect()
ltemp_rect.topleft = low_rect.topright
condition = font.render(conditions[1], True, black, white)
con_rect = condition.get_rect()
con_rect.centerx = 300
con_rect.top = 210
if con_rect.left < date_rect.right:
con_rect.left = date_rect.right
image = pygame.image.load(img_links[1])
image.set_colorkey((255, 255, 255))
img_rect = image.get_rect()
img_rect.center = (300, 325)
screen.blit(condition, con_rect)
screen.blit(high, high_rect)
screen.blit(degrees, htemp_rect.topright)
screen.blit(degrees, ltemp_rect.topright)
screen.blit(high_temp, htemp_rect)
screen.blit(low, low_rect)
screen.blit(low_temp, ltemp_rect)
screen.blit(image, img_rect)
screen.blit(date, date_rect)
# Day 3
date = small_font.render(days[2], True, black, white)
date_rect = date.get_rect()
date_rect.centerx = 100
date_rect.top = 410
high = small_font.render('high: ', True, black, white)
high_rect = high.get_rect()
high_temp = comfortaa_small.render(highs[2], True, black, white)
htemp_rect = high_temp.get_rect()
high_rect.topright = (100, 630)
htemp_rect.midleft = high_rect.midright
low = small_font.render("low: ", True, black, white)
low_rect = low.get_rect()
low_rect.topright = (100, 710)
low_temp = comfortaa_small.render(lows[2], True, black, white)
ltemp_rect = low_temp.get_rect()
ltemp_rect.midleft = low_rect.midright
condition = tiny_font.render(conditions[2], True, black, white)
con_rect = condition.get_rect()
con_rect.centerx = 100
con_rect.top = 450
image = pygame.image.load(img_links[2])
image.set_colorkey((255, 255, 255))
img_rect = image.get_rect()
img_rect.center = (100, 540)
screen.blit(condition, con_rect)
screen.blit(high, high_rect)
screen.blit(degrees, htemp_rect.topright)
screen.blit(degrees, ltemp_rect.topright)
screen.blit(high_temp, htemp_rect)
screen.blit(low, low_rect)
screen.blit(low_temp, ltemp_rect)
screen.blit(image, img_rect)
screen.blit(date, date_rect)
# Day 4
date = small_font.render(days[3], True, black, white)
date_rect = date.get_rect()
date_rect.centerx = 300
date_rect.top = 410
high = small_font.render('high: ', True, black, white)
high_rect = high.get_rect()
high_temp = comfortaa_small.render(highs[3], True, black, white)
htemp_rect = high_temp.get_rect()
high_rect.topright = (300, 630)
htemp_rect.midleft = high_rect.midright
low = small_font.render("low: ", True, black, white)
low_rect = low.get_rect()
low_rect.topright = (300, 710)
low_temp = comfortaa_small.render(lows[3], True, black, white)
ltemp_rect = low_temp.get_rect()
ltemp_rect.midleft = low_rect.midright
condition = tiny_font.render(conditions[3], True, black, white)
con_rect = condition.get_rect()
con_rect.centerx = 300
con_rect.top = 450
image = pygame.image.load(img_links[3])
image.set_colorkey((255, 255, 255))
img_rect = image.get_rect()
img_rect.center = (300, 540)
screen.blit(condition, con_rect)
screen.blit(high, high_rect)
screen.blit(degrees, htemp_rect.topright)
screen.blit(degrees, ltemp_rect.topright)
screen.blit(high_temp, htemp_rect)
screen.blit(low, low_rect)
screen.blit(low_temp, ltemp_rect)
screen.blit(image, img_rect)
screen.blit(date, date_rect)
# Day 5
date = small_font.render(days[4], True, black, white)
date_rect = date.get_rect()
date_rect.centerx = 500
date_rect.top = 410
high = small_font.render('high: ', True, black, white)
high_rect = high.get_rect()
high_temp = comfortaa_small.render(highs[4], True, black, white)
htemp_rect = high_temp.get_rect()
high_rect.topright = (500, 630)
htemp_rect.midleft = high_rect.midright
low = small_font.render("low: ", True, black, white)
low_rect = low.get_rect()
low_rect.topright = (500, 710)
low_temp = comfortaa_small.render(lows[4], True, black, white)
ltemp_rect = low_temp.get_rect()
ltemp_rect.midleft = low_rect.midright
condition = tiny_font.render(conditions[4], True, black, white)
con_rect = condition.get_rect()
con_rect.centerx = 500
con_rect.top = 450
image = pygame.image.load(img_links[4])
image.set_colorkey((255, 255, 255))
img_rect = image.get_rect()
img_rect.center = (500, 540)
screen.blit(condition, con_rect)
screen.blit(high, high_rect)
screen.blit(degrees, htemp_rect.topright)
screen.blit(degrees, ltemp_rect.topright)
screen.blit(high_temp, htemp_rect)
screen.blit(low, low_rect)
screen.blit(low_temp, ltemp_rect)
screen.blit(image, img_rect)
screen.blit(date, date_rect)
### change for windows
if (platform.system() == 'Windows'):
update_time = "Last updated at " + datetime.now().strftime("%I:%M%p")
else:
update_time = "Last updated at " + datetime.now().strftime("%l:%M%P")
###
last_update = tiny_font.render(update_time, True, gray, white)
screen.blit(last_update, (5, 770))
# Rotate the display to portrait view.
### change for windows
if (platform.system() == 'Windows'):
graphic = pygame.transform.rotate(screen, 0)
else:
graphic = pygame.transform.rotate(screen, 90)
###
display.blit(graphic, (0, 0))
pygame.display.update()
### change for windows
if (platform.system() == 'Windows'):
running = True
while running:
for event in pygame.event.get():
if event.type == QUIT:
running = False
elif event.type == KEYDOWN and event.key == K_ESCAPE:
pygame.event.post(pygame.event.Event(QUIT))
pygame.quit()
else:
call(["./full_update"])
###
#convert_to_raw(screen)
#call(["/mnt/onboard/.python/display_raw.sh"])
#index_error(error)
Andrew
|