advPython-6

Pandas入门教程(二十二):股票数据分析实战——yfinance 获取数据、技术指标与收益率分析 把 Pandas 用在真实场景,才能体会它的价值。本文以茅台股票为例,用 yfinance 获取历史行情,完成缺失值处理与列筛选,绘制收盘价曲线,计算 SMA 移动平均线与 RSI 相对强弱指数,并通过日收益率、累计收益率和波动率完成完整的量化分析流程。 阅读详情

pySimpleGUI-练习篇

界面英汉转换

""" 版本1.0 """
import PySimpleGUI as sg

layout = [
    [sg.B("中文"), sg.B("English")],
    [sg.T("请输入基本信息!", key='-TIP-')],
    [sg.T('姓名', key='-NAME-', size=(8, 1)), sg.In()],
    [sg.T('性别', key='-GENDER-', size=(8, 1)), sg.In()],
    [sg.T('国籍', key='-NATIONALITY-', size=(8, 1)), sg.In()],
    [sg.B("确认", key='-Y-'), sg.B("取消", key='-N-')]
]

window = sg.Window('Python pySimpleGUI', layout)

while True:
    event, values = window.read()
    print(event)

    if event == None:
        break

    if event == 'English':
        window["-TIP-"].update(value='Please enter basic infomation!')
        window["-NAME-"].update(value='Name')
        window["-GENDER-"].update(value='Gender')
        window["-NATIONALITY-"].update(value='Nationality')
        window['-Y-'].update('Confirm')
        window['-N-'].update('Cancel')

    if event == "中文":
        window["-TIP-"].update("请输入基本信息!")
        window["-NAME-"].update("姓名")
        window["-GENDER-"].update("性别")
        window["-NATIONALITY-"].update("国籍")
        window['-Y-'].update('确定')
        window['-N-'].update('取消')

window.close()

下拉菜单的更新方法

import PySimpleGUI as sg

dictionary = {'小明': 'Python', '小王': 'Java', '小花': 'C', '小壮': 'c++', '小美': 'Gui'}
list1 = [name for name in dictionary]

layout = [
    [sg.Combo(list1, key='-list1-', size=(30, 6), enable_events=True, default_value='小明')],
    [sg.T("语言"), sg.In(key='-INPUT-', size=(22, 1))]
]

window = sg.Window('pySimpleGUI', layout)

while True:
    event, values = window.read()
    print(event, values)

    if not event:
        break

    if event == '-list1-':
        window['-INPUT-'].update(dictionary[values['-list1-']])

window.close()

图片格式转换base64

# 如何获取 图片的 base64 格式?以下代码可以实现:
import base64

f = open('图片路径', 'rb')  # 重点!千万要记得写’rb‘模式,否则,默认会用’rt‘模式读取图片,从而报错!
res = f.read()
s = base64.b64encode(res)
print(s)
f.close()

窗口上调用字典的键和值

import PySimpleGUI as sg

dictionary = {'小明': 'Python', '小王': 'Java', '小花': 'C', '小壮': 'c++', '小美': 'Gui'}
list1 = [name for name in dictionary]

layout = [
    [sg.LB(list1, key='-list-', size=(30, 6), enable_events=True)],
    [sg.T("语言"), sg.In(key='-INPUT-', size=25)]
]

window = sg.Window('pySimpleGUI', layout)

while True:
    event, values = window.read()
    print(event, values)

    if not event:
        break
    if event == "-list-":
        name = values['-list-'][0]
        window["-INPUT-"].update(dictionary[name])

window.close()

多窗口

import PySimpleGUI as sg

# 主题
sg.theme('GreenTan')

layout0 = [
    [sg.Button("window1", size=(20, 3)), sg.Button("window2", size=(20, 3))]
]
win0 = sg.Window("window0", layout0, default_element_size=(10, 1))

win1_active = False
win2_active = False

