python - 两个 .py 数据正在导入它们,但它给出了一个错误名称 xx is not defined
问题描述
我有大问题。
所以我有一个主窗口,我有第二个窗口。如果我单击按钮:ButtonSeite
它将打开我的第二个窗口,直到现在没有问题。我的第二个窗口上有一个按钮,该按钮calls:Ilias_Button
将关闭第二个按钮(使用 command WindowButton.close()
),但是如果我单击Ilias_Button
第二个窗口,它会给我一个错误,它调用
NameError:未定义名称“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 存储到 WindowButton 以供以后使用:
class Ui_WindowButton(object):
def setupUi(self, WindowButton):
self.myMasterWindowButton = WindowButton
...
def IliasBrowser(self):
self.myMasterWindowButton.close()
推荐阅读
- javascript - IE 11 react 'promise' 未定义
- google-app-engine - Google AppEngine Flex 垃圾邮件活跃度和重复性检查
- php - 重新加载页面(发送表单)
- r - 从具有重复的双精度向量中选择 k 个最高值
- cobalt - 如何将钴内容文件移动到另一个路径
- tizen - 无法在 tizen 模拟器中的画布上加载视频
- apache-spark - 如何在 egestion 到 neteza 时解决此错误?错误输入行数达到 maxerrors 限制
- sql-server - 选择不同的查询
- excel - 工作表拆分后保持源格式
- android - 无法使用意图在android中以编辑模式打开word文件