티스토리 뷰
qtpy 로 a,b,c,d,e의 사이트를 셀렉트 할수 있고 input으로 시간(분)을 입력받아서 실행을 누르면 각각 작동하는 gui를 만들기
QtPy를 사용하여 원하시는 GUI를 만드는 방법은 다음과 같습니다.
from qtpy.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QComboBox, QLineEdit, QLabel
import sys
import webbrowser
import time
class MyApp(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.layout = QVBoxLayout()
self.setLayout(self.layout)
self.comboBox = QComboBox()
self.comboBox.addItems(["a", "b", "c", "d", "e"])
self.layout.addWidget(self.comboBox)
self.timeInput = QLineEdit()
self.layout.addWidget(QLabel("시간 (분):"))
self.layout.addWidget(self.timeInput)
self.textArea = QTextEdit()
self.layout.addWidget(self.textArea)
self.button = QPushButton("실행")
self.button.clicked.connect(self.on_click)
self.layout.addWidget(self.button)
def on_click(self):
site = self.comboBox.currentText()
minutes = int(self.timeInput.text())
print(f"선택된 사이트: {site}, 입력된 시간: {minutes}분")
# 사이트에 따라 원하는 동작을 수행하도록 설정하세요.
# 예를 들어, 웹사이트를 열거나 특정 함수를 실행할 수 있습니다.
# 여기서는 간단하게 웹사이트를 열도록 하겠습니다.
webbrowser.open(f"http://{site}.com")
time.sleep(minutes * 60) # 입력된 시간 동안 대기
if __name__ == "__main__":
app = QApplication(sys.argv)
ex = MyApp()
ex.show()
sys.exit(app.exec_())
이 예제에서는 간단한 GUI를 만들어 a, b, c, d, e 사이트를 선택하고, 분 단위로 시간을 입력받아 실행 버튼을 누르면 각 사이트가 작동하도록 설정했습니다.
이 코드는 간단한 예제이며, 실제 사용하실 때는 원하시는 동작을 수행하도록 수정하셔야 합니다. 예를 들어, 각 사이트에 대해 특정 함수를 호출하거나, 특정 작업을 수행하도록 설정할 수 있습니다. 또한, time.sleep() 함수는 현재 스레드를 일시 중지하므로, 이를 사용하면 GUI가 응답하지 않을 수 있습니다. 실제 애플리케이션에서는 별도의 스레드를 사용하거나 타이머를 설정하여 이 문제를 해결해야 합니다. 이 코드는 간단한 예제로, 실제 구현에는 추가적인 수정이 필요할 수 있습니다.
print 함수로 출력되는 내용을 GUI에 표시하려면 표준 출력을 리디렉션(redirect)해야 합니다. 이를 위해 사용자 정의 QTextEdit 클래스를 만들고 sys.stdout을 이 클래스의 인스턴스로 설정할 수 있습니다. 아래 코드는 이 방법을 보여줍니다
import sys
from PyQt5.QtWidgets import QApplication, QTextEdit
class MyStream(QTextEdit):
def write(self, text):
self.append(text)
app = QApplication(sys.argv)
stream = MyStream()
sys.stdout = stream
stream.show()
print("Hello, World!")
sys.exit(app.exec_())
위 코드에서 MyStream 클래스는 QTextEdit를 상속받아 write 메서드를 오버라이드합니다. print 함수는 내부적으로 sys.stdout.write를 호출하므로, sys.stdout을 MyStream 인스턴스로 설정하면 print 함수의 출력이 QTextEdit 위젯에 표시됩니다. 이 방법을 사용하면 print 함수로 출력되는 모든 내용이 GUI에 표시됩니다.
'생활팁' 카테고리의 다른 글
상가 계약종료 원상복구 반셀프 철거 관련+철거지원금 (3) | 2024.10.11 |
---|---|
Anker 휴대용 고속 충전 예비 배터리, 737 보조베터리 (0) | 2024.05.07 |
일반과세자에서 간이과세자로 변환 가능 (0) | 2023.09.14 |
고소장 작성 및 양식 (0) | 2023.09.12 |
아이패드 아이폰이랑 연동해서쓸때 인터넷 데이터 연동하는법 (0) | 2023.09.11 |
- Total
- Today
- Yesterday
- 에러
- 회원가입
- Magisk
- php8
- 아파치
- xe
- SSL
- Apache
- 루팅
- lsposed
- 오토셋
- 워드프레스
- Cloudflare
- 파이썬
- 셀레니움
- 아미나
- 윈도우
- 클라우드플레어
- 그누보드
- 멀티계정
- .htaccess
- 파이선
- python
- 텔레그램봇
- 그누보드5
- 제로보드
- php
- Fullcalendar
- 유튜브
- 텔레그램
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |