我的问题将分两部分使用。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()
mainWindow.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_())
我的问题是,我是否可以将combo(来自self.comboBox.currentText(((从局部变量转换为全局变量,因为我想将作为字符串的combo分配给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
虽然我不确定为什么函数的tag_pivot部分是必要的,但如果您只想打印特定的值,为什么不直接从main打印它们,而不是从long-eval语句和不同的函数打印呢?
print(f"{c}{e}") # prints STP_MTD
或者,如果你喜欢一个功能,特别是打印:
def printer_function(*args):
print("".join(args))
然后可以从main调用此函数,并为您提供要打印在一起的任何变量。例如
printer_function(c, e) # prints STP_MTD
我希望这能有所帮助,但如果打印不是你想的唯一功能,请告诉我。