質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Qt

QtはGUIプログラムの開発で広く使われているクロスプラットフォーム開発のフレームワークです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

277閲覧

Qtを利用してpythonを実行したいがエラーが出る。

miraimirai

総合スコア39

Qt

QtはGUIプログラムの開発で広く使われているクロスプラットフォーム開発のフレームワークです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2024/01/15 08:37

編集2024/01/15 08:39

実現したいこと

実行するとウィンドウが開くようにしたい。

発生している問題・分からないこと

エラー
Traceback (most recent call last):
File "/Users/mirai/プログラミング/Mercurial用/qt/GUI(pyQt)/ui_tameshi.py", line 15, in <module>
window = Test()
^^^^^^
File "/Users/mirai/プログラミング/Mercurial用/qt/GUI(pyQt)/ui_tameshi.py", line 10, in init
self.ui.setupUi(self)
File "/Users/mirai/プログラミング/Mercurial用/qt/GUI(pyQt)/ui_tameshi_henkan.py", line 39, in setupUi
MainWindow.setCentralWidget(self.centralwidget)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'Test' object has no attribute 'setCentralWidget'

該当のソースコード

python

1# -*- coding: utf-8 -*- 2 3# Form implementation generated from reading ui file 'tameshi.ui' 4# 5# Created by: PyQt5 UI code generator 5.15.7 6# 7# WARNING: Any manual changes made to this file will be lost when pyuic5 is 8# run again. Do not edit this file unless you know what you are doing. 9 10 11from PyQt5 import QtCore, QtGui, QtWidgets 12 13 14class Ui_MainWindow(object): 15 def setupUi(self, MainWindow): 16 MainWindow.setObjectName("MainWindow") 17 MainWindow.resize(800, 600) 18 self.centralwidget = QtWidgets.QWidget(MainWindow) 19 self.centralwidget.setObjectName("centralwidget") 20 self.label = QtWidgets.QLabel(self.centralwidget) 21 self.label.setGeometry(QtCore.QRect(260, 270, 58, 16)) 22 self.label.setObjectName("label") 23 self.label_2 = QtWidgets.QLabel(self.centralwidget) 24 self.label_2.setGeometry(QtCore.QRect(500, 270, 58, 16)) 25 self.label_2.setObjectName("label_2") 26 self.frame = QtWidgets.QFrame(self.centralwidget) 27 self.frame.setGeometry(QtCore.QRect(200, 110, 171, 151)) 28 self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel) 29 self.frame.setFrameShadow(QtWidgets.QFrame.Raised) 30 self.frame.setObjectName("frame") 31 self.frame_2 = QtWidgets.QFrame(self.centralwidget) 32 self.frame_2.setGeometry(QtCore.QRect(440, 110, 171, 151)) 33 self.frame_2.setFrameShape(QtWidgets.QFrame.StyledPanel) 34 self.frame_2.setFrameShadow(QtWidgets.QFrame.Raised) 35 self.frame_2.setObjectName("frame_2") 36 self.pushButton = QtWidgets.QPushButton(self.centralwidget) 37 self.pushButton.setGeometry(QtCore.QRect(0, 0, 100, 32)) 38 self.pushButton.setObjectName("pushButton") 39 MainWindow.setCentralWidget(self.centralwidget) 40 self.menubar = QtWidgets.QMenuBar(MainWindow) 41 self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 24)) 42 self.menubar.setObjectName("menubar") 43 MainWindow.setMenuBar(self.menubar) 44 self.statusbar = QtWidgets.QStatusBar(MainWindow) 45 self.statusbar.setObjectName("statusbar") 46 MainWindow.setStatusBar(self.statusbar) 47 48 self.retranslateUi(MainWindow) 49 self.pushButton.clicked.connect(self.pushButton.close) # type: ignore 50 QtCore.QMetaObject.connectSlotsByName(MainWindow) 51 52 def retranslateUi(self, MainWindow): 53 _translate = QtCore.QCoreApplication.translate 54 MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) 55 self.label.setText(_translate("MainWindow", "画像1")) 56 self.label_2.setText(_translate("MainWindow", "画像2")) 57 self.pushButton.setText(_translate("MainWindow", "閉じる")) 58

python

1import sys 2from PyQt5.QtCore import * 3from PyQt5.QtWidgets import * 4from ui_tameshi_henkan import Ui_MainWindow 5 6class Test(QDialog): 7 def __init__(self,parent=None): 8 super(Test, self).__init__(parent) 9 self.ui = Ui_MainWindow() 10 self.ui.setupUi(self) 11 12 13if __name__ == '__main__': 14 app = QApplication(sys.argv) 15 window = Test() 16 window.show() 17 sys.exit(app.exec_()) 18

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

teratail、googleで探しましたが同様の質問が見つかりませんでした。違うエラーが出ていましたが調べてUi_MainWindowに変更しました。

補足

参考サイト
https://qiita.com/kenasman/items/765457d440b923f4e555
pyQt5
macM1
Qtdesigner
pyuic5

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

melian

2024/01/15 08:58

> 'Test' object has no attribute 'setCentralWidget' Test object は Test クラスのインスタンスで、Test クラスは QDialog クラスを継承しているのですが、setCentralWidget() メソッドは QDialog クラスには存在しません。QDialog クラスではなく、QMainWindow クラスにあるメソッドなので、QMainWidow クラスを継承するのではないでしょうか。 class Test(QDialog): => class Test(QMainWindow): 上記の様に書き換えて実行すると、エラーは発生しません。
miraimirai

2024/01/15 09:46

解決できました。ありがとうございます。回答欄に記載できますか?
melian

2024/01/15 09:49

はい、回答へ転記しました。
guest

回答1

0

ベストアンサー

'Test' object has no attribute 'setCentralWidget'

Test object は Test クラスのインスタンスで、Test クラスは QDialog クラスを継承しているのですが、setCentralWidget() メソッドは QDialog クラスには存在しません。QDialog クラスではなく、QMainWindow クラスにあるメソッドなので、QMainWidow クラスを継承するのではないでしょうか。

python

1class Test(QDialog): 2=> 3class Test(QMainWindow):

投稿2024/01/15 09:48

melian

総合スコア19825

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

miraimirai

2024/01/15 09:49

解決しました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問