環境
Windows 10 Pro(CPU only) Python 3.7.5
バージョン
cycler==0.10.0 kiwisolver==1.1.0 matplotlib==3.1.1 numpy==1.17.4 pandas==0.25.3 pyparsing==2.4.5 PyQt5==5.13.2 PyQt5-sip==12.7.0 python-dateutil==2.8.1 pytz==2019.3 six==1.13.0
本文
CSVファイルを読み込んでラジオボタンの初期値にセットする。
冗長なコードだがシンプルで分かりやすく書いた。
- コード
import sys import pandas as pd from PyQt5 import QtCore from PyQt5.QtGui import QFont from PyQt5.QtWidgets import * ''' from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas from matplotlib import pyplot as plt import numpy as np ''' class Window(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setWindowTitle("PyQt5 sample") self.setGeometry(50, 50, 660, 660) self.button1 = QPushButton('Select File', self) self.button1.setGeometry(QtCore.QRect(20, 20, 100, 30)) self.button1.clicked.connect(self.showDialog1) self.file_name = QLabel(self) self.file_name.setGeometry(130,20,400,30) self.file_name.setFrameStyle(QFrame.Box | QFrame.Plain) self.file_name.setFont(QFont('Meiryo',12)) self.ESA_label = QLabel(self) self.ESA_label.setGeometry(130,60,400,30) self.ESA_label.setFrameStyle(QFrame.Box | QFrame.Plain) self.ESA_label.setFont(QFont('Meiryo',12)) self.Fe_label = QLabel(self) self.Fe_label.setGeometry(130,100,400,30) self.Fe_label.setFrameStyle(QFrame.Box | QFrame.Plain) self.Fe_label.setFont(QFont('Meiryo',12)) ESA_yoko = 100 ESA_tate = 200 Fe_yoko = 300 Fe_tate = 200 self.Fe_yes = QRadioButton('あり', self) self.Fe_yes.setFocusPolicy(QtCore.Qt.NoFocus) self.Fe_yes.setGeometry(Fe_yoko, Fe_tate, 100, 25) self.Fe_yes.setFont(QFont('Meiryo',14)) self.Fe_no = QRadioButton('なし', self) self.Fe_no.setFocusPolicy(QtCore.Qt.NoFocus) self.Fe_no.setGeometry(Fe_yoko, Fe_tate + 40, 100, 25) self.Fe_no.setFont(QFont('Meiryo',14)) self.groupFe = QButtonGroup() self.groupFe.addButton(self.Fe_yes, 1) self.groupFe.addButton(self.Fe_no, 0) self.ESA0 = QRadioButton('なし', self) self.ESA0.setFocusPolicy(QtCore.Qt.NoFocus) self.ESA0.setGeometry(ESA_yoko, ESA_tate, 100, 25) self.ESA0.setFont(QFont('Meiryo',14)) self.ESA5 = QRadioButton('5μg', self) self.ESA5.setFocusPolicy(QtCore.Qt.NoFocus) self.ESA5.setGeometry(ESA_yoko, ESA_tate + 30, 100, 25) self.ESA5.setFont(QFont('Meiryo',14)) self.ESA10 = QRadioButton('10μg', self) self.ESA10.setFocusPolicy(QtCore.Qt.NoFocus) self.ESA10.setGeometry(ESA_yoko, ESA_tate + 60, 100, 25) self.ESA10.setFont(QFont('Meiryo',14)) self.ESA20 = QRadioButton('20μg', self) self.ESA20.setFocusPolicy(QtCore.Qt.NoFocus) self.ESA20.setGeometry(ESA_yoko, ESA_tate + 90, 100, 25) self.ESA20.setFont(QFont('Meiryo',14)) self.ESA30 = QRadioButton('30μg', self) self.ESA30.setFocusPolicy(QtCore.Qt.NoFocus) self.ESA30.setGeometry(ESA_yoko, ESA_tate + 120, 100, 25) self.ESA30.setFont(QFont('Meiryo',14)) self.ESA40 = QRadioButton('40μg', self) self.ESA40.setFocusPolicy(QtCore.Qt.NoFocus) self.ESA40.setGeometry(ESA_yoko, ESA_tate + 150, 100, 25) self.ESA40.setFont(QFont('Meiryo',14)) self.ESA60 = QRadioButton('60μg', self) self.ESA60.setFocusPolicy(QtCore.Qt.NoFocus) self.ESA60.setGeometry(ESA_yoko, ESA_tate + 180, 100, 25) self.ESA60.setFont(QFont('Meiryo',14)) self.ESA_list = [0,5,10,20,30,40,60] self.Fe_list = ['なし', 'あり'] self.groupESA = QButtonGroup() self.groupESA.addButton(self.ESA0, 0) self.groupESA.addButton(self.ESA5, 1) self.groupESA.addButton(self.ESA10, 2) self.groupESA.addButton(self.ESA20, 3) self.groupESA.addButton(self.ESA30, 4) self.groupESA.addButton(self.ESA40, 5) self.groupESA.addButton(self.ESA60, 6) for button in self.groupESA.buttons(): button.clicked.connect(self.clicked) for button in self.groupFe.buttons(): button.clicked.connect(self.clicked) def showDialog1(self): fname = QFileDialog.getOpenFileName(self, 'Select File') if fname[0]: self.file_name.setText(fname[0]) df = pd.read_csv(fname[0], index_col=0) self.groupFe.button(df.Fe[-1]).setChecked(True) self.groupESA.button(self.ESA_list.index(df.ESA[-1])).setChecked(True) self.clicked() def clicked(self): ESA = self.groupESA.checkedId() self.ESA_label.setText(str(self.ESA_list[ESA])) Fe = self.groupFe.checkedId() self.Fe_label.setText(self.Fe_list[Fe]) if __name__ == "__main__": app = QApplication(sys.argv) ex =Window() ex.show() sys.exit(app.exec_())