簡體   English   中英

在 pyqt5 中創建按鈕組時遇到問題

[英]Having Trouble making a Button group in pyqt5

這是我用來在 pyqt5 中制作 ButtonGroup 的 python 腳本得到了這個錯誤消息錯誤從 Pyqt5 導入 QButtonGroup 但不知道這是否正確。 .

(只有兩個按鈕的 GUI,更專注於代碼)

from PyQt5 import QtCore, QtGui, QtWidgets, QButtonGroup
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(399, 405)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
        self.gridLayout.setObjectName("gridLayout")
        self.pushButton1 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton1.setObjectName("pushButton1")
        self.gridLayout.addWidget(self.pushButton1, 1, 1, 1, 1)
        spacerItem = 
        QtWidgets.QSpacerItem(40,20,QtWidgets.QSizePolicy.Minimum, 
        QtWidgets.QSizePolicy.Minimum)
        self.gridLayout.addItem(spacerItem, 0, 2, 1, 1)
        self.pushButton2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton2.setObjectName("pushButton2")
        self.gridLayout.addWidget(self.pushButton2, 0, 1, 1, 1)
        spacerItem1 = QtWidgets.QSpacerItem(40, 20, 
        QtWidgets.QSizePolicy.Minimum, 
        QtWidgets.QSizePolicy.Minimum)
        self.gridLayout.addItem(spacerItem1, 1, 0, 1, 1)
        MainWindow.setCentralWidget(self.centralwidget)
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)   
        self.buttngrp = QtWidgets.QButtonGroup()       
        self.buttngrp.setExclusive(True)
        self.buttngrp.addButton(self.pushButton)
        self.buttngrp.addButton(self.pushButton_2)
        self.buttngrp.clicked.connect(self.this_func)
    def this_func(self, buttn):
        print("pressed something !")
    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton.setText(_translate("MainWindow", "button 1"))
        self.pushButton_2.setText(_translate("MainWindow", "button 2"))
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_())

這段代碼對我有用。 我只是一一解決了您代碼中的所有錯誤。

一些錯誤是

  • 從導入的第一行中刪除 QButtonGroup。 QButtonGroup 是 QtWidgets 的一部分,因此要導入它,您必須執行“從 PyQt5.QtWidgets 導入 QButtonGroup”
  • 第 13 行刪除spacerItem =后的回車
  • self.pushButton1在文件中的許多地方命名不一致,您將其稱為self.pushButton
  • self.pushButton2的類似問題。 一些你使用self.pushButton_2地方

.

from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(399, 405)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
        self.gridLayout.setObjectName("gridLayout")
        self.pushButton1 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton1.setObjectName("pushButton1")
        self.gridLayout.addWidget(self.pushButton1, 1, 1, 1, 1)
        spacerItem = QtWidgets.QSpacerItem(40,20,QtWidgets.QSizePolicy.Minimum,
        QtWidgets.QSizePolicy.Minimum)
        self.gridLayout.addItem(spacerItem, 0, 2, 1, 1)
        self.pushButton2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton2.setObjectName("pushButton2")
        self.gridLayout.addWidget(self.pushButton2, 0, 1, 1, 1)
        spacerItem1 = QtWidgets.QSpacerItem(40, 20,
        QtWidgets.QSizePolicy.Minimum,
        QtWidgets.QSizePolicy.Minimum)
        self.gridLayout.addItem(spacerItem1, 1, 0, 1, 1)
        MainWindow.setCentralWidget(self.centralwidget)
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
        self.buttngrp = QtWidgets.QButtonGroup()
        self.buttngrp.setExclusive(True)
        self.buttngrp.addButton(self.pushButton1)
        self.buttngrp.addButton(self.pushButton2)
        self.buttngrp.buttonClicked.connect(self.this_func)
    def this_func(self, buttn):
        print("pressed something !")
    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton1.setText(_translate("MainWindow", "button 1"))
        self.pushButton2.setText(_translate("MainWindow", "button 2"))
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_())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM