区块链技术博客
www.b2bchain.cn

Python-在PyQt5中循环创建按钮 – python程序员分享

D0b2wT.gif

本文介绍了Python-在PyQt5中循环创建按钮 – python程序员分享,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

            
                    
我一直在尝试根据PyQt5中变量的值创建X个按钮,但是我的方法不起作用。

我创建了一个带有循环的函数,其中X值为按钮的数量。

此代码(功能已注释)有效:

class Ui_MainWindow(object):  def setupUi(self, MainWindow):      def createButtons(x):         number_of_buttons = x         table_set = 1         distance_from_left = 5          while table_set <= number_of_buttons:             print(distance_from_left) #Check if the loop is runnig             "self.pushButton_{} = QtWidgets.QPushButton(self.groupBox)".format(table_set)             "self.pushButton_{}.setGeometry(QtCore.QRect({}, 15, 40, 35))".format(table_set, distance_from_left)             "self.pushButton_{}.setText("{}")".format(table_set, str(table_set).zfill(2))             "self.pushButton_{}.setObjectName("pushButton_{}")".format(table_set, table_set)             table_set += 1             distance_from_left += 45      MainWindow.setObjectName("MainWindow")     MainWindow.resize(1366, 768)     MainWindow.setAutoFillBackground(False)     self.centralwidget = QtWidgets.QWidget(MainWindow)     self.centralwidget.setObjectName("centralwidget")     self.groupBox = QtWidgets.QGroupBox(self.centralwidget)     self.groupBox.setGeometry(QtCore.QRect(0, 80, 531, 56))     self.groupBox.setAutoFillBackground(False)     self.groupBox.setObjectName("groupBox")     #createButtons(3)     self.pushButton_1 = QtWidgets.QPushButton(self.groupBox)     self.pushButton_1.setGeometry(QtCore.QRect(5, 15, 40, 35))     self.pushButton_1.setText("01")     self.pushButton_1.setObjectName("pushButton_1")     self.pushButton_2 = QtWidgets.QPushButton(self.groupBox)     self.pushButton_2.setGeometry(QtCore.QRect(50, 15, 40, 35))     self.pushButton_2.setText("02")     self.pushButton_2.setObjectName("pushButton_2")     self.pushButton_3 = QtWidgets.QPushButton(self.groupBox)     self.pushButton_3.setGeometry(QtCore.QRect(95, 15, 40, 35))     self.pushButton_3.setText("03")     self.pushButton_3.setObjectName("pushButton_3")     MainWindow.setCentralWidget(self.centralwidget)     self.centralwidget.show()     QtCore.QMetaObject.connectSlotsByName(MainWindow) 

这(功能正在运行,直接命令已注释)不起作用。在我看来,它们看起来一样。

from PyQt5 import QtCore, QtGui, QtWidgets  class Ui_MainWindow(object):      def setupUi(self, MainWindow):          def createButtons(x):             number_of_buttons = x             table_set = 1             distance_from_left = 5              while table_set <= number_of_buttons:                 print(distance_from_left) #Check if the loop is runnig                 "self.pushButton_{} = QtWidgets.QPushButton(self.groupBox)".format(table_set)                 "self.pushButton_{}.setGeometry(QtCore.QRect({}, 15, 40, 35))".format(table_set, distance_from_left)                 "self.pushButton_{}.setText("{}")".format(table_set, str(table_set).zfill(2))                 "self.pushButton_{}.setObjectName("pushButton_{}")".format(table_set, table_set)                 table_set += 1                 distance_from_left += 45          MainWindow.setObjectName("MainWindow")         MainWindow.resize(1366, 768)         MainWindow.setAutoFillBackground(False)         self.centralwidget = QtWidgets.QWidget(MainWindow)         self.centralwidget.setObjectName("centralwidget")         self.groupBox = QtWidgets.QGroupBox(self.centralwidget)         self.groupBox.setGeometry(QtCore.QRect(0, 80, 531, 56))         self.groupBox.setAutoFillBackground(False)         self.groupBox.setObjectName("groupBox")         createButtons(3)         """         self.pushButton_1 = QtWidgets.QPushButton(self.groupBox)         self.pushButton_1.setGeometry(QtCore.QRect(5, 15, 40, 35))         self.pushButton_1.setText("01")         self.pushButton_1.setObjectName("pushButton_1")         self.pushButton_2 = QtWidgets.QPushButton(self.groupBox)         self.pushButton_2.setGeometry(QtCore.QRect(50, 15, 40, 35))         self.pushButton_2.setText("02")         self.pushButton_2.setObjectName("pushButton_2")         self.pushButton_3 = QtWidgets.QPushButton(self.groupBox)         self.pushButton_3.setGeometry(QtCore.QRect(95, 15, 40, 35))         self.pushButton_3.setText("03")         self.pushButton_3.setObjectName("pushButton_3")         """         MainWindow.setCentralWidget(self.centralwidget)         self.centralwidget.show()         QtCore.QMetaObject.connectSlotsByName(MainWindow) 

