๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ก Data Analysis/๐Ÿ“‚ Project - Analysis of KakaoTalk (end)

[QT][Python] ํ•จ์ˆ˜์™€ QT ์—ฐ๊ฒฐํ•˜๊ธฐ (1)

by Sun A 2024. 7. 31.

ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

ํ•จ์ˆ˜ ์—ฐ๊ฒฐ ์‹œ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ import ํ•ด์ค€๋‹ค.

์šฐ์„  ๋งŒ๋“ค์–ด๋‘” ํ•จ์ˆ˜py ํŒŒ์ผ์„ ๋ชจ๋“ˆํ™”ํ•˜์—ฌ ๊ฐ€์ ธ์˜จ๋‹ค.

#Moduel
from kakao_data import *

 

๊ทธ๋ฆฌ๊ณ  GUI๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ PyQt5๋ฅผ ๋ถˆ๋Ÿฌ์˜จ๋‹ค. 

#System
from PyQt5 import uic
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt

 

์‚ฌ์šฉํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ํ•จ์ˆ˜๋ฅผ ํ•„์š”ํ• ๋•Œ๋งˆ๋‹ค ์ถ”๊ฐ€ํ–ˆ๋Š”๋ฐ ์ผ๋‹จ ์™„์„ฑํ•œ ์ดํ›„์— ์ž‘์„ฑํ•˜๋Š” ๊ฒŒ์‹œ๋ฌผ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•œ๋ฒˆ์— ์ ์—ˆ๋‹ค. 

 


๋ฉ”์ธ ์„ ์–ธ

๋ฉ”์ธ์„ ์„ ์–ธํ•˜๊ณ  GUI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์ž‘์—…์€ ๋‚ด๊ฐ€ ์ž‘์„ฑํ•˜๊ธฐ ์–ด๋ ค์›Œ์„œ ์„œ์น˜๋กœ ๊ฐ€์ ธ์™”๋‹ค.

#๋ฉ”์ธ ์„ ์–ธ
if __name__ == "__main__":
    #Application ์ƒ์„ฑ
    app = QApplication(sys.argv)
    #์œˆ๋„์šฐ ์ƒ์„ฑ
    myWindow = WindowClass()
    # ์œˆ๋„์šฐ ์ถœ๋ ฅ
    myWindow.show()
    #์ข…๋ฃŒ์‹œ๊นŒ์ง€ ๋Œ€๊ธฐ
    app.exec_()

๋ฉ”์ธ์„ ์„ ์–ธํ•ด์„œ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰๋  ๋•Œ๋งŒ ์‹คํ–‰๋˜๋„๋ก ํ–ˆ๋‹ค.

 

QApplication ํด๋ž˜์Šค๋ฅผ ํ†ตํ•ด ๊ธฐ๋ณธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ์ฒด๋ฅผ ์ •์˜ํ•˜๊ณ  ๋ชจ๋“  GUI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ํ•˜๋‚˜์˜ QApplication ๊ฐ์ฒด๋ฅผ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.

app = QApplication(sys.argv)
  • ๋ช…๋ น์ค„ ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด sys.argv๋ฅผ ์ž‘์„ฑํ–ˆ์œผ๋ฉฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹คํ–‰๋  ๋•Œ์˜ ํ™˜๊ฒฝ์„ ์„ค์ •ํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค€๋‹ค.

 

์œˆ๋„์šฐ๋ฅผ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์ •์˜ํ•œ ํด๋ž˜์Šค๊ฐ€ ์ƒ์†๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

myWindow = WindowClass()

 

์œˆ๋„์šฐ๊ฐ€ ํ™”๋ฉด์— ํ‘œ์‹œ๋˜๋„๋ก ์ถœ๋ ฅํ•œ๋‹ค.

myWindow.show()

 

์ด๋ฒคํŠธ ๋ฃจํ”„๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ์ฐฝ์„ ๋‹ซ์œผ๋ฉด ์ข…๋ฃŒ๋˜๋„๋ก ํ•œ๋‹ค.

app.exec_()

 

ui ํŒŒ์ผ ๋ถˆ๋Ÿฌ์˜ค๊ณ  ํด๋ž˜์Šค ์„ ์–ธ

์šฐ์„  ๋งŒ๋“ค์–ด๋‘” ui ํŒŒ์ผ์„ ์œ„์˜ ๋‚ด์šฉ๋“ค์„ ์ž‘์„ฑ์ค‘์ธ ์ฃผํ”ผํ„ฐ ํŒŒ์ผ์ด ์†ํ•œ ๋™์ผํ•œ ํด๋”์— ๋„ฃ์–ด์ค€๋‹ค. 

๊ทธ๋ฆฌ๊ณ  PyQt5 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ uic ๋ชจ๋“ˆ์„ ํ™œ์šฉํ•ด์„œ ui ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜จ๋‹ค.

file_ui = uic.loadUiType("./final.ui")[0]

 

๊ทธ๋ฆฌ๊ณ  ๋ฒ„ํŠผ๊ณผ pyํŒŒ์ผ์˜ ํ•จ์ˆ˜๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ํ•จ์ˆ˜๋“ค์„ ์ •์˜ํ•˜๊ธฐ ์œ„ํ•ด ์œˆ๋„์šฐ ํด๋ž˜์Šค๋ฅผ ์„ ์–ธํ•œ๋‹ค.

class WindowClass(QMainWindow, file_ui):
    def __init__(self):
        super().__init__()
        self.setupUi(self)

์ด์ œ ํ•ด๋‹น ์„ ์–ธ ์•„๋ž˜์— ์—ฐ๊ฒฐ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•ด ๋‚˜๊ฐˆ ์˜ˆ์ •์ด๋‹ค.

 

์„ ์–ธ์ด ์™„๋ฃŒ ๋˜์—ˆ๋‹ค๋ฉด ์–ด๋–ค ํ•จ์ˆ˜๊ฐ€ ํ•„์š”ํ•œ ์ง€ QT ๋””์ž์ด๋„ˆ์—์„œ ๊ทธ๋ฆฐ ๋ฒ„ํŠผ๋“ค์„ ์ฐธ๊ณ ํ•˜์—ฌ ๋ฏธ๋ฆฌ ์ ์–ด๋‘”๋‹ค.

#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

https://sundery.tistory.com/140

 

์•ž ๊ฒŒ์‹œ๋ฌผ์—์„œ ์ƒ์„ฑํ•œ QT์˜ ๊ฐ์ฒด๋ช…๊ณผ ๊ฐ ๊ฐ์ฒด๋ช…์˜ ๊ธฐ๋Šฅ์„ ์ž‘์„ฑํ•˜๊ณ  ์ฐจ๋ก€๋Œ€๋กœ ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•  ์˜ˆ์ •์ด๋‹ค.