事件的传递顺序和QLabel,QLineEdit字体颜色,背景颜色的设置

mylineedit.py

from PyQt5.QtWidgets import *
import PyQt5.QtCore

class MyLineEdit(QLineEdit):
    def __init__(self, parent = None):
        super(QLineEdit,self).__init__(parent)
    def keyPressEvent(self, QKeyEvent):
        print(self.tr('MylineEdit键盘按下事件'))
        super().keyPressEvent(QKeyEvent)
        QKeyEvent.ignore()
    def event(self, event):
        if event.type() == PyQt5.QtCore.QEvent.KeyPress:
            print(self.tr('MyLineEdit的event()函数'))
        return super().event(event)

widget.py

from PyQt5.QtWidgets import *
import PyQt5.QtCore
from PyQt5.QtCore import QTimer
from PyQt5.QtGui import QPalette, QColor, QFont
import sys
import mylineedit

class Widget(QWidget):
    def __init__(self, parent = None):
        super(QWidget, self).__init__(parent)
        self.setWindowTitle(self.tr('事件传递顺序'))
        self.setFixedSize(200,200)

        self.lineEdit = mylineedit.MyLineEdit(self)
        self.lineEdit.installEventFilter(self)
        self.lineEdit.setFixedSize(200,30)
        self.lineEdit.setStyleSheet('color:red')
        self.lineEdit.setStyleSheet('background-color:green')

        font = QFont()
        font.setFamily('楷体') #设置字体
        font.setBold(True) #设置粗体
        font.setItalic(True)#设置斜体
        font.setPixelSize(20)
        font.setPointSize(25)
        font.setCapitalization(QFont.Capitalize)#首字母大写
        self.lineEdit.setFont(font)#将font应用到lineEdit

        self.label = QLabel(self.tr('文本编辑器'),self)
        palette = QPalette()
        palette.setColor(QPalette.Background, QColor(0,255,0))
        self.label.setAutoFillBackground(True)
        self.label.setPalette(palette)


        self.h_layout = QHBoxLayout()
        self.h_layout.addWidget(self.label)
        self.h_layout.addWidget(self.lineEdit)
        self.setLayout(self.h_layout)


        self.timer = QTimer()
        self.timer.timeout.connect(self.timeOut)
        self.timer.start(1000)

    def keyPressEvent(self, QKeyEvent):
        print(self.tr('Widget键盘按下事件'))

    def eventFilter(self, obj, event):
        if obj == self.lineEdit:
            if event.type() == PyQt5.QtCore.QEvent.KeyPress:
                print(self.tr('Widget的事件过滤器'))
        return super().eventFilter(obj, event)
    def timeOut(self):
        print(self.tr('时间到'))


if __name__ == '__main__':
    app = QApplication(sys.argv)
    widget = Widget()
    widget.show()
    print(widget.children())
    sys.exit(app.exec_())

 

转载于:https://www.cnblogs.com/ACPIE-liusiqi/p/10610194.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值