当前位置: 首页 > wzjs >正文

网页制作全套教程视频优化大师卸载不了

网页制作全套教程视频,优化大师卸载不了,陕西省城乡建设厅网站,房产中介网站建设进度目录 1、布局 ①水平布局 - QHBoxLayout ②垂直布局 - QVBoxLayout ③表单布局 - QFormLayout ④布局嵌套 2、信号和槽 ①信号(Signal) emit 方法: ②信号和槽(Slot)绑定 ③使用PyQt槽函数 3、按钮 ①QPus…

目录

1、布局

①水平布局 - QHBoxLayout

②垂直布局 - QVBoxLayout

③表单布局 - QFormLayout

④布局嵌套

2、信号和槽

①信号(Signal)

emit 方法:

②信号和槽(Slot)绑定

③使用PyQt槽函数

3、按钮

①QPushButton-普通按钮

②QRadioButton-单选框

③QCheckBox-复选框

4、对话框 - QDialog

①QMessageBox

②QInputDialog

5、区分addWidget、addLayout、setParent、setLayout

①addWidget和addLayout

②setparent和setlayout

6、面向对象


1、布局

        多个控件在窗口中的展示方式,布局方式分为水平、垂直、网格、表单

①水平布局 - QHBoxLayout
from PyQt5.QtWidgets import *
import sysclass QHWindow(QWidget):def __init__(self):super().__init__()self.setWindowTitle('水平布局示例')# 创建布局layout = QHBoxLayout()btn1 = QPushButton('A')btn2 = QPushButton('B')btn3 = QPushButton('C')btn4 = QPushButton('D')btn5 = QPushButton('E')# 添加布局到窗口中self.setLayout(layout)# 按钮控件添加到布局中layout.addWidget(btn1)layout.addWidget(btn2)layout.addWidget(btn3)layout.addWidget(btn4)layout.addWidget(btn5)if __name__ == '__main__':app = QApplication(sys.argv)qh = QHWindow()qh.show() sys.exit(app.exec())

②垂直布局 - QVBoxLayout
from PyQt5.QtWidgets import *
import sysclass QVWindow(QWidget):def __init__(self):super().__init__()self.setWindowTitle('垂直布局示例')# 创建布局layout = QVBoxLayout()btn1 = QPushButton('A')btn2 = QPushButton('B')btn3 = QPushButton('C')btn4 = QPushButton('D')btn5 = QPushButton('E')# 添加布局到窗口中self.setLayout(layout)# 按钮控件添加到布局中layout.addWidget(btn1)layout.addWidget(btn2)layout.addWidget(btn3)layout.addWidget(btn4)layout.addWidget(btn5)if __name__ == '__main__':app = QApplication(sys.argv)qh = QVWindow()qh.show() sys.exit(app.exec())

③表单布局 - QFormLayout
from PyQt5.QtWidgets import *
import sysdef func(nameEdit,ageEdit,phoneEdit):name = nameEdit.text()age = ageEdit.text()phone = phoneEdit.text()print("姓名:{} 年龄:{} 电话:{}".format(name, age, phone))class QFWindow(QWidget):def __init__(self):super().__init__()self.setWindowTitle('表单布局示例')layout = QFormLayout()self.setLayout(layout)nameEdit = QLineEdit()ageEdit = QLineEdit()phoneEdit = QLineEdit()btn = QPushButton('提交')# 使用 lambda 函数将参数传递给 func,确保 func 在按钮点击时被调用,而不是在连接信号时被调用btn.clicked.connect(lambda:func(nameEdit,ageEdit,phoneEdit))layout.addRow('姓名',nameEdit)layout.addRow('年龄',ageEdit)layout.addRow('电话',phoneEdit)layout.addRow('',btn)if __name__ == '__main__':app = QApplication(sys.argv)qf = QFWindow()qf.show()sys.exit(app.exec())

④布局嵌套

第一部分水平布局,第二部分第三部分垂直布局

from PyQt5.QtWidgets import *
import sysclass QTWindow(QWidget):def __init__(self):super().__init__()self.setWindowTitle('嵌套布局示例')# 整体水平布局wholeLayout = QHBoxLayout()self.setLayout(wholeLayout)layout1 = QHBoxLayout()layout2 = QVBoxLayout()layout3 = QVBoxLayout()wholeLayout.addLayout(layout1)wholeLayout.addLayout(layout2)wholeLayout.addLayout(layout3)# 添加控件layout1.addWidget(QPushButton('A'))layout1.addWidget(QPushButton('B'))layout2.addWidget(QPushButton('C'))layout2.addWidget(QPushButton('D'))layout3.addWidget(QPushButton('E'))layout3.addWidget(QPushButton('F'))layout3.addWidget(QPushButton('G'))if __name__ == '__main__':app = QApplication(sys.argv)qt = QTWindow()qt.show()sys.exit(app.exec())

