我是python的新手,並試圖學習爲覆盆子pi編寫GUI。我目前只是遵循一個在線教程來在QT設計器中創建一個GUI。我的QT設計師有一個自定義小部件,我從其他開發人員添加到GUI中顯示LED。小部件/模塊是qledplugin.py並保存在qt5.plugins.desinger下的「python」文件夾中,並將qled.py保存在.local.lib.python3.5.site-packages下。PyQT5和Python3「退出(a.exec_())」NameError:未定義名稱'a'
我創建了一個基本的GUI,並將文件保存爲mainwindow.ui。我用pyuic將其轉換爲python3並保存爲mainwindow.py。然後我寫了一個名爲main.py的基本主程序來啓動GUI。沒有功能,它應該簡單地加載我在窗口中創建的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的代碼
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_())
在爲qled.py代碼的頂部我已經
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
爲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()
「a」在退出前定義,但該程序仍將其視爲未定義。我確實需要修改python3的一些內容,因爲它是用python2.7編寫的,但我對python很陌生,也許我錯過了一些東西。所有幫助讚賞。
你的代碼示例只是幾個簡單的縮進錯誤,這很容易固定。張貼之前請仔細檢查您的代碼。 – ekhumoro