开头

这个世界都是并发的,编程里更是这样,俗话说:并发知识大,一口吃不下。想成为一名优秀的 Java 开发,学好并发,绝对是你走入高薪行列的必备能力之一。

并发涉及的知识点,其实十分琐碎。学完记不住,记住了用不对。在并发底层原理中,不仅涉及 Java 语言,更涉及 JVM、操作系统、内存、CPU 指令等,令人一头雾水。

这份笔记+学习脑图可以帮你系统地学习Java 并发编程知识,并告别碎片化获取知识的弊端。

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)

combo.addItem(“Python”)

combo.addItem(“C++”)

combo.addItem(“C#”)

combo.addItem(“Java”)

combo.move(20, 50)

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

combo.currentTextChanged.emit(combo.currentText())

combo.setEditable(True)

combo.editTextChanged[str].connect(self.TextChanged)

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

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_())

[](()日历控件 QCalendarWdget


import sys

from PyQt5.QtWidgets import (QWidget, QCalendarWidget,

QVBoxLayout, QLabel, QApplication)

from PyQt5.QtCore import QDate, Qt

class Widget(QWidget):

def init(self):

super().init()

self.initUI()

def initUI(self):

cal = QCalendarWidget(self) # 创建一个日期对象

cal.setGridVisible(True) # 在日历上显示格线

cal.clicked[QDate].connect(self.showDate) # 将日历的clicked信号与槽函数self.showDate连接

self.lbl = QLabel(self) # 创建一个QLabel对象

self.lbl.setAlignment(Qt.AlignHCenter) # 居中显示

主动发出日历的clicked信号,并将日历的当前参数日期作为参数传递

cal.clicked.emit(cal.selectedDate())

vbox = QVBoxLayout()

vbox.addWidget(cal)

vbox.addWidget(self.lbl)

self.setLayout(vbox)

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

self.setWindowTitle(‘日历’)

self.show()

def showDate(self, date):

self.lbl.setText(date.toString())

self.lbl.adjustSize()

if name == ‘main’:

app = QApplication(sys.argv)

w = Widget()

sys.exit(app.exec_())

[](()进度条 QProgressBar


import sys

from PyQt5.QtWidgets import (QWidget, QProgressBar,

QPushButton, QApplication)

from PyQt5.QtCore import QBasicTimer

class Widget(QWidget):

def init(self):

super().init()

self.initUI()

《一线大厂Java面试真题解析+Java核心总结学习笔记+最新全套讲解视频+实战项目源码》开源

Java优秀开源项目:

  • ali1024.coding.net/public/P7/Java/git

最后

针对最近很多人都在面试,我这边也整理了相当多的面试专题资料,也有其他大厂的面经。希望可以帮助到大家。

下面的面试题答案都整理成文档笔记。也还整理了一些面试资料&最新2021收集的一些大厂的面试真题(都整理成文档,小部分截图)

最新整理电子书

数日期作为参数传递

cal.clicked.emit(cal.selectedDate())

vbox = QVBoxLayout()

vbox.addWidget(cal)

vbox.addWidget(self.lbl)

self.setLayout(vbox)

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

self.setWindowTitle(‘日历’)

self.show()

def showDate(self, date):

self.lbl.setText(date.toString())

self.lbl.adjustSize()

if name == ‘main’:

app = QApplication(sys.argv)

w = Widget()

sys.exit(app.exec_())

[](()进度条 QProgressBar


import sys

from PyQt5.QtWidgets import (QWidget, QProgressBar,

QPushButton, QApplication)

from PyQt5.QtCore import QBasicTimer

class Widget(QWidget):

def init(self):

super().init()

self.initUI()

《一线大厂Java面试真题解析+Java核心总结学习笔记+最新全套讲解视频+实战项目源码》开源

Java优秀开源项目:

  • ali1024.coding.net/public/P7/Java/git

最后

针对最近很多人都在面试,我这边也整理了相当多的面试专题资料,也有其他大厂的面经。希望可以帮助到大家。

下面的面试题答案都整理成文档笔记。也还整理了一些面试资料&最新2021收集的一些大厂的面试真题(都整理成文档,小部分截图)

[外链图片转存中…(img-8vB6HZw7-1649571010594)]

最新整理电子书

[外链图片转存中…(img-odeLdiG4-1649571010595)]

【PyQt5 知识点示例代码,2022年抓住金三银四涨薪好时机相关推荐

  1. 学海无涯!2021年抓住金三银四涨薪好时机,持续更新中

    前言 IT行业薪水高,这是众所周知的,所以很多人大学都选择IT相关专业,即使非该专业的人,毕业了也想去一个培训机构镀镀金,进入这一行业. 但是有关这个行业35岁就退休的说法,也一直盛传. 加上这几年不 ...

  2. 全网最全原理讲解!2021年抓住金三银四涨薪好时机,跳槽薪资翻倍

    开头 25岁那年,我从京东离职,入职百度. 在百度认识了当时的架构师久哥(T9级别),因为他的一番话,彻底改变了我的职业生涯,短短三年的时间,我从一枚普通程序员成长为别人眼中的技术大咖. 当时因为业务 ...

  3. 2022年迎接“金三银四”,为什么面试你总拿不到高薪?你所不知道的面试技巧

    简历的写法 简历怎么写,相信大家都已经非常清楚,不过我还是要重申一遍.那就是,整体看起来要简洁大方,重点突出,不要弄些花哨的东西,身高.体重.血型.党员这些基本可以忽略不写的,除非一些比较奇葩的公司. ...

  4. 2022火爆了金三银四的前端社招面经

    目前工作快四年,年后投了一波简历,这里整理了一下新鲜出炉的前端面经,需要的可以自取. 小伙伴们有兴趣想了解更多相关学习资料请点赞收藏+评论转发+关注我之后 私信我,注意回复回复[000]点击此处链接即 ...

  5. 抓住金三银四好机会,超齐全java大厂面试题汇总(请自寻学习查找答案)

    目录 一.JDK源码 1.HashMap 2.concurrentHashMap 3.volatile 4.linkedList.ArrayList 5.线程池 6.设计模式 二.JVM.GC.G1 ...

  6. 抓住金三银四的尾巴,解锁程序员面试《刷题神器》

    点赞 ➕ 评论 ➕ 收藏 = 三连再看你最帅 刷题 不仅能掌握知识,快速学习进步. 更能轻松搞定面试,尤其是有的大厂 钟爱问算法题,你不刷就不会,就会被pass.同时,刷题能陶冶情操,避免老年痴呆

  7. 金三银四 | 吃透这套题,面试更有底气

    马上迎来"金三银四"涨薪跳槽黄金季,身边的朋友都在为面试做准备,想抓住机会跳槽涨薪!所以,近段时间来咨询面试.进阶.跳槽问题的朋友也越来越多. 从二月中旬至今,共收到上百条关于面试 ...

  8. 华为23届校招暂停招聘,今年金三银四秒变“降三裁四“?

    近期知乎一条帖子冲上热榜,这现象意味着什么? 去年11月的时候,微博.脉脉.小红书等等社交平台开始流传出科技大厂华为将暂缓2023届的校招,甚至还流传出多个官方的校招群被连夜解散,一时间人心惶惶.而最 ...

  9. Java面试突击手册(2022版)每日一刷,金三银四稳了

    前言 春节一过金三银四就要开始了,我相信将会是面试求职的高峰时期,如果此时手里有份高质量的面试宝典,那么你将得心应手面对考官各种问题.虽然不敢保证你能应聘上心仪的职位,但是能保证看完这些内容你的收获将 ...

  10. 【金三银四】2022 Android面经实录

    1. 前言 春水初盛,垂钓者络绎不绝,鱼儿按捺不住,拍打着尾鳍纷纷跃出水面,沽个好价. 本篇真实的记录了我从 准备->复习->面试 的全过程,分享一些我的真实经验,希望能帮到大家. 2. ...

最新文章

  1. 我们能达到电影里的智能吗?最可能实现的AI场景是什么?如何看待AI自主性?...
  2. mysql innodb文件_MySQL文件和Innodb引擎文件
  3. SQL Server 下的 获取当月最后一天
  4. c mysql 时间段查询_mySql 时间段查询
  5. C# 显式接口成员实现
  6. 初一模拟赛总结(3.16)
  7. eclipse远程连接hadoop_Hadoop群启集群
  8. springboot项目层次结构_Springboot项目结构Springboot项目结构
  9. MaxRects纹理合并算法as3实现
  10. windows 服务 定时程序 跑不出数据
  11. restfulframework引用多对多外键
  12. php zmq demo1
  13. 幕布笔记按字母顺序导出(Python+Opml)
  14. thoughtworks作业trains
  15. c语言中文网GUI,golang gui介绍
  16. unity 获取设备的GPS信息
  17. PDF文件实现在线盖章
  18. Python基于OpenCV的交通路口红绿灯控制系统设计
  19. Linux 内核、进程调度、进程通信、多线程、协程
  20. 无意中看到一个很强的贴,简直一群机关枪阿

热门文章

  1. 新浪云sae免费PHP,免费php空间:新浪云平台sae搭建WordPress网站
  2. 【数据库】三级模式两级映射详解
  3. matlab冲激函数的傅里叶变换,利用MATLAB对正弦,矩形脉冲函数进行傅里叶变换
  4. 计算机显示磁盘但是打不开怎么办,移动硬盘显示盘符但打不开解决教程
  5. 怎样采集百家论坛MP3讲座
  6. python docx 设置字体大小_python docx字体设置
  7. 【模型加速】PointPillars模型TensorRT加速实验(4)
  8. RK3288 Android5.1 串口接收数据不是一次性收到问题
  9. 安卓判断手机GPS是否打开,未打开时跳去手机设置开启GPS的方法
  10. [USACO19FEB]Mowing Mischief