Stotte for Qt5 # 241.

Filene endret 78.

Samtale.

geggo kommenterte 28 september 2015.

Jeg hadde folelsen av at sanden pa Qt4 loper ut, sa jeg begynte a legge til stotte for PyQt5 til traitsui og pyface. Dette er ikke en alvorlig trekkforesporsel, men uferdig, men jeg vil gjerne fa tilbakemelding pa hvordan du skal fortsette. Noen grunnleggende ting som tekst- eller rekkevidderedaktorer jobber allerede.

Jeg startet ved a kopiere implementeringen fra qt4-backend, og deretter legge til de nodvendige endringene. De fleste endringene skyldes splittelsen av QtGui submodulen av qt4 i QtGui og QtWidgets i qt5. Disse er for det meste trivielle og utfores av skript. Deretter, nar de er i bruk, ma de gamle SIGNAL / SLOT-tilkoblingene oppdateres til de nye stilesignalene / -sporene.

I likhet med hva matplotlib gjorde for a stotte bade qt4 og qt5, er det mulig a bruke samme kode, portet til qt5, for bade qt4 og qt5, med et tynt lag for a gjore qt4 til a ligne qt5. Jeg tror dette ville v re veien a ga ogsa for traitsui / pyface. Dette inneb rer imidlertid at tredjepartsmoduler som stole pa pyface.qt for a importere qt4 ma endres for a stotte den nye moduloppsettet.

Eventuelle tilbakemeldinger, spesielt om folgende problemer, er velkommen:

Er du interessert i dette? Hvordan skal jeg fortsette? Hva synes du er den beste maten a legge til stotte for qt5? Hva med testing? Spesielt for pyface fant jeg ikke tester som dekker det meste av API-en?

Alle sjekker har gatt.

Stotte for Qt5 # 170.

corranwebster kommenterte 28. september 2015.

Dette er fantastisk og veldig tidsriktig, da vi bare diskuterte hva som matte v re nodvendig for a stotte Qt5 i TraitsUI. Takk for at du sparker dette av!

Nar det gjelder hvordan man gar videre, ville det v re bra om vi kan minimere mengden duplisert kode bare fra det synspunkt a redusere vedlikeholdskostnader fremover (for eksempel unnga a fikse samme feil pa flere steder, hvis det er mulig) . Var forelopige plan hadde v rt a se om vi kunne klare a ha en felles qt4 / qt5 kodebase som unngikk bruk av nye funksjoner i Qt5 i n r fremtid – jeg er ikke sikker pa om det er mulig eller praktisk, men det kan Matplotlib klare det, eller noe i n rheten av det, sa er det hap! Faktisk, nar PySide har solid stotte for Qt5, ville jeg v re rimelig komfortabel med a avta Qt4.

Det er verdt a merke seg at dette ligner planen for WxPython 3.0-stotte, som vi nylig samlet eksperimentell stotte for i PyFace og TraitsUI.

Nar det gjelder testing, er tester faktisk litt svakere enn vi kanskje liker for TraitsUI og Pyface, men jeg er glad for a sla sammen en PR som har «eksperimentell» Qt5-stotte sa lenge alle tester gar og noen eksempler som kjorer under Qt4 ogsa lop under Qt5. I tillegg til Pyface, selv om det er mye som ikke er testet, har vi gjort en del innsats de siste par manedene for a sikre at kjernekomponentene na i det minste har grunnleggende royktester.

