


PyQt4-Slots und -Signale in einer Schleife verbinden: Fehlerbehebung bei unerwarteten Ergebnissen
Beim Erstellen eines Taschenrechners in PyQt4 wurde die Verbindungsschaltfläche „angeklickt()“ Signale innerhalb einer Schleife können zu unerwartetem Verhalten führen. Das Problem entsteht, weil die erwartete Zahl nicht gedruckt wird, wenn auf eine Schaltfläche geklickt wird. Stattdessen geben alle Schaltflächen die gleiche Nummer aus.
Das Problem verstehen
Die Scoping-Regeln von Python erzeugen in diesem Szenario einen Abschluss. Die Schleifenvariable „i“ wird als Parameter für die Lambda-Funktion jeder Schaltfläche verwendet. Allerdings löst Python „i“ im Namespace der umschließenden Funktion (__init__()) auf. Da „i“ in der Schleife geändert wird und schließlich der Wert 9 zugewiesen wird, beziehen sich alle Schaltflächen auf denselben Abschluss, sodass alle „9“ ausgeben, unabhängig davon, auf welche Schaltfläche geklickt wird.
Auflösen des Problem
Um dieses Problem zu beheben, können wir „i“ als Schlüsselwortargument mit einem Standardwert übergeben. Dadurch wird eine neue Bindung für „i“ im Namespace der Lambda-Funktion eingeführt, die sie unabhängig von „i“ in __init__() macht.
Lösung mit Schlüsselwortargument:
self._numberButtons[i].clicked.connect(lambda checked, i=i: self._number(i))
Lösung mit functools.partial:
Ein anderer Ansatz ist die Verwendung von functools.partial, wodurch eine Teilfunktion mit vorgebundenen Argumenten erstellt wird. Dadurch wird der Code besser lesbar und die Verwendung von Schlüsselwortargumenten entfällt.
self._numberButtons[i].clicked.connect(partial(self._number, i))
Durch die Implementierung dieser Lösungen gibt jede Schaltfläche beim Klicken die vorgesehene Zahl aus.
Das obige ist der detaillierte Inhalt vonWarum drucken alle meine Taschenrechnertasten dieselbe Zahl, wenn sie in PyQt4 in einer Schleife verbunden sind?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Arraysinpython, besondersvianumpy, arecrucialInScientificComputingFortheirefficience undvertilität.1) Sie haben festgelegt, dass die Fornerikerne, Datenanalyse und Machinelarning.2) Numpy'SimplementationIncensuresFasteroperationsdanpythonlisten.3) Araysensableableableableableableableableableableableableableableableableableableableableableableableableableable

Sie können verschiedene Python -Versionen mithilfe von Pyenv, Venv und Anaconda verwalten. 1) Verwalten Sie PYENV, um mehrere Python -Versionen zu verwalten: Installieren Sie PyEnv, setzen Sie globale und lokale Versionen. 2) Verwenden Sie VenV, um eine virtuelle Umgebung zu erstellen, um Projektabhängigkeiten zu isolieren. 3) Verwenden Sie Anaconda, um Python -Versionen in Ihrem Datenwissenschaftsprojekt zu verwalten. 4) Halten Sie das System Python für Aufgaben auf Systemebene. Durch diese Tools und Strategien können Sie verschiedene Versionen von Python effektiv verwalten, um den reibungslosen Betrieb des Projekts zu gewährleisten.

NumpyarrayShaveseveraladVantagesOverStandardPythonArrays: 1) SiearemuchfasterDuetoc-basiert, 2) sie istaremoremory-effizient, insbesondere mit mit LaShlargedatasets und 3) sie können sich mit vektorisierten Funktionsformathematical und Statistical opertical opertical opertical operticaloperation, Making

Der Einfluss der Homogenität von Arrays auf die Leistung ist doppelt: 1) Homogenität ermöglicht es dem Compiler, den Speicherzugriff zu optimieren und die Leistung zu verbessern. 2) aber begrenzt die Typ -Vielfalt, was zu Ineffizienz führen kann. Kurz gesagt, die Auswahl der richtigen Datenstruktur ist entscheidend.

TocraftexecutablePythonScripts, folge theseBestPractices: 1) addashebangline (#!/Usr/bin/envpython3) tomakethescriptexcutable.2 SetPermissions withchmod xyour_script.py.3) organisation -bithacleardocstringanduseInname == "__ __": FormAcleardocstringanduseInname

NumpyarraysarebetterFornumericaloperations und multi-dimensionaldata, whilethearraymoduleiStableforbasic, an Gedächtniseffizienten

NumpyarraysarebetterforeheavynumericalComputing, während der projectwithsimpledatatypes.1) numpyarraysoferversatility und -PerformanceForlargedataSets und Compoxexoperations.2) thearraysoferversStility und Mächnory-Effefef

ctypesallowscreatingandmanipulationsc-stylearraysinpython.1) usectypestoInterfaceWithClibraryForperformance.2) createCec-stylearraysFornumericalComputationen.3) PassarrayStocfunctionsFectionFicecher-Operationen.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

SublimeText3 Linux neue Version
SublimeText3 Linux neueste Version

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung
