Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 启用&;禁用按钮_Python_Qt_Pyqt_Qpushbutton - Fatal编程技术网

Python 启用&;禁用按钮

Python 启用&;禁用按钮,python,qt,pyqt,qpushbutton,Python,Qt,Pyqt,Qpushbutton,我正在用Python开发一个应用程序,我想将一组特定的按钮设置为禁用,直到首先单击另一个按钮。例如,当我按下Sim卡按钮时,我希望Sim报告按钮设置为启用 我曾尝试使用此解决方案实现该功能:但它仅禁用按钮5秒钟。我只想在相应按钮中满足条件时启用特定按钮。我不想生成报告,除非首先解析了数据 # import Statements from PyQt5 import QtCore, QtGui, QtWidgets # from PyQt5.QtWidgets import QMessageBox,

我正在用Python开发一个应用程序,我想将一组特定的按钮设置为禁用,直到首先单击另一个按钮。例如,当我按下Sim卡按钮时,我希望Sim报告按钮设置为启用

我曾尝试使用此解决方案实现该功能:但它仅禁用按钮5秒钟。我只想在相应按钮中满足条件时启用特定按钮。我不想生成报告,除非首先解析了数据

# import Statements
from PyQt5 import QtCore, QtGui, QtWidgets
# from PyQt5.QtWidgets import QMessageBox, QWidget
from reportViewerWindow import Ui_reportViewerWindow
import os

