Vinn nätagg från Seasonic

nybörjare inom GUI PyQt6 med Python313 [Löst]

Permalänk
Medlem

nybörjare inom GUI PyQt6 med Python313 [Löst]

Har aldrig hållit på med GUI förut och fattar inte riktigt vad jag gjort men det fungerar - bara att jag inte fattar hur jag uppdaterar label ticker1value och ticker2value, typ var 5e sekund

Jag har förstått att jag ska använda window.update() men jag vet inte vart i koden den ska hamna för att fungera? Lägger jag den innan exec så körs den ju men innan fönstret har visats, och lägger jag den efter så körs den inte förens programmet stängs av.

Kanske har jag skrivit koden lite knasigt och uppskattar input jag kan få. kanske behöver jag lära mig om trådar nu tillslut? Min google-fu är inte vad den brukat vara, så om någon hittar något lättförståeligt så uppskattar jag att ni delar med er!

(koden är maskerad så den går inte köra rakt av)

import sys import time import yfinance as yf from PyQt6.QtWidgets import ( QApplication, QLabel, QHBoxLayout, QWidget ) class Widget(QWidget): def __init__(self): super().__init__() self.setWindowTitle("tickers") self.h_layout = QHBoxLayout() self.setLayout(self.h_layout) price = stock_price("ticker1") self.ticker1value = f"ticker1 : {price}" self.ticker1value = QLabel(self.ticker1value) price = stock_price("ticker2") self.ticker2value = f"ticker2 : {price}" self.ticker2value = QLabel(self.ticker2value) self.h_layout.addWidget(self.ticker1value) self.h_layout.addWidget(self.ticker2value) self.show() def stock_price(ticker): try: stock = yf.Ticker(ticker) data = stock.history(period="1d") incdata = data['Close'].iloc[-1] float(incdata) return f"{incdata:.2f}" except Exception as e: print(f"Error fetching data for {ticker}: {e}") return None if __name__ == "__main__": app = QApplication(sys.argv) window = Widget() window.show() app.exec()

Permalänk
Medlem

Copilot AI hjälpte mig lösa detta lol. ändrade slutet mot detta

def update_prices(): price = stock_price("ticker1") window.ticker1value.setText(f"ticker1 : {price}") price = stock_price("ticker2") window.ticker2value.setText(f"ticker2 : {price}") print("updating") if __name__ == "__main__": app = QApplication(sys.argv) window = Widget() # Update prices every 60 seconds timer = QTimer() timer.timeout.connect(update_prices) timer.start(600) window.show() app.exec()

Permalänk
Hedersmedlem

Kommentaren i main är väldigt fel dock
QTimer::start tar ett argument i millisekunder, så den uppdaterar 100 ggr oftare än det står. 60000 ms ger en gång per minut.

Visa signatur

Asus ROG STRIX B550-F / Ryzen 5800X3D / 48 GB 3200 MHz CL14 / Asus TUF 3080 OC / WD SN850 1 TB, Kingston NV1 2 TB + NAS / Corsair RM650x V3 / Acer XB271HU (1440p165) / LG C1 55"
NAS: 6700K/16GB/Debian+ZFS | Backup (offsite): 9600K/16GB/Debian+ZFS

Permalänk
Medlem
Skrivet av Thomas:

Kommentaren i main är väldigt fel dock
QTimer::start tar ett argument i millisekunder, så den uppdaterar 100 ggr oftare än det står. 60000 ms ger en gång per minut.

ah jag ändrade den så det gick lite snabbare,orkade inte vänta en hel minut för att testa