while True:
    ev0, vals0 = win0.read(timeout=10000)  # 大概10秒超时

    # (一)反应超时,自动启动read,并且返回值:ev0 == '__TIMEOUT__'
    if ev0 == '__TIMEOUT__':
        break  # 结束最外层的事件循环,退出整个程序

    # (二)反应未超时,即可进行下面的步骤:

    # 记录当前窗口活动状态
    win0_active = True

    # 退出操作
    if ev0 == sg.WIN_CLOSED or ev0 == 'Exit':
        break

    # 点击window1操作
    if ev0 == "window1" and not win1_active:
        win1_active = True
        win0.hide()
        layout1 = [
            [sg.Button("win1")],
            [sg.Input("12312", key="-12-")]
        ]
        win1 = sg.Window("window1", layout1, default_element_size=(10, 1))
        while True:
            ev1, vals1 = win1.read(timeout=100)
            if ev1 == sg.WIN_CLOSED or ev1 == 'Exit':
                win1_active = False
                win1.close()
                win0.UnHide()
                break

    # 点击window1操作
    if ev0 == "window2" and not win2_active:
        win2_active = True
        win0.hide()
        layout2 = [
            [sg.Button("win2")],
            [sg.Input("123123", key="-13-")]
        ]
        win2 = sg.Window("window2", layout2, default_element_size=(10, 1))
        while True:
            ev2, vals2 = win2.read(timeout=100)
            if ev2 == sg.WIN_CLOSED or ev2 == 'Exit':
                win2_active = False
                win2.close()
                win0.UnHide()
                break

win0.close()

登录窗口练习

import PySimpleGUI as sg

layout = [
    [sg.T("用户名", size=(8, 1)), sg.In("请输入您的用户名", key='-NAME-')],
    [sg.T("密码", size=(8, 1)), sg.In(key='-PASS-', tooltip='密码为3位数', password_char='*')],
    [sg.B('确认输入'), sg.B('清空输入'), sg.B('保存密码'), sg.B('取消保存')],

]

window = sg.Window("Python 练习窗", layout)

# 用户信息
user1 = {'用户名': '小明', '密码': '136'}
user2 = {'用户名': '叶寻', '密码': '135'}
users = [user1, user2]

# 当事件为'保存密码‘时候的操作,变量 switch = 0
switch = 0

while True:

    event, values = window.read()


    def judge(n):

        for user in users:
            if user['用户名'] == values["-NAME-"]:  # 检验账户是否匹配
                if user['密码'] == values['-PASS-']:  # 检验密码是否匹配
                    sg.popup("登录成功")
                    if n == 0:
                        window['-PASS-'].update(value='')  # 登录成功后,默认清空密码信息
                    break

                else:
                    sg.popup("密码错误")
                    break
        else:
            sg.popup("输入错误")


    if not event:
        break

    if event == '确认输入':
        judge(switch)

    if event == '清空输入':
        window['-NAME-'].update(value='')
        window['-PASS-'].update(value='')

    if event == '保存密码':
        switch = 1

    if event == '取消保存':
        switch = 0

window.close()

实现一个红绿灯

"""
3.点击后,更新效果
"""
import PySimpleGUI as sg

layout = [
    [sg.B(
        key='-BA-',
        button_text="绿灯",
        size=(16, 8),
        button_color=('black', 'green')  # 按钮的 文本颜色 和 背景颜色

    )], [sg.B(
        key='-BB-',
        button_text="黄灯",
        size=(16, 8),
        button_color=('black', 'yellow')

    )], [sg.B(
        key='-BC-',
        button_text="红灯",
        size=(16, 8),
        button_color=('black', 'red')

    )]
]

window = sg.Window('Python Light', layout)

