3.1 核心属性与 API 垂直布局的核心属性继承自QLayout,重点关注以下实用 API: API 方法 功能说明 实用场景 addWidget(QWidget *widget, int...5.1 核心属性与 API 网格布局的核心是 “行列坐标” 和 “拉伸系数”,关键 API 如下: API 方法 功能说明 实用场景 addWidget(QWidget *widget, int row...layout->addWidget(button4, 3, 0); // 每个按钮独占一行和一列 //此处设置的行数和列数只是用来决定控件之间的相对位置 layout->addWidget...行列坐标错误:网格布局的行号和列号从 0 开始,添加控件时需确保坐标连续,避免出现 “空行列” 导致控件错位; 跨行列参数顺序:addWidget的跨行列参数是rowSpan(跨行数)在前,columnSpan...统一边距和间距:整个项目的布局边距(建议 20-30px)和间距(建议 15-25px)保持一致,提升界面统一性; 灵活使用拉伸因子:通过拉伸因子控制控件缩放优先级,重要控件(如文本编辑区)设置更大的拉伸因子
二、级联选择器原理 其实普通的级联选择器其构成并不复杂。 无非是选择一级的时候,唤起二级的渲染和显示,选择二级的时候,唤起三级的渲染和显示; 至于各级是用列表还是用下拉框,都是其次的。...下面,我们就使用 PyQt5 构建一个省市县的级联选择器。...最终的效果如下所示: 三、构建一个桌面应用的级联选择器 准备数据 要实现省市县的级联选择,省市县的数据必不可少,在这里,我们使用的是一个 JSON 格式嵌套的省市县数据,如下图所示: 数据来源于:https...最终以data.json文件的形式提供给代码读取。...='utf-8') print(self.data_json) 我们的级联选择器通过三个下拉选择器QComboBox()来实现,然后三个下拉选择器用一个网格布局QGridLayout
代码示例:使用 QVBoxLayout 管理多个控件. 1)编写代码, 创建布局管理器和三个按钮. 并且把按钮添加到布局管理器中. 使⽤ addWidget 把控件添加到布局管理器中....核心属性 (和 QVBoxLayout 属性是⼀致的): 代码示例:使用 QHBoxLayout 管理控件 1)编写代码, 创建布局管理器和三个按钮. 并且把按钮添加到布局管理器中....网格布局 Qt 中还提供了 QGridLayout ⽤来实现⽹格布局的效果. 可以达到 M * N 的这种⽹格的效果....核心属性: 整体和 QVBoxLayout 以及 QHBoxLayout 相似. 但是设置 spacing 的时候是按照垂直⽔平两个⽅向来设置的....Spacer 使用布局管理器的时候, 可能需要在控件之间, 添加⼀段空白. 就可以使用 QSpacerItem 来表示. 核心属性: 上述属性在构造函数设置即可.
Qt中提供了一个用于分割窗体的类:QSplitter。这个类的使用也非常简单,准备好需要分割的窗口,设置好分割方向和比例即可。...我们将其宽度设置为1个像素宽,setDisabled(true)将其设置为不可拖动的。这样一来,用户就无法用鼠标拖拽左右窗口的大小了。看看效果: ? ...在分割出来的子窗口中,还可以进行进一步的分割,也就是QSplitter的嵌套使用。...堆栈式窗口及Tab选项卡 堆栈式窗口取义于数据结构中的堆栈,也就是说多个窗口堆叠在一起,当用户点击对应层的窗口时进行切换。以腾讯QQ的设置窗口为例,看看到底是怎样一种效果: ?...这么说来,QTabWidget和QStackedWidget的结构是非常相似的。其实,编写Qt程序的时候,我们要组合一个窗口其实是非常简单的。
在下方公众号后台回复:面试手册,可获取杰哥汇总的 3 份面试 PDF 手册。 前言 昨天晚上坐在电脑面前,想着一边撸代码,一边听音乐。搜了搜自己想听的歌,奈何好多歌曲都提示需要版权,无法播放!...底部主要来显示当前播放音乐,播放进度条,音量控制,上一首/下一首,暂停/开始,播放方式等附加功能 关键字音乐列表爬虫 通过输入的搜索关键字和选择的音乐来源,自动爬取对应的音乐数据 将爬取获取的音乐名进行列表显示...,显示在中间主体搜索页 音乐播放 音乐列表中我们需要双击某一首歌,对爬取的歌曲封面图和歌曲进行下载 下载成功,对音乐文件根据播放进度条进行播放 附加功能 播放音乐时,我们还需要有播放暂停和启动功能 音量控制提高或者降低...UI设计排版布局 基于功能点,我们首先考虑进行简单的UI布局设计,这里我们使用的是pyqt5。...关键字音乐列表爬虫 我们可以根据输入的关键字和音乐来源进行音乐爬取。这里我们需要通过多线程,将歌曲、歌手、歌曲url地址全都获取。
(QGridLayout) QGridLayout(网格布局)是将窗口分隔成行和列的网格来进行排列。...通常可以使用函数addWidget()将被管理的控件(Widget)添加到窗口中,或者使用addLayout()函数将布局(Layout)添加到窗口中。...也可以通过addWidget()函数对所添加的控件设置行数和列数的跨越,最后实现网格占据多个窗格。...5.1、在布局中添加其他布局 整个例子,首先全局布局采用的是水平布局,局部布局采用的分别是水平布局、垂直布局、网格布局和表单布局,准备4个QWidget控件:hwg、vwg、gwg和formlayout...QSplitter类中的常用方法如下表所示: 通过一个例子,了解QSplitter布局的使用,在这个例子中,显示了使用两个QSplitter组织的两个QFrame控件。
在设计一个界面之前,应该考虑到开发的界面可能给不用的用户使用,而用户的屏幕大小、纵横比例、分辨率可能不同,界面还可能是可缩放的,程序应该可以适应这些变化。 ...前面的程序中都是使用setGeometry()方法定位控件的位置,这个方法比较笨拙。试想如果控件很多,布局这些控件需要编写大量的代码。幸运的是,QT提供了更好的方法布局控件。 ...常用的三种布局方法: (1)使用水平布局类QHBoxLayout; (2)使用垂直布局类QVBoxLayout; (3)使用网格布局类QGridLayout。 这三种方法可以嵌套使用。...在界面中,最外部是mainLayout,它的类型是垂直布局类QVBoxLayout。它包含了两个水平布局类QHBoxLayout,分别是topLayout和bomLayout。...4)fromRow:指放置控件的起始网格行号; 5)fromColumn:指放置控件的起始网格列号; 6)rowSpan:指放置控件占多少行; 7)columnSpan:指放置控件占多少列
):使用了未定义的变量。...// 1、变量未定义便直接使用 console.log(my); // 报错:Uncaught ReferenceError: my is not defined // 翻译:my未定义 // 2、将变量赋值给一个无法被赋值的东东...obj.userName); // 报错:Uncaught TypeError: Cannot read property 'userName' of undefined // 翻译:undefined的环境下无法读取属性...原因:对象中属性与其对应的值之间使用“=” // 语法错误有很多,在此就不一一列举了 三、通过try...catch处理Error 1、被try包裹的代码块一旦出现Error,会将Error传递给catch...•使用try包裹的代码,即使不出错,效率也比不用try包裹的代码低。•在try中,尽量少的包含可能出错的代码。•无法提前预知错误类型的错误,必须用try catch捕获。•finally可以省略。
数据传输:支持发送和接收数据,数据以字节流的形式进行处理。信号和槽机制:提供信号(signals)和槽(slots)机制,以便于处理异步事件,例如连接成功、接收到数据、连接断开等。...接收数据:void readAll(): 读取所有可用的数据。QByteArray read(qint64 maxSize = 0): 读取指定大小的数据。...它可以处理多种数据类型,如整型、浮点型、字符串等,并且支持对数据的序列化和反序列化。QDataStream通常与QFile、QTcpSocket等类一起使用,以便于文件和网络通信中的数据操作。...QDataStream &operator>>(QVariant &var): 从数据流中读取变体值。流状态和版本:bool atEnd() const: 判断是否到达流的末尾。... main.cpp # 主程序的源文件)# 设置可执行文件的属性,使其在 Windows 和 macOS 上为特定类型set_target_properties(fortuneclient
布局用于规范控件内子控件的排列和摆放顺序,使得图形界面内的控件位置井然有序。...一、Qt For Python的几种常用布局 在图形界面编程中,一般存在以下几种常见的布局方式: 水平布局:布局内的控件沿水平方向排列; 垂直布局:布局内的控件沿垂直方向排列; 网格布局:布局按照行和列进行划分...,布局内的控件分列不同的行和列中; 表单布局:布局实现表单显示方式的布局。...四、网格布局 网格布局与水平布局和垂直布局皆不一样,网格布局内部通过一个无形的网格来对其中的控件进行布局。 ? 如同表格一样,网格布局里面分位行和列单元格,同时一个单元格可以占多行或者多列。...六、最后 以上就是Qt For Python中常见几种布局的使用方法了。虽然还有很多种其他的布局方法,但这4种是最基础最常使用的布局方法,大家可以根据项目的实际需求灵活地使用布局。 ?
在使用递归时消耗大量堆栈,导致游览器抛出错误,因为游览器给分配的内存不是无限的。...TypeError: Cannot read property 'x' of undefined TypeError: Cannot set property 'x' of undefined 含义:无法读取属性...‘x’, 无法设置属性 'x' 为什么报错?...访问或设置未定义(undefined)或null值的属性时会发生这种报错。...一种简单且适用于小型属性链的方法是使用逻辑运算符&&。
之前的文章,分别有介绍过使用Qt程序实现一个时钟和一个秒表,本篇,来将这两个功能整合在一起,实现两个页面的随意切换,并且两个页面能独立运行,互不影响。...ui_TimerWidget.h,构造函数继承的ui也是Ui::TimerWidget 2.3 主程序框架 移植好Qt时钟程序和Qt秒表程序后,就可以将这两个功能加入到堆栈窗口中了。...注意,下面的页面切换,我改用两个QPushButton来实现Qt时钟和Qt秒表的页面切换,并使用QGridLayout进行布局,使得两个按钮位于整个界面的左侧。...,Qt的信号和槽机制,需要信号和槽函数的参数一致或信号的参数多于槽的参数,而按钮按下没有参数,但切换堆栈页面需要一个参数(索引号,指示要展示第几个页面),因此不能直接使用pStack的setCurrentIndex...4 总结 本篇介绍了介绍了QStackedWidget的使用,通过这个类,实现了Qt时钟和Qt秒表这两个页面可以随意切换。
布局管理是GUI编程中的一个重要方面。布局管理是一种如何在应用窗口上放置组件的一种方法。我们可以通过两种基础方式来管理布局。我们可以使用绝对定位和布局类。...使用布局管理器管理布局是组织窗口小部件的首选方式 绝对定位 程序员以像素为单位指定每个小部件的位置和大小。...在上面的例子中我们使用move()方法定位了一些标签组件。在使用move()方法时,我们给move()方法提供了x和y坐标作为参数。move()使用的坐标系统是从左上角开始计算的。x值从左到右增长。...微信截图_20181206111338.png 网格布局 QGridLayout是最通用的布局类。它将空间划分为行和列。 #!...布局使用了QGridLayout布局 我们创建了一个网格布局并且设置了组件之间的间距。
__init__() # 使用super函数可以实现子类使用父类的方法 self.setWindowTitle("记事本") self.setWindowIcon(QIcon...setViewportUpdateMode(): 设置视口更新模式,QGraphicsView 使用这个属性来决定当场景改变或者暴露时候如何刷新场景的区域,通常不需要修改这个属性,但是在有些情况下做这个工作可以改进绘图性能...是一个设置日历的控件,它提供了一个基于月份的视图,允许用户通过鼠标和键盘选择日期,默认是选中今天,可以对日期的范围进行限制。...value() :与当前显示的值有关,若当前显示的是数字,则该属性的值为0。...,可以在PyQt和Qt的应用中显示图形(包括2D和3D图形),在Designer中,该部件没有任何独有属性,都是继承的QWidget的属性。
PyQt5操作手册 一、安装PyQt5 1.确保已安装Python解释器,版本为3.5以上; 2.使用pip安装PyQt5:在命令行中输入pip install PyQt5,等待安装完成。...; QProgressBar:进度条,用于显示任务进度; QDateTimeEdit:日期和时间选择框; QFileDialog:文件对话框,用于选择文件或文件夹。...以上只是一些常用控件的示例,更多控件的使用与属性设置可以查阅PyQt5官方文档。...七、布局管理器 QVBoxLayout:垂直布局,将控件垂直排列; QHBoxLayout:水平布局,将控件水平排列; QGridLayout:网格布局,将控件按网格排列; QVBoxLayout和QHBoxLayout...常用于窗口的垂直或水平排列,而QGridLayout用于更复杂的网格布局。
本例讲解计算器的编程。涉及到的内容有:单行文本框、多行文本浏览框和按钮的应用,布局(含垂向箱型布局以及栅格布局)和 事件(含按钮单击,Enter建按下事件)。程序的显示效果如下图。...bttexts: buttons.append(QPushButton(bttext))#循环创建多个按钮 glayout = QGridLayout()#创建网格布局...#向网格布局添加控件 .addWidget(Qwidget,row,column) # or .addWidget(Qwidget,row,column,rowSpan...在PyQt 中我们可以使用绝对定位(给定x和y坐标) 和使用布局类。但是,使用绝对定位主要有以下缺点: 1. 如果我们改变了窗口的大小,控件的位置可能变得不协调 2....布局类有 QHBoxLayout(水平箱型布局)、QVBoxLayout(垂向箱型布局)和 QGridLayout(网格布局) 。布局可以嵌套使用,如本例中网格布局就嵌套在垂向箱型布局中。
,请及时指出,我会很快修正 一些关键字会直接使用英文 目前该专题为纯理论,实际操作在完成后有演示 1....绝对位置 我们可以使用setGeometry() 方法设置widget在窗体上的位置和大小 import sys from PyQt4 import QtGui def window(): app...(行列)的方式排列起来 我们可以将widget 放在制定的行和列中 可选的 我们还可以扩展行和列的大小,这样可使其相对于其他的widget更高和宽 它有如下方法 addWidget(QWidget, int...win.show() sys.exit(app.exec_()) if __name__ == '__main__': window() 上面的程序首先新建一个QGridLayout 之后使用循环的形式增加...2.3 QFormLayout 该布局可以让我们很方便的创建一个表单布局 即只有两列的网格布局 第一列为label 第二列为输入框 它有如下3个方法 addRow(QLabel, QWidget) 增加包含
该示例显示了如何使用信号和槽来实现计算器小部件的功能,以及如何使用QGridLayout将子小部件放置在网格中。 通过绑定不同的按钮和不同的槽函数实现计算功能。...SLOT(unaryOperatorClicked())); Button *equalButton = createButton(tr("="), SLOT(equalClicked())); 创建按钮的同时绑定相关槽函数...->addWidget(readMemoryButton, 3, 0); mainLayout->addWidget(setMemoryButton, 4, 0); mainLayout->addWidget...->addWidget(plusButton, 5, 4); mainLayout->addWidget(squareRootButton, 2, 5); mainLayout->addWidget(...5, 5); setLayout(mainLayout); 关于更多 在QtCreator软件可以找到: 或在以下Qt安装目录找到: C:\Qt\{你的Qt版本}\Examples\{你的Qt版本}\
使用绝对位置布局 3. QBoxLayout addStretch() 添加可伸缩控件 4. QGridLayout 5. QFormLayout 6. 嵌套布局 7....布局管理 QHBoxLayout 水平 QVBoxLayout 垂直 QGridLayout 网格 QFormLayout 表单布局,两列的形式 addLayout() 插入子布局 addWidget(...使用绝对位置布局 使用 (x, y) 坐标 import sys from PyQt5.QtWidgets import QWidget, QLabel, QApplication class Example...QApplication(sys.argv) demo = Example() demo.show() sys.exit(app.exec_()) 缺点: 窗口大小变动时,控件大小和位置不会随动...(button, *position) self.move(300, 150) self.setWindowTitle('网格布局管理例子') if __name_
这个极极极简的音乐播放器类似于“阅后即焚”的软件,播放器可以随机播放歌曲,获取下一首歌曲,不能重新播放上一首歌曲,不能获取歌曲的名称和演唱者。听过的歌曲,就像过眼云烟,放完即散。...这个播放器一共有6个控件: 左上角的程序关闭按钮; 左侧的播放状态标签; 顶部的slogan; 播放/暂停按钮; 下一首按钮; 播放进度条; 基于以上控件,我们用一个网格布局来排列: class Music...format=json") # print(reps.json()) file_url = reps.json()['data']['url'] self.finished_signal.emit...在这里,我们借助Qt提供的QtMultimedia子模块中的QMediaPlayer来实现MP3音乐的播放,QtMultimedia的详细使用可见Qt的官方文档:https://doc.qt.io/qtforpython...播放音乐按钮需要控制和判断音乐的状态,可通过QMediaPlayer的mediaStatus()方法获取,并以此来进行判断: ?