Python 两个.py数据导入它们,但它给出了一个错误名称xx未定义

Python 两个.py数据导入它们,但它给出了一个错误名称xx未定义,python,pyqt5,Python,Pyqt5,我有个大问题 所以我有一个主窗口和第二个窗口。如果我点击按钮:buttonsite它将打开我的第二个窗口,直到现在没有问题。我在第二个窗口上有一个按钮按钮调用:Ilias_按钮它将关闭第二个按钮(使用命令WindowButton.close()),但如果我在第二个窗口上单击Ilias_按钮,它会给我一个调用的错误 名称错误:未定义名称“WindowButton” 即使我将第二个窗口导入到主窗口文件中 请帮我一下。。我怎样才能解决这个问题 这是我的主窗口 from PyQt5 import QtC

我有个大问题

所以我有一个主窗口和第二个窗口。如果我点击按钮:
buttonsite
它将打开我的第二个窗口,直到现在没有问题。我在第二个窗口上有一个按钮按钮
调用:Ilias_按钮
它将关闭第二个按钮(使用命令
WindowButton.close()
),但如果我在第二个窗口上单击
Ilias_按钮
,它会给我一个调用的错误

名称错误:未定义名称“WindowButton”

即使我将第二个窗口导入到主窗口文件中 请帮我一下。。我怎样才能解决这个问题

这是我的主窗口

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtGui import QPixmap
import webbrowser
from PyQt5.QtWidgets import QMessageBox
from WindowSec import Ui_WindowButton


class Ui_WindowMain(object):           
    def setupUi(self, WindowMain):
        WindowMain.setObjectName("WindowMain")
        WindowMain.setWindowTitle("hallooo")
        WindowMain.resize(300, 600)
        WindowMain.setMinimumSize(QtCore.QSize(300, 600))
        WindowMain.setMaximumSize(QtCore.QSize(300, 600))
        font = QtGui.QFont()
        font.setPointSize(8)
        WindowMain.setFont(font)
        WindowMain.setContextMenuPolicy(QtCore.Qt.DefaultContextMenu)
        WindowMain.setStyleSheet("")

        #ButtonSeite
        self.centralwidget = QtWidgets.QWidget(WindowMain)
        self.centralwidget.setObjectName("centralwidget")
        self.ButtonSeite = QtWidgets.QPushButton(self.centralwidget)
        self.ButtonSeite.setGeometry(QtCore.QRect(50, 185, 200, 40))
        font = QtGui.QFont()
        font.setFamily("Times New Roman")
        font.setPointSize(14)
        font.setBold(True)
        font.setWeight(75)
        self.ButtonSeite.setFont(font)
        self.ButtonSeite.setStyleSheet(
        "QPushButton{background-color: grey; border-width: 2px; border-style: solid; border-color: Black}"
        "QPushButton:hover{background-color: #A4A4A4; border-width: 2px; border-style: solid; border-color: Black}"
        )
        self.ButtonSeite.setObjectName("ButtonSeite")
        self.ButtonSeite.setText("Ilias Homepage")

        #ButtonZertifikat
        self.ButtonZertifikat = QtWidgets.QPushButton(self.centralwidget)
        self.ButtonZertifikat.setGeometry(QtCore.QRect(50, 228, 200, 40))
        font1 = QtGui.QFont()
        font1.setFamily("Times New Roman")
        font1.setPointSize(14)
        font1.setBold(True)
        font1.setWeight(75)
        self.ButtonZertifikat.setFont(font1)
