はじめに
前回Arduinoを使用して2in1 PC(またはタブレット)をマクロパッドとして使用しました。touch-sp.hatenablog.com
今回はPythonスクリプトに大幅な改良を加えました。
Pythonスクリプト
メインファイル(main.py)
前回と変更はありません。PowerPointのためのファイル(powerpoint.py)
![](https://cdn-ak.f.st-hatena.com/images/fotolife/t/touch-sp/20220526/20220526162508.jpg)
from PySide6.QtCore import Signal from PySide6.QtWidgets import QPushButton, QVBoxLayout, QHBoxLayout, QGridLayout, QWidget, QSizePolicy from PySide6.QtGui import QIcon from functools import partial buttons = [ { 'text': 'テキスト挿入', 'icon': './icon_black/edit.svg', 'serialNum': 0}, { 'text': '画像挿入', 'icon': './icon_black/image.svg', 'serialNum': 1}, { 'text': '図形挿入', 'icon': './icon_black/insertfig.svg', 'serialNum': 2}, { 'text': '上揃え', 'serialNum': 3}, { 'text': '左揃え', 'serialNum': 4}, { 'text': '右揃え', 'serialNum': 5}, { 'text': '下揃え', 'serialNum': 6}, { 'text': '左右中央揃え', 'icon': './icon_black/centeralignment_v.svg', 'serialNum': 7}, { 'text': '上下中央揃え', 'icon': './icon_black/centeralignment_h.svg', 'serialNum': 8}, { 'text': '左右等間隔', 'icon': './icon_black/equal_h.svg', 'serialNum': 9}, { 'text': '上下等間隔', 'icon': './icon_black/equal_v.svg', 'serialNum': 10} ] class PowerpointWidget(QWidget): push_button_signal = Signal(int) def __init__(self) -> None: super().__init__() self.button_list = [] for each_button in buttons: self.button_list.append(QPushButton()) self.button_list[-1].setStyleSheet('font: 20px; font-weight: bold; qproperty-iconSize: 32px;') self.button_list[-1].setText(each_button.get('text')) self.button_list[-1].setIcon(QIcon(each_button.get('icon'))) self.button_list[-1].setSizePolicy(QSizePolicy.Ignored, QSizePolicy.Ignored) self.button_list[-1].clicked.connect(partial(self.button_push, each_button.get('serialNum'))) mainlayout = QVBoxLayout() upperlayout = QHBoxLayout() upperleftlayout = QGridLayout() upperleftlayout.addWidget(self.button_list[3], 0, 1) upperleftlayout.addWidget(self.button_list[4], 1, 0) upperleftlayout.addWidget(self.button_list[5], 1, 2) upperleftlayout.addWidget(self.button_list[6], 2, 1) upperrightlayout = QVBoxLayout() upperrightlayout.addWidget(self.button_list[7]) upperrightlayout.addWidget(self.button_list[8]) upperrightlayout.addWidget(self.button_list[9]) upperrightlayout.addWidget(self.button_list[10]) upperlayout.addLayout(upperleftlayout) upperlayout.addLayout(upperrightlayout) lowerlayout = QHBoxLayout() lowerlayout.addWidget(self.button_list[0]) lowerlayout.addWidget(self.button_list[1]) lowerlayout.addWidget(self.button_list[2]) mainlayout.addLayout(upperlayout, 7) mainlayout.addLayout(lowerlayout, 3) self.setLayout(mainlayout) def button_push(self, x: int) -> None: self.push_button_signal.emit(x)
YouTubeのためのファイル(youtube.py)
![](https://cdn-ak.f.st-hatena.com/images/fotolife/t/touch-sp/20220526/20220526132925.jpg)
from PySide6.QtCore import Signal from PySide6.QtWidgets import QGridLayout, QSizePolicy, QPushButton, QWidget from PySide6.QtGui import QIcon from functools import partial buttons = [ { 'text': '10秒もどる', 'icon': './icon_black/chevrons-left', 'serialNum': 20}, { 'text': '10秒すすむ', 'icon': './icon_black/chevrons-right', 'serialNum': 21}, { 'text': '再生/停止', 'icon': './icon_black/play.svg', 'serialNum': 22}, { 'text': 'フルスクリーン', 'icon': './icon_black/monitor.svg', 'serialNum': 23} ] class YoutubeWidge(QWidget): push_button_signal = Signal(int) def __init__(self) -> None: super().__init__() self.button_list = [] for each_button in buttons: self.button_list.append(QPushButton()) self.button_list[-1].setStyleSheet('font: 20px; font-weight: bold; qproperty-iconSize: 32px;') self.button_list[-1].setText(each_button.get('text')) self.button_list[-1].setIcon(QIcon(each_button.get('icon'))) self.button_list[-1].setSizePolicy(QSizePolicy.Ignored, QSizePolicy.Ignored) self.button_list[-1].clicked.connect(partial(self.button_push, each_button.get('serialNum'))) layout = QGridLayout() layout.addWidget(self.button_list[0], 0, 0) layout.addWidget(self.button_list[1], 0, 2) layout.addWidget(self.button_list[2], 0, 1) layout.addWidget(self.button_list[3], 1, 1) self.setLayout(layout) def button_push(self, x: int) -> None: self.push_button_signal.emit(x)
関連記事
touch-sp.hatenablog.comつづき
つづきの記事を書きました。touch-sp.hatenablog.com
touch-sp.hatenablog.com