私はPythonには新しく、ラズベリーパイのGUIを書くことを学びます。私は現在、QTデザイナーでGUIを作成するオンラインチュートリアルに従っています。私のQTデザイナーには、別の開発者がGUIにLEDを表示するために追加したカスタムウィジェットがあります。ウィジェット/モジュールはqledplugin.pyで、qt5.plugins.desingerの下の "python"フォルダに保存され、qled.pyを.local.lib.python3.5.site-packagesの下に保存しました。PyQT5とPython3 "exit(a.exec_())" NameError:名前 'a'が定義されていません
私は基本的なGUIを作成し、ファイルはmainwindow.uiとして保存されます。私はpyuをpython3に変換するために使用し、mainwindow.pyとして保存しました。その後、GUIを起動するためのmain.pyという基本的なメインプログラムを書きました。関数はありません。ウィンドウで作成したGUIを読み込むだけです。私が遭遇した問題は、私はpython3 main.py
を実行したときに、私は次のようなエラー
[email protected]:~/Programming/Projects/GenUi$ python3 main.py
Traceback (most recent call last):
File "main.py", line 6, in <module>
import mainwindow
File "/home/clint/Programming/Projects/GenUi/mainwindow.py", line 86, in <module>
from qled import QLed
File "/home/clint/.local/lib/python3.5/site-packages/qled.py", line 398, in <module>
exit(a.exec_())
NameError: name 'a' is not defined
エラーが発生しqled.pyのコードがqled.pyのコードの上部に
if __name__=="__main__":
from sys import argv, exit
import sys
class Test(QWidget):
def __init__(self, parent=None):
QWidget.__init__(self, parent)
self.setWindowTitle("QLed Test")
_l=QGridLayout()
self.setLayout(_l)
self.leds=[]
for row, shape in enumerate(QLed.shapes.keys()):
for col, colour in enumerate(QLed.colours.keys()):
if colour==QLed.Grey: continue
led=QLed(self, onColour=colour, shape=shape)
_l.addWidget(led, row, col, Qt.AlignCenter)
self.leds.append(led)
self.toggleLeds()
def toggleLeds(self):
for led in self.leds: led.toggleValue()
QTimer.singleShot(1000, self.toggleLeds)
a = QApplication(sys.argv)
t = Test()
t.show()
t.raise_()
exit(a.exec_())
あり得るということです私はmain.pyのコードが
import sys
import PyQt5
from PyQt5.QtWidgets import *
import mainwindow
class MainWindow(QMainWindow, mainwindow.Ui_MainWindow):
def __init__(self):
super(self.__class__, self).__init__()
self.setupUi(self)
def main():
app = QApplication(sys.argv)
form = MainWindow()
form.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main()
です
from PyQt5.QtWidgets import QApplication, QWidget, QGridLayout, QSizePolicy, QStyleOption
from PyQt5.QtCore import pyqtSignal, Qt, QSize, QTimer, QByteArray, QRectF, pyqtProperty
from PyQt5.QtSvg import QSvgRenderer
from PyQt5.QtGui import QPainter
を持っています
'a'は終了の直前に定義されていますが、プログラムではまだ未定義とみなされます。 python2.7で書かれているので、私はpython3のいくつかを修正しなければなりませんでしたが、私はPythonには新しく、多分何かを見逃しました。すべての助けに感謝します。
あなたのコード例は、単に簡単に固定されているいくつかの単純なインデントエラーを持っています。投稿する前にコードを慎重に確認してください。 – ekhumoro