Det andre hindret for testing er at vi nylig har byttet til containeriserte Travis CI-bygg og Qt5 APT ikke er enna hvitlistet (se travis-ci / apt-package-whitelist # 442), sa Qt5-tester ma bygge Qt5 og cache det i beholder for tiden, noe som legger til litt kompleksitet i testinfrastrukturen.

Sa synes det a v re rimelig for deg (siden du har sett pa problemet n rmere enn jeg har enna):

bli kvitt all den gamle SIGNAL / SLOT-koden i qt4 kodebase (dette virker som en god ide i seg selv, og jeg vil gjerne akseptere en PR som gjorde nettopp dette!) kan vi skrive over QtGui / QtWidget-splittet i PyFace: Vi abstraderer PyQt / PySide allerede i pyface.qt. *, Og det hores nesten ut som om vi kunne handtere mye splittet ved a legge til en pyface.qt.QtWidget-modul som importerer fra QtGui hvis den oppdager Qt4 kjorer . (Eller gjor omvendt og gjor pyface.qt.QtGui import bade QtGui og QtWidget of Qt5 er oppdaget, men det virker mindre fremtidssikret). splitt pyface.qt.QtGui importerer riktig vi gjor ETS_TOOLKIT verdier av qt, qt4 og qt5 alle er synonymer. Legg opp eventuelle andre problemer etter hvert som de vises.

Igjen, takk for dette!

Qt5 support # 186.

geggo kommentert 29 sep 2015.

godt a hore deg som den tiln rmingen. Nar det gjelder koreplanen din, tror jeg det er mulig.

gammelt stil signal / spor: Jeg har allerede konvertert en haug, ca 70 forekomster forblir, hoveddelen er trivial a endre. splitting av importen er gjort gjemmer seg forskjellene i pyface.qt er allerede inneholdt i PR (men enna ikke testet).

Oppriktig har jeg vanskeligheter med a forsta verktoykassen utvalgsprosessen med alle de automatiske valgene.

Sa jeg kan tilby a fortsette, fullfor portingen til en enkelt kodebase for bade qt4 og qt5, ved hjelp av qt5-syntaksen, med et lag i pyface.qt, sa det fortsetter a fungere med qt4. Vet ikke hvor lenge dette vil ta, men jeg vil grate om hjelp hvis jeg sitter fast, spesielt med testing og reparasjon av gjenv rende problemer.

corranwebster kommenterte 29. september 2015.

Hei, v r sa snill og fortsett, og ber om hjelp du trenger.

For a svare pa sporsmalet ditt om verktoykassevalg:

poenget med sannhet om hva verktoyet er valgt er traits.etsconfig.etsconfig.ETSConfig som har en verktoysettattributt. Dette kan settes enten direkte for noen GUI-kode er lastet, eller via ETS_TOOLKIT miljovariabelen, eller via et kommandolinjeprinsel. hvis du prover a laste inn en GUI og ETSConfig.toolkit ikke er angitt, har bade Pyface og TraitsUI kode som gar om a prove a finne ut hvilke verktoy som er tilgjengelige ved a importere de riktige underpakken i rekkefolge til noe fungerer, eller du ender med null backend. Dessverre har Pyface og TraitsUI forskjellig kode for a gjore dette (TraitsUI skal nok bare ringe til Pyface), sa hvilken av de to blir aktivert forst via import er den som vil utlose valget.

For testing er det enklest a sette ETS_TOOLKIT miljovariabelen til onsket verdi, om nodvendig ved a prefikse til kommandoen du kjorer, f.eks.

geggo kommenterte 30 sep 2015.

Jeg gikk videre og ble ganske langt. Jeg tror det meste av portingen til Qt5 er ferdig og kom til det siste punktet: Cry for help. Koden lever pa qt5_V2-grenen av geggo / traitsui og geggo / pyface. Du kan bytte mellom a bruke qt4 og qt5 ved a sette QT_API til pyqt eller pyqt5.

De fleste tester gar, noen traitsui demoer feiler, hovedsakelig pa grunn av problemene:

QFileDialog burde ha medlem setReadOnly (bool), men mangler i PyQt5 AttributeError: ‘QHeaderView’ -objektet har ingen attributt ‘setResizeMode’

Mest irriterende er et problem, med min anaconda python bruker.

(dette brukes nar jeg skriver inn python) Qt5 mislykkes med.

(dette brukes nar jeg skriver inn ipython pa konsollen) ingen feil. Muligens noe problem med qt5 / pyqt5 conda pakken jeg har installert.

(PS Jeg skal v re opptatt neste dag)

corranwebster kommenterte 1 oktober 2015.

Hei @Geggo Takk for dette igjen. Dessverre vet jeg ikke om det problemet – jeg kan prove a installere Qt5 pa min Mac, men mer sannsynlig vil jeg bare jobbe i min Linux VM, siden det er lettere a jobbe med for slike ting, men hvis jeg har noen innsikt, jeg vil gi deg beskjed.

Ogsa, jeg ser pyface Qt5_v2 grenen, men ikke egenskapen en. Har du presset det til github, eller mangler jeg noe?

geggo kommenterte 2 oktober 2015.

Er 01.10.2015 om 23:49 schrieb Corran Webster [email protected]:

Hei @geggo https://github.com/geggo Takk for dette igjen. Dessverre vet jeg ikke om det problemet – jeg kan prove a installere Qt5 pa min Mac, men mer sannsynlig vil jeg bare jobbe i min Linux VM, siden det er lettere a jobbe med for slike ting, men hvis jeg har noen innsikt, jeg vil gi deg beskjed.

Ogsa, jeg ser pyface Qt5_v2 grenen, men ikke egenskapen en. Har du presset det til github, eller mangler jeg noe?

Svar pa denne e-posten direkte eller se den pa GitHub # 241 (kommentar).

glemte a presse ogsa til ggo / traitsui repository, Qt5_v2 grenen, na er det der. Beklager misforstaelsen.

Jeg tror feilene med PyQt5 jeg har sett, er ikke direkte relatert til pyface / traitsui, men for ovrig hvordan Qt5-biblioteket er installert i anaconda-miljoet og hvor det soker etter plugins. Jeg antar at hvis du stole pa et system bredt Qt5 installere ville de ga bort.

jf — kommenterte 6 okt 2015.

Glade for a se TraitsUI flytte fwd, kul.

@geggo, har du provd a sette $ QT_PLUGIN_PATH = «»? Eller du kan bruke QtGui.QApplication.setLibraryPaths ([]) for du oppretter app.

En mer detaljert samtale pa conda-listen som berorer dette emnet finnes her.

geggo kommenterte 8 okt 2015.

Som en melding (@jf —), feilen jeg har sett nar du bruker Qt5 (pa OS X med Anaconda Python, Qt5 installert via conda install – channel https://conda.anaconda.org/asmeurer pyqt5):

kan loses ved a slette qt.conf, i mitt tilfelle plassert i.

jf — kommenterte 8 okt 2015.

@Geggo, jeg er ogsa pa conda, flott a hore dette er en mate a sidestepe problemet pa.

PAleksandrov kommenterte 18. oktober 2015.

Det ser ut til at 408-linjen pa traitsui / qt5 / ui_base.py:

ma endres til.

geggo kommenterte 19 okt 2015.

@PAleksandrov, utviklingen skjer na pa traitsui / qt5_V2 grenen av geggo / traitsui, der dette problemet (burde) v rt lost. Beklager misforstaelsen.

Et annet trekk / qt backend problem # 876.

corranwebster kommenterte 24 aug 2017.

Slutt som vi har stotte for Qt5 vias Pyface pa et mer grunnleggende niva.

larsoner kommenterte 8 september 2017.

@corranwebster Jeg ser pa Qt5-stotte (eller virkelig ta en stikk pa a implementere den) for Mayavi, og jeg er litt forvirret.

Jeg la merke til at det fortsatt er denne linjen:

Selv a legge til ‘qt5’ i denne listen, er det ingen traitsui / qt5 katalog, sa _import_toolkit i toolkit.py kan ikke lykkes. Sa det virker som om endringene som i denne PR ville v re nodvendig for a fa Qt5 a jobbe, nei?

Eller er «qt4» ment a v re en misnomer, og Pyface skal bruke PySide eller PyQt5 for a fa Qt5-stotte, hvis tilgjengelig, selv nar «qt4» leveres. (Jeg har den nyeste pyface installert og dette ser ikke ut til a fungere.)

Dette er for det meste nodvendig pa grunn av tilbakevendende feil vi har hatt med a bruke matplotlib og mayavi (som bruker traitsui) samtidig (se mange feilrapporter om «API QDate» og du vil se hva jeg mener). Jeg tror qt5 ville lose det, sa det ville v re flott a fa det til a fungere.

prabhuramachandran kommenterte 8 september 2017.

@larsoner – Jeg tror jeg har allerede lagt til stotte for Qt5 i Mayavi master, se enthought / mayavi # 528.

larsoner kommenterte 8 september 2017.

Ok, jeg skal prove det og rapportere det, takk @prabhuramachandran.

(Jeg antar at sluttresultatet er at qt4 virkelig vil bruke Qt4 eller Qt5, avhengig av hva som er tilgjengelig, da?)

prabhuramachandran kommenterte 8 september 2017.

@larsoner – IIRC, jeg tror du ma sette QT_API = pyqt5.

corranwebster kommenterte 8 september 2017.

@larsoner Ja, for tiden ETS_TOOLKIT = qt4 betyr «bruk Qt», og deretter kan QT_API miljovariabelen velge mellom PyQt4, PyQt5 eller PySide. Maten qt5-stotten er implementert pa, er ved a returnere Qt5-klassene til de aktuelle Qt4-navneomradene (f.eks. Https://github.com/enthought/pyface/blob/master/pyface/qt/QtGui.py#L7), sa du ma v re oppmerksom pa det hvis du jobber med Qt5-stotte.

Det ville v re fint a tillate ETS_TOOLKIT = qt, men det vil kreve mange endringer pa tvers av ETS pa grunn av pakkenavn som involverer «qt4» og / eller endringer i hvordan verktoyene er lost. Pyface er i det minste i en tilstand der dette kan gjores ganske enkelt for «ren» Pyface-kode, men det monsteret ma formidles gjennom kodebase for at det skal fungere overalt.

larsoner kommenterte 8 september 2017.

Bra, takk for infoen. Ser ut som det fungerer nar du bruker PyQt5 + nyeste PyFace / Traits / TraitsUI. Na har jeg problemer med segfaults, men jeg tror det er VTKs problem.

&kopiere; 2018 GitHub, Inc. Vilkar Personvern Sikkerhetsstatus Hjelp.

Du kan ikke utfore denne handlingen pa dette tidspunktet.

Du logget pa med en annen fane eller et vindu. Oppdater for a oppdatere okten din. Du logget ut i en annen kategori eller et vindu. Oppdater for a oppdatere okten din.


Hilsener! Vil du spille i det mest ærlige kasinoet? Vi samlet det for deg. Spill her nå!