简化我的代码,其他函数使用一个要创建的函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简化我的代码,其他函数使用一个要创建的函数相关的知识,希望对你有一定的参考价值。
我有这个代码:
class Main(QWidget):
def __init__(self):
super().__init__()
self.init_gui()
def init_gui(self):
self.layout_main = QVBoxLayout()
self.setLayout(self.layout_main)
self.first()
self.second()
self.showMaximized()
def scroll_areas(self):
scroll_area = QScrollArea(self)
widget = QWidget()
layout = QVBoxLayout()
scroll_area.setWidgetResizable(True)
scroll_area.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
scroll_area.setFixedSize(200, 200)
widget.setLayout(layout)
scroll_area.setWidget(widget)
# self.layout_main.addLayout(layout)
def first(self):
title = QLabel("<h1>First</h1>")
title.setTextFormat(Qt.RichText)
def second(self):
title = QLabel("<h1>Second</h1>")
title.setTextFormat(Qt.RichText)
我想在function scroll_areas
和functions first
有second
然后我想要这样的东西:
add QLabel title to scroll_areas's layout
我最后一件事是将scroll_areas的布局添加到主布局,我在scroll_areas
中评论了这一行,因为它必须在first
和second
的最后一行。
谢谢!
答案
结果,您可以通过执行代码来完成。
Pre请你写英文并更清楚地解释你的问题。我建议你再读一遍stackoverflow的规则。
我们来解释你的代码吧。
您在第一种和第二种方法中制作标题对象。但它们属于局部变量。所以我们不能像它们那样引用它。所以我将self.
附加到变量上。
首先,执行first
和second
方法,并创建两个标题对象。(如果在self.scroll_areas
之前调用这些方法,则会出错。)
无论如何,你尝试从各个角度来做你的代码。我建议你一遍又一遍地阅读参考Qt。你仍然是新指挥,但请更清楚地写下你的问题。这个建议适合你。
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import sys
class Main(QWidget):
def __init__(self):
super().__init__()
self.init_gui()
def init_gui(self):
self.layout_main = QVBoxLayout()
self.setLayout(self.layout_main)
self.first()
self.second()
self.scroll_areas()
self.showMaximized()
def scroll_areas(self):
scroll_area = QScrollArea(self)
widget = QWidget()
layout = QVBoxLayout()
layout.addWidget(self.first_title)
layout.addWidget(self.second_title)
scroll_area.setWidgetResizable(True)
scroll_area.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
scroll_area.setFixedSize(200, 200)
widget.setLayout(layout)
scroll_area.setWidget(widget)
# self.layout_main.addLayout(layout)
def first(self):
self.first_title = QLabel("<h1>First</h1>")
self.first_title.setTextFormat(Qt.RichText)
def second(self):
self.second_title = QLabel("<h1>Second</h1>")
self.second_title.setTextFormat(Qt.RichText)
def main():
app = QApplication([])
window = Main()
window.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main()
另一答案
试试吧:
class Main(QWidget):
def __init__(self):
super().__init__()
self.init_gui()
def init_gui(self):
self.layout_main = QVBoxLayout()
self.setLayout(self.layout_main)
self.scroll_areas() # +++
self.first()
self.second()
self.showMaximized()
def scroll_areas(self):
scroll_area = QScrollArea(self)
widget = QWidget()
self.layout = QVBoxLayout()
scroll_area.setWidgetResizable(True)
scroll_area.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
scroll_area.setFixedSize(200, 200)
widget.setLayout(self.layout)
scroll_area.setWidget(widget)
# self.layout_main.addLayout(layout)
self.layout_main.addWidget(scroll_area) # +++
def first(self):
title = QLabel("<h1>First</h1>")
title.setTextFormat(Qt.RichText)
self.layout.addWidget(title) # +++
def second(self):
title = QLabel("<h1>Second</h1>")
title.setTextFormat(Qt.RichText)
self.layout.addWidget(title) # +++
以上是关于简化我的代码,其他函数使用一个要创建的函数的主要内容,如果未能解决你的问题,请参考以下文章
使用调用自定义 tableview 单元格的函数简化 tableview 代码
我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情