Здравствуйте. Я разрабатываю эту программу, чтобы использовать API для получения цены открытия и закрытия определенных акций, которые вводит пользователь. Я делаю gui часть программы, используя PySimple Gui. У меня есть много текстовых полей, где пользователь вводит символ тикера. Затем я сохраняю это в список под названием tickerList
. Затем я пишу этот список в storedTickers.txt
. Затем я создал в другом файле readTickers.py
функцию openTickerList()
. Теоретически я хотел, чтобы пользователь вводил тикеры, чтобы он мог закрыть программу, и когда он снова откроет ее, tickerList
будет равен openTickerList()
, но у меня возникают некоторые проблемы, когда я ставлю символы тикера в текстовых полях и нажав «готово», он сохраняет их в текстовом файле, но если я снова открою программу и просто нажму «х», он удалит текстовый файл. Это не должно происходить, потому что список должен обновляться только если я нажимаю Done
(я установил обработчик события оператора if) Причина, по которой мне нужен человек, чтобы иметь возможность открывать и закрывать программу без ввода новых тикеров, состоит в том, что ему нужно нажать кнопку Get Stock Info
(которая будет использовать сохраненные тикеры, а затем получить информацию об акциях из API)
Вот код для gui.py
import PySimpleGUI as sg
import pickle
global tickerList
global keyNames
global fileName
global openFile
global tryList
from readTickers import openTickerList
openFile = open('storedTickers.txt', 'w')
#tickerList = pickle.load(openFile)
tickerList = openTickerList() #this should get the tickers from the last time the person entered them
def eraseFile():
openFile.truncate(0)
keyNames = ['first entry', 'second entry', 'third entry', 'fourth entry', 'fifth entry', 'sixth entry', 'seventh entry', 'eighth entry',
'ninth entry', 'tenth entry', 'eleventh entry', 'twelfth entry', 'thirteenth entry', 'fourteenth entry', 'fifteenth entry',
'sixteenth entry', 'seventeenth entry', 'eighteenth entry', 'nineteenth entry', 'twentieth entry']
sg.theme('Dark')
layout = [
[sg.Button('Done')],
[sg.Button('Reset All Tickers')],
[sg.Button('Get Stock Info')],
[sg.Text('1:'), sg.InputText(key='first entry'), sg.Text('11:'), sg.InputText(key='eleventh entry')],
[sg.Text('2:'), sg.InputText(key='second entry'), sg.Text('12:'), sg.InputText(key='twelfth entry')],
[sg.Text('3:'), sg.InputText(key='third entry'), sg.Text('13:'), sg.InputText(key='thirteenth entry')],
[sg.Text('4:'), sg.InputText(key='fourth entry'), sg.Text('14:'), sg.InputText(key='fourteenth entry')],
[sg.Text('5:'), sg.InputText(key='fifth entry'), sg.Text('15:'), sg.InputText(key='fifteenth entry')],
[sg.Text('6:'), sg.InputText(key='sixth entry'), sg.Text('16:'), sg.InputText(key='sixteenth entry')],
[sg.Text('7:'), sg.InputText(key='seventh entry'), sg.Text('17:'), sg.InputText(key='seventeenth entry')],
[sg.Text('8:'), sg.InputText(key='eighth entry'), sg.Text('18:'), sg.InputText(key='eighteenth entry')],
[sg.Text('9:'), sg.InputText(key='ninth entry'), sg.Text('19:'), sg.InputText(key='nineteenth entry')],
[sg.Text('10:'), sg.InputText(key='tenth entry'), sg.Text('20:'), sg.InputText(key='twentieth entry')],
]
window = sg.Window("Stock Market Price Grabber", layout)
while True:
event, values = window.read()
if event in (None, 'Cancel'):
break
if event == 'Done':
for x in range(20):
tickerList.append(values[keyNames[x]] + '\n')
for elements in tickerList:
if len(tickerList[x]) < 0:
tickerList.remove(tickerList[x])
openFile.writelines(tickerList)
if event == 'Reset All Tickers':
eraseFile()
print(tickerList)
window.close()
Вот код для readTickers.py
def openTickerList():
openFile2 = open('storedTickers.txt', 'r')
result = openFile2.readlines()
return result
#print(result)