Я несколько опытный в python, но это было время looooong, так что несите со мной на этом.добавление QWidgets для прокруткиArea заставляет их накапливаться на вершине eachother
Хорошо, поэтому я нашел этот действительно отличный пример кода PyQt, когда парень нажимает кнопки на область прокрутки, которая автоматически запускает полосу прокрутки при переполнении содержимого (кнопок).
Так что я пошел и попытался сделать ту же самую вещь, но толкающие виджеты в области прокрутки, это мой код:
#!/usr/bin/env python
#-*- coding:utf-8 -*-
from PyQt4 import QtCore, QtGui
class myDialog(QtGui.QWidget):
_buttons = 0
def __init__(self, parent=None):
super(myDialog, self).__init__(parent)
self.setGeometry(50, 50, 500, 500)
self.pushButton = QtGui.QPushButton(self)
self.pushButton.setText(QtGui.QApplication.translate("self", "Add Button!", None, QtGui.QApplication.UnicodeUTF8))
self.pushButton.clicked.connect(self.on_pushButton_clicked)
self.scrollArea = QtGui.QScrollArea(self)
self.scrollArea.setWidgetResizable(True)
self.scrollAreaWidgetContents = QtGui.QWidget(self.scrollArea)
self.scrollArea.setWidget(self.scrollAreaWidgetContents)
self.verticalLayout = QtGui.QVBoxLayout(self)
self.verticalLayout.addWidget(self.pushButton)
self.verticalLayout.addWidget(self.scrollArea)
self.verticalLayoutScroll = QtGui.QVBoxLayout(self.scrollAreaWidgetContents)
@QtCore.pyqtSlot()
def on_pushButton_clicked(self):
self._buttons += 1
pustButtonName = u"Button {0}".format(self._buttons)
#pushButton = QtGui.QPushButton(self.scrollAreaWidgetContents)
#pushButton.setText(pustButtonName)
muhAlarma = AlarmaWidget(self.scrollAreaWidgetContents)
self.verticalLayoutScroll.addWidget(muhAlarma)
class AlarmaWidget(QtGui.QWidget):
def __init__(self, parent):
super(AlarmaWidget, self).__init__(parent)
#self.setGeometry(0,0, 30, 30)
theButton = QtGui.QPushButton(self)
theButton.setText("It's Friday my dudes.")
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
main = myDialog()
#main.setWindowFlags(QtCore.Qt.FramelessWindowHint)
#main.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)
#main.showFullScreen()
main.show()
sys.exit(app.exec_())
После выполнения этого кода и нажатия кнопки, кнопки начнут появляться. Однако большая проблема заключается в том, что вместо заполнения полосы прокрутки и включения полосы прокрутки кнопки просто заканчиваются наложением друг на друга, почему?
PS: раскомментировав закомментированные КНОПКА линии и комментируя muhAlarma линия сделает этот пример работы снова. Однако мне нужно нажимать пользовательские виджеты, а не кнопки.
Заранее спасибо
Я сказал пользовательские виджеты * не кнопки *, хотя ... – DeadlyBacon