#        self.ButtonZertifikat.setStyleSheet("background-color: grey; border-width: 2px; border-style: solid; border-color: Black;")
        self.ButtonZertifikat.setStyleSheet(
        "QPushButton{background-color: grey; border-width: 2px; border-style: solid; border-color: Black}"
        "QPushButton:hover{background-color: #A4A4A4; border-width: 2px; border-style: solid; border-color: Black}"
        )
        self.ButtonZertifikat.setObjectName("ButtonZertifikat")
        self.ButtonZertifikat.setText("Zertifikat Speichern")

        #Menübar
        WindowMain.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(WindowMain)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 300, 19))
        self.menubar.setObjectName("menubar")
        self.menuMen_Text = QtWidgets.QMenu(self.menubar)
        self.menuMen_Text.setObjectName("menuMen_Text")
        WindowMain.setMenuBar(self.menubar)
        self.menubar.addAction(self.menuMen_Text.menuAction())
        self.menuMen_Text.setTitle("MenüText")



        #Label für Logo
        self.label = QtWidgets.QLabel(WindowMain)
        self.label.setPixmap(QPixmap("Logo.png"))
        self.label.setGeometry(0,20,300,80)


        #textedit1
        self.textEdit1 = QtWidgets.QTextEdit(WindowMain)
        self.textEdit1.setGeometry(10 ,100 , 280, 100)
        self.textEdit1.setObjectName("textEdit1")
        self.textEdit1.setText(
        "ALLES NOCH UMBENNENEN NICHT VERGESSEN"
        "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:11pt; color:#ff0000;\">asdsROOOT</span></p>\n"
        "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:15pt; color:blue;\">HALLO</span></p>\n"
        "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:28pt; font-style:italic; color:#ff0000;\">hallo ich heiße Cihan</span></p>\n"
        "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:18pt; text-decoration: underline; color:#aa55ff;\">uasdasdasdasdadasdaad</span></p>\n"
        "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:18pt; text-decoration: underline; color:#aa55ff;\">rlrlr</span></p>"
        )

        self.textEdit1.setReadOnly(True)
        self.textEdit1.setStyleSheet(
        "QTextEdit{background-color: #BDBDBD; border-width: 2px; border-style: solid; border-color: Black}"
        "QScrollBar{background-color: #BDBDBD; border-width: 2px; border-style: solid; border-color: Black}"              
        )



        self.ButtonSeite.clicked.connect(self.WindowIlias)



    def WindowIlias(self):
        self.window_Ilias = QtWidgets.QMainWindow()
        self.ui = Ui_WindowButton()
        self.ui.setupUi(self.window_Ilias)
#        WindowMain.hide()
        self.window_Ilias.show()


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    WindowMain = QtWidgets.QMainWindow()
    ui = Ui_WindowMain()
    ui.setupUi(WindowMain)
    WindowMain.show()
    sys.exit(app.exec_())







from PyQt5 import QtCore, QtGui, QtWidgets
import webbrowser


class Ui_WindowButton(object):



    def setupUi(self, WindowButton):
        WindowButton.setObjectName("WindowButton")
        WindowButton.setWindowTitle("IliasWindow")
        WindowButton.setFixedSize(300,100)
#        WindowButton.resize(436, 307)
        self.centralwidget = QtWidgets.QWidget(WindowButton)
        self.centralwidget.setObjectName("centralwidget")
        WindowButton.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(WindowButton)
        self.menubar.setGeometry(QtCore.QRect(0,0,300,100))
        self.menubar.setObjectName("menubar")
        WindowButton.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(WindowButton)
        self.statusbar.setObjectName("statusbar")
        WindowButton.setStatusBar(self.statusbar)


        self.info_label = QtWidgets.QLabel(WindowButton)
        self.info_label.setGeometry(10,10,200,30)
        self.info_label.setText("hallooo color und so")
        self.info_label.setStyleSheet(
        "QLabel{border-width: 2px; border-style: solid; border-color: Black}"        
        )

        self.Ilias_Button = QtWidgets.QPushButton(WindowButton)
        self.Ilias_Button.setGeometry(130,60,40,20)
        self.Ilias_Button.setText("OK")
        self.Ilias_Button.setStyleSheet(
        "QPushButton{background-color: grey; border-width: 2px; border-style: solid; border-color: Black}"
        "QPushButton:hover{background-color: #A4A4A4; border-width: 2px; border-style: solid; border-color: Black}"
        )

        self.Ilias_Button.clicked.connect(self.IliasBrowser)



    def IliasBrowser(self):

#        webbrowser.open_new_tab("https://elearning.hs-albsig.de/login.php")
        WindowButton.close()




if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    WindowButton = QtWidgets.QMainWindow()
    ui = Ui_WindowButton()
    ui.setupUi(WindowButton)
    WindowButton.show()
    sys.exit(app.exec_())



在第二个文件的setupUi中,存储一个ref to WindowButton供以后使用:

class Ui_WindowButton(object):
    def setupUi(self, WindowButton):
        self.myMasterWindowButton = WindowButton
    ...
    def IliasBrowser(self):
        self.myMasterWindowButton.close()

这是一个可变范围的问题:windowButton是setupUi的本地设置,在iliasBrowser中不存在。您可能希望在self中保存e引用。您还应该遵守pep8或qt的命名约定,否则您很快就会在类名和变量名或函数名之间迷失方向。您能告诉我如何保存e引用吗?@Demi Lune您能简要解释一下如何在self中保存e引用吗?所以我能解决这个问题?天哪,@Demi Lune非常感谢你。从12个小时以来,我一直在努力解决这个问题。非常感谢你的支持。我还有一个问题,是使用init函数更好,还是编写代码更好?Qt使用setupUi(显然)设置Ui。您可以使用
\uuuu init\uuuu
设置任何与UI无关的变量(尽管我还没有在您的代码中发现任何变量)。