while True:
    event, values = window.read()
    print(event)

    if not event:
        break


    def one():
        window['-BA-'].update(
            button_color=('black', 'grey'),  # 按钮颜色
        )


    def two():
        window['-BB-'].update(
            button_color=('black', 'grey'),  # 按钮颜色
        )


    def three():
        window['-BC-'].update(
            button_color=('black', 'grey'),  # 按钮颜色
        )


    def fix():
        window['-BA-'].update(button_color=('black', 'green'))
        window['-BB-'].update(button_color=('black', 'yellow'))
        window['-BC-'].update(button_color=('black', 'red'))


    if event == '-BA-':
        # 先集体自我变色(即初始化界面,防止它有上次残留的颜色)
        fix()
        # 初始化完成后,继续完成‘专项变色’
        two()
        three()

    if event == '-BB-':
        # 先集体自我变色(即初始化界面,防止它有上次残留的颜色)
        fix()
        # 初始化完成后,继续完成‘专项变色’
        one()
        three()

    if event == '-BC-':
        # 先集体自我变色(即初始化界面,防止它有上次残留的颜色)
        fix()
        # 初始化完成后,继续完成‘专项变色’
        one()
        two()

window.close()

实现一个计算器

import PySimpleGUI as sg


def button(x):
    return sg.Button(x, size=(4, 2), button_color='black', pad=(2, 2), font=('黑体', 18))


layout = [
    [sg.Text('', key='-SHOW-')],
    [sg.InputText('', key='-INPUT-', size=(19, 2), font=('黑体', 18))],
    [button(i) for i in ['AC', '(', ')', '%']],
    [button(i) for i in '123+'],
    [button(i) for i in '456-'],
    [button(i) for i in '789X'],
    [button(i) for i in '0.=÷'],
]

window = sg.Window('计算器', layout)

while True:
    event, values = window.read()
    print(event, values)

    if not event:
        break

    if event in list('0123456789+-().'):
        window['-INPUT-'].update(values['-INPUT-'] + event)
        window['-SHOW-'].update('')

    if event == 'X':
        window['-INPUT-'].update(values['-INPUT-'] + '*')
        window['-SHOW-'].update('')

    if event == '÷':
        window['-INPUT-'].update(values['-INPUT-'] + '/')
        window['-SHOW-'].update('')

    if event == '%':
        # eval是内置函数,功能:返回传入的字符串的计算结果

        try:
            window['-INPUT-'].update(eval(values['-INPUT-'] + '/100'))
            window['-SHOW-'].update('')
        except:
            window['-INPUT-'].update('')
            window['-SHOW-'].update('输入有误')

    if event == '=':
        try:
            window['-INPUT-'].update(eval(values['-INPUT-']))
            window['-SHOW-'].update('')
        except:
            window['-INPUT-'].update('')
            window['-SHOW-'].update('输入有误')

    if event == 'AC':
        window['-INPUT-'].update('')
        window['-SHOW-'].update('')

window.close()

带界面的PDF合并工具

import PySimpleGUI as sg

layout = [
    [sg.Text("选择文件夹:", size=(18, 1)), sg.InputText(), sg.FolderBrowse('选择')],
    [sg.Text("输入合并后的文件名:", size=(18, 1)), sg.InputText(), sg.Button("开始合并")],
    [sg.ML(size=(80, 15))]
]

window = sg.Window('PDF 合并工具', layout)

while True:
    event, values = window.read()
    print(event, values)

    if not event:
        break

window.close()

进度条

import PySimpleGUI as sg
import time

# 布局,是一个用户定义的二维列表。
# 第一维德元素分居不同的行上,第二维度上的元素们居于同一行,不同列上
# 此处定义的列表  由三部分组成 Text文件 ProgressBar进度条 Cancel取消按钮构成
# Text Progress等有各自的参数设置,如size等。此处不再赘述


layout = [
    [sg.Text('任务完成进度')],
    [sg.ProgressBar(1000, orientation='h', size=(20, 20), key='progressbar')],
    # ProgressBar(进度条)   参数1:MaxValue:1000  orientation='h'(横向)'v'(竖向)
    [sg.Cancel()]
]

# window只需将自定义的布局加载出来即可 第一个参数是窗口标题。
window = sg.Window('机器人执行进度', layout)

# 根据key值获取到进度条
progress_bar = window['progressbar']

# 查看信息
print(progress_bar.__dict__)

