事件的傳遞順序和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_())

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM