PyQt5初级——2

        QLineEdit.selectAll()
        QLineEdit.setFocus()
        QLineEdit.text()
        QLineEdit.clear()

        self.text = QLineEdit('在这里输入数字', self)
        self.text.selectAll()
        self.text.setFocus()
        self.text.setGeometry(80, 50, 150 ,30)
QMessageBox.about
QMessageBox.critical
QMessageBox.information
QMessageBox.warning

QMessageBox.question(self, '确认', '确认退出吗', QMessageBox.Yes | QMessageBox.No, QMessageBox.No)

critical = information = warning = question

QMessageBox.about(self, '看结果','猜小了!')

 事件:

点击关闭按钮会触发closeEvent事件。

可以重写该事件来达到相应的目的。

def closeEvent(self, event):

        reply = QMessageBox.question(self, '确认', '确认退出吗', QMessageBox.Yes | QMessageBox.No, QMessageBox.No)

        if reply == QMessageBox.Yes:

            event.accept()       

        else:

            event.ignore()

 键盘触发事件

def keyPressEvent(self, e):

        if e.key() == Qt.Key_Up:
            self.lab.setText('↑')
        elif e.key() == Qt.Key_Down:
            self.lab.setText('↓')
        elif e.key() == Qt.Key_Left:
            self.lab.setText('←')
        else:
            self.lab.setText('→')

绘画事件

def paintEvent(self, event):
        if self.pos:
            q = QPainter(self)
            q.drawLine(0, 0, self.pos.x(), self.pos.y())

 鼠标移动事件

def mouseMoveEvent(self, event):
        distance_from_center = round(((event.y() - 250)**2 + (event.x() - 500)**2)**0.5)
        self.label.setText('坐标: ( x: %d ,y: %d )' % (event.x(), event.y()) + " 离中心点距离: " + str(distance_from_center))       
        self.pos = event.pos()
        self.update()
self.setMouseTracking(True) #开启鼠标跟踪

 有时,知道哪个窗口小部件是信号的发送者非常有用。 为此,PyQt5具有sender()方法。

import sys
from PyQt5.QtWidgets import (QApplication, QMessageBox, QWidget, QPushButton)
from random import randint

class Example(QWidget):

    def __init__(self):
        super().__init__()
        self.initUI()
    def initUI(self):
        self.setGeometry(200, 200, 300, 300)
        self.setWindowTitle('学点编程吧')

        bt1 = QPushButton('剪刀',self)
        bt1.setGeometry(30,180,50,50)

        bt2 = QPushButton('石头',self)
        bt2.setGeometry(100,180,50,50)

        bt3 = QPushButton('布',self)
        bt3.setGeometry(170,180,50,50)

        bt1.clicked.connect(self.buttonclicked)
        bt2.clicked.connect(self.buttonclicked)
        bt3.clicked.connect(self.buttonclicked)

        self.show()

    def buttonclicked(self):
        computer = randint(1,3)
        player = 0
        sender = self.sender()
        if sender.text() == '剪刀':
            player = 1
        elif sender.text() == '石头':
            player = 2
        else:
            player = 3

        if player == computer:
            QMessageBox.about(self, '结果', '平手')
        elif player == 1 and computer == 2:
            QMessageBox.about(self, '结果', '电脑:石头,电脑赢了!')
        elif player == 2 and computer == 3:
            QMessageBox.about(self, '结果', '电脑:布,电脑赢了!')
        elif player == 3 and computer == 1:
            QMessageBox.about(self,'结果','电脑:剪刀,电脑赢了!')
        elif computer == 1 and player == 2:
            QMessageBox.about(self,'结果','电脑:剪刀,玩家赢了!')
        elif computer == 2 and player == 3:
            QMessageBox.about(self,'结果','电脑:石头,玩家赢了!')
        elif computer == 3 and player == 1:
            QMessageBox.about(self,'结果','电脑:布,玩家赢了!')

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

信号 

发出自定义信号

import sys
from PyQt5.QtWidgets import (QApplication, QWidget, QMessageBox)
from PyQt5.QtCore import (pyqtSignal, QObject)

class Signal(QObject):
    showmouse = pyqtSignal()

class Example(QWidget):

    def __init__(self):
        super().__init__()
        self.initUI()
    def initUI(self):
        self.setGeometry(200, 200, 300, 300)
        self.setWindowTitle('学点编程吧')

        self.s = Signal()
        self.s.showmouse.connect(self.about)

        self.show()
    def about(self):
        QMessageBox.about(self,'鼠标','你点鼠标了吧!')

    def mousePressEvent(self, e):
        self.s.showmouse.emit()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

布局 

QHBoxLayout:水平方向布局管理器

QVBoxLayout:垂直方向布局管理器

QGridLayout:网格布局管理器

bt1 = QPushButton('剪刀', self)
        bt2 = QPushButton('石头', self)
        bt3 = QPushButton('布', self)

        hbox = QHBoxLayout()
        hbox.addStretch(1) #增加伸缩量
        hbox.addWidget(bt1)
        hbox.addStretch(1)#增加伸缩量
        hbox.addWidget(bt2)
        hbox.addStretch(1)#增加伸缩量
        hbox.addWidget(bt3)
        hbox.addStretch(6)#增加伸缩量

        self.setLayout(hbox)

或者也可以直接

hbox = QHBoxLayout(self);这样就不需要self.setLayout(hbox)了。 

其中四个addStretch()函数用于在button按钮间增加伸缩量,伸缩量的比例为1:1:1:6,意思就是将button以外的空白地方按设定的比例等分为9份并按照设定的顺序放入布局器中。

猜你喜欢

转载自blog.csdn.net/f156207495/article/details/81156721
今日推荐