來需求了。。干活啦。。
需求內容
部分時候由于緩存刷新、驗證碼顯示不出來或者瀏覽器打不開或者打開速度很慢等原因,導致部分測試同事不想使用瀏覽器登錄服務器執行命令。 期望有小工具可以替代登錄瀏覽器的操作,直接發送指令到服務器執行并將執行結果返回。
需求設計
1、開發界面,方便用戶輸入IP、用戶名、密碼以及執行的命令。
2、IP、用戶名、密碼和命令輸入提供默認值。特別是用戶名和密碼,對于測試服務器來說,通常都是固定的。
3、IP、命令行輸入框可以自動補全用戶輸入。自動補全常用IP、命令行可以提高操作效率。
4、可以自動保存用戶執行成功的IP、命令行。用于完善自動補全命令(本文代碼未實現)。
需求設計
1、使用Qt Designer實現界面開發。開發后界面參考如下:
2、使用socket程序登錄服務器并執行命令,并將結果顯示在界面文本框中。
代碼實現(程序可以直接復制運行)
1、使用Qt Designer實現界面開發。拖動4個label+4個輸入框+1個按鈕+1個textBrowser到主界面。開發后界面同需求設計中的截圖。
2、使用pyuic5 -o commandtools.py commandtools.ui指令將.ui文件轉換成.py文件。
# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'commandTools.ui'## Created by: PyQt5 UI code generator 5.11.3## WARNING! All changes made in this file will be lost!from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(483, 347) self.ip_label = QtWidgets.QLabel(Form) self.ip_label.setGeometry(QtCore.QRect(30, 20, 16, 16)) font = QtGui.QFont() font.setBold(True) font.setWeight(75) self.ip_label.setFont(font) self.ip_label.setObjectName("ip_label") self.ip_lineEdit = QtWidgets.QLineEdit(Form) self.ip_lineEdit.setGeometry(QtCore.QRect(50, 20, 101, 20)) self.ip_lineEdit.setObjectName("ip_lineEdit") self.username_label = QtWidgets.QLabel(Form) self.username_label.setGeometry(QtCore.QRect(160, 20, 61, 16)) font = QtGui.QFont() font.setBold(True) font.setWeight(75) self.username_label.setFont(font) self.username_label.setObjectName("username_label") self.username_lineEdit = QtWidgets.QLineEdit(Form) self.username_lineEdit.setGeometry(QtCore.QRect(220, 20, 71, 20)) self.username_lineEdit.setObjectName("username_lineEdit") self.password_label = QtWidgets.QLabel(Form) self.password_label.setGeometry(QtCore.QRect(300, 20, 61, 16)) font = QtGui.QFont() font.setBold(True) font.setWeight(75) self.password_label.setFont(font) self.password_label.setObjectName("password_label") self.password_lineEdit = QtWidgets.QLineEdit(Form) self.password_lineEdit.setGeometry(QtCore.QRect(360, 20, 80, 20)) self.password_lineEdit.setObjectName("password_lineEdit") self.command_label = QtWidgets.QLabel(Form) self.command_label.setGeometry(QtCore.QRect(30, 70, 51, 16)) font = QtGui.QFont() font.setBold(True) font.setWeight(75) self.command_label.setFont(font) self.command_label.setObjectName("command_label") self.command_lineEdit = QtWidgets.QLineEdit(Form) self.command_lineEdit.setGeometry(QtCore.QRect(90, 70, 251, 20)) self.command_lineEdit.setObjectName("command_lineEdit") self.result_textBrowser = QtWidgets.QTextBrowser(Form) self.result_textBrowser.setGeometry(QtCore.QRect(30, 120, 410, 201)) self.result_textBrowser.setObjectName("result_textBrowser") self.run_Button = QtWidgets.QPushButton(Form) self.run_Button.setGeometry(QtCore.QRect(360, 70, 80, 23)) self.run_Button.setObjectName("run_Button") self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): _translate = QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form", "cmdTool")) self.ip_label.setText(_translate("Form", "IP")) self.ip_lineEdit.setText(_translate("Form", "127.0.0.1")) self.username_label.setText(_translate("Form", "username")) self.username_lineEdit.setText(_translate("Form", "admin")) self.password_label.setText(_translate("Form", "password")) self.password_lineEdit.setText(_translate("Form", "Winovs12!")) self.command_label.setText(_translate("Form", "Command")) self.command_lineEdit.setText(_translate("Form", "LST LOG")) self.run_Button.setText(_translate("Form", "Run"))
新聞熱點
疑難解答