Python
吴越南蛮
Java程序员。主要研究的语言是Java,JS,Python,C。坚持原创,拒绝做搬运工。
展开
-
PyQt QScrollArea垂直滚动条自动滚到底端
最近在做一个类似QQ的局域网消息传输软件,当发送消息或者接收到消息时,滚动条应该自动滚动到最下方。刚开始想的是在发送或接收消息并创建提示信息后,执行如下代码self.scrollBar.setValue(self.scrollBar.maximum())这样做发现滚动条是可以向下动,但是不会到最下方,也就是说会有一点点空隙。bebug发现原因是增加滚动区域高度后,maximum方法获取的值还是原本的值,也就是还没有来得及更新。解决方案:设置一个标志位self.scrollButtonFlag原创 2021-12-10 13:32:49 · 2571 阅读 · 1 评论 -
PyQt QPushButton点击切换状态
按钮可以有多个状态,点击切换或者代码修改状态可以改变图标,而且鼠标经过显示当前状态图标的hover状态图标,鼠标移走恢复normal状态。刚开始使用setIcon实现切换的,但是这个方法老是不刷新,所以改用重绘的方式实现。如果需要实现点击按钮切换图标,只需要连接clicked信号,然后调用setState()方法。通过代码修改也是一样调用setState()。state()方法可以访问当前的状态值。from PyQt5.QtCore import *from PyQt5.QtGui import *原创 2021-06-21 22:34:42 · 3104 阅读 · 1 评论 -
PyQt自定义VideoWidget
功能类似QVideoWidget,支持向左/向右旋转,水平/垂直翻转画面,始终保持原始长宽比不变。支持上浮透明控件(这个QVideoWidget实现不了)。VideoSurface.pyfrom PyQt5.QtCore import *from PyQt5.QtGui import *from PyQt5.QtMultimedia import *"""视频接口"""class VideoSurface(QAbstractVideoSurface): showImageSignal原创 2021-06-18 23:52:19 · 1068 阅读 · 0 评论 -
PyQt实现自定义提示框(带三角形)
PopupWidget.pyfrom PyQt5.QtCore import *from PyQt5.QtGui import *from PyQt5.QtWidgets import *class PopupWidget(QWidget): """ direction 方向 0上 1下 2左 3右 triangleOffset 小三角起始位置,默认为widget中间位置 triangleWidth 小三角宽度,默认10 triangleHeight 小三角原创 2021-06-10 20:06:01 · 1032 阅读 · 2 评论 -
PyQt 实现滑动按钮
按钮有两种状态,点击按钮,切换状态,同时中间的圆有个移动的动画。形状是圆角矩形,也就是圆角外面是不会响应单击事件的。这个功能还是用setMask(QBitmap)实现的,我试过了如果用QpainterPath绘制,然后转多边形,转QRegion,然后setMask,这样操作锯齿特别明显。而且我做的这个控件是固定大小的,如果要可调节大小的话,就不适用了。SliderButton.pyimport sysfrom PyQt5.QtCore import *from PyQt5.QtGui impor原创 2021-06-08 11:44:07 · 2454 阅读 · 2 评论 -
PyQt重写QMediaPlayer和QMediaPlaylist
在做一个本地视频播放器,做到删除播放列表的时候发现Qt自带的QMediaPlaylist有个bug。用removeMedia()进行删除操作。如果播放列表中某一项正在播放,删除这个项之后的任意项都没问题。但是如果删除这一项之前的某一项,当前索引会发生变化,然后正在播放的内容会停止。C++代码运行出来也是一样的。没找到解决方案,所以只能重写了。时间仓促,只实现了一些常用的方法。比如说上一个,下一个,设置模式,添加移除媒体等等。MyPlaylist.pyfrom typing import It原创 2021-05-27 23:57:46 · 1357 阅读 · 0 评论 -
wxPython hosts文件编辑器
import wxclass MyFrame(wx.Frame): def __init__(self,hostsPath): wx.Frame.__init__(self,None,-1,title='host文件修改GUI',size=(540,600)) self.panel = wx.Panel(self) self.hostsPath = hostsPath self.loadHostContent() s原创 2021-01-02 13:55:06 · 133 阅读 · 1 评论 -
python pdf转markdown
wxPython in action,比较系统地介绍了wxPython的使用。一直用的是中文翻译的版本,有时想运行里面的demo,复制出来很费劲,所以写了一个自动化的脚本,将文本转为了markdown格式。读取pdf文件,将每一页转为json文件。import pdfplumberimport jsonpath = r'wxpython in action.pdf''''字典组成的列表,按照某一个属性归类,也就是返回一个二维数组'''def groupByKey(arr,key = 'y0'原创 2020-12-15 21:52:20 · 2074 阅读 · 0 评论 -
wxPythonJavaWeb逆向工程实现3.3
同样的配置,是让用户通过界面去勾选简单,还是敲一堆代码?由于项目越来越多,又都是没什么技术含量的。为了写得更快,这次我顺便把controller层,service层也一并生成了。注解,注入一个都没少。3.3版本对于文件位置做了一些优化。如下所示,base路径是com包的直接父级路径。运行效果..原创 2020-03-02 19:12:28 · 156 阅读 · 0 评论 -
Python SQLite3数据库操作
连接数据库并建立表格import sqlite3conn = sqlite3.connect('data.db')# 连接数据库cursor = conn.cursor()cursor.execute('create table student(number varchar(20) primary key,name varchar(15),elective double,experimen...原创 2019-11-16 17:29:27 · 270 阅读 · 1 评论 -
中国天气网爬虫之获取站名信息
'''设定编码初始值并递增(直到最大值则终止),发送请求,若有效,则将编码和对应的站名存入json文件中。'''import osimport requestsimport jsonimport redef write_to_json(key,value): content_dict = json.load(open('number2city.json','r')) ...原创 2019-11-16 16:50:36 · 141 阅读 · 0 评论 -
中国天气网爬虫
import wximport wx.gridimport sqlite3import requestsfrom bs4 import BeautifulSoupclass MyGrid(wx.grid.Grid): def __init__(self,parent): wx.grid.Grid.__init__(self,parent,pos=(20,40),...原创 2019-11-16 14:54:57 · 272 阅读 · 0 评论 -
selenium贴吧签到
from selenium import webdriverfrom selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import...原创 2019-11-16 14:52:28 · 146 阅读 · 0 评论 -
百度贴吧爬虫
''' @文件功能描述:提取指定帖子网页文本、图片(包括表情包)并写入word,同时下载语音和视频 @贴吧id示例:5706691546 @运行后会在当前路径生成一个文件夹,名称为贴吧ID,包含四个子文件夹,存放分过类的文档、图片、语音、视频。 @作者:吴越南蛮 @完工日期:2019.01.28 @语音功能大致完成 @新增视频下载功能'''...原创 2019-11-16 14:47:35 · 485 阅读 · 3 评论 -
wxPython整点报时
# C盘要有个wav文件,内含报时音频import wx import time# 获取时间import wave# 波形处理import pyaudio# 播放器class MyFrame(wx.Frame): def __init__(self,parent,id): ...原创 2019-11-16 14:44:35 · 319 阅读 · 2 评论 -
wxPython学生成绩管理系统
import wximport osimport sqlite3class MainFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self,None,-1,"学生成绩管理系统1.0",(400,200),(956,770),wx.SYSTEM_MENU|wx.MINIMIZE_BOX|wx.CLOSE_...原创 2019-11-16 14:41:50 · 1383 阅读 · 0 评论 -
wxPython色环电阻计算器
import wx # 导入wxPythonclass MyFrame(wx.Frame): def __init__(self,parent,id): wx.Frame.__init__(self, parent, id, "色环电阻计算器2.0",size=(6...原创 2019-11-16 14:30:32 · 577 阅读 · 0 评论 -
wxPython扫雷
mport wxfrom random import randintclass MineFrame(wx.Frame): def __init__(self): # 设置窗口为固定大小 wx.Frame.__init__(self,None,-1,'扫雷',size=(515,503), style=...原创 2019-11-16 14:28:31 · 172 阅读 · 0 评论 -
wxPython模仿Win10记事本
import wximport wx.htmlimport webbrowserimport os.path as opclass MainFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self,None,-1,'No title-Notepad',(400,200),(800,600))#初始化框架...原创 2019-11-16 14:14:36 · 468 阅读 · 2 评论 -
虚空打字3.2
import wxfrom json import load as json_loadfrom pykeyboard import PyKeyboardfrom pymouse import PyMousefrom time import sleep as time_sleepfrom threading import Threadclass Type_Thread(Thread):...原创 2019-11-14 10:11:14 · 3146 阅读 · 0 评论