此博客中涉及到的知识点
- PyQt设置窗口完全透明但内部控件不透明的方法
- 动态更新控件的方法
- PyQt 给窗口设置一个右键菜单
- PyQt 实现鼠标拖动窗口
- 文件操作
- 字符串方法
这里以我写的小程序为例 介绍前4个方法如何实现
PyQt设置窗口完全透明但内部控件不透明的方法
在窗口初始化时加上下面两句话即可
self.setWindowFlags(Qt.FramelessWindowHint | Qt.Tool)
self.setAttribute(Qt.WA_TranslucentBackground)
动态更新控件(控件个数及内容)的方法
Qt提供了很好的方法去做这种操作,前提是你控件中的个数不需要动态地去改变,有兴趣可以去了解一下,我这里并没有采用这种主流的方法,而是利用类属性去记录子控件引用的方法。在源代码Remind类 函数show_()中得到了体现。
PyQt 给窗口设置一个右键菜单/鼠标拖动
这里只需要重写其父类的contextMenuEvent(self,event)方法就好,示例:
class Remind(QDialog):
def __init__(self, parent=None):
super(Remind, self).__init__(parent)
self.move_point = 0
self.mouse_press = False
# 添加右键菜单
def contextMenuEvent(self, event):
menu = QMenu(self)
add_remind = QAction('添加今日提醒事项')
if self.load_file_tag == True:
add_remind.setText('更换提醒事项')
menu.addAction(add_remind)
add_remind.triggered.connect(self.loadfile)
clo = menu.addAction('关闭')
clo.triggered.connect(self.F_close)
menu.exec_(event.globalPos()) # 获取当前光标
# 以下三个函数为实现鼠标拖动窗口功能
def mous