2、信号和槽

        信号(Signal)和槽(Slot)是实现对象之间通信的核心机制。它们是 Qt 的事件驱动编程模型的基础,允许对象在某些事件发生时通知其他对象,并触发相应的处理函数。当一个特定事件发生的时候,signal会被emit出来,slot调用是用来响应相应的signal

①信号(Signal)

        信号是 Qt 对象发出的“通知”,表示某个事件已经发生。例如,当用户点击按钮时,按钮对象会发出一个 clicked 信号

定义信号
QPushButtonclicked(点击时发送)
QLineEdittextChanged(文本框内容改变)
QCheckBoxstateChanged(复选框状态改变)
emit 方法:

        用于触发信号,通知与该信号连接的所有槽函数(slot functions)执行。

from PyQt5.QtCore import pyqtSignal, QObjectclass MyObject(QObject):mySignal = pyqtSignal(str)  # 定义一个带字符串参数的信号# 当某个事件发生时(例如用户点击按钮、数据发生变化等),对象可以通过 emit 方法发出一个信号,通知其他对象该事件已经发生def doSomething(self):self.mySignal.emit("Hello, Signal!")  # 发出信号
②信号和槽(Slot)绑定

        通过调用QObject对象的connect函数来将对象的信号和另一个队形槽函数关联,当发射这发射信号,接收者的槽函数将被调用

# 点击按钮,输出对应内容
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
import sysdef click():print('方法1收到点击信号a')class SWindow(QWidget):def __init__(self):super().__init__()self.setWindowTitle('信号与槽函数绑定示例')btn = QPushButton()btn.setText('点击发送信号a')btn.setParent(self)# 方法1:槽函数使用函数btn.clicked.connect(click)# 方法2:槽函数使用lambda表达式btn.clicked.connect(lambda:print('方法2收到点击信号a'))if __name__ == '__main__':app = QApplication(sys.argv)sw = SWindow()sw.show()sys.exit(app.exec())

③使用PyQt槽函数
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
import sysclass QWindow(QWidget):def __init__(self):super().__init__()self.setWindowTitle('使用系统的槽函数')btn = QPushButton()btn.setText('关闭窗口')btn.setParent(self)btn.clicked.connect(QApplication.quit)  # 使用QApplication的quit方法if __name__ == '__main__':app = QApplication(sys.argv)w = QWindow()w.show()sys.exit(app.exec())

3、按钮

①QPushButton-普通按钮
from PyQt5.QtWidgets import QWidget,QApplication,QPushButton
import sysdef func():print('感谢投币!一键三连~')class BWindow(QWidget):def __init__(self):super().__init__()self.setWindowTitle('普通按钮控件展示')btn = QPushButton()btn.setText('投币')btn.clicked.connect(func)btn.setParent(self)if __name__ == '__main__':app = QApplication(sys.argv)bt = BWindow()bt.show()sys.exit(app.exec())

②QRadioButton-单选框
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
import sysdef func(checked):print('状态变化',checked)class RWindow(QWidget):def __init__(self):super().__init__()self.setWindowTitle('单选框示例')# 横向布局layout = QHBoxLayout()self.setLayout(layout)r1 = QRadioButton('点赞')r2 = QRadioButton('投币')r3 = QRadioButton('收藏')r1.setChecked(True)layout.addWidget(r1)layout.addWidget(r2)layout.addWidget(r3)r1.toggled.connect(func)if __name__ == '__main__':app = QApplication(sys.argv)rw = RWindow()rw.show()sys.exit(app.exec_())

# 如果想给QRadioButton组设置监听事件,可按照如下代码添加# 声明槽函数
def on_group_toggle(btn: QRadioButton):print(btn, btn.isChecked())# 添加两个单选钮到QButtonGroup,并添加选中事件
group = QButtonGroup(w)
group.addButton(btn1)
group.addButton(btn2)
group.buttonToggled.connect(on_group_toggle)
③QCheckBox-复选框
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
import sysdef func(state):# 判断是否选中if state == Qt.Checked: print('选中')else:                   print('未选中')class CWindow(QWidget):def __init__(self):super().__init__()self.setWindowTitle('复选框示例')layout = QHBoxLayout()self.setLayout(layout)label = QLabel()label.setText('请做出你的选择:')ck1 = QCheckBox('点赞')ck2 = QCheckBox('投币')ck3 = QCheckBox('收藏')ck1.setChecked(True)layout.addWidget(label)layout.addWidget(ck1)layout.addWidget(ck2)layout.addWidget(ck3)ck1.stateChanged.connect(func)if __name__ == '__main__':app = QApplication(sys.argv)cw = CWindow()cw.show()sys.exit(app.exec())

4、对话框 - QDialog

①QMessageBox
from PyQt5.QtWidgets import *
import sysdef close(qm):res = QMessageBox.question(None,'warning','are you sure?',QMessageBox.Ok | QMessageBox.Cancel,QMessageBox.Cancel)if res == QMessageBox.Ok:print('closing')qm.close()elif res == QMessageBox.Cancel:print('cancel')class QMWindow(QWidget):def __init__(self):super().__init__()self.setWindowTitle('对话框示例')btn = QPushButton()btn.setText('关闭游戏')btn.setParent(self)# lambda 常用于将参数传递给槽函数。例如,当你需要在信号连接时传递额外参数时,可以使用 lambdabtn.clicked.connect(lambda: close(self))if __name__ == '__main__':app = QApplication(sys.argv)qm = QMWindow()qm.show()sys.exit(app.exec())

