[英]Having Trouble making a Button group in pyqt5
這是我用來在 pyqt5 中制作 ButtonGroup 的 python 腳本得到了這個錯誤消息從 Pyqt5 導入 QButtonGroup 但不知道這是否正確。 .
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_())
這段代碼對我有用。 我只是一一解決了您代碼中的所有錯誤。
一些錯誤是
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.