不起作用QScrollArea
,基本上不会出现。
帮助我理解为什么它不起作用?
import sys
import asyncio
from PyQt6.QtCore import QSize, Qt, QRect
from PyQt6.QtWidgets import QApplication, QMainWindow, QHBoxLayout, \
QWidget, QVBoxLayout, QPushButton, QLineEdit, QScrollArea, QLabel, \
QGridLayout
from parser.db import get_data_by_condition
class Window(QMainWindow):
def __init__(self) -> None:
super().__init__()
self.init_ui()
def init_ui(self):
self.add_button = QPushButton('Добавить')
self.add_button.clicked.connect(self.parse_data)
self.model = QLineEdit()
self.detail = QLineEdit()
self.article = QLineEdit()
input_layout = QHBoxLayout()
input_layout.setSpacing(12)
input_layout.addWidget(self.add_button)
input_layout.addWidget(self.model)
input_layout.addWidget(self.detail)
input_layout.addWidget(self.article)
input_widget = QWidget()
input_widget.setLayout(input_layout)
layout = QVBoxLayout()
container = QWidget()
self.scroll_layout = QVBoxLayout(container)
self.scroll_layout.addWidget(input_widget)
self.scroll_area = QScrollArea(container)
self.scroll_area.resize(900, 250)
self.scroll_area.setWidgetResizable(True)
self.scroll_widget = QWidget()
self.scroll_widget.setGeometry(QRect(0, 0, 380, 280))
self.scroll_layout_2 = QVBoxLayout(self.scroll_area)
self.grid_layout = QGridLayout()
self.scroll_layout_2.addLayout(self.grid_layout)
self.scroll_area.setWidget(self.scroll_widget)
self.scroll_layout.addWidget(self.scroll_area)
container.setLayout(layout)
self.setCentralWidget(container)
def parse_data(self):
model = self.model.text()
article = self.article.text()
detail = self.detail.text()
loop = asyncio.new_event_loop()
objects = loop.run_until_complete(get_data_by_condition(article, detail))
loop.close()
for obj in objects[:40]:
label = QLabel(f'{obj[0]} {obj[1]} {obj[2]} {obj[3]} {obj[4]} {obj[5]}')
label.setFixedHeight(20)
self.grid_layout.addWidget(label)
app = QApplication(sys.argv)
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
window = Window()
window.setFixedSize(QSize(900, 400))
window.show()
if __name__ == '__main__':
app.exec()
我无法检查您的代码,也不知道界面将如何按照您的逻辑运行。
始终在控制台/终端/CMD 中运行代码,如果有任何错误,您将收到真正的错误。
你的代码抛出一个错误:
你的布局管理器搞砸了。
我在代码中为您指出了如何正确完成此操作。
然而,我完全不明白你为什么要使用
QLabel
,阅读QTextBrowser和QTextEdit类并做出正确的决定。