②QInputDialog
from PyQt5.QtWidgets import *
import sysclass QMWindow(QWidget):def __init__(self):super().__init__()self.setWindowTitle('输入提示框示例')layout = QHBoxLayout()self.setLayout(layout)self.resize(400,350)btn = QPushButton('添加英雄')self.edit = QLineEdit()layout.addWidget(btn)layout.addWidget(self.edit)btn.clicked.connect(self.input)def input(self):str,res = QInputDialog.getText(w,'warning','请输入英雄名称')if res:self.edit.setText(str)print('添加%s成功'%str)if __name__ == '__main__':app = QApplication(sys.argv)w = QMWindow()w.show()sys.exit(app.exec())

5、区分addWidget、addLayout、setParent、setLayout

①addWidget和addLayout
addWidget布局管理器(如 QHBoxLayoutQVBoxLayoutQGridLayout 等)的方法,用于将控件(如按钮、标签、输入框等)添加到布局中。
  • 将一个控件QWidget 或其子类)添加到布局中。

  • 控件会自动成为布局的子控件,并且布局会管理控件的位置和大小。

  • layout:布局对象。

  • widget:要添加的控件。

  • stretch:可选参数,用于设置控件的伸展因子。

  • alignment:可选参数,用于设置控件的对齐方式。

addLayout布局管理器的方法,用于将一个子布局添加到当前布局中。这允许嵌套布局,实现更复杂的界面设计。
  • 将一个布局QLayout 或其子类)添加到另一个布局中。

  • 子布局会自动成为父布局的一部分,并且父布局会管理子布局的位置和大小。

  • layout:父布局对象。

  • sublayout:要添加的子布局对象。

  • stretch:可选参数,用于设置子布局的伸展因子。

②setparent和setlayout
setparent控件(QWidget 或其子类)的方法,用于设置控件的父级。这会影响控件的显示和事件处理。
  • 设置控件的父级

  • 控件会自动成为父控件的子控件,并且父控件会管理子控件的显示和事件处理。

  • widget:要设置父级的控件。

  • parent:父控件。

setlayout控件(QWidget 或其子类)的方法,用于设置控件的布局管理器。布局管理器负责管理控件内部的子控件的布局。
  • 设置控件的布局管理器

  • 布局管理器会管理控件内部的子控件的位置和大小。

  • widget:要设置布局的控件。

  • layout:布局管理器对象

6、面向对象

from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
import sys# 窗口继承QWidget
class MyWindow(QWidget):def __init__(self, title):super().__init__()self.setWindowTitle(title)self.init_ui()# 初始化UIdef init_ui(self):layout = QHBoxLayout()# ---------------------------------# 在这里初始化界面内容# ---------------------------------self.setLayout(layout)if __name__ == '__main__':app = QApplication(sys.argv)window = MyWindow("窗口标题")window.show()sys.exit(app.exec())

http://www.dtcms.com/wzjs/385292.html

相关文章:

  • 广州建站业务公司建立网站需要多少钱
  • 省级门户网站建设如何宣传推广自己的产品
  • 求一个dw做的网站网站运营工作内容
  • 完善网站通讯员队伍建设陕西网站建设网络公司
  • 长沙电子商务公司网站制作百度浏览器网址链接
  • 淘宝做任务赚钱网站有哪些免费b站推广网址有哪些
  • 做的网站需要什么技术晨阳seo
  • 全返网站建设东莞网络推广哪家公司奿
  • 什么网站可以找手工活做宝塔没有域名直接做网站怎么弄
  • 做网站php与pythonb站免费建网站
  • html5移动网站开发实践阿里指数
  • 做网站排名步骤百度竞价排名价格查询
  • 网站平台建设要多久交换链接网站
  • 运城建设网站合肥seo管理
  • 广州企业如何建网站百度店铺免费入驻
  • 51网站怎么打不开了百度导航下载2021最新版
  • 重庆3号线推广排名seo
  • NET网站开发程序员招聘百度指数的网址
  • 如何在国内做网站查域名网站
  • 网站建设是什么意思西安楼市最新房价
  • 潍坊企业网站建设免费搭建网站的软件
  • 微信网站建设报价短视频营销的特点
  • 网站建设内容是经营项目吗柳州今日头条新闻
  • 做网站实现自动生成pdfseochan是什么意思
  • 网站建设上机考试题目建设网站制作公司
  • 网站开发的工作流程免费引流推广方法
  • 哪个行业最喜欢做网站seo怎么优化网站排名
  • 晋城网站建设开发百度网盘帐号登录入口
  • 南京百度网站建设竞价培训课程
  • 定制开发电商网站建设多少钱北京seo如何排名