So I've looked across the deepest reaches of the Internet and cannot seem to find a solution to my issue. I'm using PyCharm Community Edition 2017.1.1 on MacOS 10.12.4 and using curses in the following code with Python 3.6.1.
#!/usr/local/bin/python3
import sys
import urllib.request
import json
import time
from datetime import datetime
from datetime import timezone
import curses
import ssl
class Stock:
def stockFromYahooWebService(ticker):
url = "https://finance.yahoo.com/webservice/v1/symbols/{}/quote?format=json&view=detail".format(ticker.upper())
user_agent = "Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1"
urlrequest = urllib.request.Request(url, data=None, headers={"User-Agent": user_agent})
ssl._create_default_https_context = ssl._create_unverified_context
urlcontent = json.loads(urllib.request.urlopen(urlrequest).read().decode())
fields = urlcontent['list']['resources'][0]['resource']['fields']
return fields
stdscr = curses.initscr()
curses.cbreak()
stdscr.keypad(1)
try:
if len(sys.argv) == 2:
ticker = sys.argv[1]
while ('true') :
stdscr.erase()
fields = Stock.stockFromYahooWebService(ticker)
utctime = datetime.strptime(fields['utctime'], "%Y-%m-%dT%H:%M:%S+%f")
localtime = utctime.replace(tzinfo=timezone.utc).astimezone(tz=None)
localtimeString = localtime.strftime("%I:%M%p %Z %m/%d/%y")
stdscr.addstr(0, 0, "{} ({})".format(fields['issuer_name'], fields['symbol']))
stdscr.addstr(1, 0, "Price: ${:,.2f}".format(float(fields['price'])))
stdscr.addstr(2, 0, "Change: {:+,.2f} ({:+,.2f}%)".format(float(fields['change']),float( fields['chg_percent'])))
stdscr.addstr(3, 0, "Volume: {:,}".format(int(fields['volume'])))
stdscr.addstr(4, 0, "Last Trade: {}".format(localtimeString))
stdscr.refresh()
time.sleep(5)
finally:
curses.nocbreak()
stdscr.keypad(0)
curses.echo()
curses.endwin()
if len(sys.argv) != 2 :
print('Usage: ./rtquote.py <ticker>')
I know that PyCharm uses its own terminal to display the output, and I can't seem to figure out how to configure it so that my program runs within PyCharm. I can successfully run my program in Mac's terminal, however I want to be able to do it in inside PyCharm.
I am humbly turning to you, the kind strangers of the Internet, for your help. Please let me know if what I'm trying to do is even possible in PyCharm, and if so, how can this be done.
I get the following error in PyCharm's terminal window:
)07[?47h[1;24r[m[4lTraceback (most recent call last):
File "/rtquote.py", line 24, in <module>
curses.cbreak()
_curses.error: cbreak() returned ERR
Process finished with exit code 1
Using curses, programmers are able to write text-based applications without writing directly for any specific terminal type. The curses library on the executing system sends the correct control characters based on the terminal type. It provides an abstraction of one or more windows that maps onto the terminal screen.
I solved this problem by configuring the running preferences :
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With