我的问题会用到两个.py: main.py:
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from tag_pivot import *
from mainWindow import Ui_MainWindow
import sys
a = 'tag_'
b = 'pivot_'
c = 'STP_'
d = '_'
e = 'MTD_Level'
f = '()'
g = a+b+c+d+e+f
print(g)
class MainApp(QMainWindow, Ui_MainWindow):
def slot_method(self):
combo = self.comboBox.currentText()//combo is local variable as it is from self the GUI
combo2 = self.comboBox_2.currentText()
eval(a + b + combo + d + combo2 + f)
def __init__(self):
super(MainApp, self).__init__()
self.setupUi(self)
self.init_connections()
def init_connections(self):
self.pushButton.clicked.connect(self.slot_method)
def main():
app = QApplication(sys.argv)
ex = MainApp()
ex.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
主窗口.py:
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'mainWindow.ui'
#
# Created by: PyQt5 UI code generator 5.15.1
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
import sys
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.comboBox = QtWidgets.QComboBox(self.centralwidget)
self.comboBox.setGeometry(QtCore.QRect(100, 160, 111, 51))
self.comboBox.setObjectName("comboBox")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(410, 152, 151, 51))
self.pushButton.setObjectName("pushButton")
self.comboBox_2 = QtWidgets.QComboBox(self.centralwidget)
self.comboBox_2.setGeometry(QtCore.QRect(88, 281, 151, 71))
self.comboBox_2.setObjectName("comboBox_2")
self.comboBox_2.addItem("")
self.comboBox_2.addItem("")
self.comboBox_2.addItem("")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.comboBox.setItemText(0, _translate("MainWindow", "STP_"))
self.comboBox.setItemText(1, _translate("MainWindow", "MM_"))
self.pushButton.setText(_translate("MainWindow", "PushButton"))
self.comboBox_2.setItemText(0, _translate("MainWindow", "Intra_Level"))
self.comboBox_2.setItemText(1, _translate("MainWindow", "MTD_Level"))
self.comboBox_2.setItemText(2, _translate("MainWindow", "YTD_Level"))
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
我的问题是我可以将组合(来自self.comboBox.currentText())从局部变量变为全局变量,因为我想将作为字符串的组合分配给MainAPP类之外的另一个函数。我不确定如何实现它,我认为其他人可能有同样的问题,所以我在这里发布。如果我尝试在 main() 中使用 ex.combo:
def main():
app = QApplication(sys.argv)
ex = MainApp()
gg = ex.combo
ex.show()
sys.exit(app.exec_())
系统告诉我:
Traceback (most recent call last):
File "C:/Users/Michael Su/Desktop/Michael_python/Tag_pivot/main.py", line 86, in <module>
main()
File "C:/Users/Michael Su/Desktop/Michael_python/Tag_pivot/main.py", line 80, in main
gg = ex.combo
AttributeError: 'MainApp' object has no attribute 'combo'
Process finished with exit code 1