我尝试使用if($user->role=='test'){
$user->changeConnection('connection2');
}
以艰难的方式检查网络连接,但无法弄清楚如何正确执行此操作。这就是我正在处理的代码似乎没有调用QtNetwork
和finished
信号。我在这里失踪了什么?
error
答案 0 :(得分:1)
问题是由于net_manager
被删除引起的,请记住一个变量只存在于创建它的上下文中,在你的情况下net_manager
是一个局部变量,当__init__
被删除时1}}方法结束。
class CheckConnectivity(QtCore.QObject):
def __init__(self, *args, **kwargs):
QtCore.QObject.__init__(self, *args, **kwargs)
url = QtCore.QUrl("https://www.google.com/")
req = QtNetwork.QNetworkRequest(url)
self.net_manager = QtNetwork.QNetworkAccessManager()
self.res = self.net_manager.get(req)
self.res.finished.connect(self.processRes)
self.res.error.connect(self.processErr)
self.msg = QtWidgets.QMessageBox()
@QtCore.pyqtSlot()
def processRes(self):
if self.res.bytesAvailable():
self.msg.information(None, "Info", "You are connected to the Internet.")
self.res.deleteLater()
@QtCore.pyqtSlot(QtNetwork.QNetworkReply.NetworkError)
def processErr(self, code):
self.msg.critical(None, "Info", "You are not connected to the Internet.")
print(code)
建议使用pyqtSlot()
装饰器,因为它的使用有助于提高应用程序速度并减少内存消耗,但为此,类必须继承QObject
。