Tôi hiện đang cần thư viện GUI cho một dự án. Tôi quen thuộc với python và tìm thấy PyQt có thể là một lựa chọn tốt.Giới thiệu về một chương trình ví dụ PyQt
Tôi đang đọc a tutorial about PyQt, và khá bối rối về sau example program
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
ZetCode PyQt4 tutorial
In this example, we draw text in Russian azbuka.
author: Jan Bodnar
website: zetcode.com
last edited: September 2011
"""
import sys
from PyQt4 import QtGui, QtCore
class Example(QtGui.QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
self.text = u'\u041b\u0435\u0432 \u041d\u0438\u043a\u043e\u043b\u0430\
\u0435\u0432\u0438\u0447 \u0422\u043e\u043b\u0441\u0442\u043e\u0439: \n\
\u0410\u043d\u043d\u0430 \u041a\u0430\u0440\u0435\u043d\u0438\u043d\u0430'
self.setGeometry(300, 300, 280, 170)
self.setWindowTitle('Draw text')
self.show()
def paintEvent(self, event):
qp = QtGui.QPainter()
qp.begin(self)
self.drawText(event, qp)
qp.end()
def drawText(self, event, qp):
qp.setPen(QtGui.QColor(168, 34, 3))
qp.setFont(QtGui.QFont('Decorative', 10))
qp.drawText(event.rect(), QtCore.Qt.AlignCenter, self.text)
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
Ở đây, trong chức năng chính, một đối tượng Ví dụ được tạo ra, do đó __init__()
chức năng, initUI()
được gọi. Câu hỏi của tôi là ở đâu chức năng paintEvent()
được gọi là ?? kể từ khi chúng tôi chạy chương trình, self.text(some Russian letters)
sẽ xuất hiện chính xác trên tiện ích.
Nói cách khác, những gì hiện sys.exit(app.exec_())
thực sự làm gì? tại sao nó sẽ gọi hàm paintEvent()
?
Cảm ơn!
Cảm ơn bạn đã giải thích chi tiết như vậy. – Junjie