PyQt4 使用类中函数的全局变量 [英] PyQt4 using global variable from function in class

查看:27
本文介绍了PyQt4 使用类中函数的全局变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我知道要使用函数中的全局变量,您需要先执行该函数:

I understand that to use a global variable from a function, you Need to execute the function first:

def f():
    global s
    s = 'Hello'

f()
print(s)

但是如何在以下示例中全局使用变量 s:

But how do I use variable s globally in following example:

import sys
from PyQt4.QtGui import QApplication, QMainWindow, QPushButton, QLineEdit, QLabel, QComboBox, QProgressBar, QFileDialog
from PyQt4.QtCore import QSize, pyqtSlot


class App(QMainWindow):

    def __init__(self):
        super(App, self).__init__()
        self.setGeometry(500, 300, 820, 350)
        self.setWindowTitle("Widget")
        self.initUI()

    def initUI(self):

        #Buttons
        btnposx = 30
        btnposy = 50

        self.btn4 = QPushButton('GetValue', self)
        self.btn4.move(btnposx,btnposy+220)
        self.btn4.clicked.connect(self.cb_get)

        self.cb = QComboBox(self)
        self.cb.move(btnposx+120,btnposy+150)
        self.cb.resize(80,22)
        self.cb.setMaximumSize(QSize(80,1000000))
        self.cb.addItem('A')
        self.cb.addItem('B')
        self.cb.addItem('C')
        self.cb.addItem('D')
        self.cb.addItem('E')

        self.show()

    @pyqtSlot()
    def cb_get(self):
        global s
        cbtext = str(self.cb.currentText())
        s = cbtext

print(s)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = App()
    sys.exit(app.exec_())

此代码显示了 PyQt4 小部件.函数cb_get 获取QcomboBox 的值,可以在inApp() 中使用.值被保存到变量 s.如何全局使用变量 s?

This code shows a PyQt4 Widget. Function cb_get acquires the Value of a QcomboBox and can be used within the class App(). The Value is saved to variable s. How do I use variable s globally?

推荐答案

我似乎让它工作的唯一方法是为 s 编写一个新函数并在按钮单击时执行它:

The only way I seem to get it to work is to write a new function for s and execute it on button click:

import sys
from PyQt4.QtGui import QApplication, QMainWindow, QPushButton, QLineEdit, QLabel, QComboBox, QProgressBar, QFileDialog
from PyQt4.QtCore import QSize, pyqtSlot


class App(QMainWindow):

    def __init__(self):
        super(App, self).__init__()
        self.setGeometry(500, 300, 820, 350)
        self.setWindowTitle("Widget")
        self.initUI()

    def initUI(self):

        #Buttons
        btnposx = 30
        btnposy = 50

        self.btn4 = QPushButton('GetValue', self)
        self.btn4.move(btnposx,btnposy+220)
        self.btn4.clicked.connect(self.cb_get)
        self.btn4.clicked.connect(self.p)

        self.cb = QComboBox(self)
        self.cb.move(btnposx+120,btnposy+150)
        self.cb.resize(80,22)
        self.cb.setMaximumSize(QSize(80,1000000))
        self.cb.addItem('A')
        self.cb.addItem('B')
        self.cb.addItem('C')
        self.cb.addItem('D')
        self.cb.addItem('E')

        self.show()

    @pyqtSlot()
    def cb_get(self):
        global s
        s = str(self.cb.currentText())

    def p(self):
        print(s)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = App()
    sys.exit(app.exec_())

好吧,至少现在它有自己的功能,我可以单独为它编写代码.

Well, at least now it has ist own function and I can write code for it seperately.

这篇关于PyQt4 使用类中函数的全局变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