Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » PYQT5 анти - AddStretch и создание кнопок в цикле [RSS Feed]

#1 Дек. 29, 2017 12:25:46

nikk
От:
Зарегистрирован: 2010-11-09
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

PYQT5 анти - AddStretch и создание кнопок в цикле

С новым годом всех!
Если сделать:

 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('')



Отредактировано nikk (Дек. 29, 2017 13:28:31)

Офлайн

#2 Дек. 29, 2017 20:11:03

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

PYQT5 анти - AddStretch и создание кнопок в цикле

nikk
И второй вопрос - мне нужно создать штук десять однотипных кнопок, отличающихся только иконками. Вопрос, как им динамически имена объектов генерировать? То есть не руками писать:
http://python.su/forum/topic/32446/
там для лайнедитов, но смысл один и тотже. можно в списки помещать. А можно в грид и потом узнавать местоположения в гриде. Или помещать на лайот, если заранее сделать все коннекты, и в дальнейшем их не нужно изменять, то можно обойтись одной переменной в цикле.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Дек. 29, 2017 20:21:26)

Офлайн

#3 Дек. 29, 2017 21:02:32

vic57
Зарегистрирован: 2015-07-07
Сообщения: 893
Репутация: +  126  -
Профиль   Отправить e-mail  

PYQT5 анти - AddStretch и создание кнопок в цикле

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_()

Отредактировано vic57 (Дек. 29, 2017 21:06:42)

Офлайн

#4 Дек. 29, 2017 22:02:57

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2679
Репутация: +  182  -
Профиль   Отправить e-mail  

PYQT5 анти - AddStretch и создание кнопок в цикле

> Нужно сделать несколько наезжающих друг на друга, частично друг друга перекрывающих кнопок. Можно это как-то сделать стандартными средствами компоновки 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_())



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Отредактировано Rodegast (Дек. 29, 2017 22:13:08)

Офлайн

#5 Янв. 1, 2018 11:00:15

nikk
От:
Зарегистрирован: 2010-11-09
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

PYQT5 анти - AddStretch и создание кнопок в цикле

там для лайнедитов, но смысл один и тотже. можно в списки помещать.

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

Rodegast, идею понял, попробую, спасибо.



Офлайн

  • Начало
  • » GUI
  • » PYQT5 анти - AddStretch и создание кнопок в цикле[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version