내 응용 프로그램에서 API에서 새 데이터를 가져올 때 레이블 텍스트를 변경하려고합니다. 내 문제는 내 GUI가 전화를 끊은 후입니다. 항상 30 분 동안 실행 한 후에 가끔은 그 응용 프로그램을 실행하기 시작한 후 바로 그것의 somtimes 그것의 바로 매달리기가 동시에 그것의 시간에 있지 않습니다.PyGObject 레이블 문제
그리고 유일한 GUI가 끊어지기 때문에 프로그램 자체가 실행을 계속하고 콘솔에 출력을 제공 할 수 있습니다.
레이블 텍스트의 업데이트는 추가 스레드에서 실행됩니다.
class GUI():
def get_assets(self,trader):
assets={}
if trader=="kraken":
pass
elif trader=="cex":
query=info_CEX()
res=query.get_balance()
for key in res:
try:
assets[key]={}
assets[key]["available"]=res[key]["available"]
assets[key]["orders"]=res[key]["orders"]
except(KeyError,TypeError):
continue
return assets
def update_asset_labels(self,trader):
assets=self.get_assets(trader)
for key in assets:
try:
label=self.builder.get_object("BX"+key)
label.set_text(str(float(assets[key]["available"]))+"/"+str(float(assets[key]["orders"])))
except(AttributeError):
if key=="EUR":
label=self.builder.get_object("kapital")
label.set_text(str(float(assets[key]["available"])))
continue
def app(self):
"""Initialisiert die graphischen Oberfläche.
"""
UI_FILE = PFAD+"/PYtraderGUI.ui"
self.builder = Gtk.Builder()
self.builder.add_from_file(UI_FILE)
self.builder.connect_signals(self)
self.window = self.builder.get_object("window1")
"""self.window.maximize()"""
self.window.show_all()
def update_info():
price=["None"] * 11
oldprice=["None"] * 11
chan=0
start_price=0
query=infokraken.infokraken()
trader="cex"
while True:
try:
self.update_asset_labels(trader)
pass
except (ValueError):
continue
thread1 = threading.Thread(target=update_info)
thread1.daemon = True
thread1.start()
if __name__ == "__main__":
GObject.threads_init()
GO=GUI()
GO.connect("delete-event", Gtk.main_quit)
GO.show_all()
GO.app()
Gtk.main()