Bruke Qt Designer�

Bruke Qt Designer�

Qt Designer er Qt-verktoyet for a designe og bygge grafiske brukergrensesnitt. Den lar deg designe widgets, dialoger eller fullfore hovedvinduer ved hjelp av skjermskjemaer og et enkelt dra-og-slipp-grensesnitt. Den har mulighet til a forhandsvise designene dine for a sikre at de fungerer som de skulle, og at du kan prototype dem med brukerne, for du ma skrive noen kode.

Qt Designer bruker XML .ui-filer til a lagre design og genererer ikke noen kode selv. Qt inkluderer uic-verktoyet som genererer C ++-koden som skaper brukergrensesnittet. Qt inneholder ogsa QUiLoader-klassen som tillater et program a laste en .ui-fil og a opprette det tilsvarende brukergrensesnittet dynamisk.

PyQt5 vikler ikke QUiLoader-klassen, men inneholder i stedet pyramidmodulen uic. Som QUiLoader kan denne modulen laste .ui-filer for a opprette et brukergrensesnitt dynamisk. Som uic-verktoyet kan det ogsa generere Python-koden som vil skape brukergrensesnittet. PyQt5’s pyuic5-verktoy er et kommandolinjegrensesnitt til uic-modulen. Begge er beskrevet i detalj i de folgende avsnittene.

Bruke generert kode

Koden som genereres, har en identisk struktur som genereres av QIC og kan brukes pa samme mate.

Koden er strukturert som en enkelt klasse som er avledet fra Python objekttype. Navnet pa klassen er navnet pa toplevel-objektet som er satt i Designer med Ui_ prepended. (I C ++-versjonen er klassen definert i Ui navneomradet.) Vi refererer til denne klassen som formklassen.

Klassen inneholder en metode som kalles setupUi (). Dette tar et enkelt argument som er widgeten der brukergrensesnittet er opprettet. Typen av dette argumentet (vanligvis QDialog, QWidget eller QMainWindow) er satt i Designer. Vi refererer til denne typen som Qt-baseklassen.

I de folgende eksemplene antar vi at en .ui-fil er opprettet som inneholder en dialogboks, og navnet pa QDialog-objektet er ImageDialog. Vi antar ogsa at navnet pa filen som inneholder den genererte Python-koden er ui_imagedialog.py. Den genererte koden kan da brukes pa flere mater.

Det forste eksemplet viser direkte tiln rming hvor vi bare lager en enkel applikasjon for a skape dialogen:

Det andre eksempelet viser den enkelte arvstiln rming hvor vi underklasse QDialog og satt opp brukergrensesnittet i __init __ () metoden:

Det endelige eksempelet viser flere arvstiln rminger:

For en fullstendig beskrivelse, se Qt Designer Manual i Qt-dokumentasjonen.

UIC-modulen

UIC-modulen inneholder folgende funksjoner og objekter.

Listen over katalogene som sokte etter widget plugins. I utgangspunktet inneholder den navnet pa katalogen som inneholder widget-pluginene som folger med PyQt5.

PyQt5.uic. compileUi (uifile, pyfile [, utfor = False [, indent = 4 [, from_imports = False [, resource_suffix = ‘_ rc’ [, import_from = ‘.’]]]]]) �

Generer en Python-modul som vil skape et brukergrensesnitt fra en Qt Designer .ui-fil.

uifile – filnavnet eller fillignende objekt som inneholder .ui-filen. pyfile – det fillignende objektet som den genererte Python-koden vil bli skrevet til. utfore – er valgfritt satt hvis en liten mengde ekstra kode skal genereres som vil vise brukergrensesnittet hvis koden kjores som et frittstaende program. innrykk – det valgfrie antallet mellomrom som brukes til innrykk i den genererte koden. Hvis det er null, brukes en tabulator i stedet. from_imports – er valgfritt satt til a generere relative import-setninger. For oyeblikket gjelder dette bare import av ressursmoduler. import_from – er eventuelt satt til pakken som brukes for relative importopplysninger. Standard er ‘.’ .

er suffikset vedlagt til basenavnet til en ressursfil som er spesifisert i .ui-filen for a opprette navnet pa Python-modulen generert fra ressursfilen ved pyrcc5. Standard er ‘_rc’, dvs. hvis .ui-filen spesifiserte en ressursfil som heter foo.qrc, er den tilsvarende Python-modulen foo_rc.

