首页 > 解决方案 > 从列表中创建可滚动区域

问题描述

我有一个要放入小部件的项目列表,滚动浏览该小部件并选择每个项目。起初,我尝试使用 QLabels 执行此操作,但它只是将它们列为无法通过单击选择的文本。因此,我决定使用按钮,即使它不是我想要的功能。

但是,似乎没有滚动...它只是将所有元素塞入该区域,使它们变得非常小。

我有的:

带有非常小的按钮的滚动区域

我想要的是:

在此处输入图像描述

基本上我想要一个列出所有项目的滚动区域,这样通过选择一个我可以获得包含的文本。

我的代码:

# in class
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.monthList = QtWidgets.QScrollArea(self.centralwidget)
        self.monthList.setWidgetResizable(True)
        self.monthList.setStyleSheet("background: #edb5bf")
        self.monthLayout = QtWidgets.QVBoxLayout(self.monthList)
        Methods.ListAvailableMonths(self.monthLayout)

# in methods
def ListAvailableMonths(scrollView):
    available = os.listdir(directories)

    for month in available:
        button = QtWidgets.QPushButton()
        button.setText(month.strip())
        scrollView.addWidget(button)

标签: pythonpyqt5

解决方案


你试过用tkinter吗?



root = Tk() 
listbox = Listbox(root) 
listbox.pack(side = LEFT, fill = BOTH) 

scrollbar = Scrollbar(root) 
scrollbar.pack(side = RIGHT, fill = BOTH) 

在此处插入所需的元素
示例:值 1 到 100

for values in range(100): 
    listbox.insert(END, values) 

将列表框附加到滚动条

listbox.config(yscrollcommand = scrollbar.set) 
scrollbar.config(command = listbox.yview) 

root.mainloop() 

推荐阅读