【改良1】【仕事効率化】使っていない 2in1 PC(またはタブレット)を有効活用、マクロパッドとして復活させる

はじめに

前回Arduinoを使用して2in1 PC(またはタブレット)をマクロパッドとして使用しました。
touch-sp.hatenablog.com
今回はPythonスクリプトに大幅な改良を加えました。

Pythonスクリプト

メインファイル(main.py)

前回と変更はありません。

PowerPointのためのファイル(powerpoint.py)

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)

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