没有按钮显示。有人可以告诉我我在做什么错吗?

参考方案

尝试一下:

import sys from PyQt5.QtWidgets import (QMainWindow, QWidget, QVBoxLayout,                               QApplication, QPushButton)   class MainWindow(QMainWindow):      def __init__(self, x):                                         # x <-- 3         super().__init__()          self.centralwidget = QWidget()         self.setCentralWidget(self.centralwidget)         self.lay = QVBoxLayout(self.centralwidget)          for i in range(x):                                          # <---             self.btn = QPushButton('Button {}'.format(i +1), self)                         text = self.btn.text()             self.btn.clicked.connect(lambda ch, text=text : print("nclicked--> {}".format(text)))             self.lay.addWidget(self.btn)          self.numButton = 4          pybutton = QPushButton('Create a button', self)         pybutton.clicked.connect(self.clickMethod)          self.lay.addWidget(pybutton)         self.lay.addStretch(1)      def clickMethod(self):         newBtn = QPushButton('New Button{}'.format(self.numButton), self)         self.numButton += 1         newBtn.clicked.connect(lambda : print("nclicked===>> {}".format(newBtn.text())))         self.lay.addWidget(newBtn)   if __name__ == "__main__":     app = QApplication(sys.argv)     mainWin = MainWindow(3)                                            # 3 --> x     mainWin.show()     sys.exit( app.exec_() ) 

Python-在PyQt5中循环创建按钮 - python

Python uuid4,如何限制唯一字符的长度 – python

在Python中,我正在使用uuid4()方法创建唯一的字符集。但是我找不到将其限制为10或8个字符的方法。有什么办法吗?uuid4()ffc69c1b-9d87-4c19-8dac-c09ca857e3fc谢谢。 参考方案 尝试:x = uuid4() str(x)[:8] 输出:"ffc69c1b" Is there a way to…

如何使用pass语句? – python

我正在学习Python,并且已经到达有关pass语句的部分。我正在使用的指南将其定义为通常用作占位符的Null语句。我仍然不完全明白那是什么意思。有人可以告诉我一个简单的/基本情况,在其中使用pass语句以及为什么需要它吗? 参考方案 假设您正在使用尚未实现的某些方法设计一个新类。class MyClass(object): def meth_a(self)…

Python-crontab模块 – python

我正在尝试在Linux OS(CentOS 7)上使用Python-crontab模块我的配置文件如下:{ "ossConfigurationData": { "work1": [ { "cronInterval": "0 0 0 1 1 ?", "attribute&…

Python:检查是否存在维基百科文章 – python

我试图弄清楚如何检查Wikipedia文章是否存在。例如,https://en.wikipedia.org/wiki/Food 存在,但是https://en.wikipedia.org/wiki/Fod 不会,页面只是说:“维基百科没有此名称的文章。”谢谢! 参考方案 >>> import urllib >>> prin…

Python Pandas导出数据 – python

我正在使用python pandas处理一些数据。我已使用以下代码将数据导出到excel文件。writer = pd.ExcelWriter('Data.xlsx'); wrong_data.to_excel(writer,"Names which are wrong", index = False); writer.…

部分转自互联网,侵权删除联系

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » Python-在PyQt5中循环创建按钮 – python程序员分享
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们