# Main Class that holds User Interface Objects
class Ui_MainWindow(object):

    # Function for Opening Report Viewer Window From Main Window by clicking View Reports button
    def openReportViewer(self):
        self.window = QtWidgets.QMainWindow()
        self.ui = Ui_reportViewerWindow()
        self.ui.setupUi(self.window)
        self.window.show()



    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.setFixedSize(834, 428)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.MinimumExpanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth())
        MainWindow.setSizePolicy(sizePolicy)
        font = QtGui.QFont()
        font.setFamily("Arial")
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        MainWindow.setFont(font)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        MainWindow.setStyleSheet("background-color: Cornflowerblue")
        MainWindow.setAutoFillBackground(True)

        # Sim Card Button
        self.simCardButton = QtWidgets.QPushButton(self.centralwidget)
        self.simCardButton.setGeometry(QtCore.QRect(30, 200, 211, 30))
        self.simCardButton.setToolTip("Select to parse sim card data")
        self.simCardButton.setStyleSheet("background-color: Silver")
        font = QtGui.QFont()
        font.setFamily("Arial")
        font.setPointSize(14)
        self.simCardButton.setFont(font)
        self.simCardButton.setObjectName("simCardButton")


        # Call Logs Button
        self.callLogButton = QtWidgets.QPushButton(self.centralwidget)
        self.callLogButton.setGeometry(QtCore.QRect(30, 300, 211, 30))
        self.callLogButton.setToolTip("Select to parse call log data")
        self.callLogButton.setStyleSheet("background-color: Silver")
        font = QtGui.QFont()
        font.setFamily("Arial")
        font.setPointSize(14)
        self.callLogButton.setFont(font)
        self.callLogButton.setObjectName("callLogButton")


        # SMS Button
        self.smsButton = QtWidgets.QPushButton(self.centralwidget)
        self.smsButton.setGeometry(QtCore.QRect(30, 250, 211, 30))
        self.smsButton.setToolTip("Select to parse sms data")
        self.smsButton.setStyleSheet("background-color: Silver")
        font = QtGui.QFont()
        font.setFamily("Arial")
        font.setPointSize(14)
        self.smsButton.setFont(font)
        self.smsButton.setObjectName("smsButton")


        # Canonical Address Button
        self.canonicalAddressesButton = QtWidgets.QPushButton(self.centralwidget)
        self.canonicalAddressesButton.setGeometry(QtCore.QRect(30, 150, 211, 30))
        self.canonicalAddressesButton.setToolTip("Select to parse canonical address data")
        self.canonicalAddressesButton.setStyleSheet("background-color: Silver")
        font = QtGui.QFont()
        font.setFamily("Arial")
        font.setPointSize(14)
        self.canonicalAddressesButton.setFont(font)
        self.canonicalAddressesButton.setObjectName("canonicalAddressesButton")


        # Main Window Label
        self.windowMainLabel = QtWidgets.QLabel(self.centralwidget)
        self.windowMainLabel.setGeometry(QtCore.QRect(200, 20, 423, 32))
        font = QtGui.QFont()
        font.setFamily("Arial")
        font.setPointSize(20)
        font.setBold(True)
        font.setWeight(75)
        self.windowMainLabel.setFont(font)
        self.windowMainLabel.setAlignment(QtCore.Qt.AlignCenter)
        self.windowMainLabel.setObjectName("windowMainLabel")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(30, 110, 291, 20))
        self.label.setObjectName("label")


        # # View Reports Button
        self.viewReportsButton = QtWidgets.QPushButton(self.centralwidget)
        self.viewReportsButton.setStyleSheet("background-color: Silver")
        self.viewReportsButton.setGeometry(QtCore.QRect(650, 370, 175, 31))
        self.viewReportsButton.clicked.connect(self.openReportViewer)
        font = QtGui.QFont()
        font.setFamily("Arial")
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        self.viewReportsButton.setFont(font)
        self.viewReportsButton.setObjectName("viewReportsButton")
        self.viewReportsButton.setEnabled(False)


        # Label for evidence viewer
        self.evidenceViewingLabel = QtWidgets.QLabel(self.centralwidget)
        self.evidenceViewingLabel.setGeometry(QtCore.QRect(650, 120, 141, 16))
        self.evidenceViewingLabel.setObjectName("evidenceViewingLabel")

        # Buttons for report generation
        self.generate_canonical_report = QtWidgets.QPushButton(self.centralwidget)
        self.generate_canonical_report.setGeometry(QtCore.QRect(650, 150, 175, 31))
        self.generate_canonical_report.setObjectName("generate_canonical_report")
        self.generate_canonical_report.setStyleSheet("background-color: Silver")
        self.generate_canonical_report.setEnabled(False)


        self.generate_Sim_Report = QtWidgets.QPushButton(self.centralwidget)
        self.generate_Sim_Report.setGeometry(QtCore.QRect(650, 190, 175, 31))
        self.generate_Sim_Report.setObjectName("generate_sim_report")
        self.generate_Sim_Report.setStyleSheet("background-color: Silver")
        self.generate_Sim_Report.setEnabled(False)


        self.generateSMS_Report = QtWidgets.QPushButton(self.centralwidget)
        self.generateSMS_Report.setGeometry(QtCore.QRect(650, 230, 175, 31))
        self.generateSMS_Report.setObjectName("generate_sms_report")
        self.generateSMS_Report.setStyleSheet("background-color: Silver")
        self.generateSMS_Report.setEnabled(False)


        self.generate_callLog_report = QtWidgets.QPushButton(self.centralwidget)
        self.generate_callLog_report.setGeometry(QtCore.QRect(650, 270, 175, 31))
        self.generate_callLog_report.setObjectName("generate_callLog_report")
        self.generate_callLog_report.setStyleSheet("background-color: Silver")
        self.generate_callLog_report.setEnabled(False)


        self.generateFullReportButton = QtWidgets.QPushButton(self.centralwidget)
        self.generateFullReportButton.setGeometry(QtCore.QRect(650, 310, 175, 31))
        self.generateFullReportButton.setObjectName("generateFullReportButton")
        self.generateFullReportButton.setStyleSheet("background-color: Silver")
        self.generateFullReportButton.setEnabled(False)



        MainWindow.setCentralWidget(self.centralwidget)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
        self.actionOpen = QtWidgets.QAction(MainWindow)
        self.actionOpen.setObjectName("actionOpen")
        self.actionExit = QtWidgets.QAction(MainWindow)
        self.actionExit.setObjectName("actionExit")
        self.actionOpen_2 = QtWidgets.QAction(MainWindow)
        self.actionOpen_2.setObjectName("actionOpen_2")
        self.actionExit_2 = QtWidgets.QAction(MainWindow)
        self.actionExit_2.setObjectName("actionExit_2")

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    # Function that sets the text on all the UI Buttons
    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "DB Parser"))
        self.label.setText(_translate("MainWindow", "Data Parsing Options"))
        self.simCardButton.setText(_translate("MainWindow", "Sim Card"))
        self.callLogButton.setText(_translate("MainWindow", "Call Logs"))
        self.smsButton.setText(_translate("MainWindow", "SMS "))
        self.canonicalAddressesButton.setText(_translate("MainWindow", "Canonical Addresses"))
        self.windowMainLabel.setText(_translate("MainWindow", "Python Mobile Device Parser"))

        # Report Button set text and tool_tips
        self.evidenceViewingLabel.setText(_translate("MainWindow", "Report Generator"))

        self.generate_canonical_report.setText(_translate("MainWindow", "Canonical Report"))
        self.generate_canonical_report.setToolTip("Select to generate canonical address report")

        self.generate_Sim_Report.setText(_translate("MainWindow", "Sim Report"))
        self.generate_Sim_Report.setToolTip("Select to generate sim card report")

        self.generateSMS_Report.setText(_translate("MainWindow", "SMS Report"))
        self.generateSMS_Report.setToolTip("Select to generate sms report")

        self.generate_callLog_report.setText(_translate("MainWindow", "Call Log Report"))
        self.generate_callLog_report.setToolTip("Select to generate call log report")

        self.viewReportsButton.setText(_translate("MainWindow", "View Reports"))
        self.viewReportsButton.setToolTip("Select to open report viewing window")

        self.generateFullReportButton.setText(_translate("MainWindow", "Full Report"))
        self.generateFullReportButton.setToolTip("Select to generate full report")

        self.actionOpen.setText(_translate("MainWindow", "Open"))
        self.actionExit.setText(_translate("MainWindow", "Exit"))
        self.actionOpen_2.setText(_translate("MainWindow", "Open"))
        self.actionExit_2.setText(_translate("MainWindow", "Exit"))

    # Event Handling Code Section


        # Parsing Area!!!

        # Canonical Addresses Button click functionality to parse canonical address data
        self.canonicalAddressesButton.clicked.connect(self.select_canonical_data)

        # Sim Card Button click functionality to parse sim card data
        self.simCardButton.clicked.connect(self.select_sim_data)

        # Call Logs Button click functionality to parse call log data
        self.callLogButton.clicked.connect(self.select_call_data)

        # SMS Button click functionality to parse SMS data
        self.smsButton.clicked.connect(self.select_sms_data)

        # Reporting Area!!!

        # canonical address report generating functionality
        self.generate_canonical_report.clicked.connect(self.generate_canonicalR)

        # sim card report generating functionality
        self.generate_Sim_Report.clicked.connect(self.generate_simR)

        # sms report generating functionality
        self.generateSMS_Report.clicked.connect(self.generate_smsR)

        # call log report generating functionality
        self.generate_callLog_report.clicked.connect(self.generate_call_LogR)

        # All data report
        self.generateFullReportButton.clicked.connect(self.generate_full_reportR)


        # Report Generation Functions!!!
        self.one_pass = True
        self.two_pass = False
        self.three_pass = False
        self.four_pass = False

    # Data Parsing Functions!!!

    # Canonical Addresses button function
    def select_canonical_data(self):
        os.system('CanonicalAddressesParser.py')
        self.generate_canonical_report.setEnabled(True)

    # call log button function
    def select_call_data(self):
        os.system('CallLogParser.py')
        self.generate_callLog_report.setEnabled(True)

    # sms button function
    def select_sms_data(self):
        os.system('SmsParser.py')
        self.generateSMS_Report.setEnabled(True)

    # sim card button function
    def select_sim_data(self):
        os.system('SimCardParser.py')
        self.generate_Sim_Report.setEnabled(True)


    def generate_canonicalR(self):
        os.system('CanonicalAddressReporter.py')
        self.generate_canonical_report.setEnabled(True)
        self.check_run_button()


    def generate_call_LogR(self):
        os.system('CallLogReporter.py')
        self.generate_callLog_report.setEnabled(True)
        self.check_run_button()


    def generate_smsR(self):
        os.system('SmsDataReporter.py')
        self.generateSMS_Report.setEnabled(True)
        self.check_run_button()

    def generate_simR(self):
        os.system('SimCardReporter.py')
        self.generate_Sim_Report.setEnabled(True)
        self.check_run_button()



    def generate_full_reportR(self):
        os.system('AllDataReport.py')
        self.check_run_button()

    def check_run_button(self):
        if self.one_pass == self.two_pass == self.three_pass == self.four_pass is True:
            self.generateFullReportButton.setEnabled(True)


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

