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无关的变量(尽管我还没有在您的代码中发现任何变量)。