多窗口程序pyqt5和python

时间:2017-12-21 15:53:30

标签: python sockets global-variables pyqt5 serversocket

我是新来的,但我正在寻找答案,我不可能解决我的问题,所以我希望你能帮助我。

我正在创建一个与ABB机器人交互的python程序。该程序由多个文件组成,每个文件包含一个窗口,并向/从机器人发送或接收数据。

为了与机器人通信,我创建了一个套接字连接,程序是服务器,机器人是客户端。 程序的第一个窗口创建套接字,当第二个窗口尝试向机器人发送信息时会出现问题,因为clientocket名称/地址在另一个文件上。

我尝试制作全局变量但不起作用。我也尝试在文件中编写我想要的变量,然后读取它,这传输变量,但我不能发送到机器人,因为它是类型str,我需要socket对象。

知道如何将客户端对象从一个文件传输到另一个文件吗?

欢迎任何建议。

谢谢

1 个答案:

答案 0 :(得分:0)

这可以通过使主窗口成为任何辅助窗口的父窗口并使其从主窗口打开,并在创建时将套接字变量传递给辅助窗口来完成。例如:

class MainWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        self.socket = socket_information  # Set the socket connection up here

    def open_window_two(self):
        dialog = WindowTwoClass(self.socket)
        dialog.exec_()

这里WindowTwoClass是来自另一个文件的辅助窗口的类。这个辅助窗口不能是QMainWindow子类,因此根据您想要的功能,它将是QWidget或QDialog子类。

class WindowTwoClass(QWidget):
    def __init__(self, socket):
        QWidget.__init__(self)
        self.socket = socket