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

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

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

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

Q&A

解決済

1回答

203閲覧

pyQtとQtDesignerを使ってカウントアップをしたい。

miraimirai

総合スコア39

Python

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

0グッド

0クリップ

投稿2024/01/25 08:04

編集2024/01/26 01:50

実現したいこと

カウントアップアプリを作りたい。

前提

QtDesignerでラベルを作成し、変換し、別のpythonファイルで文字を変更したい。それを1秒毎にカウントアップしていきたい

発生している問題・エラーメッセージ

Traceback (most recent call last): File "/Users/mirai/プログラミング/Mercurial用/qt/GUI(pyQt)/文字表示/mozihyouzi_main.py", line 16, in <module> window = Test() ^^^^^^ File "/Users/mirai/プログラミング/Mercurial用/qt/GUI(pyQt)/文字表示/mozihyouzi_main.py", line 10, in __init__ self.label1.setText("変更しました") ^^^^^^^^^^^ AttributeError: 'Test' object has no attribute 'label1'

該当のソースコード

mozihyouzi.py

1# -*- coding: utf-8 -*- 2 3# Form implementation generated from reading ui file 'mozihyouzi.ui' 4# 5# Created by: PyQt5 UI code generator 5.15.10 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.label1 = QtWidgets.QLabel(self.centralwidget) 21 self.label1.setGeometry(QtCore.QRect(180, 80, 431, 331)) 22 self.label1.setMinimumSize(QtCore.QSize(400, 300)) 23 font = QtGui.QFont() 24 font.setPointSize(100) 25 self.label1.setFont(font) 26 self.label1.setObjectName("label1") 27 MainWindow.setCentralWidget(self.centralwidget) 28 self.menubar = QtWidgets.QMenuBar(MainWindow) 29 self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 24)) 30 self.menubar.setObjectName("menubar") 31 MainWindow.setMenuBar(self.menubar) 32 self.statusbar = QtWidgets.QStatusBar(MainWindow) 33 self.statusbar.setObjectName("statusbar") 34 MainWindow.setStatusBar(self.statusbar) 35 36 self.retranslateUi(MainWindow) 37 QtCore.QMetaObject.connectSlotsByName(MainWindow) 38 39 def retranslateUi(self, MainWindow): 40 _translate = QtCore.QCoreApplication.translate 41 MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) 42 self.label1.setText(_translate("MainWindow", "TextLabel")) 43

mozihyouzi_main.py

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

試したこと

まず、参考サイトを見てラベルのテキストを変更しようとしたのですが、エラーが発生しました。
参考サイト
https://qiita.com/grinpeaceman/items/7eae3dfe274b19e6549c

多分superの継承が間違っていると思うのですがやり方がわかりません

補足情報(FW/ツールのバージョンなど)

macM1
pyQt5

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

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

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

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

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

guest

回答1

0

ベストアンサー

詳しくないのですが回答かつかないようなので。

AttributeError: 'Test' object has no attribute 'label1'

Testのオブジェクトにlabel1 という属性が無いよということですが、質問のTestクラスのコードにはありません。

なので、

python

1 self.label1.setText("変更しました")

この書き方がまずいのですが、

参考サイトを見てラベルのテキストを変更しようとした
superの継承が間違っていると思う

参考サイトのコードをちらっと見ると、この形でできているようですが、これは

python

1class LabelSample(QMainWindow, Ui_Form):

のように Ui_Form を継承しているからです。 質問のTestクラスは継承してませんよね。

もしくは、質問のコードは参考にしているサイトと違って

python

1 self.ui = Ui_MainWindow() 2 self.label1.setText("変更しました")

以下のように Ui_MainWindowクラスのインスタンスを uiに入れているので、これを使うのが目的であれば、以下のようにするべきです。

python

1 self.ui = Ui_MainWindow() 2 self.ui.label1.setText("変更しました")

投稿2024/01/26 03:05

TakaiY

総合スコア12781

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

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

miraimirai

2024/01/26 03:46

回答のコードにしましたがエラーが発生します。 Traceback (most recent call last): File "/Users/mirai/プログラミング/Mercurial用/qt/GUI(pyQt)/文字表示/mozihyouzi_main.py", line 16, in <module> window = Test() ^^^^^^ File "/Users/mirai/プログラミング/Mercurial用/qt/GUI(pyQt)/文字表示/mozihyouzi_main.py", line 10, in __init__ self.ui.label1.setText("変更しました") ^^^^^^^^^^^^^^ AttributeError: 'Ui_MainWindow' object has no attribute 'label1'
TakaiY

2024/01/26 04:38

Ui_MainWindowクラスでは、setupuiメソッドを呼ばないとGUIが設定されないので、その後で変更する必要があるみたいですね。
miraimirai

2024/01/26 07:31

どうやってコードを挿入すればいいかアイデアが浮かびません
TakaiY

2024/01/26 09:51

> どうやってコードを挿入すればいいか 挿入でなくて修正ですか? setipUiを先に呼ぶ必要があるので、 self.label1.setText("変更しました") self.ui.setupUi(self) この2行を入れ替えればいいでしょう。
miraimirai

2024/01/27 09:31

回答ありがとうございます。 試したところ問題が解決しました! ベストアンサーに選ばせていただきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問