Найти - Пользователи
Полная версия: pyqt Scrollarea
Начало » Python для новичков » pyqt Scrollarea
1
clinicalfilm

хочу сделать область с прокруткой, что в других языках, делается просто и без проблем (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_())

код абсолютно рабочий, но полоски для прокрутки появляются, а бегунков нет, и не скролиться … !!!
подскажите, где и что надо еще ему указать … может танец какой требуется? желательно приводить примеры из под данного типа конструкции, по тому как получается не рабочий код, а код для дальнейшей адаптации, методом проб и ошибок (мне кажеться эта тема будет интересна многим, по тому как я натыкаля в этом форуме на подобную, где в финале участники согласились с тем, что код действительно не работает, и все!!! ….. по этому “капитаны очевидность” и умники со ссылками на поисковики и энциклопедии, проходим мимо, нужен конкретный ответ.)
clinicalfilm
должен извиниться … долгим методом перебирания вариантов .. получил … область внутри виджета скорее всего скрол область, но это еще не скрол область …. как минимум она не скролиться …
#!/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_())

может кто сможет продолжить… как теперь привязать область скрола к размерам окна, и чтобы появились полосы прокрутки, и чтобы они работали?
reclosedev
Для 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
по этому “капитаны очевидность” и умники со ссылками на поисковики и энциклопедии, проходим мимо, нужен конкретный ответ.)
Хорошо, что в этот раз в вопросе есть запускаемый пример кода и проблема описана полностью. А вот обижаться и каждый раз повторять то, что в одном из предыдущих топиков дали ссылки на учебники, причем полезные по теме, не стоит.
reclosedev
clinicalfilm
как теперь привязать область скрола к размерам окна, и чтобы появились полосы прокрутки, и чтобы они работали?
Разместить скролл в Layout'e окна. Только нужно учесть моменты из предыдущего поста:
необходим дочерний виджет
scrollarea.setWidgetResizable(True)
И еще контент (label'ы в данном случае) добавлять не в layout окна.
clinicalfilm
ок спасибо .. ))
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