2
Пример открытия файла, название которого передается в качестве аргумента командной строки
3
Данный файл нужно запустить с аргументами командной строки
4
python3 9_arguments.py arg1 arg2 arg3
8
from PySide6.QtWidgets import QApplication, QMainWindow, QTextEdit, QVBoxLayout, QWidget
11
Модуль sys нужен для доступа к аргументам командной строки. Если использование аргументов
12
командной строки не предполагается, то импорт можно не выполнять. При этом, при создании
13
приложения в класс QApplication([]) в качестве аргумента передается пустой список.
14
Импорт из модуля PySide6.QtWidgets класса для управления приложением QApplication и
15
класса основного окна QMainWindow, класса виджета многострочного редактируемого текста QTextEdit,
16
класса слоев с вертикальной организацией виджетов QVBoxLayout.
20
class MainWindow(QMainWindow):
22
Подкласс главного окна приложения от супер класса главных окон
27
Конструктор главного окна приложения
29
QMainWindow.__init__(self) # явный вызов конструктора родительского класса
30
self.editor = QTextEdit() # создание экземпляра виджета многострочного текстового поля
31
filename = sys.argv[-1] # запись в переменную имени файла
32
self.open_file(filename) # вызов метода для открытия файла и передачи его содержимого в текстовое поле
33
self.setCentralWidget(self.editor) # размещение контейнера в главном окне приложения
34
self.setWindowTitle('Text viewer') # присвоение имени главному окну приложения
36
def open_file(self, fn: str) -> None:
40
with open(fn, 'r') as f: # открытие файла на чтение
41
text = f.read() # чтение строк из файла
42
self.editor.setPlainText(text) # размещение текста в текстовом поле
47
Функция запуска кода верхнего уроня приложения
50
app = QApplication(sys.argv) # создание экземпляра основного цикла главного окна приложения
51
window = MainWindow() # создание экземпляра главного окна приложения
52
window.show() # вызов метода вывода окна приложения (по умолчанию окно спрятано)
53
app.exec() # запуска основного цикла главного окна приложения
56
if __name__ == '__main__': # данное условие нужно для предотвращения запуска кода верхнего уровня при
57
# импортировании данного файла как модуля
58
main() # вызов функции запуска кода верхнего уровня приложения