Python 使局部变量成为全局变量
我的问题将用于两个部分。py: main.py: mainWindow.py:Python 使局部变量成为全局变量,python,Python,我的问题将用于两个部分。py: main.py: 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 p
# -*- 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:
警察告诉我:
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
回溯(最近一次呼叫最后一次):
文件“C:/Users/Michael Su/Desktop/Michael_python/Tag_pivot/main.py”,第86行,在
main()
文件“C:/Users/Michael Su/Desktop/Michael_python/Tag_pivot/main.py”,第80行,在main中
gg=前组合
AttributeError:“MainApp”对象没有属性“combo”
进程已完成,退出代码为1
虽然我不确定为什么函数的标记轴部分是必需的,但如果您只是想打印特定的值,为什么不直接从main而不是长eval语句和不同的函数打印它们呢
print(f"{c}{e}") # prints STP_MTD
或者,如果您喜欢某个功能,特别是用于打印:
def printer_function(*args):
print("".join(args))
然后,可以从main调用此函数,并给定要一起打印的任何变量。e、 g
printer_function(c, e) # prints STP_MTD
我希望这会有所帮助,但如果打印不是您考虑的唯一函数,请让我知道。这不是关于打印函数,而是关于如何使self.comboBox.currentText()局部变量只能在MainApp()类中使用,以使其成为全局变量,所以您想使comboBox.currentText()文本在其他地方可访问吗?如果是这样,可以通过访问ex.combo或ex.combo2在main()中使用它。抱歉,如果我没有正确理解。似乎无法将MainAPP.comboBox.currentText()作为全局变量…不是全局变量,不,但您可以在任何需要的地方调用它,方法是调用ex.comboBox.currentText(),因为ex是类MainAPP的对象,您在函数main()中实例化了该类
def printer_function(*args):
print("".join(args))
printer_function(c, e) # prints STP_MTD