Opprett Python-moduler fra Qt Designer .ui-filer i en katalog eller katalogtreet.

dir – navnet pa katalogen for a skanne etter filer hvis navn slutter med .ui. Som standard er den genererte Python-modulen opprettet i samme katalog som slutter med .py. recurse – er valgfritt satt hvis noen underkataloger skal skannes. kart – en valgfri callable som er passert navnet pa katalogen som inneholder .ui-filen og navnet pa Python-modulen som vil bli opprettet. Den callable skal returnere en tuple av navnet pa katalogen der Python modulen vil bli opprettet og navnet (eventuelt endret) pa modulen. compileUi_args – er noen ekstra sokeord argumenter som sendes til compileUi () som kalles for a opprette hver Python-modul.

Last inn en Qt Designer .ui-fil og returner en tuple av den genererte formklassen og Qt-baseklassen. Disse kan da brukes til a lage et hvilket som helst antall forekomster av brukergrensesnittet uten a analysere .ui-filen mer enn en gang.

uifile – filnavnet eller fillignende objekt som inneholder .ui-filen. from_imports – er valgfritt satt til a generere relative import-setninger. For oyeblikket gjelder dette bare import av ressursmoduler. import_from – er eventuelt satt til pakken som brukes for relative importopplysninger. Standard er ‘.’ .

er suffikset vedlagt til basenavnet til en ressursfil som er spesifisert i .ui-filen for a opprette navnet pa Python-modulen generert fra ressursfilen ved pyrcc5. Standard er ‘_rc’, dvs. hvis .ui-filen spesifiserte en ressursfil som heter foo.qrc, er den tilsvarende Python-modulen foo_rc.

formklassen og Qt-baseklassen.

Last inn en Qt Designer .ui-fil og returnerer en forekomst av brukergrensesnittet.

uifile – filnavnet eller fillignende objekt som inneholder .ui-filen. baseinstance – den valgfrie forekomsten av Qt-baseklassen. Hvis spesifisert, blir brukergrensesnittet opprettet i det. Ellers opprettes en ny forekomst av grunnklassen automatisk. pakke – den valgfrie pakken som er basispakken for enhver relativ import av egendefinerte widgets.

er suffikset vedlagt til basenavnet til en ressursfil som er spesifisert i .ui-filen for a opprette navnet pa Python-modulen generert fra ressursfilen ved pyrcc5. Standard er ‘_rc’, dvs. hvis .ui-filen spesifiserte en ressursfil som heter foo.qrc, er den tilsvarende Python-modulen foo_rc.

QWidget-underklassen som implementerer brukergrensesnittet.

Pyuic5-verktoyet er et kommandolinjegrensesnitt til uic-modulen. Kommandoen har folgende syntaks:

Det fulle settet med kommandolinjevalg er:

En hjelpemelding skrives til stdout.

Versjonsnummeret er skrevet til stdout.

Python-koden genereres ved hjelp av et innrykk av & lt; N & gt; mellomrom. Hvis & lt; N & gt; er 0 sa brukes en fane. Standard er 4.

Den genererte Python-koden er skrevet til filen & lt; FILE & gt; .

GUI er opprettet dynamisk og vises. Ingen Python kode genereres.

Den genererte Python-koden inneholder en liten mengde tilleggskode som lager og viser GUI nar den utfores som et frittstaende program.

Nytt i versjon 5.6.

Ressursmoduler importeres ved bruk av & lt; PACKAGE & gt; import. heller enn en enkel import. .

Dette er ekvivalent med a spesifisere –import-from. .

Suksessen & lt; SUFFIX & gt; legges til basenavnet til en ressursfil som er spesifisert i .ui-filen for a opprette navnet pa Python-modulen generert fra ressursfilen ved pyrcc5. Standard er _rc. For eksempel hvis .ui-filen spesifiserte en ressursfil som heter foo.qrc, er den tilsvarende Python-modulen foo_rc.

