Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 8, 2011 08:57:50

OlegGor
От:
Зарегистрирован: 2011-02-08
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с PyQt & Pyth31

В программе есть группа параметров (дополнительные) которая при запуске программы не видима. По необходимости могу сделать эту группу видимой, тогда главное окно соответственно увеличивается под размер этой группы. А обратно при установке группы в невидимое состояние, размер осн окна остается прежним и получается пустое пространство. Помогите вернуть его в прежние размеры). Пробовал и stretch и resize. Что-то никак….
И еще, есть ли для питон 31 библиотека для создания графиков, а то все которые находил для питон 2.7 и ниже



Офлайн

#2 Фев. 8, 2011 09:52:29

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Помогите с PyQt & Pyth31

Попробуйте QWidget.updateGeometry() для вашей формы.

Прикладывание к сообщению о проблеме кода, позволяющего при его запуске проблему воспроизвести - сильно помогает.

Откровенно говоря, лень тратить десять минут на создание простенького примера - результат нужен вам, а не мне.



Офлайн

#3 Фев. 8, 2011 10:01:39

OlegGor
От:
Зарегистрирован: 2011-02-08
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с PyQt & Pyth31

to Андрей Светлов
Извините, на одном форуме прикладывал, так совсем ответа не дождался. Мож что не так))

Вот часть кода, относящаяся к вопросу. Весь код, наверное не имеет смысла

self.moreButton = QtGui.QPushButton(“&Дополнительные параметры”)
self.moreButton.setCheckable(True)
self.moreButton.setSizePolicy(QtGui.QSizePolicy.Fixed,QtGui.QSizePolicy.Fixed)
self.connect(self.moreButton, QtCore.SIGNAL(“toggled(bool)”),self.groupBoxDop3, QtCore.SLOT(“setVisible(bool)”))

# Организация данных в MainLayout
mainLayout=QtGui.QVBoxLayout()
mainLayout.addWidget(self.frame1)
mainLayout.addWidget(self.groupBox1)
mainLayout.addWidget(self.groupBox2)
mainLayout.addWidget(self.groupBox3)
mainLayout.addWidget(self.groupBoxRez1)
mainLayout.addWidget(self.moreButton)

# Организация данных в MainLayout2
mainLayout2=QtGui.QHBoxLayout()
mainLayout2.addLayout(mainLayout)
mainLayout2.addWidget(self.groupBoxDop3)

# Прячем groupBox “Дополнительные параметры”
self.groupBoxDop3.hide()
mainLayout2.setSizeConstraint(QtGui.QLayout.SetFixedSize)

# организация MainLayout в centralWidget
c_widg=QtGui.QWidget()
c_widg.setLayout(mainLayout2)
self.setCentralWidget(c_widg)



Офлайн

#4 Фев. 8, 2011 10:37:18

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Помогите с PyQt & Pyth31

Нет, вы не поняли. Читая вашу простыню я вижу: создаётся форма пользовательского интерфейса.
Наверное, она делается правильно.

Что помогает решить вашу проблему?
- относительно короткий кусок кода, создающий окно.
- в окне есть две кнопки (помимо прочих виджетов): показать вашу скрытую группу и ее спрятать.
- я скачиваю себе этот код. Запускаю его. Жму на “показать”. Вижу результат. Жму на “спрятать”. Вижу, что виджеты пропадают, а размер главного окна не меняется.
- произвожу необходимые правки.
- добиваюсь нужного результата и показываю его вам.

Просто? Очень!

Долго? Возможно, я затратил больше времени, рассказывая вам элементарные вещи.



Офлайн

#5 Фев. 8, 2011 11:31:21

OlegGor
От:
Зарегистрирован: 2011-02-08
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с PyQt & Pyth31

Надеюсь, сейчас я понял, вроде совсем сильной тупизной не отличался, хотя…)
Минимизировал код основного окна, чтобы осталась структура. Ну уж как мог:

import sys
from PyQt4 import QtGui, QtCore

