0

我使用 qtdesigner 创建了 gui 表单,并使用 pyuic4 转换为 python 代码。我的主要脚本示例如下:

#!/usr/bin/env python

from PyQt4 import QtGui
from multibootusb_ui import Ui_Dialog
import sys
import os
import another_file_function
class AppGui(QtGui.QDialog,Ui_Dialog):

    def __init__(self):
        QtGui.QDialog.__init__(self)
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)
        self.ui.close.clicked.connect(self.close)
        another_file_function.function2()

    def function1():
        self.ui.text_label.setText("some text")
    function1()

app = QtGui.QApplication(sys.argv)
window = AppGui()
ui = Ui_Dialog()
window.show()
sys.exit(app.exec_())

为了方便起见,我在不同的文件中创建了不同的函数。这样任何脚本都可以随时访问它。

这是 another_file_function 的函数示例:

#!/usr/bin/env python

def function2():
  #code here
  self.ui.text_label.setText("some text")

主脚本中的 function1 和 another_file_function 中的 function2 相同。我也从主类调用function2。问题是,当我function1()从主脚本中使用它时,它会毫无问题地更新 GUI 文本。但是,如果我在不同的文件中使用相同的函数并从主脚本调用该函数,它无法更新并且我得到global name 'self' is not defined错误。

我哪里错了?任何帮助都会得到帮助。

谢谢你。

4

1 回答 1

0

我也不清楚为什么function1会起作用,我会假设它self的定义中有你放弃的。

要开始function2工作,您需要执行以下操作:

其他文件:

def function2(input):
    #code here
    input.ui.text_label.setText("some text")

主文件:

#!/usr/bin/env python

from PyQt4 import QtGui
from multibootusb_ui import Ui_Dialog
import sys
import os
import another_file_function
class AppGui(QtGui.QDialog,Ui_Dialog):

    def __init__(self):
        QtGui.QDialog.__init__(self)
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)
        self.ui.close.clicked.connect(self.close)
        another_file_function.function2()

    def function1(self):
        self.ui.text_label.setText("some text")
    function1()

app = QtGui.QApplication(sys.argv)
window = AppGui()
another_file_function.function2(window)
window.function1()
window.show()
sys.exit(app.exec_())
于 2013-09-13T02:37:20.007 回答