๋ฉ์ธ์ ์ ์ธํ๊ณ ํด๋์ค๋ ์ ์ํ์ผ๋ ํด๋์ค ์์ ๋ฒํผ๋ค์ ์ ์ํด์ฃผ๋ ์์ ์ ์งํํด์ผ ํ๋ค.
#1. ํ์ผ ์ฐพ์๋ณด๊ธฐ ๋ฒํผ - fl_btn
#2. ํ์ผ ๊ฒฝ๋ก ๋ํ๋๋ ๋ฒํผ - fl_lbl
#3. ๋ถ์ ๊ธฐ๋ฅ ์ง์ ๋๋กญ๋ค์ด ๋ฒํผ - fun_cb
# ์ฌ์ฉ์๋ณ ๋ํ ๋น๋
# ์ฌ์ฉ์๋ณ ์ด๋ชจํฐ์ฝ ์ฌ์ฉ ๋น๋
# ์ฌ์ฉ์๋ณ ํ๋ ์๊ฐ๋
# ์ฌ์ฉ์๋ณ ํ๊ท ๋ต๋ณ ์๊ฐ
#4. ์๊ฐ๋๋ณ ํ๋ ๋น๋ ๋ถ์ ์ฐธ์ฌ์ ์ ํ ํ ์คํธ ์ ๋ ฅ ๋ฐ์ค - filter_te
#5. ๋ถ์ ๊ฒฐ๊ณผ ์ด๋ฏธ์ง ๋ค์ด๋ก๋ ๋ฒํผ - down_btn
#6. ๋ถ์(Start) Run ๋ฒํผ - st_btn
#7. ์ด๊ธฐํ(Reset) Run ๋ฒํผ - rst_btn
#8. ๊ฒฐ๊ณผ ํ๋ฉด - ptr_lbl
์ฐ์ ํด๋น ๋ฒํผ๋ค ์ค์์ #1, #2, #7 ๋ฒํผ ๋จผ์ ์์ฑํ์๋ค. (์ฌ์ด ๋ฒํผ ์ฐ์ )
์๋ฌด๋๋ ๋๋จธ์ง ๋ฒํผ๋ค์ด ์ ๋ถ Start ๋ฒํผ์ ํด๋ฆญํ๊ธฐ ์ ์ ์๋ํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๊ฐ์ฅ ์ฌ์ด ๋ถ์ ๋ฒํผ ๋จผ์ ๋์ํ๋๋ก ์ฐ๊ฒฐํ์๋ค.
#1. ํ์ผ [์ฐพ์๋ณด๊ธฐ] ๋ฒํผ - fl_btn / #2. ๊ฒฝ๋ก ์ง์ - fl_lbl
์ฌ๊ธฐ์ ์ฐพ์๋ณด๊ธฐ ๋ฒํผ์ ํด๋ฆญํ๋ฉด ํ์ผ ๊ฒฝ๋ก๊ฐ ๋์ฌ ์ ์๋ ํจ์๊น์ง ์์ฑํด์ผ ํ๋ค.
์ฐ์ ํ์ผ์ ์ฐพ์์ฌ ์ ์๋ ํจ์๋ถํฐ ์ ์ํ๋ค.
def upload_txt_file(self):
ํ์ผ ํ์ ๋ํ ์์์ ์ฌ์ฉํ ์ต์ ์ ์ค์ ํ๋ค.
options = QFileDialog.Options()
ํ์ผ ํ์ ๋ํ ์์๋ฅผ ์ด๊ณ ํ์ผ์ ์ ํํ ์ ์๋๋ก ์ง์ ํ๊ณ ๊ฒฝ๋ก๋ฅผ ๋ณ์(self.file_path)์ ์ ์ฅํ๋ค
self.file_path,_ = QFileDialog.getOpenFileName(self, "ํ์ผ ์ ํ", "", "All Files (*);;Text Files (*.txt)", options=options)
- self : ๋ํ ์์์ ๋ถ๋ชจ ์์ ฏ
- "ํ์ผ ์ ํ" : ๋ํ ์์์ ์ ๋ชฉ
- "" : ๊ธฐ๋ณธ ์์ ๋๋ ํ ๋ฆฌ (๋น์๋๊ธฐ ๋๋ฌธ์ ํ์ฌ ๋๋ ํ ๋ฆฌ์์ ์์ํ๋ค.)
- "All Files (*);;Text Files (*.txt)" : ํ์ผ ํํฐ๋ฅผ ์ง์ ํ๋ค. ์ฌ์ฉ์๋ ๋ชจ๋ ํ์ผ๊ณผ ํ ์คํธ ํ์ผ ์ค์ ์ ํํ ์ ์๋ค.
- options = options : ์์ ์ง์ ํ ์ต์ ์ ์ฌ์ฉ
์ด์ ํ์ผ ๊ฒฝ๋ก๋ฅผ ๊ฒฝ๋ก๊ฐ ๋ํ๋๋ #2 fl_lbl์ ํ์๋๋๋ก ์ฐ๊ฒฐํ๋ค.
self.fl_lbl.setText(self.file_path)
๋ค์์ผ๋ก ํ๋ค์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํด์ ์ฌ์ฉ์๊ฐ ์ง์ ํ file_path ์์ ํ ์คํธ๋ฅผ ์ฝ๋๋ค.
self.data = pd.read_table(f'{self.file_path}')
๊ทธ๋ฆฌ๊ณ ์ฝ์ด์จ ํ์ผ์ ์ด์ ๋ชจ๋์์ ์ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ ํจ์๋ฅผ ๋ถ๋ฌ์์ ์ ์ฒ๋ฆฌํ๋ค.
self.refined_data = generate_dataframe(self.data)
๊ทธ๋ผ ์ด์ ์ด ๋ฒํผ์ ์์ ์ ์ํ ํจ์์ ์ฐ๊ฒฐํด์ผ ํ๋ค.
__init__ ๋ก ์ ์ํ ํจ์ ์์ ๋ฒํผ์ ์ฐ๊ฒฐํ๋ ์ฝ๋๋ฅผ ์ ๋ ฅํด์ฃผ๋ฉด ๋๋ค.
self.fl_btn.clicked.connect(self.upload_txt_file)
#7. ์ด๊ธฐํ(Reset) Run ๋ฒํผ - rst_btn
๊ฒฐ๊ณผ ํ๋ฉด์ด ๋์ค๊ณ ๋์ ๋ค๋ฅธ ๋ถ์์ ์งํํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ ๋ฆฌ์ ํจ์๊ฐ ํ์ํ๋ค.
def reset_canvas(self):
์ฌ๊ธฐ์ ์ด๊ธฐํ ๋์ด์ผ ํ๋ ํญ๋ชฉ์ ์๊ฐํ ๊ฒฐ๊ณผ ์ถ๋ ฅ ๋ ์ด๋ธ(ptr_lbl), ์ ์ฅ ์์น ๋ฐ ํ์ผ๋ช (fl_lbl), ํํฐ๋ง ๊ธฐ๋ฅ(filter_te) ์ธ ๊ฐ์ง์ด๋ค.QT์ ์ง์ ํด๋ ๊ฐ์ฒด๋ช ์ผ๋ก ๋ฏธ๋ฆฌ clear() ์ฝ๋๋ฅผ ์ ๋ ฅํด๋๋ค.
self.ptr_lbl.clear()
self.fl_lbl.clear()
self.filter_te.clear()
์ด๋ฅผ ์ด๊ธฐํ ๋ฒํผ ๊ฐ์ฒด์ ์ฐ๊ฒฐํ๋ค.
self.rst_btn.clicked.connect(self.reset_canvas)
์ด๋ ๊ฒ ํ๋ฉด ํ์ผ ๊ฒฝ๋ก ์ง์ ๋ฐ ์ด๊ธฐํ ๋ฒํผ์ ์์ฑํ ์ ์๋ค.
'๐ก Data Analysis > ๐ Project - Analysis of KakaoTalk (end)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[QT][Python] ํจ์์ QT ์ฐ๊ฒฐํ๊ธฐ (4) (0) | 2024.08.12 |
---|---|
[QT][Python] ํจ์์ QT ์ฐ๊ฒฐํ๊ธฐ (3) (1) | 2024.08.01 |
[QT][Python] ํจ์์ QT ์ฐ๊ฒฐํ๊ธฐ (1) (0) | 2024.07.31 |
[QT] QT Designer ๋ก ๋์์ธํ๊ธฐ (0) | 2024.07.31 |
[QT] QT Designer ์ฌ์ฉํ๊ธฐ (0) | 2024.07.30 |