class MainWindow(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QMainWindow.__init__(self,parent)

def setupUi(self):
self.setWindowTitle('Рента')
self.setGeometry(200, 100, 300, 100)
srok1=

# Добавление виджетов для ввода данных в groupBox “Основные параметры”
self.srokdog=QtGui.QLabel('Срок до выплаты ренты (n), годы:')
self.srokdog1=QtGui.QComboBox()
self.srokdog1.addItems(srok1)
self.srokdog1.setCurrentIndex(9)

self.groupBox3=QtGui.QGroupBox()
self.groupBox3.setTitle('Основные параметры:')

groupBoxL2=QtGui.QGridLayout()
groupBoxL2.setSpacing=10
groupBoxL2.addWidget(self.srokdog, 0, 0)
groupBoxL2.addWidget(self.srokdog1, 0, 1)
self.groupBox3.setLayout(groupBoxL2)

# Добавление виджетов для ввода данных в groupBox “Дополнительные параметры”
self.aksm=QtGui.QLabel('Андеррайтерский коэф., смерть л/п (aksm):')
self.aksm1=QtGui.QDoubleSpinBox(self)
self.aksm1.setRange(0.01,100.00)
self.aksm1.setValue(1)

self.groupBoxDop3=QtGui.QGroupBox()
self.groupBoxDop3.setTitle('Дополнительные параметры:')
groupBoxLDop2=QtGui.QGridLayout()
groupBoxLDop2.setSpacing=10
groupBoxLDop2.addWidget(self.aksm, 0, 0)
groupBoxLDop2.addWidget(self.aksm1, 0, 1)
self.groupBoxDop3.setLayout(groupBoxLDop2)

self.moreButton = QtGui.QPushButton(“&Дополнительные параметры”)
self.moreButton.setCheckable(True)
self.moreButton.setSizePolicy(QtGui.QSizePolicy.Fixed,QtGui.QSizePolicy.Fixed)
self.connect(self.moreButton, QtCore.SIGNAL(“toggled(bool)”),self.groupBoxDop3, QtCore.SLOT(“setVisible(bool)”))

mainLayout=QtGui.QVBoxLayout()
mainLayout.addWidget(self.groupBox3)
mainLayout.addWidget(self.moreButton)

mainLayout2=QtGui.QHBoxLayout()
mainLayout2.addLayout(mainLayout)
mainLayout2.addWidget(self.groupBoxDop3)
self.groupBoxDop3.hide()
mainLayout2.setSizeConstraint(QtGui.QLayout.SetFixedSize)

c_widg=QtGui.QWidget()
c_widg.setLayout(mainLayout2)
self.setCentralWidget(c_widg)
c_widg.setSizePolicy(QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Expanding)

app = QtGui.QApplication(sys.argv)
mainWin = MainWindow()
mainWin.setupUi()
mainWin.show()
sys.exit(app.exec_())



Офлайн

#6 Фев. 8, 2011 11:39:47

OlegGor
От:
Зарегистрирован: 2011-02-08
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с PyQt & Pyth31

Ну, и что бы код был отображен как принято:

import sys
from PyQt4 import QtGui, QtCore

class MainWindow(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QMainWindow.__init__(self,parent)

def setupUi(self):
self.setWindowTitle('Рента')
self.setGeometry(200, 100, 300, 100)
srok1=['1','2','3','4','5','6','7','8','9','10','11','12','13','14','15']

# Добавление виджетов для ввода данных в groupBox "Основные параметры"
self.srokdog=QtGui.QLabel('Срок до выплаты ренты (n), годы:')
self.srokdog1=QtGui.QComboBox()
self.srokdog1.addItems(srok1)
self.srokdog1.setCurrentIndex(9)

self.groupBox3=QtGui.QGroupBox()
self.groupBox3.setTitle('Основные параметры:')

groupBoxL2=QtGui.QGridLayout()
groupBoxL2.setSpacing=10
groupBoxL2.addWidget(self.srokdog, 0, 0)
groupBoxL2.addWidget(self.srokdog1, 0, 1)
self.groupBox3.setLayout(groupBoxL2)

# Добавление виджетов для ввода данных в groupBox "Дополнительные параметры"
self.aksm=QtGui.QLabel('Андеррайтерский коэф., смерть л/п (aksm):')
self.aksm1=QtGui.QDoubleSpinBox(self)
self.aksm1.setRange(0.01,100.00)
self.aksm1.setValue(1)

self.groupBoxDop3=QtGui.QGroupBox()
self.groupBoxDop3.setTitle('Дополнительные параметры:')
groupBoxLDop2=QtGui.QGridLayout()
groupBoxLDop2.setSpacing=10
groupBoxLDop2.addWidget(self.aksm, 0, 0)
groupBoxLDop2.addWidget(self.aksm1, 0, 1)
self.groupBoxDop3.setLayout(groupBoxLDop2)

self.moreButton = QtGui.QPushButton("&Дополнительные параметры")
self.moreButton.setCheckable(True)
self.moreButton.setSizePolicy(QtGui.QSizePolicy.Fixed,QtGui.QSizePolicy.Fixed)
self.connect(self.moreButton, QtCore.SIGNAL("toggled(bool)"),self.groupBoxDop3, QtCore.SLOT("setVisible(bool)"))

mainLayout=QtGui.QVBoxLayout()
mainLayout.addWidget(self.groupBox3)
mainLayout.addWidget(self.moreButton)

mainLayout2=QtGui.QHBoxLayout()
mainLayout2.addLayout(mainLayout)
mainLayout2.addWidget(self.groupBoxDop3)
self.groupBoxDop3.hide()
mainLayout2.setSizeConstraint(QtGui.QLayout.SetFixedSize)

c_widg=QtGui.QWidget()
c_widg.setLayout(mainLayout2)
self.setCentralWidget(c_widg)
c_widg.setSizePolicy(QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Expanding)

app = QtGui.QApplication(sys.argv)
mainWin = MainWindow()
mainWin.setupUi()
mainWin.show()
sys.exit(app.exec_())



Офлайн

#7 Фев. 9, 2011 11:13:43

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Помогите с PyQt & Pyth31

import sys
from PyQt4 import QtGui, QtCore

class MainWindow(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QMainWindow.__init__(self,parent)

def setupUi(self):
self.setWindowTitle('Рента')
self.setGeometry(200, 100, 300, 100)
srok1=['1','2','3','4','5','6','7','8','9','10','11','12','13','14','15']

# Добавление виджетов для ввода данных в groupBox "Основные параметры"
self.srokdog=QtGui.QLabel('Срок до выплаты ренты (n), годы:')
self.srokdog1=QtGui.QComboBox()
self.srokdog1.addItems(srok1)
self.srokdog1.setCurrentIndex(9)

self.groupBox3=QtGui.QGroupBox()
self.groupBox3.setTitle('Основные параметры:')

groupBoxL2=QtGui.QGridLayout()
groupBoxL2.setSpacing=10
groupBoxL2.addWidget(self.srokdog, 0, 0)
groupBoxL2.addWidget(self.srokdog1, 0, 1)
self.groupBox3.setLayout(groupBoxL2)

# Добавление виджетов для ввода данных в groupBox "Дополнительные параметры"
self.aksm=QtGui.QLabel('Андеррайтерский коэф., смерть л/п (aksm):')
self.aksm1=QtGui.QDoubleSpinBox(self)
self.aksm1.setRange(0.01,100.00)
self.aksm1.setValue(1)

self.groupBoxDop3=QtGui.QGroupBox()
self.groupBoxDop3.setTitle('Дополнительные параметры:')
groupBoxLDop2=QtGui.QGridLayout()
groupBoxLDop2.setSpacing=10
groupBoxLDop2.addWidget(self.aksm, 0, 0)
groupBoxLDop2.addWidget(self.aksm1, 0, 1)
self.groupBoxDop3.setLayout(groupBoxLDop2)

self.moreButton = QtGui.QPushButton("&Дополнительные параметры")
self.moreButton.setCheckable(True)
self.moreButton.setSizePolicy(QtGui.QSizePolicy.Fixed,QtGui.QSizePolicy.Fixed)
self.connect(self.moreButton, QtCore.SIGNAL("toggled(bool)"),self.groupBoxDop3, QtCore.SLOT("setVisible(bool)"))

mainLayout=QtGui.QVBoxLayout()
mainLayout.addWidget(self.groupBox3)
mainLayout.addWidget(self.moreButton)

mainLayout2=QtGui.QHBoxLayout()
mainLayout2.addLayout(mainLayout)
mainLayout2.addWidget(self.groupBoxDop3)
self.groupBoxDop3.hide()
mainLayout2.setSizeConstraint(QtGui.QLayout.SetFixedSize)

c_widg=QtGui.QWidget()
c_widg.setLayout(mainLayout2)
self.setCentralWidget(c_widg)
c_widg.setSizePolicy(QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Expanding)

################### Single change
self.layout().setSizeConstraint(QtGui.QLayout.SetFixedSize)


app = QtGui.QApplication(sys.argv)
mainWin = MainWindow()
mainWin.setupUi()
mainWin.show()
sys.exit(app.exec_())



Офлайн

#8 Фев. 9, 2011 11:59:42

OlegGor
От:
Зарегистрирован: 2011-02-08
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с PyQt & Pyth31

Большое спасибо.

А по поводу модуля для построения графиков для пит31 ничего нет?
Сейчас пробую gnuplot. Или придется в программе, в виджете рисовать график.



Офлайн

#9 Фев. 9, 2011 12:02:32

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Помогите с PyQt & Pyth31

Не знаю



Офлайн

#10 Фев. 9, 2011 12:19:59

OlegGor
От:
Зарегистрирован: 2011-02-08
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с PyQt & Pyth31

Еще раз спасибо…



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version