27人参与 • 2025-05-14 • C/C++
pyqt布局管理器有六种:
根据窗口坐标布局,类似tk的place。
import sys from pyqt6.qtwidgets import * class window(qwidget): def __init__(self): super().__init__() self.resize(200,200) label1 = qlabel('username:',self) entry1 = qlineedit(self) # label2 = qlabel('password', self) # entry2 = qlineedit(self) # 布局 label1.move(40,40) entry1.move(80,40) if __name__ == '__main__': app = qapplication(sys.argv) w = window() w.show() sys.exit(app.exec())
垂直:vertical horizontal: 水平
y 与 v 有点类似,v就是y 垂直布局.
import sys from pyqt6.qtwidgets import * class window(qwidget): def __init__(self): super().__init__() label1 = qlabel("username:", self) entry1 = qlineedit(self) label2 = qlabel("password:", self) entry2 = qlineedit(self) # 布局 v_layout = qvboxlayout() v_layout.addwidget(label1) v_layout.addwidget(entry1) v_layout.addwidget(label2) v_layout.addwidget(entry2) self.setlayout(v_layout) if __name__ == '__main__': app = qapplication(sys.argv) w = window() w.show() sys.exit(app.exec())
import sys from pyqt6.qtwidgets import * class window(qwidget): def __init__(self): super().__init__() label1 = qlabel("username:", self) entry1 = qlineedit(self) label2 = qlabel("password:", self) entry2 = qlineedit(self) # 布局 h_layout = qhboxlayout() h_layout.addwidget(label1) h_layout.addwidget(entry1) h_layout.addwidget(label2) h_layout.addwidget(entry2) self.setlayout(h_layout) if __name__ == '__main__': app = qapplication(sys.argv) w = window() w.show() sys.exit(app.exec())
addrow(label, widget)
: 添加一行,包含标签和控件。例如用户名输入框或密码输入框。
setformalignment()
: 设置整个表单的对齐方式。
setlabelalignment()
: 设置标签的对齐方式。
addwidget(widget)
: 添加一个占用整行的控件,比如按钮或描述文字。
import sys from pyqt6.qtwidgets import * class window(qwidget): def __init__(self): super().__init__() label1 = qlabel("username:", self) entry1 = qlineedit(self) label2 = qlabel("password:", self) entry2 = qlineedit(self) # 布局 f_layout = qformlayout() f_layout.addrow(label1import sys from pyqt6.qtwidgets import qapplication, qwidget, qlabel, qlineedit, qpushbutton, qformlayout from pyqt6.qtcore import qt class formexample(qwidget): def __init__(self): super().__init__() # 设置窗口标题和大小 self.setwindowtitle("form alignment example") self.resize(400, 200) # 创建表单布局 form_layout = qformlayout() # 添加标签和输入框 form_layout.addrow("username:", qlineedit()) form_layout.addrow("password:", qlineedit()) # 添加按钮 login_button = qpushbutton("login") form_layout.addwidget(login_button) # 设置表单整体对齐方式 form_layout.setformalignment(qt.alignmentflag.aligncenter) # 整体居中 # 设置标签对齐方式 form_layout.setlabelalignment(qt.alignmentflag.alignright) # 标签右对齐 # 应用布局 self.setlayout(form_layout) if __name__ == "__main__": app = qapplication(sys.argv) w = formexample() w.show() sys.exit(app.exec()) , entry1) f_layout.addrow(label2, entry2) self.setlayout(f_layout) if __name__ == '__main__': app = qapplication(sys.argv) w = window() w.show() sys.exit(app.exec())
类似tk的grid()布局方式
import sys from pyqt6.qtwidgets import * class window(qwidget): def __init__(self): super().__init__() label1 = qlabel("username:", self) entry1 = qlineedit(self) label2 = qlabel("password:", self) entry2 = qlineedit(self) # 布局 grid_layout = qgridlayout() grid_layout.addwidget(label1,0,0) grid_layout.addwidget(entry1,0,1) grid_layout.addwidget(label2,1,0) grid_layout.addwidget(entry2,1,1) # 应用布局 self.setlayout(grid_layout) if __name__ == '__main__': app = qapplication(sys.argv) w = window() w.show() sys.exit(app.exec())
布局管理器除了可以添加控件,还可以添加子布局
import sys from pyqt6.qtwidgets import * class window(qwidget): def __init__(self): super().__init__() label1 = qlabel("username:", self) entry1 = qlineedit(self) label2 = qlabel("password:", self) entry2 = qlineedit(self) # 布局 v_layout = qvboxlayout() h1_layout = qhboxlayout() h1_layout.addwidget(label1) h1_layout.addwidget(entry1) h2_layout = qhboxlayout() h2_layout.addwidget(label2) h2_layout.addwidget(entry2) v_layout.addlayout(h1_layout) v_layout.addlayout(h2_layout) # 应用布局 self.setlayout(v_layout) if __name__ == '__main__': app = qapplication(sys.argv) w = window() w.show() sys.exit(app.exec())
到此这篇关于pyqt6 布局管理器的实现示例的文章就介绍到这了,更多相关pyqt6 布局管理器内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论