[英]How to change global values between classes in python
I need to send self.deviceIp=QLineEdit() last value
to another class from class PopUpWindows
So I am trying to use global variables:我需要将
self.deviceIp=QLineEdit() last value
从 class PopUpWindows
所以我正在尝试使用全局变量:
I have an interface of the Tab Widget and before the TabWidget I have Pop up Window with PyQt5.我有一个 Tab Widget 的界面,在 TabWidget 之前我弹出 Window 和 PyQt5。 When I start the interface, popUp windows openning and I give a number in QlineEdit for example I entered number of 12 and I equal to
GLOBAL_VAL
=12.当我启动界面时,弹出 windows 打开,我在 QlineEdit 中给出一个数字,例如我输入数字 12,我等于
GLOBAL_VAL
=12。 So When I click the start button, TabWidget Interface is opening.所以当我点击开始按钮时,TabWidget 界面正在打开。 Than when I am in the Tab1() I need to see
GLOBAL_VAL
=12 but I see 0 why this happenning, althogh I am using global
words当我在 Tab1() 中时,我需要看到
GLOBAL_VAL
=12 但我看到 0 为什么会发生这种情况,尽管我使用的是global
词
GLOBAL_VAL=0
class PopUpWindows(QDialog):
def __init__(self):
super().__init__()
self.setFixedSize(750, 450) #set window size
self.msg = QVBoxLayout()
self.deviceIpLabel = QLabel("Please Give number :")
self.deviceIp=QLineEdit()
self.layoutx = QGridLayout()
self.buttoninterface = QPushButton('Start Interface', self)
self.buttoninterface.clicked.connect(self.showinterface)
self.layoutx.addWidget(self.deviceIpLabel,0,0)
self.layoutx.addWidget(self.deviceIp,0,1)
self.layoutx.addWidget( self.buttoninterface,1,0)
self.setLayout(self.layoutx)
self.setLayout(self.msg)
def showinterface(self):
# app = QApplication(sys.argv)
# self.master.set_timeout(2.0)
self.tabwidget = TabWidget()
global GLOBAL_VAL
GLOBAL_VAL = self.deviceIp.text()
# print(HOST_ADDRESS)
self.tabwidget.show()
self.close()
class TabWidget(QDialog):
tabwidget = QTabWidget(QWidget)
tabwidget.addTab(Tab1(), "Tab1")
tabwidget.addTab(Tab2(), "Tab2")
...
class Tab1(QWidget):
..
class Tab2()
global GLOBAL_VAL
print(GLOBAL_VAL) ... I want to see 12 but I see 0 in here
..
I think you probably don't call that function.我想你可能不会称它为 function。 If I do this
如果我这样做
gv = 0
print("gv before change:", gv)
class class1(object):
def __init__(self):
self.some_variables = 1
self.change_global_var()
def change_global_var(self):
global gv
gv = 4
print("gv in change_global_var:", gv)
class class2(object):
def __init__(self):
global gv
print("gv in class2:", gv)
c = class1()
c2 = class2()
The result is this:结果是这样的:
gv before change: 0
gv in change_global_var: 4
gv in class2: 4
You create the tabs "self.tabwidget = TabWidget()" before changing the variables through global "global GLOBAL_VAL, GLOBAL_VAL = self.deviceIp.text()"在通过全局“global GLOBAL_VAL, GLOBAL_VAL = self.deviceIp.text()”更改变量之前创建选项卡“self.tabwidget = TabWidget()”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.