Найти - Пользователи
Полная версия: PYQT5 анти - AddStretch и создание кнопок в цикле
Начало » GUI » PYQT5 анти - AddStretch и создание кнопок в цикле
1
nikk
С новым годом всех!
Если сделать:

 hbox = QHBoxLayout()
hbox.addStretch(1)

То это добавит объект-растяжение, благодаря которому можно можно сделать промежутки между кнопками или между кнопками и краем формы. А у меня задача противоположная. Нужно сделать несколько наезжающих друг на друга, частично друг друга перекрывающих кнопок. Можно это как-то сделать стандартными средствами компоновки PyQT5? Или только руками в нужные координаты расставлять кнопки?

И второй вопрос - мне нужно создать штук десять однотипных кнопок, отличающихся только иконками. Вопрос, как им динамически имена объектов генерировать? То есть не руками писать:

 button1 = QPushButton('')
button2 = QPushButton('')
...
button10 = QPushButton('')

А в цикл это загнать? То есть что-то вроде:

 for i in range(1,10):
    Peremennaya_iz_stroki("button"+str(i) ) = QPushButton('')
PEHDOM
nikk
И второй вопрос - мне нужно создать штук десять однотипных кнопок, отличающихся только иконками. Вопрос, как им динамически имена объектов генерировать? То есть не руками писать:
http://python.su/forum/topic/32446/
там для лайнедитов, но смысл один и тотже. можно в списки помещать. А можно в грид и потом узнавать местоположения в гриде. Или помещать на лайот, если заранее сделать все коннекты, и в дальнейшем их не нужно изменять, то можно обойтись одной переменной в цикле.
vic57
nikk
Можно это как-то сделать стандартными средствами компоновки PyQT5? Или только руками в нужные координаты расставлять кнопки?
кроме QSplitter сходу ничего на ум не идет. у лэйаута задача как раз расставить элементы без перекрытий
from PyQt5.Qt import *

app = QApplication([])
split = QSplitter()
btn1 = QPushButton('1')
btn2 = QPushButton('2')
btn3 = QPushButton('3')
split.addWidget(btn1)
split.addWidget(btn2)
split.addWidget(btn3)
split.show()
app.exec_()
да и QSplitter не подходит
разве что ручками
 from PyQt5.Qt import *
app = QApplication([])
w = QWidget()
btn1 = QPushButton('1',w)
btn2 = QPushButton('2',w)
btn3 = QPushButton('3',w)
btn2.move(30,0)
btn3.move(60,0)
w.show()
app.exec_()
Rodegast
> Нужно сделать несколько наезжающих друг на друга, частично друг друга перекрывающих кнопок. Можно это как-то сделать стандартными средствами компоновки PyQT5?

Можно. Но вот только зачем?
 import sys
from PyQt4 import QtCore, QtGui
class Ui_Form(QtGui.QDialog):
    def __init__(self):
	QtGui.QDialog.__init__(self, parent=None)
        self.gridLayout = QtGui.QGridLayout(self)
        self.pushButton = QtGui.QPushButton(self)
        self.gridLayout.addWidget(self.pushButton, 0, 0, 1, 3)
        self.pushButton_2 = QtGui.QPushButton(self)
        self.gridLayout.addWidget(self.pushButton_2, 0, 2, 1, 3)
if __name__ == "__main__":
	app = QtGui.QApplication(sys.argv)
	win = Ui_Form()
	win.show()
	sys.exit(app.exec_())
nikk
там для лайнедитов, но смысл один и тотже. можно в списки помещать.

Спасибо. Я как-то не сообразил, что если объекты запихать в список, в нём будут те же самые ссылки, что и в случае переменных и сами переменные не нужны.

Rodegast, идею понял, попробую, спасибо.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB