建设网站用什么语言,河南建设厅网站首页,seo优化包括,wordpress more标签使用教程这是PyQt6教程。本教程适合初学者和中级程序员。阅读本教程后#xff0c;您将能够编写非平凡的PyQt6应用程序。
代码示例可在本站下载#xff1a;教程源代码
目录
引言日期和时间第一个工程菜单与工具栏布局管理事件和信号对话框小部件小工具II拖放绘画
PyQt6中的布局管理…这是PyQt6教程。本教程适合初学者和中级程序员。阅读本教程后您将能够编写非平凡的PyQt6应用程序。代码示例可在本站下载教程源代码目录引言日期和时间第一个工程菜单与工具栏布局管理事件和信号对话框小部件小工具II拖放绘画PyQt6中的布局管理布局管理是我们在应用程序窗口上放置小部件的方式。我们可以使用绝对定位或布局类来放置我们的小部件。使用布局管理器管理布局是组织小部件的首选方式。绝对位置程序员以像素为单位指定每个小部件的位置和大小。当您使用绝对定位时我们必须了解以下限制如果我们调整窗口大小小部件的大小和位置不会改变不同平台上的应用程序可能看起来不同更改应用程序中的字体可能会破坏布局如果我们决定改变布局我们必须完全重做布局这既乏味又耗时以下示例将小部件定位在绝对坐标系中。#!/usr/bin/python ZetCode PyQt6 tutorial This example shows three labels on a window using absolute positioning. Author: Jan Bodnar Website: zetcode.com import sys from PyQt6.QtWidgets import QWidget, QLabel, QApplication class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): lbl1 QLabel(ZetCode, self) lbl1.move(15, 10) lbl2 QLabel(tutorials, self) lbl2.move(35, 40) lbl3 QLabel(for programmers, self) lbl3.move(55, 70) self.setGeometry(300, 300, 350, 250) self.setWindowTitle(Absolute) self.show() def main(): app QApplication(sys.argv) ex Example() sys.exit(app.exec()) if __name__ __main__: main()我们使用这种方法来定位我们的小部件。在我们的例子中这些是标签。我们通过提供x和y坐标来定位它们。坐标系的起点位于左上角。x值从左向右增长。y值从上到下增长。lbl1 QLabel(ZetCode, self) lbl1.move(15, 10)标签小部件位于和处。x15y10PyQt6 QHBox布局QHBoxLayout和是水平和垂直排列小部件的基本布局类。QVBox布局想象一下我们想在右下角放置两个按钮。为了创建这样的布局我们使用一个水平框和一个垂直框。为了创建必要的空间我们添加了一个拉伸因子。#!/usr/bin/python ZetCode PyQt6 tutorial In this example, we position two push buttons in the bottom-right corner of the window. Author: Jan Bodnar Website: zetcode.com import sys from PyQt6.QtWidgets import (QWidget, QPushButton, QHBoxLayout, QVBoxLayout, QApplication) class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): okButton QPushButton(OK) cancelButton QPushButton(Cancel) hbox QHBoxLayout() hbox.addStretch(1) hbox.addWidget(okButton) hbox.addWidget(cancelButton) vbox QVBoxLayout() vbox.addStretch(1) vbox.addLayout(hbox) self.setLayout(vbox) self.setGeometry(300, 300, 350, 250) self.setWindowTitle(Buttons) self.show() def main(): app QApplication(sys.argv) ex Example() sys.exit(app.exec()) if __name__ __main__: main()该示例在窗口的右下角放置了两个按钮。当我们调整应用程序窗口的大小时它们会留在那里。我们同时使用a和a.QHBox布局QVBox布局okButton QPushButton(OK) cancelButton QPushButton(Cancel)在这里我们创建了两个按钮。hbox QHBoxLayout() hbox.addStretch(1) hbox.addWidget(okButton) hbox.addWidget(cancelButton)我们创建了一个水平框布局并添加了拉伸因子和两个按钮。拉伸在两个按钮之前增加了一个可拉伸的空间。这将把它们推到窗户的右侧。vbox QVBoxLayout() vbox.addStretch(1) vbox.addLayout(hbox)水平布局被放置在垂直布局中。垂直框中的拉伸系数会将带有按钮的水平框推到窗口底部。self.setLayout(vbox)最后我们设置窗口的主布局。PyQt6 QGrid布局QGridLayout是最通用的布局类。它将空间划分为行和列。#!/usr/bin/python ZetCode PyQt6 tutorial In this example, we create a skeleton of a calculator using QGridLayout. Author: Jan Bodnar Website: zetcode.com import sys from PyQt6.QtWidgets import (QWidget, QGridLayout, QPushButton, QApplication) class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): grid QGridLayout() self.setLayout(grid) names [Cls, Bck, , Close, 7, 8, 9, /, 4, 5, 6, *, 1, 2, 3, -, 0, ., , ] positions [(i, j) for i in range(5) for j in range(4)] for position, name in zip(positions, names): if name : continue button QPushButton(name) grid.addWidget(button, *position) self.move(300, 150) self.setWindowTitle(Calculator) self.show() def main(): app QApplication(sys.argv) ex Example() sys.exit(app.exec()) if __name__ __main__: main()在我们的示例中我们创建了一个按钮网格。grid QGridLayout() self.setLayout(grid)创建一个实例并将其设置为应用程序窗口的布局。QRidLayoutnames [Cls, Bck, , Close, 7, 8, 9, /, 4, 5, 6, *, 1, 2, 3, -, 0, ., , ]这些是稍后用于按钮的标签。positions [(i,j) for i in range(5) for j in range(4)]我们在网格中创建一个位置列表。for position, name in zip(positions, names): if name : continue button QPushButton(name) grid.addWidget(button, *position)使用该方法创建按钮并将其添加到布局中。addWidget复习示例小部件可以跨越网格中的多列或行。在下一个示例中我们将对此进行说明。#!/usr/bin/python ZetCode PyQt6 tutorial In this example, we create a bit more complicated window layout using the QGridLayout manager. Author: Jan Bodnar Website: zetcode.com import sys from PyQt6.QtWidgets import (QWidget, QLabel, QLineEdit, QTextEdit, QGridLayout, QApplication) class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): title QLabel(Title) author QLabel(Author) review QLabel(Review) titleEdit QLineEdit() authorEdit QLineEdit() reviewEdit QTextEdit() grid QGridLayout() grid.setSpacing(10) grid.addWidget(title, 1, 0) grid.addWidget(titleEdit, 1, 1) grid.addWidget(author, 2, 0) grid.addWidget(authorEdit, 2, 1) grid.addWidget(review, 3, 0) grid.addWidget(reviewEdit, 3, 1, 5, 1) self.setLayout(grid) self.setGeometry(300, 300, 350, 300) self.setWindowTitle(Review) self.show() def main(): app QApplication(sys.argv) ex Example() sys.exit(app.exec()) if __name__ __main__: main()我们创建了一个窗口其中有三个标签、两行编辑和一个文本编辑小部件。布局是用完成的。QRidLayoutgrid QGridLayout() grid.setSpacing(10)我们创建网格布局并设置小部件之间的间距。grid.addWidget(reviewEdit, 3, 1, 5, 1)若我们将小部件添加到网格中我们可以提供小部件的行跨度和列跨度。在我们的例子中我们让小部件跨越5行。reviewEditPyQt6教程的这一部分专门介绍布局管理。