来自另一张纸条的PyQT信号

2024-06-01 00:22:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个python脚本。第一个脚本包含一个PyQt GUI,它显示我的交换机端口的状态。要显示状态,它会查询包含端口完整信息的数据库。第二个脚本负责在更改端口状态时对数据库进行必要的更改。 我需要知道如何发送信号或类似的东西时,数据库更新

PyQt脚本

  from PyQt4 import QtCore, QtGui
  import sqlite3
try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)

class MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName(_fromUtf8("MainWindow"))
        MainWindow.resize(300, 170)
        MainWindow.setMaximumSize(QtCore.QSize(300, 200))
        MainWindow.setStyleSheet(_fromUtf8("background-color: rgb(255, 255, 255);"))
        self.centralwidget = QtGui.QWidget(MainWindow)
        self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
        self.mac = QtGui.QLabel(self.centralwidget)
        self.port = QtGui.QLabel(self.centralwidget)
        self.ip_addres = QtGui.QLabel(self.centralwidget)
        self.name = QtGui.QLabel(self.centralwidget)
        self.actionUpdate = QtGui.QAction(MainWindow)
        self.actionUpdate.setObjectName(_fromUtf8("actionUpdate"))
        self.menuFile.addAction(self.actionUpdate)
        QtCore.QObject.connect(self.actionUpdate, QtCore.SIGNAL(_fromUtf8("activated()")), self.update)

        def update(self):

            con = sqlite3.connect("database.db")
            cursorObj = con.cursor()
            sql_query = "SELECT * FROM switch"
            cursorObj.execute(sql_consulta)
            row = cursorObj.fetchone()

            self.mac(_translate("MainWindow", row[0] None))
            self.ip_addres.setText(_translate("MainWindow", row[1], None))
            self.name.setText(_translate("MainWindow", row[2], None))
            self.port.setText(_translate("MainWindow", row[3], None))

if __name__ =="__main__":
    app =QtGui.QApplication(sys.argv)
    myapp = MainWindow()
    myapp.show()
    sys.exit(app.exec_())

另一个脚本在交换机发生更改并更新数据库时执行。 我需要一种方法来更新界面时,发生了变化,而不需要按更新按钮

另一个脚本

import sqlite3
import sys
if __name__ =="__main__":
    con = sqlite3.connect("database.db")
    cursorObj = con.cursor()
    sql_query = "UPDATE switch SET mac ='" + str(sys.argv[0]) + "', ip_addres = '" + str(sys.argv[1]) + "', name = '" + str(sys.argv[2]) + "', port ="  + str(sys.argv[3]) 
    cursorObj.execute(sql_update)
    con.commit()

Tags: nameself脚本defsyscontranslaterow