您可以使用
button.setEnabled(False)
button.setEnabled(True)
来启用和禁用按钮。当它们被启用时,只需在适当的位置添加上面的两行即可触发按钮


以您的示例为例,首先禁用simReport按钮。然后在
选择sim卡数据
功能中,添加
生成sim卡报告。设置启用(True)
。您可以在需要控制按钮是否启用的任何方法中实现此功能。

您可以使用
按钮.setEnabled(False)
按钮.setEnabled(True)
来启用和禁用按钮。当它们被启用时,只需在适当的位置添加上面的两行即可触发按钮


以您的示例为例,首先禁用simReport按钮。然后在
选择sim卡数据
功能中,添加
生成sim卡报告。设置启用(True)
。您可以在需要控制按钮是否启用的任何方法中实现此功能。

我是否不需要使用if语句来检查一个按钮是否在启用另一个按钮之前被按下?如果您将按钮启用码放入通过单击另一个按钮调用的函数中,则不需要。该功能仅在单击相应按钮时运行。如果您需要检查代码中的其他变量,可以使用If/else语句。好的,我将尝试实现它。它工作得很好。非常感谢。如何将FullReport按钮设置为disabled,直到Canonical Report、Sim Report、SMS Report和Call Log Report按钮为true。我无法生成完整的报告,除非上面的所有其他报告按钮都已首先执行。我已经将GeneratealReportButton设置为false,我需要在单击所有其他按钮后启用它。我尝试运行if语句来检查前4个按钮是否为true。我已使用尝试的if语句编辑了上述代码。您添加的if语句格式不正确,无法工作。它也是遥不可及的。要检查所有条件是否为真,可以为每个按钮创建布尔变量,单击按钮时将其设置为真,每次单击按钮时,检查每个变量是否为真,如果为真,则启用按钮。我是否不需要使用if语句检查一个按钮是否在启用另一个按钮之前被按下?如果您将按钮启用码放入通过单击另一个按钮调用的函数中,则不需要。该功能仅在单击相应按钮时运行。如果您需要检查代码中的其他变量,可以使用If/else语句。好的,我将尝试实现它。它工作得很好。非常感谢。如何将FullReport按钮设置为disabled,直到Canonical Report、Sim Report、SMS Report和Call Log Report按钮为true。我无法生成完整的报告,除非上面的所有其他报告按钮都已首先执行。我已经将GeneratealReportButton设置为false,我需要在单击所有其他按钮后启用它。我尝试运行if语句来检查前4个按钮是否为true。我已使用尝试的if语句编辑了上述代码。您添加的if语句格式不正确,无法工作。它也是遥不可及的。要检查所有条件是否为真,可以为每个按钮创建布尔变量,单击按钮时将其设置为真,每次单击按钮时,检查每个变量是否为真,如果为真,则启用按钮。