# window的read函数分为同步和异步,
# 不带timeout参数即为同步函数 一直等到手动点击按钮才会返回。
# 带timeout参数不为None的为异步函数,timeout时间内,无时间或者点击了按钮都会产生结果。
# 异步方式不会阻塞后面的程序运行。

for i in range(1000):  # 循环
    event, values = window.read(timeout=10)
    # print('当前事件:', event)
    if event == 'Cancel' or event is None:
        break
    progress_bar.UpdateBar(i + 1)

# 检测 ’timeout’ 和 ‘进度条更新‘ 的本质
# i = 0
# while True:
#     event, values = window.read(timeout=888)  # timeout(暂停、超时)  当设定了 timeout = 1000 (ms),不管下面执行到哪里了,继续
#     print('当前事件:', event)
#     if event is None:
#         break
#     if event == 'Cancel':
#         print('你想干嘛')
#
#     if i < 10:
#         number = 500 + i * 50
#         progress_bar.UpdateBar(number, max=2000)
#         # 更新栏通过 '更改当前计数' 和 '最大计数'(最上面已经写了,现在使用新的值覆盖,或者不输入,使用默认)来更改条显示的内容
#         i += 1

window.close()
Python图像处理基本操作 在Python中进行图像处理可以使用的库有很多,本文主要介绍下面三个:OpenCV、PIL、 skimage。其中,OpenCV是图像处理中最强大的一个库,它的源代码是由C\C++写成的,所以原版的OpenCV可以与C、C++无缝结合。Python版的OpenCV主要依赖于cv2这个包来实现。Python里面自带一个PIL(python images library),但这个库现在已经停止更新了,所以使用Pillow,它是由PIL发展而来的 阅读详情

相关推荐

adv_python

基尚的命令 PS1="\w\n$ " rm -rf * git clone https://github.com/nkamatam/adv_python.git #Cloning cd adv_python/ #create the file, File -> New -> Nootbook ->rename the notebook git config --global user.email "kishan.p.mashru@gmail.com" git config --global user.name "kishan-mashru" git config credential.helper cache # To check_in your changes git add . git commit -m "checking in the file" git push #use

Python学习笔记

笔记都在OneNote中, OneNote笔记 https://1drv.ms/u/s!Av0O6MPqOhNGkksqxJ1fDZXLMYB5 如果笔记有什么错误,请指正,谢谢!么么哒! 转载于:https://www.cnblogs.com/ludongjun/p/8167846.html...

advhyn300826的博客 134

PCB Layout总结

PCB Layout作为硬件设计中的一个环节,也是很重要的一个环节;在硬件电路设计合理的情况下,他其实是影响性能的一个绝对重要的指标。现在很多的PCB Layout工程师都是按照硬件工程师或者PI SI工程师给出的约束规则来完成布局布线的,这些也就是俗称的 “拉线工”。他们重复而机械的完成一块块PCB设计,一段时间设计后,他们中的一些或许已经有了这样的一些经验:哪些要做等长,哪些要走粗、哪些要平...

xydlxd118的博客 2583

7 款 Python 工具,让你在工作上更占优势!

想要成为一个程序员,除了学习各种教程之外,熟悉各种已经在生产环境中使用的工具会让你更快的成长!这里有7款python工具,是所有数据专家必不可少的工具。当你对他们有一定了解后,会成为你找工作的绝对优势!下面就了解它们一下吧:0.IPythonIPython是一个基于Python Shell的交互式解释器,但是有比默认Shell强大得多的编辑和交互功能。IPython 提供了如下特性:更强的交互 s...

Q1622479435的博客 458

LPC2124定时器实现跑马灯

文章目录一、keil 4新建工程 一、keil 4新建工程 1、Create New Project,注意,最好添加进一个新建好的文件夹里,keil不会帮你新建。 2、添加设备类型:NXP目录下的LPC2124 3、选择启动文件Startu.s 4、new 一个file,保存命名为.c文件 5、添加进project里,右击,add 选中,添加 6、设置编译输出.hex文件 ...

qq_37937830的博客 5753

