私はPyQtプログラムを持っています。このプロジェクトでは、以前の設定に基づいた計算がいくつかあります。ウィジェットからの情報の入手方法
example_run_vars.py:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(324, 332)
self.gridLayout = QtWidgets.QGridLayout(Dialog)
self.gridLayout.setObjectName("gridLayout")
self.B = QtWidgets.QLabel(Dialog)
self.B.setObjectName("B")
self.gridLayout.addWidget(self.B, 0, 0, 1, 1)
self.A_val = QtWidgets.QLineEdit(Dialog)
self.A_val.setObjectName("A_val")
self.gridLayout.addWidget(self.A_val, 0, 1, 1, 1)
self.A = QtWidgets.QLabel(Dialog)
self.A.setObjectName("A")
self.gridLayout.addWidget(self.A, 1, 0, 1, 1)
self.B_val = QtWidgets.QLineEdit(Dialog)
self.B_val.setObjectName("B_val")
self.gridLayout.addWidget(self.B_val, 1, 1, 1, 1)
self.Zerocheck = QtWidgets.QCheckBox(Dialog)
self.Zerocheck.setObjectName("Zerocheck")
self.gridLayout.addWidget(self.Zerocheck, 1, 2, 1, 1)
self.math = QtWidgets.QComboBox(Dialog)
self.math.setObjectName("math")
self.gridLayout.addWidget(self.math, 2, 1, 1, 1)
self.math_else = QtWidgets.QComboBox(Dialog)
self.math_else.setObjectName("math_else")
self.gridLayout.addWidget(self.math_else, 3, 1, 1, 1)
self.Run = QtWidgets.QPushButton(Dialog)
self.Run.setObjectName("Run")
self.gridLayout.addWidget(self.Run, 4, 1, 1, 1)
self.Answer = QtWidgets.QLineEdit(Dialog)
self.Answer.setReadOnly(False)
self.Answer.setObjectName("Answer")
self.gridLayout.addWidget(self.Answer, 5, 1, 1, 1)
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
self.B.setText(_translate("Dialog", "A: "))
self.A.setText(_translate("Dialog", "B: "))
self.Zerocheck.setText(_translate("Dialog", "ZeroCheck"))
self.Run.setText(_translate("Dialog", "Run"))
がexample.py:
import sys, os
from PyQt5 import QtCore, QtGui, QtWidgets
from example_run_vars import Ui_Dialog
class example(QtWidgets.QDialog):
def __init__(self, parent=None):
# QtGui.QWidget.__init__(self, parent) # PyQt4
super(example, self).__init__(parent) # pyQt5
self.ui = Ui_Dialog()
self.ui.setupUi(self)
self.ui.retranslateUi(self)
self.ui.math.addItem('Add')
self.ui.math.addItem('Substract')
self.ui.math.addItem('Multiply')
self.ui.math.addItem('Divide')
self.ui.math.addItem('Power')
self.ui.math.addItem('Sqrt')
self.ui.math.activated[str].connect(self.dosomething)
self.ui.math_else.addItem('math function x')
self.ui.math_else.activated[str].connect(self.dosomething)
self.ui.Zerocheck.setChecked(False)
self.ui.Zerocheck.clicked.connect(self.dosomething)
self.ui.Run.clicked.connect(self.calculate)
def a_changed(self):
pass
def b_changed(self):
pass
def calculate(self):
# return value in Answer text box
pass
def dosomething(self):
# arbritary thing i realy don't know if i need it...
pass
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
exampleDialog = QtWidgets.QDialog()
examplepanel = example()
examplepanel.show()
sys.exit(app.exec_())
一例として、私は以下のファイルが含まれている小型の電卓を作成しましたアイデアは、スクリプトの実行ボタンを押すと、テキストボックスに答えが表示されます。要点は、答えを返す最も簡単な方法(またはプログラム的に最良の方法)が何であるか分かりません。
私はアイデアを持っている2つのまたはツリーのオプションがあります。
- すべてのチェックボックス/コンボボックス/テキストボックスが何かを行い、このどこかを置くと、計算ボタンがこれを読み出します。
- 計算するときは、すべてのチェックボックス/コンボボックス/テキストボックスを読み取り、これを関数に追加します。
- これらの2つの組み合わせ。
状況の種類を処理する最も良い方法は何ですか?その理由は何ですか?