我正在尝试学习PyQt5,我想知道是否有可能使用下面显示的简明形式。 下面的已经工作,但我希望也许有一个压缩的版本。所有按钮最终都将做相同的事情,这就是我正在制作的子手游戏的字眼。
现在,我尝试了一个看起来像这样的for循环。程序中其他所有地方都一样,但是现在我插入了for循环的想法,也许可以解决长度问题。
def initUI(self):
self.setGeometry(700, 250, 700, 700)
self.setWindowTitle("Hang-Man")
btn=[]
for i in range(27):
btn.append(i)
j=i*25
btn[i].move(20,int(j))
btn[i] = QPushButton(chr(i), self)
btn[i].clicked.connect(self.close)
这是实际上按预期工作的代码。一直到z,这里显示的增量。
import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
class Window(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
self.show()
def initUI(self):
self.setGeometry(700, 250, 700, 700)
self.setWindowTitle("Hang-Man")
btn1 = QPushButton('A', self)
btn1.move(20, 25)
btn1.clicked.connect(self.close)
btn2 = QPushButton('B', self)
btn2.move(20, 50)
btn2.clicked.connect(self.close)
btn3 = QPushButton('C', self)
btn3.move(20, 75)
btn3.clicked.connect(self.close)
... #this continues all the way to Z
def run():
app = QApplication(sys.argv)
GUI = Window()
sys.exit(app.exec_())`
run()
答案 0 :(得分:0)
只需使用循环:
buttons = {}
def make_buttons(text, number): # text is a list
for x in range(1, number+1):
buttons[f'btn{x}'] = QPushButton(text[x-1], self)
buttons[f'btn{x}'].move(20, 25*x)
buttons[f'btn{x}'].clicked.connect(self.close)
答案 1 :(得分:0)
您需要为窗口创建水平布局:
self.createHorizontalLayout()
windowLayout = QVBoxLayout()
windowLayout.addWidget(self.horizontalGroupBox)
您可以在PyQT5 website
上获得更多信息。