🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Qt

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

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

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

Q&A

解決済

1回答

1249閲覧

Qt Designer で作成したGUIのLCD Numberの値をPython3.5.3で更新する方法について

BluePi85

総合スコア22

Qt

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

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

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

0グッド

0クリップ

投稿2018/09/02 06:23

Rasberry Pi にて、Qt Desingerを用いてLCD Numberを配置させ
下図のようなGUIアプリケーションをPython3.5.3にて作成に取り組んでいます。

イメージ説明

行いたい事は、以下の2点です。
・START ボタンを押下後、任意の時間毎に LCD Number の値を更新させる。
・STOPボタンで停止

現在、
以下のようなコードを作成いたしましたが、
意図した動作になりません。

pythonを勉強し始めて間もないため、勉強不足ではありますが、
申し訳ありませんが、アドバイスを頂けないでしょうか?

# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'main.ui' # # Created by: PyQt5 UI code generator 5.11.2 # # WARNING! All changes made in this file will be lost! import time from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(400, 300) font = QtGui.QFont() font.setPointSize(14) Dialog.setFont(font) self.buttonBox = QtWidgets.QDialogButtonBox(Dialog) self.buttonBox.setGeometry(QtCore.QRect(30, 240, 341, 32)) self.buttonBox.setOrientation(QtCore.Qt.Horizontal) self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok) self.buttonBox.setObjectName("buttonBox") self.lcdNumber = QtWidgets.QLCDNumber(Dialog) self.lcdNumber.setGeometry(QtCore.QRect(90, 60, 91, 51)) self.lcdNumber.setAutoFillBackground(True) self.lcdNumber.setObjectName("lcdNumber") self.pushButton = QtWidgets.QPushButton(Dialog) self.pushButton.setGeometry(QtCore.QRect(230, 70, 100, 40)) self.pushButton.setObjectName("pushButton") self.pushButton_2 = QtWidgets.QPushButton(Dialog) self.pushButton_2.setGeometry(QtCore.QRect(230, 130, 100, 40)) self.pushButton_2.setObjectName("pushButton_2") self.actionOnStart = QtWidgets.QAction(Dialog) self.actionOnStart.setObjectName("actionOnStart") self.actionOnStop = QtWidgets.QAction(Dialog) self.actionOnStop.setObjectName("actionOnStop") self.retranslateUi(Dialog) self.buttonBox.accepted.connect(Dialog.accept) self.buttonBox.rejected.connect(Dialog.reject) self.pushButton.clicked.connect(self.OnStart) self.pushButton_2.clicked.connect(self.OnStop) QtCore.QMetaObject.connectSlotsByName(Dialog) def retranslateUi(self, Dialog): _translate = QtCore.QCoreApplication.translate Dialog.setWindowTitle(_translate("Dialog", "Dialog")) self.pushButton.setText(_translate("Dialog", "START")) self.pushButton_2.setText(_translate("Dialog", "STOP")) self.actionOnStart.setText(_translate("Dialog", "OnStart")) self.actionOnStop.setText(_translate("Dialog", "OnStop")) def OnStart(self): i = 0 while True: i = i + 1 self.lcdNumber.display(i) time.sleep(1) def OnStop(self): print('Stop ボタン押下後のコードが分かりません。') if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) Dialog = QtWidgets.QDialog() ui = Ui_Dialog() ui.setupUi(Dialog) Dialog.show() sys.exit(app.exec_())

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

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

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

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

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

guest

回答1

0

ベストアンサー

ループを書くとそこで処理が停滞してしまうので、タイマーを使います。

Python

1def __init__(self): 2 self._timer = QtCore.QTimer() 3 self._timer.timeout.connect(self.run) 4 5def on_start(self): 6 self._timer.start(1000) 7 8def run(self): 9 self._lcd_number.display( 10 self._lcd_number.intValue() + 1 11 ) 12 self._timer.start(1000) 13 14def on_stop(self): 15 self._timer.stop()

ところどころオブジェクトの名前を変えています。

投稿2018/09/02 07:03

編集2018/09/02 07:07
LouiS0616

総合スコア35668

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

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

BluePi85

2018/09/02 08:55

LouiS0616様 ご連絡頂き、ありがとうございます。 頂いたコードを元に、コードを編集した結果、 行いたい事が出来ました。 この度は、誠にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問