0
私はQtデザイナーの名前rate_0〜rate_6で設計したフォームに一連のスピンボックスを用意しました。特定の日付の曜日に基づいて、これらのスピンボックスの1つを参照したいと思います。PYQTのウィジェットを参照するためにeval()を使用
与えスピンボックスの値が(self.ui.rate_0.valueと呼ぶことができる場合)、私は
eval("self.ui.rate_" + "0" + ".value()")
を使用することができることを知っているが、何とかこれが最善のQtの方法ではないようですかこれを行うPythonic方法。レイアウトの子を横断することもできるようですが、これも面倒です。
変数形式のウィジェットを参照する最良の方法は何ですか?より以下のコード:
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
import sys
from datetime import datetime, timedelta, time
from rate_bulk_edit import *
class Bulk_rates(QDialog):
def __init__(self, parent=None):
QDialog.__init__(self, parent)
self.ui = Ui_update_rates()
self.ui.setupUi(self)
self.ui.pb_update_rates.clicked.connect(self.update_rates)
def update_rates(self):
self.start_date = self.ui.start_date.date().toPyDate()
self.end_date = self.ui.end_date.date().toPyDate()
d = self.start_date - timedelta(days=1)
delta = timedelta(days=1)
while d <= self.end_date - timedelta(days=1):
d += delta
QMessageBox.information(self,
"Test",
d.strftime('%Y-%m-%d') + " " +
str(eval("self.ui.rate_" + str(d.weekday()) + ".value()")))
QMessageBox.information(self, "Rates...", "Rates updated!")
if __name__=="__main__":
app=QApplication(sys.argv)
myapp = Bulk_rates()
myapp.show()
sys.exit(app.exec_())