1

此代码有效:

import sys
from PyQt4 import QtCore, QtGui, QtWebKit
from forma import Ui_MainWindow

class MyForm(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        QtCore.QObject.connect(self.ui.pushButton,QtCore.SIGNAL("clicked()"), self.strona)

    def strona(self):
        self.ui.webView.setUrl(QtCore.QUrl("http://plemiona.pl"))

但是这个

funkcje.py

from PyQt4 import QtCore, QtGui, QtWebKit
from forma import Ui_MainWindow

def strona():
        self.ui.webView.setUrl(QtCore.QUrl("http://xxxx.pl"))



import sys, time, funkcje
from PyQt4 import QtCore, QtGui, QtWebKit
from forma import Ui_MainWindow

class MyForm(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        QtCore.QObject.connect(self.ui.pushButton,QtCore.SIGNAL("clicked()"), funkcje.strona)

不工作...

Traceback (most recent call last):
  File "C:\Python33\liczbapierwsza\TribalWarsBot\funkcje.py", line 5, in przejdz_na_strone_plemion
    QtGui.QWidget.__init__(self, parent)
NameError: global name 'self' is not defined

如何从 funkcje.py 导入函数并在 ex run.py 中使用

4

1 回答 1

0

strona需要访问类实例 self. 我不确定您将如何self使用 Qt 传递参数,但您始终可以编写一个包装函数作为调用strona和传递 self 参数的类的一部分。或者导入类型并添加types.MethodType(funkcje.strona, self, MyForm)到类构造函数(__init__)。这将 funkcje.stroma 添加到课程中。请注意,后者未经我测试。

编辑:这是做什么:

class MyForm(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        types.MethodType(strona, self, MyForm) 
        QtCore.QObject.connect(self.ui.pushButton,QtCore.SIGNAL("clicked()"), strona)

注意:这是未经测试的。

于 2013-05-27T17:51:12.033 回答