はじめに
以前も同様の記事を書きました。touch-sp.hatenablog.com
今回は別のPyQt5のスクリプトをPyQt6に書き換えました。
PyQt5のスクリプトはこちらです。
touch-sp.hatenablog.com
PyQt6に関してはいろいろ調べても情報が少ないです。
もしかしたらPyQt自体がオワコンなのかもしれません。
変更点
前回の記事と重複する部分は省略します。setAlignmentの書き方
変更前
self.label_q.setAlignment(Qt.AlignCenter)
変更後
self.label_q.setAlignment(Qt.AlignmentFlag.AlignCenter)
KeyPressEventの書き方
変更前
if e.key() == Qt.Key_Return:
変更後
if e.key() == Qt.Key.Key_Return:
最終的なPythonスクリプト
import pickle import random import sys from PyQt6.QtCore import Qt from PyQt6.QtWidgets import * from PyQt6.QtGui import QFont with open('words_dict.pkl', 'rb') as f: words_dict = pickle.load(f) dict_keys = words_dict.keys() class Window(QWidget): def __init__(self): super().__init__() self.initUI() self.question = '' self.new_question = True def initUI(self): font = QFont() font.setFamily('Times') font.setPointSize(20) font.setBold(True) self.start_button = QPushButton('start') self.start_button.setFont(font) self.label_q = QLabel() self.label_q.setAlignment(Qt.AlignmentFlag.AlignCenter) self.label_q.setFont(font) self.label_a = QLabel() self.label_a.setAlignment(Qt.AlignmentFlag.AlignCenter) self.label_a.setFont(font) layout = QVBoxLayout() layout.addWidget(self.label_q) layout.addWidget(self.label_a) self.setLayout(layout) self.show() def keyPressEvent(self, e): if e.key() == Qt.Key.Key_Return: if self.new_question == True: self.label_a.clear() self.question = random.choice(list(dict_keys)) self.label_q.setText(self.question) self.new_question = False else: self.label_a.setText(', '.join(words_dict[self.question])) self.new_question = True app = QApplication(sys.argv) ex =Window() ex.setWindowTitle('単語帳') ex.setGeometry(100,100,400,200) sys.exit(app.exec())