双目立体匹配算法:SGBM

SGBM(Semi-Global Block Matching)是一种用于计算双目视觉中视差(disparity)的半全局匹配算法,在OpenCV中的实现为semi-global block matching(SGBM)。它是基于全局匹配算法和局部匹配算法的优缺点,提出了一种折中的方法,既能保证视差图的质量,又能降低计算复杂度。

weixin_45303602的博客 9403

python那些年爬过的坑:pyinstaller打包成功,exe运行错误。no module named _adv、_xml、_html

![python直接运行没问题;exe运行的时候,命令行的debug信息提示缺少包。 感觉是pyinstaller的bug。。。 解决办法是: 1、在自己的项目里import wx._adv, wx._html 2、如果要一劳永逸的解决这个问题的话,到wx的包的目录中修改richtext.py文件,在该文件中 import _adv, _html在这里插入图片描述](https://img-blo...

似水若寒的博客 3463

VCS多lib编译实战:如何高效处理Verilog模块重命名与分开编译

本文深入探讨了在复杂SoC设计中,如何利用VCS工具实现多库编译,以高效处理Verilog模块重命名与分开编译的工程难题。通过解析synopsys_sim.setup配置、Config映射机制,并提供完整的自动化脚本实战指南,帮助工程师构建健壮、可维护的编译环境,从而显著提升大型项目的编译效率和代码管理灵活性。

weixin_29169505的博客 357

advPython-3

Python-Web

因为热爱,所以坚持。 699

通过Robotstudio修改机器人程序的具体方法和步骤

通过Robotstudio修改机器人程序的具体方法和步骤

Robot_PLC_HMI_Automation 6393

CATIA二次开发——遍历几何图形集下的轴系及控制轴系生成位置

CATIA二次开发——轴系相关问题1.遍历几何图形集下的轴系2.解决轴系生成位置的问题 1.遍历几何图形集下的轴系 近期遇到的问题:遍历轴系的时候发现,AxisSystem属性的轴系只有放在轴系集合下,才能被找到,放在几何图形集或其他位置均不能被找到。本来想遍历几何图形集下的轴系元素,但是发现没有对应的属性,只能查找 几何图形集、几何元素、草图等元素,无法直接遍历轴系。 解决办法:(加入选择集,在选择集中筛选轴系类型) HybridBody axisHB = activePart.HybridBodies

WorkMan的博客 2730

advPython-2

基于TCP协议与UDP协议通信的网络编程

因为热爱,所以坚持。 799

使用 Simulink 搭建一个地震信号反射系数反演与滤波联合仿真的系统模型

《Simulink地震信号处理仿真指南》摘要:本文详细介绍了使用Simulink进行地震信号反射系数反演与滤波联合仿真的完整流程。从创建模型、生成含噪合成地震记录(包含子波卷积与随机反射系数),到设计滤波模块(带通/小波/自适应滤波)和实现反演算法(Wiener-Hopf方程/RLS方法),最后通过可视化模块分析结果。教程涵盖理论准备、7个实施步骤、优化建议及实际应用场景,为地震勘探、地质调查等领域提供标准化的信号处理仿真方案,特别适合需要掌握地震信号反演与实时滤波技术的工程人员学习。

amy_mhd的博客 113

advPython-5

图形化界面 pySimpleGUI 学习

因为热爱,所以坚持。 600

置顶必读(1) | 《YOLOv26实战:从入门到深度优化》专栏导读与完整目录导航(持续更新中)

🏆 本文收录于 《YOLOv26实战:从入门到深度优化》 专栏。 本专栏系统梳理并持续复现 YOLOv26 官方特性、核心改进、多任务支持、部署优化与行业落地,内容坚持 持续更新 + 深度拆解 + 工程落地导向,不仅讲“怎么用”,更讲“为什么这样设计、如何真正落地到项目中”。

**My Coding Family** 9万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

advPython-1

进程、线程、互斥锁、信号量、事件、回调机制、yield进阶、协程

因为热爱,所以坚持。 958

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

advPython-4

Python-MySQL

因为热爱,所以坚持。 740

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

AI全栈实战 | 3.9-01 爬虫入门:requests 加 BeautifulSoup 三分钟跑通,但 90% 的人栽在这 4 个“礼貌“问题上

⚠️:本文内容仅用于。请遵守目标站点的服务条款与相关法律法规,不得对目标服务造成负担,不得采集、传播个人隐私数据。技术是中性的,边界在你手里。爬虫的入门技术(requests 发请求 + BeautifulSoup 解析)三分钟就能学会。真正区分"会用爬虫"和"会做爬虫的人"的,是这篇我们跑通"请求→解析→存储"的最小闭环,然后重点把"合规与礼貌"这根弦给你绷上。

源码获取 | 运行部署 | 定制二开修改,如果回复不及时请耐心等待,请见谅。 399

从一段视频到可漫游的 4D 有声场景:思路拆解与最小复现手记

只需一段手机视频,你就能生成可"走进去"的 4D 有声场景:转头时狗叫声方向随之变化,走近时声音更清晰。本文拆解 Video-to-4DAVScene 的核心思路,手把手带你用几十行 Python 搭出最小管线,把视频中的运动物体变成带空间位置的声源,并附上三个真实踩坑的排障经验,代码可直接跑。🎧

helloagent的博客 232

Python+Agent入门笔记(二):列表推导式、模块和异常,这些写 Agent 前得会

接上一篇《Python+Agent入门笔记(一)》。基础语法跑通之后,这篇聊几块日常写脚本绕不开的东西。还是按 JS/Go 开发者的视角写,尽量记录我实际卡过的地方。

qq_41241612的博客 430

【每天一个 Python 小案例30】Python 基础知识综合小项目:我的工具盒

作为系列收官,本篇把前 29 篇的知识点合成一个能直接用的命令行工具"我的工具盒":计算器(用 ast 解析表达式,不碰 eval)、单位换算与温度转换(一张换算表 + 特例分支)、记账与分类统计(Decimal + JSON 持久化)、以及用"字典当命令表"把菜单和业务逻辑解耦的主循环。文中对比了 eval 的安全隐患与 ast 白名单的做法,解释了 lambda 闭包在字典里的写法与晚绑定陷阱,并在最后给出整个系列的知识地图,把变量、数据结构、控制流、函数、类、异常、文件、标准库八块内容对应到具体篇目。

xinjiyaya的博客 419

详解Python条件语句

在 Python 中,if...else 是一种条件语句,可以根据给定的条件执行不同的操作。这个语句通常用于控制程序的流程。

2601_96798737的博客 205

Python3 协程:异步编程的核心机制与实战

协程是解决I/O密集型任务等待瓶颈的高效机制,相比线程更轻量、无锁开销。从yield到async/await的演进,使异步编程语义清晰、易于理解。通过async/await可实现并发执行多个任务(如gather、create_task),显著提升网络请求、爬虫等场景性能。关键在于使用异步库(如aiohttp)替代同步库,避免阻塞事件循环。合理控制超时与并发数,才能发挥协程最大优势。

Lxn2zh的博客 159

python如何控制浏览器

Python 可以通过 Selenium、Playwright 等工具实现浏览器自动化,从打开网页到执行复杂交互操作均可脚本化完成。Selenium生态成熟

2601_96797912的博客 76

torch.compile 差异仅 1e-6,边界样本预测为何翻转

torch.compile 加速后输出与 eager 不一致,部分预测翻转。逐层对比与 graph break 分析定位到动态分支翻转根因。容差回归仅适用于无分支翻转场景,零容忍场景应禁用编译。

昨日种种,皆成今我。今日种种,皆成新我。 158

二进制木马免杀-Python 分离免杀与 Web 挂马

二进制木马免杀-Python 分离免杀与 Web 挂马

2503_94637398的博客 267
上一篇: advPython-5
下一篇: Ajax-1
code_stream
博客等级 码龄4年 1238粉丝 169原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值