Kirjoittaja Aihe: Python matplotlib ja Qt  (Luettu 185 kertaa)

ilkant

  • Käyttäjä
  • Viestejä: 1623
  • Kubuntu
    • Profiili
Python matplotlib ja Qt
« : 26.10.25 - klo:05.15 »
Chat GPT -tekoäly teki graafisen applikaation, joka käyttää networkingx:n Graph -kaaviota. Ja se teki sen GUI-luokan niin, että siinä oli MainWindow ja Working -luokat erikseen. Tarkoitus on, että tietojen keruu ja laskenta eivät jäädytä sovellusta. Ja kun tuollaista tekee useammassa erässä, niin saa sotkuja aikaan. Niiden setvimiseen menee aikaa.

Chat GPT antoi tällaiset importit:
Koodia: [Valitse]
import sys, time, matplotlib, networkx as nx
matplotlib.use("Qt5Agg")

from PyQt5.QtCore import QObject, QThread, pyqtSignal
from PyQt5.QtWidgets import (
    QApplication, QMainWindow, QVBoxLayout, QWidget,
    QPushButton, QProgressBar, QLabel
)
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure

Kun Kubuntu(ni) käyttää Qt6:sta, niin keksin vaihtaa nuo vitoset kutosiksi. Sitten Qt6Agg antoi virheilmoituksen, että sellaista ei ole. Vaihdoin sen takaisin vitoseksi. Ja kas, se toimi ihan loistavasti PyQt6:llakin. Tarkoittaako tuo puuttuminen sitä, että matplotlibbiin ei ole vielä koodattu Qt6:n mukaisia toimintoja?

Sinänsä aika kätevää, että tekoäly osasi laittaa edistymispalkin ikkunaan verkoston lisäksi. Ja tällä koneella i5-10400F kesti ehkä 3 - 5 sekuntia luoda se verkosto..

Kaikki tuo sen takia, että aiemmin ohjelma ponnautti uuden ikkunan, jonne se piirsi verkoston. Ja nyt tuli virheilmoitus kun se verkosto luotiin toisessa säikeessä kuin millä se näytettiin. QT ei tekoälyn mukaan salli sellaista kun se vaarantaa sovelluksen vakautta.

Että tällaista tekoälyllä ohjelmointia. :)
« Viimeksi muokattu: 26.10.25 - klo:05.18 kirjoittanut ilkant »

nm

  • Käyttäjä
  • Viestejä: 16804
    • Profiili
Vs: Python matplotlib ja Qt
« Vastaus #1 : 26.10.25 - klo:11.17 »
Kun Kubuntu(ni) käyttää Qt6:sta, niin keksin vaihtaa nuo vitoset kutosiksi. Sitten Qt6Agg antoi virheilmoituksen, että sellaista ei ole. Vaihdoin sen takaisin vitoseksi. Ja kas, se toimi ihan loistavasti PyQt6:llakin. Tarkoittaako tuo puuttuminen sitä, että matplotlibbiin ei ole vielä koodattu Qt6:n mukaisia toimintoja?

Katso dokumentaatio:
https://matplotlib.org/stable/gallery/user_interfaces/embedding_in_qt_sgskip.html
https://matplotlib.org/stable/api/backend_qt_api.html

Eli Qt6-yhteensopiva Matplotlib-backend on QtAgg, ja FigureCanvas ja NavigationToolbar importataan näin:

Koodia: [Valitse]
from matplotlib.backends.backend_qtagg import FigureCanvas
from matplotlib.backends.backend_qtagg import \
    NavigationToolbar2QT as NavigationToolbar

Rivin matplotlib.use("Qt5Agg") voit poistaa.

ilkant

  • Käyttäjä
  • Viestejä: 1623
  • Kubuntu
    • Profiili
Vs: Python matplotlib ja Qt
« Vastaus #2 : tänään kello 01:35 »
Eli Qt6-yhteensopiva Matplotlib-backend on QtAgg, ja FigureCanvas ja NavigationToolbar importataan näin:

Rivin matplotlib.use("Qt5Agg") voit poistaa.

Kiitos vinkeistä. Kokeilen noita. Se ohjelma toimii kyllä tuolla aiemmallakin.