PyQt

From Virtujoy Documentation
Revision as of 16:12, 20 October 2025 by Timothy (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)


Rudimentary text editor

Basic

from PyQt5.QtWidgets import QApplication, QLabel, QMessageBox, QPushButton, QVBoxLayout, QWidget


def on_button_click():
    alert = QMessageBox()
    alert.setText("You've clicked this button!")
    alert.exec()


app = QApplication([])
root = QWidget()
layout = QVBoxLayout()

label = QLabel("Test")
layout.addWidget(label)

button = QPushButton("Click me!")
button.clicked.connect(on_button_click)
layout.addWidget(button)

root.setLayout(layout)
root.show()
app.exec()


Simple menu

from PyQt5.QtWidgets import QAction, QApplication, QMainWindow, QPlainTextEdit, QVBoxLayout, QWidget


app = QApplication([])
app.setApplicationName("Text Editor")

text_edit = QPlainTextEdit()
window = QMainWindow()
window.setWindowTitle("Text Editor")
window.setCentralWidget(text_edit)

menu = window.menuBar().addMenu("&File")
close = QAction("&Close")
close.triggered.connect(window.close)
menu.addAction(close)

window.show()
app.exec()


Open file dialog

from PyQt5.QtWidgets import QAction, QApplication, QFileDialog, QMainWindow, QMessageBox, QPlainTextEdit
from PyQt5.QtGui import QIcon


app = QApplication([])
app.setApplicationName("Text Editor")

text_edit = QPlainTextEdit()
window = QMainWindow()
window.setWindowTitle("Text Editor")
window.setCentralWidget(text_edit)
window.setWindowIcon(QIcon("icon.svg"))
window.setMinimumSize(500, 400)

file_menu = window.menuBar().addMenu("&File")
close_action = QAction("&Close")
close_action.triggered.connect(window.close)
file_menu.addAction(close_action)

open_action = QAction("&Open")
def open_file():
    path = QFileDialog.getOpenFileName(window, "Open")[0]
    if path:
        text_edit.setPlainText(open(path).read())
open_action.triggered.connect(open_file)
file_menu.addAction(open_action)

help_menu = window.menuBar().addMenu("&Help")
about_action = QAction("&About")
help_menu.addAction(about_action)
def show_about_dialog():
    text =  "<center>" \
            "<h1>Text Editor</h1>" \
            "&#8291;" \
            "<p>Version 1.0.0 <br>" \
            "&copy; 2025 Timothy Tan</p>" \
            "</center>"
    QMessageBox.about(window, "About Text Editor", text)
about_action.triggered.connect(show_about_dialog)


window.show()
app.exec()