【PyQt5 知识点示例代码】布局,金九银十怎么从中小企业挤进一线大厂

app = QApplication(sys.argv)

w = MainWindow()

sys.exit(app.exec_())

信号与槽

=======================================================================

对象1.信号.connect(对象2.槽函数)

点击按钮显示窗口


在这里插入图片描述

import sys

from PyQt5.QtWidgets import QMainWindow, QPushButton, QApplication, QMessageBox

class MainWindow(QMainWindow):

def init(self):

super().init()

self.initUI()

def initUI(self):

btn1 = QPushButton(“按钮1”, self)

btn1.move(30, 50)

btn1.clicked.connect(self.showMsg)

btn2 = QPushButton(“按钮2”, self)

btn2.move(150, 50)

btn2.clicked.connect(self.showMsg) # btn2与btn1连接到相同的槽函数

self.setGeometry(300, 300, 290, 150)

self.setWindowTitle(‘信号与槽’)

self.show()

def showMsg(self):

sender = self.sender() # 获取信号是由哪个控件发出的,可以获取到btn1或btn2

QMessageBox.information(self, ‘提示信息’, f’{sender.text()}被按下。')

if name == ‘main’:

app = QApplication(sys.argv)

ex = MainWindow()

sys.exit(app.exec_())

重写keyPressEvent - Esc关闭窗口


在这里插入图片描述

import sys

from PyQt5.QtCore import Qt

from PyQt5.QtWidgets import QWidget, QApplication

class Widget(QWidget):

def init(self):

super().init()

self.initUI()

def initUI(self):

self.setGeometry(300, 300, 360, 130) # (pos_x, pos_y, width, height)

self.setWindowTitle(‘按Esc键关闭窗口’)

self.show()

重写了键盘事件处理器

def keyPressEvent(self, e):

if e.key() == Qt.Key_Escape:

self.close()

if name == ‘main’:

app = QApplication(sys.argv)

w = Widget()

sys.exit(app.exec_())

内置槽函数 - 滚动条控制LCD


在这里插入图片描述

import sys

from PyQt5.QtCore import Qt

from PyQt5.QtWidgets import QWidget, QLCDNumber, QSlider, QVBoxLayout, QApplication

class Widget(QWidget):

def init(self):

super().init()

self.initUI()

def initUI(self):

创建一个QLCDNumber控件,QLCDNumber用于显示一个带有仿真显示屏效果的数字

lcd = QLCDNumber(self)

创建一个QSlider控件,QSlider提供了一个水平或垂直滑动条

sld = QSlider(Qt.Horizontal, self)

vbox = QVBoxLayout()

vbox.addWidget(lcd)

vbox.addWidget(sld)

self.setLayout(vbox)

将滑动条的valueChanged信号与LCD的display槽函数连接

sld.valueChanged.connect(lcd.display)

self.setGeometry(300, 300, 300, 150)

self.setWindowTitle(‘LCD显示’)

self.show()

if name == ‘main’:

app = QApplication(sys.argv)

w = Widget()

sys.exit(app.exec_())

自定义信号


在这里插入图片描述

自定义信号方法一:自定义信号类继承QObject

import sys

from PyQt5.QtCore import pyqtSignal, QObject

from PyQt5.QtWidgets import QMainWindow, QApplication

class MySignal(QObject): # 自定义信号需要继承QObject

sigClose = pyqtSignal()

class MainWindow(QMainWindow):

def init(self):

super().init()

self.initUI()

def initUI(self):

self.sig = MySignal():

self.sig.sigClose.connect(self.close) # 将sig的sigClose信号与窗口的close()槽函数连接

self.setGeometry(300, 300, 320, 150)

self.setWindowTitle(‘单击鼠标关闭’)

self.show()

重写mousePressEvent事件处理器,该处理器在鼠标按下时触发

def mousePressEvent(self, event):

self.sig.sigClose.emit() # 将sig的sigClose信号发出,会调用与之连接的close()槽函数

self.close()

if name == ‘main’:

app = QApplication(sys.argv)

w = MainWindow ()

sys.exit(app.exec_())

自定义信号方法二:直接在MainWindow类中定义信号属性,不需要专门定义一个类

import sys

from PyQt5.QtCore import pyqtSignal

from PyQt5.QtWidgets import QMainWindow, QApplication

class MainWindow(QMainWindow):

直接在MainWindow类中定义信号属性,不需要专门定义一个类

sigClose = pyqtSignal()

def init(self):

super().init()

self.initUI()

def initUI(self):

将sigClose信号与窗口的close()槽函数连接

self.sigClose.connect(self.close)

self.setGeometry(300, 300, 320, 150)

self.setWindowTitle(‘单击鼠标关闭’)

self.show()

def mousePressEvent(self, event):

self.sigClose.emit()

if name == ‘main’:

app = QApplication(sys.argv)

w = MainWindow ()

sys.exit(app.exec_())

事件对象、重写mouseMoveEvent


在这里插入图片描述

import sys

from PyQt5.QtWidgets import QWidget, QApplication, QLabel

class Widget(QWidget):

def init(self):

super().init()

self.initUI()

def initUI(self):

QLabel控件用于显示文本

self.label = QLabel("x: 0, y: 0 ", self)

self.label.move(10, 10)

鼠标指针移动可能会触发鼠标移动事件,该事件如果开启会被频繁触发,默认是不开启的

self.setMouseTracking(True)

self.setGeometry(300, 300, 350, 200)

self.setWindowTitle(‘事件对象’)

self.show()

def mouseMoveEvent(self, e):

x = e.x()

y = e.y()

text = f"x: {x}, y: {y}"

self.label.setText(text)

if name == ‘main’:

app = QApplication(sys.argv)

w = Widget()

sys.exit(app.exec_())

对话框

======================================================================

输入对话框


在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

import sys

from PyQt5.QtWidgets import QWidget, QPushButton, QLineEdit, QInputDialog, QApplication

class Widget(QWidget):

def init(self):

super().init()

self.initUI()

def initUI(self):

self.btn = QPushButton(‘输入’, self)

self.btn.move(20, 20)

self.btn.clicked.connect(self.showDialog)

qLineEdit行编辑对象,用于单行输入

self.le = QLineEdit(self)

self.le.setEnabled(False) # 设置为不可输入

self.le.move(20, 60)

self.setGeometry(300, 300, 300, 110)

self.setWindowTitle(‘输入对话框’)

self.show()

def showDialog(self):

text, ok = QInputDialog.getText(self, ‘请输入’, ‘您的名字:’)

if ok:

self.le.setText(str(text))

if name == ‘main’:

app = QApplication(sys.argv)

w = Widget()

sys.exit(app.exec_())

文件对话框


在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

import sys

from PyQt5.QtWidgets import (QWidget, QPushButton, QLineEdit,

QFileDialog, QApplication)

class Widget(QWidget):

def init(self):

super().init()

self.initUI()

def initUI(self):

self.btn = QPushButton(‘打开文件’, self)

self.btn.move(20, 20)

self.btn.clicked.connect(self.showDialog)

self.le1 = QLineEdit(self)

self.le1.setEnabled(False)

self.le1.resize(360,22) # 调整大小

self.le1.move(20, 60)

self.le2 = QLineEdit(self)

self.le2.setEnabled(False)

self.le2.resize(360,22)

self.le2.move(20, 90)

self.setGeometry(300, 300, 400, 140)

self.setWindowTitle(‘文件对话框’)

self.show()

def showDialog(self): # ②

fileName, filetype = QFileDialog.getOpenFileName(self,

“打开文件”,

“./”,

“所有文件();;Python程序(.py);;文本文件(*.txt)”)

if fileName:

self.le1.setText(str(fileName))

self.le2.setText(str(filetype))

if name == ‘main’:

app = QApplication(sys.argv)

w = Widget()

sys.exit(app.exec_())

颜色对话框


在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

import sys

from PyQt5.QtWidgets import (QWidget, QPushButton, QFrame,

QColorDialog, QApplication)

from PyQt5.QtGui import QColor

class Widget(QWidget):

def init(self):

super().init()

self.initUI()

def initUI(self):

col = QColor(0, 0, 0)

self.btn = QPushButton(‘选择颜色’, self)

self.btn.move(20, 20)

self.btn.clicked.connect(self.showDialog)

QFrame对象frm, QFrame继承自QWidget,在窗口中表现为一块区域

self.frm = QFrame(self)

QFrame默认不可见,需要通过样式表(StyleSheet)来设置样式

self.frm.setStyleSheet(f"QWidget {{ background-color: {col.name()} }}")

self.frm.setGeometry(130, 22, 100, 100)

self.setGeometry(300, 300, 300, 150)

self.setWindowTitle(‘颜色对话框’)

self.show()

def showDialog(self):

col = QColorDialog.getColor(title=‘请选择颜色’)

if col.isValid(): # 判断是否有效,如果点击Cancel则无效

self.frm.setStyleSheet(f"QWidget {{ background-color: {col.name()} }}")

if name == ‘main’:

app = QApplication(sys.argv)

w = Widget()

sys.exit(app.exec_())

字体对话框


在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

import sys

from PyQt5.QtWidgets import (QWidget, QVBoxLayout, QPushButton,

QLabel, QFontDialog, QApplication)

from PyQt5.QtGui import QFont

class Widget(QWidget):

def init(self):

super().init()

self.initUI()

def initUI(self):

vbox = QVBoxLayout()

self.setLayout(vbox)

btn = QPushButton(‘选择字体’, self)

btn.clicked.connect(self.showDialog)

vbox.addWidget(btn)

self.font = QFont(“宋体”, 12)

self.lbl = QLabel(‘桃李春风一杯酒,江湖夜雨十年灯。’, self)

self.lbl.setFont(self.font)

vbox.addWidget(self.lbl)

self.setGeometry(300, 300, 300, 180)

self.setWindowTitle(‘字体对话框’)

self.show()

def showDialog(self):

self.font, ok = QFontDialog.getFont(self.font, caption=‘请选择字体’)

if ok:

self.lbl.setFont(self.font)

if name == ‘main’:

app = QApplication(sys.argv)

w = Widget()

sys.exit(app.exec_())

PyQt5组件

==========================================================================

按钮 QPushButton


在这里插入图片描述

在这里插入图片描述

import sys

from PyQt5.QtWidgets import QWidget, QPushButton, QApplication

class Widget(QWidget):

def init(self):

super().init()

self.initUI()

def initUI(self):

self.btn = QPushButton(‘未按下’, self)

self.btn.setCheckable(True) # 使按钮具有复选功能

self.btn.move(50, 30)

对于复现按钮,此处的按钮单击信号多了一个布尔型的参数,表示按下的状态

self.btn.clicked[bool].connect(self.setText)

self.setGeometry(300, 300, 280, 120)

self.setWindowTitle(‘复选按钮’)

self.show()

def setText(self, pressed):

if pressed:

self.btn.setText(“已按下”)

else:

self.btn.setText(“未按下”)

if name == ‘main’:

app = QApplication(sys.argv)

w = Widget()

sys.exit(app.exec_())

复选框 QCheckBox


在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

import sys

from PyQt5.QtWidgets import QWidget, QCheckBox, QLabel, QApplication

from PyQt5.QtCore import Qt

class Widget(QWidget):

def init(self):

super().init()

self.initUI()

def initUI(self):

cb = QCheckBox(‘显示文字’, self)

cb.move(20, 20)

cb.setTristate(True) # 开启三态选择

cb.setCheckState(Qt.Checked)

cb.stateChanged.connect(self.changeText)

self.lbl = QLabel(‘桃李春风一杯酒,江湖夜雨十年灯。’, self)

self.lbl.move(20, 60)

self.setGeometry(300, 300, 290, 120)

self.setWindowTitle(‘复选框’)

self.show()

def changeText(self, state):

if state == Qt.Checked: # Qt.Checked 2 选中

self.lbl.setText(‘桃李春风一杯酒,江湖夜雨十年灯。’)

elif state == Qt.PartiallyChecked: # Qt.PartiallyChecked 1 半选中

self.lbl.setText(‘桃李春风一杯酒,’)

else: # Qt.Unchecked 0 未选中

self.lbl.setText(‘’)

if name == ‘main’:

app = QApplication(sys.argv)

w = Widget()

sys.exit(app.exec_())

列表框 QListWidget


在这里插入图片描述

import sys

from PyQt5.QtWidgets import (QWidget, QLabel,

QListWidget, QApplication)

class Widget(QWidget):

def init(self):

super().init()

self.initUI()

def initUI(self):

self.lbl = QLabel(self)

self.lbl.move(20, 20)

lw = QListWidget(self)

lw.addItem(“Python”)

lw.addItem(“C++”)

lw.addItem(“C#”)

lw.addItem(“Java”)

lw.resize(230, 100)

lw.move(20, 50)

将lw的currentTextChanged信号与槽函数self.TextChanged连接

currentTextChanged信号在列表框中选项文本改变时发出,并将改变后的文本作为参数传递给槽函数

lw.currentTextChanged[str].connect(self.TextChanged)

self.setGeometry(300, 300, 320, 170)

self.setWindowTitle(‘列表框’)

self.show()

def TextChanged(self, text):

self.lbl.setText(text)

self.lbl.adjustSize()

print(text)

if name == ‘main’:

app = QApplication(sys.argv)

w = Widget()

sys.exit(app.exec_())

行编辑 QLineEdit


在这里插入图片描述

import sys

from PyQt5.QtWidgets import (QWidget, QLabel,

QLineEdit, QApplication)

class Widget(QWidget):

def init(self):

super().init()

self.initUI()

def initUI(self):

self.lbl = QLabel(self)

self.lbl.move(20, 20)

le = QLineEdit(self) # ①

le.move(20, 50)

le.textChanged[str].connect(self.TextChanged) # ②

self.setGeometry(300, 300, 280, 170)

self.setWindowTitle(‘行编辑’)

self.show()

def TextChanged(self, text): # ③

self.lbl.setText(text)

self.lbl.adjustSize()

if name == ‘main’:

app = QApplication(sys.argv)

w = Widget()

sys.exit(app.exec_())

下拉式列表框 QComBox


在这里插入图片描述

import sys

from PyQt5.QtWidgets import (QWidget, QLabel,

QComboBox, QApplication)

class Widget(QWidget):

def init(self):

super().init()

self.initUI()

def initUI(self):

self.lbl = QLabel(self)

self.lbl.move(20, 20)

combo = QComboBox(self)

combo.addItems([“Python”, “C++”, “C#”, “Java”])

combo.setGeometry(20,50,200,30)

combo = QComboBox(self)

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

最后

各位读者,由于本篇幅度过长,为了避免影响阅读体验,下面我就大概概括了整理了

init(self):

super().init()

self.initUI()

def initUI(self):

self.lbl = QLabel(self)

self.lbl.move(20, 20)

combo = QComboBox(self)

combo.addItems([“Python”, “C++”, “C#”, “Java”])

combo.setGeometry(20,50,200,30)

combo = QComboBox(self)

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-n5GL4DdO-1711807231410)]
[外链图片转存中…(img-peNj9WXJ-1711807231411)]
[外链图片转存中…(img-EWdhRyRt-1711807231411)]
[外链图片转存中…(img-uIx1Vame-1711807231411)]
[外链图片转存中…(img-MxWjXe19-1711807231412)]
[外链图片转存中…(img-P4aw3s0a-1711807231412)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-SOSoJXMp-1711807231413)]

最后

各位读者,由于本篇幅度过长,为了避免影响阅读体验,下面我就大概概括了整理了

[外链图片转存中…(img-wKEGDf3N-1711807231413)]

[外链图片转存中…(img-X3gh8TZD-1711807231413)]

[外链图片转存中…(img-zp1dYcyl-1711807231414)]

[外链图片转存中…(img-KQhQARzu-1711807231414)]

  • 18
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值