第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何使用QScrollArea讓滾動(dòng)條出現(xiàn)

如何使用QScrollArea讓滾動(dòng)條出現(xiàn)

弒天下 2023-07-18 14:58:02
我正在嘗試使用 pyqt5 創(chuàng)建一個(gè)具有垂直布局的滾動(dòng)區(qū)域,并且我放入了一些標(biāo)簽。我知道即使它是垂直布局,如果文本不適合,它也應(yīng)該水平滾動(dòng)。但無(wú)論我嘗試什么,它都不讓我滾動(dòng)。這是我正在使用的代碼:class window(QMainWindow):    def __init__(self):        super(window, self).__init__()        self.setGeometry(300, 300, 803, 520)        self.init_ui()    def init_ui(self):        self.teacher_box = QScrollArea(self)        self.teacher_box.setGeometry(360, 10, 420, 181)        self.teacher_box.setWidgetResizable(True)        self.teacher_box.setObjectName("teacher_box")        self.teacher_box_widget = QWidget()        self.teacher_box_widget.setGeometry(QtCore.QRect(0, 0, 420, 181))        self.teacher_box_widget.setObjectName("teacher_box_widget")        self.verticalLayout = QVBoxLayout(self.teacher_box_widget)        self.verticalLayout.setObjectName("verticalLayout")        self.teacher_box.setWidget(self.teacher_box_widget)         self.teacher_label = QtWidgets.QLabel(self.teacher_box_widget)        self.teacher_label.setText("This is a new text label that i created using pyqt5's qscrollarea and now the label is going to get outside the boundaries")        self.teacher_label.adjustSize()        self.teacher_label.move(10, 10)if __name__ == "__main__":    app = QApplication(sys.argv)    win = window()    win.show()    sys.exit(app.exec_())它應(yīng)該是這樣的:它看起來(lái)是這樣的:
查看完整描述

1 回答

?
汪汪一只貓

TA貢獻(xiàn)1898條經(jīng)驗(yàn) 獲得超8個(gè)贊

由于許多問(wèn)題都想知道如何使用許多小部件都有的 QScrollArea,因此我將詳細(xì)解釋各種形式,并將它們用作未來(lái)讀者的規(guī)范答案。


QScrollArea 只允許放置容器小部件,因此其他小部件必須放置為容器小部件的子級(jí)。


要將小部件放置為另一個(gè)小部件的子部件,有兩種可能性:


1.使用QLayout:

QLayouts 允許您根據(jù) QSizePolicy、strecth、sizeHint 等自動(dòng)調(diào)整小部件的幾何形狀。因此,在這種情況下很簡(jiǎn)單:只需將 widgetResizing 屬性設(shè)置為 True。


import sys

from PyQt5 import QtWidgets



class Window(QtWidgets.QMainWindow):

    def __init__(self, parent=None):

        super(Window, self).__init__(parent)


        central_widget = QtWidgets.QWidget()

        self.setCentralWidget(central_widget)


        scroll_area = QtWidgets.QScrollArea(central_widget)

        scroll_area.setGeometry(360, 10, 420, 180)

        scroll_area.setWidgetResizable(True)


        container = QtWidgets.QWidget()

        scroll_area.setWidget(container)


        # Set widgets via layout

        lay = QtWidgets.QVBoxLayout(container)

        lay.setContentsMargins(10, 10, 0, 0)

        for letter in "ABCDE":

            text = letter * 100

            label = QtWidgets.QLabel(text)

            lay.addWidget(label)

        lay.addStretch()


        self.setGeometry(300, 300, 803, 520)



if __name__ == "__main__":

    app = QtWidgets.QApplication(sys.argv)

    win = Window()

    win.show()

    sys.exit(app.exec_())

2、直接設(shè)置widgets,無(wú)需布局:

在這種情況下,您必須計(jì)算包含內(nèi)部小部件的最小幾何形狀并設(shè)置容器中的大小,還必須將 widgetResizing 屬性設(shè)置為 False:


import sys

from PyQt5 import QtCore, QtWidgets



class Window(QtWidgets.QMainWindow):

    def __init__(self, parent=None):

        super(Window, self).__init__(parent)


        central_widget = QtWidgets.QWidget()

        self.setCentralWidget(central_widget)


        scroll_area = QtWidgets.QScrollArea(central_widget)

        scroll_area.setGeometry(360, 10, 420, 180)

        scroll_area.setWidgetResizable(False)


        container = QtWidgets.QWidget()

        scroll_area.setWidget(container)


        # calculate geometry

        geometry = QtCore.QRect(10, 10, 0, 0)

        for letter in "ABCDE":

            text = letter * 100

            label = QtWidgets.QLabel(text, container)

            label.adjustSize()

            label.move(geometry.bottomLeft())

            geometry |= label.geometry()


        geometry.setTopLeft(QtCore.QPoint(0, 0))

        container.resize(geometry.size())


        self.setGeometry(300, 300, 803, 520)



if __name__ == "__main__":

    app = QtWidgets.QApplication(sys.argv)

    win = Window()

    win.show()

    sys.exit(app.exec_())


查看完整回答
反對(duì) 回復(fù) 2023-07-18
  • 1 回答
  • 0 關(guān)注
  • 172 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)