Merk at kode generert av pyuic5 ikke er garantert a v re kompatibel med tidligere versjoner av PyQt5. Det er imidlertid garantert a v re kompatibelt med senere versjoner. Hvis du ikke har kontroll over den versjonen av PyQt5 brukerne av programmet bruker, bor du kjore pyuic5, eller ring kompilereUi (), som en del av installasjonsprosessen. Et annet alternativ ville v re a distribuere .ui-filene (kanskje som en del av en ressursfil) og fa din soknad a laste dem dynamisk.

Skrive Qt Designer Plugins

Qt Designer kan utvides ved a skrive plugins. Normalt er dette gjort med C ++, men PyQt5 lar deg ogsa skrive plugins i Python. Mesteparten av tiden er et plugin brukt til a avslore en tilpasset widget til Designer slik at den vises i Designer’s widgetboks akkurat som hvilken som helst annen widget. Det er mulig a endre widgetens egenskaper og tilkoble signaler og spor.

Det er ogsa mulig a legge til ny funksjonalitet til Designer. Se Qt-dokumentasjonen for de fulle detaljene. Her vil vi konsentrere oss om a beskrive hvordan du skriver tilpassede widgets i Python.

Prosessen med a integrere Python tilpassede widgets med Designer er sv rt lik den som brukes med widget skrevet med C ++. Det er imidlertid spesielle problemer som ma tas opp.

Designer trenger a ha et C ++-plugin som samsvarer med grensesnittet definert av QDesignerCustomWidgetInterface-klassen. (Hvis pluginet viser mer enn en egendefinert widget, ma den overholde grensesnittet definert av QDesignerCustomWidgetCollectionInterface-klassen.) I tillegg ma plugin-klassen v re underklasse QObject samt grensesnittklassen. PyQt5 tillater ikke at Python-klasser blir underklassifisert fra mer enn en Qt-klasse. Designer kan kun koble til Qt-signaler og spor. Det har ingen forstaelse for Python-signaler eller callables. Designer kan bare redigere Qt-egenskaper som representerer C ++-typer. Den har ingen forstaelse for Python-attributter eller Python-typer.

PyQt5 gir folgende komponenter og funksjoner for a lose disse problemene sa enkelt som mulig.

PyQt5� � s QtDesigner-modul inneholder tilleggsklasser (alle som har et QPy-prefiks) som allerede er underklassifisert fra de nodvendige Qt-klassene. Dette unngar behovet for underklasse fra mer enn en Qt-klasse i Python. For eksempel, hvor en C ++ tilpasset widget-plugin ville v re underklasse fra QObject og QDesignerCustomWidgetInterface, ville en Python tilpasset widget-plugin i stedet v re underklasse fra QPyDesignerCustomWidgetPlugin.

PyQt5 installerer et C ++-plugin i Designer’s plugin-katalog. Den er i samsvar med grensesnittet definert av QDesignerCustomWidgetCollectionInterface-klassen. Den soker et konfigurerbart sett med kataloger som ser etter Python-plugins som implementerer en klasse underklassifisert fra QPyDesignerCustomWidgetPlugin. Hver klasse som er funnet, er instantiated, og forekomsten som er opprettet, legges til den tilpassede widgetsamlingen.

PYQTDESIGNERPATH miljovariabelen angir sett med kataloger for a soke etter plugins. Katalogenavn er adskilt av en stilseparator (et halvt kolon pa Windows og et kolon pa andre plattformer). Hvis et katalognavn er tomt (det vil si at det er sammenhengende stilseparatorer eller en ledende eller bakre stilseparator), settes automatisk et sett med standardkataloger pa det tidspunktet. Standard kataloger er python underkatalogen av hver katalog som Designer soker etter egne plugins. Hvis miljovariabelen ikke er angitt, sokes bare standard kataloger. Hvis et filnavns basenavn ikke slutter med plugin, ignoreres det.

En tilpasset Python-widget kan definere nye Qt-signaler ved hjelp av pyqtSignal ().

En Python-metode kan defineres som en ny Qt-spalte ved bruk av pyqtSlot () dekoratoren.

En ny Qt-egenskap kan defineres ved hjelp av pyqtProperty () -funksjonen.

Merk at evnen til a definere nye Qt-signaler, spor og egenskaper fra Python er potensielt nyttig for plugins som samsvarer med alle plugin-grensesnitt og ikke bare det som brukes av Designer.


Hallo! Vil du spille i det mest populære kasinoet? Vi fant det for deg. Trykk her nå!