Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 13, 2012 19:45:50

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

pyqt Scrollarea


хочу сделать область с прокруткой, что в других языках, делается просто и без проблем (mel к примеру), сдесь это какая-то адская операция, путем каких-то изысканий получился код:

#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class dlgTest(QScrollArea):
	def __init__(self, parent = None):
		QWidget.__init__(self, parent)
		
		# Scroll
		self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
		self.setVerticalScrollBarPolicy  (Qt.ScrollBarAlwaysOn)
		
		# Window
		self.setWindowTitle('Scroll Panel')
		self.setWindowIcon(QIcon('icon.png'))
		self.resize(100, 100)
		
		# Layout
		vbox = QVBoxLayout()
		self.setLayout(vbox)
		
		# Content 
		for i in range(10):
			self.Label = QLabel()
			self.Label.setText('a_dlinny_dlynny_dlynny_text_')
			vbox.addWidget(self.Label)
		
app = QApplication(sys.argv)
frm = dlgTest()
frm.show()
sys.exit(app.exec_())

код абсолютно рабочий, но полоски для прокрутки появляются, а бегунков нет, и не скролиться … !!!
подскажите, где и что надо еще ему указать … может танец какой требуется? желательно приводить примеры из под данного типа конструкции, по тому как получается не рабочий код, а код для дальнейшей адаптации, методом проб и ошибок (мне кажеться эта тема будет интересна многим, по тому как я натыкаля в этом форуме на подобную, где в финале участники согласились с тем, что код действительно не работает, и все!!! ….. по этому “капитаны очевидность” и умники со ссылками на поисковики и энциклопедии, проходим мимо, нужен конкретный ответ.)

Офлайн

#2 Окт. 13, 2012 22:27:32

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

pyqt Scrollarea

должен извиниться … долгим методом перебирания вариантов .. получил … область внутри виджета скорее всего скрол область, но это еще не скрол область …. как минимум она не скролиться …

#!/usr/bin/python
# -*- coding: utf-8 -*-
# ParentWind
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class dlgTest(QWidget):
	def __init__(self, parent = None, horizontal=True, vertical=True):
		QWidget.__init__(self, parent)
				
		# window
		self.setWindowTitle('Scroll Panel')
		#self.setWindowIcon(QIcon('icon.png'))
		self.resize(100, 100)
		
		# vbox
		self.vbox = QVBoxLayout()
		self.setLayout(self.vbox)
		
		# scroll
		self.scrollarea = QScrollArea(self)
		self.scrollarea.setLayout(self.vbox)
		self.scrollarea.resize(200, 300)
				
		# Content 
		for i in range(10):
			self.Label = QLabel('a_dlinny_dlynny_text_:' + str(i))
			self.vbox.addWidget(self.Label)
					
app = QApplication(sys.argv)
frm = dlgTest()
frm.show()
sys.exit(app.exec_())

может кто сможет продолжить… как теперь привязать область скрола к размерам окна, и чтобы появились полосы прокрутки, и чтобы они работали?

Офлайн

#3 Окт. 13, 2012 22:38:34

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

pyqt Scrollarea

Для ScrollArea нужен дочерний виджет
http://qt-project.org/doc/qt-4.8/qscrollarea.html#details

Из-за этого не работает:

clinicalfilm
self.setLayout(vbox)

Так заработает:
holder = QWidget()
vbox = QVBoxLayout(holder)
self.setWidget(holder)
self.setWidgetResizable(True)

clinicalfilm
по этому “капитаны очевидность” и умники со ссылками на поисковики и энциклопедии, проходим мимо, нужен конкретный ответ.)
Хорошо, что в этот раз в вопросе есть запускаемый пример кода и проблема описана полностью. А вот обижаться и каждый раз повторять то, что в одном из предыдущих топиков дали ссылки на учебники, причем полезные по теме, не стоит.

Офлайн

#4 Окт. 13, 2012 22:51:52

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

pyqt Scrollarea

clinicalfilm
как теперь привязать область скрола к размерам окна, и чтобы появились полосы прокрутки, и чтобы они работали?
Разместить скролл в Layout'e окна. Только нужно учесть моменты из предыдущего поста:
необходим дочерний виджет
scrollarea.setWidgetResizable(True)
И еще контент (label'ы в данном случае) добавлять не в layout окна.

Офлайн

#5 Ноя. 19, 2012 07:57:12

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

pyqt Scrollarea

ок спасибо .. ))

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version