Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
152 views
in Technique[技术] by (71.8m points)

python - PyQt: Put scrollbars in this

Here's my class:

class ChildFoundDlg(QDialog):


    #__init__ function:
    def __init__(self, parent=None):
       QtGui.QDialog.__init__(self, parent)
       self.resize(500, 270)
       self.setMaximumSize(500, 540)
       self.GridLayout = QtGui.QGridLayout(self)        

    def buttons(self, a, b, c):    #a = 0, b = 5 c = 7 
       self.font = QtGui.QFont("Sans Serif", 10, QFont.Normal)

       self.label = QtGui.QLabel(self)
       self.label.setText(QtGui.QApplication.translate("Form", "Μ?πω? εννοε?τε την/τον:", None, QtGui.QApplication.UnicodeUTF8))
       self.label.setFont(self.font)
       self.GridLayout.addWidget(self.label, a, 0, 1, 1) 

       self.label2 = QtGui.QLabel(self)
       self.GridLayout.addWidget(self.label2, a, 1, 1, 1) 
       self.label2.setFont(self.font)

       self.pushButton = QtGui.QPushButton(self)
       self.GridLayout.addWidget(self.pushButton, b, 0, 2, 1) 
       self.pushButton.setText(QtGui.QApplication.translate("Form", "Υπ?τροπο?", None, QtGui.QApplication.UnicodeUTF8))
       self.pushButton.setSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Expanding) 

       self.pushButton2 = QtGui.QPushButton(self)
       self.GridLayout.addWidget(self.pushButton2, b, 1, 2, 1) 
       self.pushButton2.setText(QtGui.QApplication.translate("Form", "Αναβολ?", None, QtGui.QApplication.UnicodeUTF8))
       self.pushButton2.setSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Expanding) 

       self.pushButton3 = QtGui.QPushButton(self)
       self.GridLayout.addWidget(self.pushButton3, c, 1, 2, 1) 
       self.pushButton3.setText(QtGui.QApplication.translate("Form", "Ακ?ρωση", None, QtGui.QApplication.UnicodeUTF8))
       self.pushButton3.setSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Expanding) 
       self.pushButton3.clicked.connect(self.reject)

What I want to achieve is that, when I call self.buttons many times with different values, when the maximum size of the dialog is reached, stop enlarging but instead put scrollbars, if you understand what I'm saying... How can I do that?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Here is an example using a QScrollArea:

#!/usr/bin/env python
#-*- coding:utf-8 -*-

from PyQt4 import QtCore, QtGui

class myDialog(QtGui.QDialog):
    _buttons = 0

    def __init__(self, parent=None):
        super(myDialog, self).__init__(parent)

        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.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 380, 247))
        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)

        self.verticalLayoutScroll.addWidget(pushButton)


if __name__ == "__main__":
    import sys

    app = QtGui.QApplication(sys.argv)
    app.setApplicationName('myDialog')

    main = myDialog()
    main.show()

    sys.exit(app.exec_())

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...