📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
細 文字列「</source>」を「</syntaxhighlight>」に置換 |
|||
| (同じ利用者による、間の2版が非表示) | |||
| 6行目: | 6行目: | ||
まず、PyQtで基本となるものは、画面を表示することである。<br> | まず、PyQtで基本となるものは、画面を表示することである。<br> | ||
以下のサンプルコードでは、<code>QWidget</code>クラスを使用して画面のみを表示している。<br> | 以下のサンプルコードでは、<code>QWidget</code>クラスを使用して画面のみを表示している。<br> | ||
< | <syntaxhighlight lang="python"> | ||
# - * - coding: utf8 - * - | # - * - coding: utf8 - * - | ||
| 36行目: | 36行目: | ||
if __name__ == "__main__": | if __name__ == "__main__": | ||
main() | main() | ||
</ | </syntaxhighlight> | ||
<br><br> | <br><br> | ||
| 56行目: | 56行目: | ||
<br> | <br> | ||
以下のサンプルコードでは、ステータスバーを表示している。<br> | 以下のサンプルコードでは、ステータスバーを表示している。<br> | ||
< | <syntaxhighlight lang="python"> | ||
# - * - coding: utf8 - * - | # - * - coding: utf8 - * - | ||
| 86行目: | 86行目: | ||
if __name__ == "__main__": | if __name__ == "__main__": | ||
main() | main() | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
以下のサンプルコードでは、ステータスバーにデジタル時計を表示している。<br> | 以下のサンプルコードでは、ステータスバーにデジタル時計を表示している。<br> | ||
< | <syntaxhighlight lang="python"> | ||
# - * - coding: utf8 - * - | # - * - coding: utf8 - * - | ||
| 130行目: | 130行目: | ||
if __name__ == "__main__": | if __name__ == "__main__": | ||
main() | main() | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
上記のサンプルコードでは、シグナルとスロットと呼ばれる機能を使用している。<br> | 上記のサンプルコードでは、シグナルとスロットと呼ばれる機能を使用している。<br> | ||
オブジェクトは、何らかのイベントが生じた際にシグナルを発生させて、それをスロットの関数が受け取ることで画面上の情報を更新することができる。<br> | オブジェクトは、何らかのイベントが生じた際にシグナルを発生させて、それをスロットの関数が受け取ることで画面上の情報を更新することができる。<br> | ||
ここでは、QTimerのインスタンスを生成した後、timeoutシグナルに対してgetDateTimeメソッドをスロットとして呼び出して、それらをconnectで結び付けている。<br> | ここでは、QTimerのインスタンスを生成した後、timeoutシグナルに対してgetDateTimeメソッドをスロットとして呼び出して、それらをconnectで結び付けている。<br> | ||
< | <syntaxhighlight lang="python"> | ||
timer = QTimer(self) | timer = QTimer(self) | ||
timer.timeout.connect(self.getDateTime) | timer.timeout.connect(self.getDateTime) | ||
timer.start(1000) | timer.start(1000) | ||
</ | </syntaxhighlight> | ||
<br><br> | <br><br> | ||
| 147行目: | 147行目: | ||
以下のサンプルコードでは、メニューバーと[ファイル]メニューおよび[終了]サブメニューを表示して、<br> | 以下のサンプルコードでは、メニューバーと[ファイル]メニューおよび[終了]サブメニューを表示して、<br> | ||
[終了]サブメニューにソフトウェアを終了するメニューバーアクションを定義している。<br> | [終了]サブメニューにソフトウェアを終了するメニューバーアクションを定義している。<br> | ||
< | <syntaxhighlight lang="python"> | ||
# - * - coding: utf8 - * - | # - * - coding: utf8 - * - | ||
| 193行目: | 193行目: | ||
if __name__ == "__main__": | if __name__ == "__main__": | ||
main() | main() | ||
</ | </syntaxhighlight> | ||
<br><br> | <br><br> | ||
| 211行目: | 211行目: | ||
36行目において、チェックボックスにチェックが入力されていない時は、<br> | 36行目において、チェックボックスにチェックが入力されていない時は、<br> | ||
<code>removeWiget</code>関数により、チェックを入力するたびにチェックボックスが追加される現象を防いでいる。<br> | <code>removeWiget</code>関数により、チェックを入力するたびにチェックボックスが追加される現象を防いでいる。<br> | ||
< | <syntaxhighlight lang="python"> | ||
import sys | import sys | ||
import sip | import sip | ||
| 257行目: | 257行目: | ||
Window.show() | Window.show() | ||
sys.exit(App.exec_()) | sys.exit(App.exec_()) | ||
</ | </syntaxhighlight> | ||
<br> | |||
以下のサンプルコードでは、QPushButtonを追加して、ボタンの押下時のイベントをoutput関数にコネクトしている。<br> | |||
output関数では、各チェックボックスにチェックが入力されている時、それぞれ文字Aと文字Bをコンソールに出力している。<br> | |||
<syntaxhighlight lang="python"> | |||
import sys | |||
import sip | |||
from PyQt5.QtCore import * | |||
from PyQt5.QtWidgets import * | |||
class MainWindow(QWidget): | |||
def __init__(self, parent=None): | |||
super(MainWindow, self).__init__(parent) | |||
# 一つ目のチェックボックス | |||
self.upper = QCheckBox('Upper', self) | |||
self.upper.move(100, 30) | |||
self.upper.stateChanged.connect(self.uppercase) | |||
# 横のレイアウト | |||
self.horizon = QHBoxLayout() | |||
# 縦のレイアウト | |||
self.vertical = QVBoxLayout() | |||
# ボタンの追加 | |||
self.button = QPushButton('コンソールに出力', self) | |||
self.button.clicked.connect(self.output) | |||
self.horizon.addLayout(self.vertical) | |||
self.setLayout(self.horizon) | |||
self.setGeometry(300, 50, 400, 350) | |||
self.setWindowTitle('QCheckBox') | |||
def uppercase(self): | |||
if(self.upper.isChecked()): | |||
self.upper_a = QCheckBox('A', self) | |||
self.vertical.addWidget(self.upper_a) | |||
self.upper_b = QCheckBox('B', self) | |||
self.vertical.addWidget(self.upper_b) | |||
else: | |||
self.vertical.removeWidget(self.upper_a) | |||
self.vertical.removeWidget(self.upper_b) | |||
def output(self): | |||
outputs = [] | |||
if(self.upper_a.isChecked()): | |||
outputs.append("A") | |||
if(self.upper_b.isChecked()): | |||
outputs.append("B") | |||
for output in outputs: | |||
print(output) | |||
if __name__ == '__main__': | |||
App = QApplication(sys.argv) | |||
Window = MainWindow() | |||
Window.show() | |||
sys.exit(App.exec_()) | |||
</syntaxhighlight> | |||
<br><br> | <br><br> | ||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ:Python]] | [[カテゴリ:Python]] | ||