我试着用PyQt4做简单的操作。在客户机连接到服务器之后,我想更改标签中的文本以显示服务器的地址。
def connectToServer(self):
self.connectButton.setEnabled(False)
self.socket.connectToHost(HOST, PORT)
print(self.socket.peerAddress())
try:
self.lblSrvConnected.setText(self.socket.peerAddress()) # changes lbl to address
except:
self.lblSrvConnected.setText('Some error')print语句提供<PyQt4.QtNetwork.QHostAddress object at 0x02C23DB0>,并且标签始终从expect更改为Some error。我试着用str()转换成字符串,使用不带括号的peerAddress等等。当我调用peerName()而不是peerAddress()时,它会打印localhost,但peerPort()会给出0而不是我使用的端口。
我想我有两个问题。
首先,我无法从peerAddress获取地址和端口。我尝试将其赋值给变量,但出现错误:TypeError: QHostAddress' object is not iterable
其次,我希望在建立连接之前尝试更改标签。我试过用.waitForConnected(),但也做不到。
我找不到怎么让它工作。
发布于 2016-05-02 03:33:31
尝试:
QHostAddress.toString (self)
以字符串形式返回地址。
例如,如果地址是IPv4地址127.0.0.1,则返回的字符串为127.0.0.1。对于IPv6,字符串格式将遵循RFC5952建议。
来自documentation QT4
https://stackoverflow.com/questions/36970106
复制相似问题