python – PyQt4 SIGNAL / SLOT-problem nar du bruker underkataloger.

python – PyQt4 SIGNAL / SLOT-problem nar du bruker underkataloger.

Takk pa forhand for a ta deg tid til a lese dette. Unnskyld at det er noe ordentlig. Men forhapentligvis forklarer det fullt ut problemet. Stripped kode som viser problemet er inkludert.

Jeg har et problem med PyQt4 SIGNAL / SLOTS. Mens jeg kan fa alt til a fungere bra hvis jeg skriver i en enkelt fil, kan jeg ikke fa ting til a fungere hvis jeg noen av funksjonene jeg onsker a bruke, blir flyttet til underkataloger / klasser.

Jeg har sett gjennom Python Bindings-dokumentet. Jeg kan se hvordan dette fungerer nar du bruker en enkelt fil. Men det jeg prover a gjore er dette:

main.py fil i root dir som inneholder MainWindow __init_ _ koden. Denne filen importerer en rekke widgets. Hver widget lagres i sin egen underkatalog. Alle underkataloger inneholder en __init__.py-fil. Disse underkatalogene er inne i en katalog som heter «bin», som er i rotdirken. Noen av disse widgets ma ha SIGNAL / SLOT-koblinger mellom dem. Det er her jeg faller ned.

Sa filstrukturen er:

Folgende kode viser problemet. Denne koden oppretter et veldig grunnleggende hovedvindu som inneholder en sentral QTextEdit () -m widget og en dockbar QTextEdit () -brikke. Alt som skjer er at nar teksten i den sentrale widgeten er endret, vises den samme teksten i den dockbare widgeten. Eksemplet fungerer. Men det gjor det ved a koble signalet TextChanged () i bin / textEditor / plugin.py-filen som lager den sentrale QTextEdit () med en funksjon i main.py. Jeg vil gjerne at det skal gjore akkurat det samme, men knyttet til oppdateringen. Denne funksjonen er i bin / textEditor / plugin.py.

Hvis noen kunne kaste litt lys pa dette, ville jeg v re enormt takknemlig. Jeg er sikker pa at det er enkelt. Men retning til noen oppl ringsprogrammer som dekker dette eller erkl ringer som jeg gjor alt er galt, er like verdsatt !. Takk igjen for din tid:

Koden inne i de to plugin-filene er:

& Emsp; spurte 30 september kl 10:08 Dan 581 6 20 |

For det forste er det en grunn at du bruker en veldig gammel versjon av PyQt-utgivelsesdokumentet? Den nye er: her.

Det er noen ting du gjor som er litt uvanlige. Vanligvis importeres utsagn i python overst pa filen (for a se pa avhengighet), men jeg antar at du gjor dette for a stotte et mer generalisert importsystem for plugins i fremtiden.

Det ser ut til at det grunnleggende problemet er at du prover a koble en signalkilde til et spor i et annet objekt uten a lagre det andre objektet pa et bestemt sted. For a gjore dette ma du sannsynligvis enten gjore forbindelsen i hovedsak, lage en noytral «oppdateringUi» spor som sender ut sitt eget spesielle signal som alle pluginene venter pa, eller bare a henvise til disse delobjektene i hoved og v re forsiktig med initialiseringsordren.

& Emsp; besvart 30. september kl. 1:33 jkerian 11.4k 1 28 47 Takk sa mye for at du tok deg tid til a svare, jkerian. Det er hoyt verdsatt. Det er faktisk et rammeverk for a stotte et mer generalisert importsystem for plugins, slik at det ser litt skjult ut. Jeg vil definitivt se pa disse ideene. Vil du v re i stand til a gi noen retning mot noen eksempler pa forslagene du har laget selv? En veiledning eller kode snip for eksempel? Det ville hjelpe enormt. Takk igjen. Dan – Dan 30. september kl 10:48 |