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

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

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

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

Python

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

Q&A

解決済

1回答

2296閲覧

QLineEditへ入力なしならば0にする方法

LenItsuki

総合スコア89

Qt

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

Python

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

0グッド

0クリップ

投稿2018/09/17 21:37

編集2018/09/17 23:55

前提・実現したいこと

下のようなGUIにおいて,AzimuthとDistanceに値を入力してCalculateを押すと緯距と経距の計算ができるプログラムを作りました.
これにおいて,AzimuthとDistanceの入力欄で入力がなかった場合は,0が入力されたとして計算できるようにしたいです.
イメージ説明

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

今のプログラムでは,入力がなければ以下のようなエラーメッセージが出ます.

PS C:\Users\survey\Documents\traum\py_calc_lat_lon> python .\factorial_latlon.py Traceback (most recent call last): File ".\factorial_latlon.py", line 102, in calc min = int(self.inputMinute.text()) ValueError: invalid literal for int() with base 10: ''

該当のソースコード

python

1#!/usr/bin/env python 2#have to convert to radian 3 4from PyQt5.QtWidgets import (QApplication, QWidget, 5 QGridLayout, QVBoxLayout, QHBoxLayout, 6 QLabel, QLineEdit, QPushButton) 7from math import * 8from decimal import Decimal, ROUND_HALF_UP 9 10 11#how2calculate 12def conv2deg(deg,min,sec): 13 go_deg = deg+min/60+sec/3600 14 return go_deg 15 16def deg2rad(deg): 17 rad = radians(deg) 18 return rad 19 20def calc_lat(distance,rad): 21 lat = distance * cos(rad) 22 return lat 23 24def calc_lon(distance,rad): 25 lon = distance * sin(rad) 26 return lon 27 28def factorial(n): 29 if n < 0: 30 return -1 31 elif n == 0: 32 return 1 33 else: 34 return n * factorial(n-1)#calcuation 35#GUI 36class MainWindow(QWidget): 37 def __init__(self, parent=None): 38 super(MainWindow, self).__init__(parent) 39 #input 40 self.inputDegree = QLineEdit() 41 self.inputMinute = QLineEdit() 42 self.inputSecond = QLineEdit() 43 self.inputDistance = QLineEdit() 44 #output 45 self.outputLat = QLineEdit() 46 self.outputLat.setReadOnly(True) 47 self.outputLon = QLineEdit() 48 self.outputLon.setReadOnly(True) 49 #button 50 self.calcButton = QPushButton("&Calculate") 51 self.calcButton.clicked.connect(self.calc) 52 #place_input for Azimuth 53 lineLayout_1 = QGridLayout() 54 lineLayout_1.addWidget(QLabel("Azimuth"), 0, 0) 55 lineLayout_1.addWidget(self.inputDegree, 0, 1) 56 lineLayout_1.addWidget(QLabel("°"), 0, 2) 57 lineLayout_1.addWidget(self.inputMinute, 0, 3) 58 lineLayout_1.addWidget(QLabel("'"), 0, 4) 59 lineLayout_1.addWidget(self.inputSecond, 0, 5) 60 lineLayout_1.addWidget(QLabel("''"), 0, 6) 61 #place_input for Distance 62 lineLayout_3 = QGridLayout() 63 lineLayout_3.addWidget(QLabel("Distance"),0,0) 64 lineLayout_3.addWidget(self.inputDistance, 0, 1) 65 66 lineLayout_2 = QGridLayout() 67 lineLayout_2.addWidget(QLabel("緯距(X)"), 0, 0) 68 lineLayout_2.addWidget(self.outputLat, 0, 1) 69 lineLayout_2.addWidget(QLabel("経距(Y)"), 0, 2) 70 lineLayout_2.addWidget(self.outputLon, 0, 3) 71 72 buttonLayout = QVBoxLayout() 73 # buttonLayout = QHBoxLayout() 74 # buttonLayout.addLayout(lineLayout_1) 75 # buttonLayout.addLayout(lineLayout_2) 76 buttonLayout.addWidget(self.calcButton) 77 78 # mainLayout = QHBoxLayout() 79 mainLayout = QVBoxLayout() 80 mainLayout.addLayout(lineLayout_1) 81 mainLayout.addLayout(lineLayout_3) 82 mainLayout.addLayout(lineLayout_2) 83 # mainLayout.addLayout(buttonLayout) 84 85 # buttonLayout = QVBoxLayout() 86 AllLayout = QHBoxLayout() 87 AllLayout.addLayout(mainLayout) 88 AllLayout.addLayout(buttonLayout) 89 # buttonLayout.addLayout(lineLayout_2) 90 # buttonLayout.addWidget(self.calcButton) 91 92 self.setLayout(AllLayout) 93 self.setWindowTitle("緯距・経距計算") 94 95 # def calc(self): 96 # n = int(self.inputLine.text())##input 97 # r = factorial(n) 98 # self.outputLine.setText(str(r)) 99 100 def calc(self): 101 deg = int(self.inputDegree.text()) 102 min = int(self.inputMinute.text()) 103 sec = int(self.inputSecond.text()) 104 distance = float(self.inputDistance.text()) 105 # n = int(self.inputLine.text())##input 106 all_deg = conv2deg(deg,min,sec) 107 # r = factorial(n) 108 rad = deg2rad(all_deg) 109 lat = calc_lat(distance,rad) 110 lon = calc_lon(distance,rad) 111 round_lat = round(lat,3) 112 round_lon = round(lon,3) 113 round_lat = Decimal(round_lat).quantize(Decimal('0.001'), rounding=ROUND_HALF_UP) 114 round_lon = Decimal(round_lon).quantize(Decimal('0.001'), rounding=ROUND_HALF_UP) 115 self.outputLat.setText(str(round_lat)) 116 self.outputLon.setText(str(round_lon)) 117 # self.outputLat.setText(Decimal(str(round_lat)).quantize(Decimal('0.001',rounding = ROUND_HALF_UP))) 118 # self.outputLon.setText(str(round_lon)) 119 120if __name__ == '__main__': 121 import sys 122 app = QApplication(sys.argv) 123 main_window = MainWindow() 124 125 main_window.show() 126 sys.exit(app.exec_())

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

Windows10 64bit, Python 3.5.5

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

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

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

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

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

guest

回答1

0

ベストアンサー

AzimuthとDistanceの入力欄で入力がなかった場合は,0が入力されたとして計算できるようにしたい

条件を満たすだけなら。

Python

1deg = int(self.inputDegree.text() or '0') 2min = int(self.inputMinute.text() or '0') 3sec = int(self.inputSecond.text() or '0')

投稿2018/09/18 00:29

LouiS0616

総合スコア35660

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

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

LenItsuki

2018/09/18 00:37

できました.適切なアドバイス,どうもありがとうございます.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問