Python (38)

반응형

 

과제 1 (pyqt)

 

별 찍기

 

 

더보기
from PyQt5 import QtWidgets, uic
import sys
from random import random
from PyQt5.Qt import QMessageBox

form_window = uic.loadUiType("pyqt08.ui")[0]

class UiMainWindow(QtWidgets.QMainWindow, form_window):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.show()
        self.pb.clicked.connect(self.myclick)

    def myclick(self):
        fir = self.le_first.text()
        las = self.le_last.text()
        fir_n = int(fir)
        las_n = int(las)
        str = ""
        
        for i in range(fir_n,las_n+1):
            su = i
            su_n = int(su)
            for i in range(1,su_n+1):
                # print("*", end="")
                str += ("*")
            str +="\n"
        # print(str)
        
        #QPlainTextEdit 로 사용할 시 setText가 아닌 이 방식으로 사용해야 함
        self.pte.setPlainText(str)

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    main_window = UiMainWindow()
    sys.exit(app.exec_())

 

결과 화면1

 

 

+ 다른 방법

더보기
from PyQt5 import QtWidgets, uic
import sys
from random import random
from PyQt5.Qt import QMessageBox

form_window = uic.loadUiType("pyqt08.ui")[0]

class UiMainWindow(QtWidgets.QMainWindow, form_window):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.show()
        self.pb.clicked.connect(self.myclick)
        
    def getStar(self,cnt):
        ret = ""
        for i in range(cnt):
            ret += "*"
            
        ret += "\n"
        return ret

    def myclick(self):
        f = self.le_first.text()
        l = self.le_last.text()
        
        ff = int(f)
        ll = int(l)
        
        txt = ""
        
        for i in range(ff,ll+1):
            txt += self.getStar(i)
        
        self.pte.setPlainText(txt)
        

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    main_window = UiMainWindow()
    sys.exit(app.exec_())

 

 

 

과제 2 (pyqt)

 

가위바위보 게임

 

 

더보기
import sys
from PyQt5 import uic
from PyQt5.QtWidgets import QApplication, QMainWindow
from random import random

form_class = uic.loadUiType("pyqt09.ui")[0]


class WindowClass(QMainWindow, form_class):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.pb.clicked.connect(self.myclick)
    
    def myclick(self):
        my = self.le_mine.text()
        com = int(random()*3)
        res = ""
        
        if com == 0: com_str = "가위"
        elif com == 1: com_str = "바위"
        else: com_str = "보"
        
        if my=="가위" and com_str=="보": res = "이김" 
        elif my=="바위" and com_str=="가위": res = "이김" 
        elif my=="보" and com_str=="바위": res = "이김" 
        elif my=="가위" and com_str=="바위": res = "짐" 
        elif my=="바위" and com_str=="보": res = "짐" 
        elif my=="보" and com_str=="가위": res = "짐"
        else : res = "비김"
        
        self.le_com.setText(com_str)
        self.le_result.setText(res)
        
if __name__ == "__main__":
    app = QApplication(sys.argv)
    myWindow = WindowClass()
    myWindow.show()
    app.exec_()

 

결과 화면2

 

 

 

과제 3 (swing)

 

야구게임

 

 

더보기
package day04;

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JTextArea;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class MySwing11 extends JFrame {

	private JPanel contentPane;
	private JTextField tf;
	int[] arr = {1,2,3,4,5,6,7,8,9};
	JTextArea ta;
	
	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					MySwing11 frame = new MySwing11();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public MySwing11() {
		int rnd = (int)(Math.random()*9);
		for(int i=0; i<999; i++) {
			int temp = arr[0];
			arr[0] = arr[rnd];
			arr[rnd] = temp;
		}
		System.out.println(arr[0] + " " + arr[1] + " " + arr[2]);
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 273, 420);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JLabel lbl = new JLabel("야구게임");
		lbl.setBounds(27, 32, 57, 15);
		contentPane.add(lbl);
		
		tf = new JTextField();
		tf.setBounds(147, 29, 57, 21);
		contentPane.add(tf);
		tf.setColumns(10);
		
		JButton btn = new JButton("맞춰보세요");
		btn.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				myclick();
			}
		});
		btn.setBounds(27, 57, 177, 23);
		contentPane.add(btn);
		
		ta = new JTextArea();
		ta.setBounds(27, 87, 177, 284);
		contentPane.add(ta);
	}
	
	void myclick() {
		int[] intArr = new int[3];
		String txt = tf.getText();
		intArr[0] = Integer.parseInt(txt.substring(0,1));
		intArr[1] = Integer.parseInt(txt.substring(1,2));
		intArr[2] = Integer.parseInt(txt.substring(2,3));
		String result = ta.getText();
		
		// 스트라이크
		int strike = 0;
		
		// 볼
		int ball = 0;
				
		for(int i=0; i<3; i++) {
			for(int j=0; j<3; j++) {
				if(i == j && (arr[i] == intArr[j])) strike++;
				else if(arr[i] == intArr[j]) ball++;
			}
		}
		System.out.println(strike);
		System.out.println(ball);
		
		if(strike == 0 && ball == 0) {
			result += txt + "\tOUT\n";
		} else {
			result += txt + "\t" + strike + "S" + ball + "B\n";
		}
		
		ta.setText(result);
		
		if(strike == 3) {
			JOptionPane.showMessageDialog(null, txt+"  정답입니다.");
		}
	}
}

 

결과 화면3

 

 

+ 다른 방법

더보기
package day04;

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JTextArea;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class MySwing11_sem extends JFrame {

	private JPanel contentPane;
	private JTextField tf;
	String com = "123";
	JTextArea ta;
	
	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					MySwing11_sem frame = new MySwing11_sem();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public MySwing11_sem() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 273, 420);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JLabel lbl = new JLabel("야구게임");
		lbl.setBounds(27, 32, 57, 15);
		contentPane.add(lbl);
		
		tf = new JTextField();
		tf.setBounds(147, 29, 57, 21);
		contentPane.add(tf);
		tf.setColumns(10);
		
		JButton btn = new JButton("맞춰보세요");
		btn.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				myclick();
			}
		});
		btn.setBounds(27, 57, 177, 23);
		contentPane.add(btn);
		
		ta = new JTextArea();
		ta.setBounds(27, 87, 177, 284);
		contentPane.add(ta);
		
		randCom();
	}
	
	void randCom() {
		String[] arr = {"1","2","3","4","5","6","7","8","9"};
		
		for(int i=0; i<1000;i++) {
			int rnd = (int)(Math.random()*9);
			String a = arr[0];
			arr[0] = arr[rnd];
			arr[rnd] = a;
		}
		
		com = arr[0]+arr[1]+arr[2];
		System.out.println("com: " + com);
		
	}
	
	void myclick() {
		String mine = tf.getText();
		int s = getS(mine,com);
		int b = getB(mine,com);
		String str_old = ta.getText();
		String line = mine + "\t" + s + "S" + b + "B" + "\n";  
		
		ta.setText(str_old + line);
		tf.setText("");
		
		if(s == 3) {
			JOptionPane.showMessageDialog(null, mine+"  정답입니다.");
		}
	}
	
	int getS(String mine,String com) {
		int ret = 0;
		String m1 = mine.substring(0,1);
		String m2 = mine.substring(1,2);
		String m3 = mine.substring(2,3);
		
		String c1 = com.substring(0,1);
		String c2 = com.substring(1,2);
		String c3 = com.substring(2,3);
		
		if(c1.equals(m1)) {ret++;}
		if(c2.equals(m2)) {ret++;}
		if(c3.equals(m3)) {ret++;}
		
		return ret;
	}
	
	int getB(String mine,String com) {
		int ret = 0;
		String m1 = mine.substring(0,1);
		String m2 = mine.substring(1,2);
		String m3 = mine.substring(2,3);
		
		String c1 = com.substring(0,1);
		String c2 = com.substring(1,2);
		String c3 = com.substring(2,3);
		
		if(c1.equals(m2)||c1.equals(m3)) {ret++;}
		if(c2.equals(m1)||c2.equals(m3)) {ret++;}
		if(c3.equals(m1)||c3.equals(m2)) {ret++;}
		
		return ret;
	}
}

 

 

반응형
반응형

 

버튼 클릭 시 바뀌는 이벤트 (pyqt)

 

 

+사용한 pyqt01.ui

 

from PyQt5 import QtWidgets, uic
import sys

form_window = uic.loadUiType("pyqt01.ui")[0]

class UiMainWindow(QtWidgets.QMainWindow, form_window):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.pb.clicked.connect(self.myclick)
        self.show()
        self.clicked_once = False  # 버튼이 클릭되었는지 여부를 저장하는 변수

    def myclick(self):
        if not self.clicked_once:  # 처음 클릭되었을 때
            self.lbl.setText("Good Evening!")
            self.clicked_once = True
        else:  # 두 번째 클릭되었을 때
            self.lbl.setText("Good Morning!")
            self.clicked_once = False

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    main_window = UiMainWindow()
    sys.exit(app.exec_())

 

결과 화면1

 

 

 

  • 버튼 클릭 시 숫자 1 증가
from PyQt5 import QtWidgets, uic
import sys

form_window = uic.loadUiType("pyqt02.ui")[0]

class UiMainWindow(QtWidgets.QMainWindow, form_window):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.show()
        self.pb.clicked.connect(self.myclick)

    def myclick(self):
        sum = int(self.le.text())
        sum += 1
        self.le.setText(str(sum))

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    main_window = UiMainWindow()
    sys.exit(app.exec_())

 

결과 화면2

 

 

+ 사용한 ui

 

 

 

  • 두 수를 받아와 버튼 클릭 시 빼기
from PyQt5 import QtWidgets, uic
import sys

form_window = uic.loadUiType("pyqt03.ui")[0]

class UiMainWindow(QtWidgets.QMainWindow, form_window):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.show()
        self.pb.clicked.connect(self.myclick)

    def myclick(self):
        su1 = int(self.le01.text())
        su2 = int(self.le02.text())
        sum = su1 - su2
        self.le03.setText(str(sum))

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    main_window = UiMainWindow()
    sys.exit(app.exec_())

 

결과 화면3

 

 

 

  • 단 입력 후 구구단 출력하기
from PyQt5 import QtWidgets, uic
import sys

form_window = uic.loadUiType("pyqt04.ui")[0]

class UiMainWindow(QtWidgets.QMainWindow, form_window):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.show()
        self.pb.clicked.connect(self.myclick)

    def myclick(self):
        su1 = self.le.text()
        su2 = int(su1)
        txt = ""
        
        for i in range(1,9+1):
            txt += "{}x{}={}\n".format(su1,i,i*su2)
            
        self.te.setText(txt)

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    main_window = UiMainWindow()
    sys.exit(app.exec_())

 

결과 화면4

 

 

 

  • 로또 번호 출력하기
from PyQt5 import QtWidgets, uic
import sys
from random import random

form_window = uic.loadUiType("pyqt05.ui")[0]

class UiMainWindow(QtWidgets.QMainWindow, form_window):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.show()
        self.pb.clicked.connect(self.myclick)

    def myclick(self):
        su = list(range(1, 45+1))
        
        for i in range(1,999):
            rnd = int(random()*45)
            temp = su[0];
            su[0] = su[rnd]
            su[rnd] = temp 
            # print(su)
        
        self.lcd1.display(su[0])
        self.lcd2.display(su[1])
        self.lcd3.display(su[2])
        self.lcd4.display(su[3])
        self.lcd5.display(su[4])

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    main_window = UiMainWindow()
    sys.exit(app.exec_())

 

결과 화면5

 

 

 

  • n에서 m까지 a배수의 합 구하기
from PyQt5 import QtWidgets, uic
import sys
from random import random

form_window = uic.loadUiType("pyqt06.ui")[0]

class UiMainWindow(QtWidgets.QMainWindow, form_window):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.show()
        self.pb.clicked.connect(self.myclick)

    def myclick(self):
        su1 = int(self.le1.text())
        su2 = int(self.le2.text())
        su3 = int(self.le3.text())
        sum = 0

        arr = list(range(su1, int(su2+1)))
        
        for i in arr:
            if i%su3 == 0:
                print(i)
                sum += i
        
        self.le4.setText(str(sum))


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    main_window = UiMainWindow()
    sys.exit(app.exec_())

 

결과 화면6

 

 

 

  • 번호 입력 후 버튼 클릭 시 알람창 출력하기
from PyQt5 import QtWidgets, uic
import sys
from random import random
from PyQt5.Qt import QMessageBox

form_window = uic.loadUiType("pyqt07.ui")[0]

class UiMainWindow(QtWidgets.QMainWindow, form_window):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.show()
        self.pb1.clicked.connect(self.myclick)
        self.pb2.clicked.connect(self.myclick)
        self.pb3.clicked.connect(self.myclick)
        self.pb4.clicked.connect(self.myclick)
        self.pb5.clicked.connect(self.myclick)
        self.pb6.clicked.connect(self.myclick)
        self.pb7.clicked.connect(self.myclick)
        self.pb8.clicked.connect(self.myclick)
        self.pb9.clicked.connect(self.myclick)
        self.pb0.clicked.connect(self.myclick)
        self.pb_call.clicked.connect(self.mycall)

    def myclick(self):
        str_old = self.le.text() 
        str_new = self.sender().text() # sender : 기존에 존재하는 text의 값을 가져옴
        self.le.setText(str_old+str_new)
    
    def mycall(self):
        str = self.le.text()
        QMessageBox.about(self,'Calling',str) # 파이썬 alert창
        

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    main_window = UiMainWindow()
    sys.exit(app.exec_())

 

결과 화면7

 

 

반응형
반응형

 

설치 방법

 

1

 

1. Next 클릭

 

2

 

2. I Agree 클릭

 

3

 

3. All Users (requires admin privileges) 클릭 > Next 클릭

 

4

 

4. 위치 기입 후 > Next 클릭

 

5

 

5. 체크박스 클릭 후 > Install 클릭

 

6

 

6. Next 클릭 후 Finish

 

설치 확인

 

 

 

실행

 

1, 2

 

1. cmd 창 키기 > designer 입력

 

2. Main Window 클릭 > 생성 클릭

 

 

 

아나콘다 설정

 

1

 

1. Window > Preferences 클릭

 

2

 

2. int 검색 > Python Interpreter 클릭 > python 클릭 > Remove 클릭

 

3

3

 

3. New 클릭 > Config first in PATH 클릭

 

4

 

4. 경로 변경된 것 확인 > Apply and Close 클릭

 

 

반응형

'Python' 카테고리의 다른 글

[Python] 10.5.1장 과제1  (0) 2024.04.01
[Python] 10장 pyqt를 이용한 실습  (0) 2024.03.29
[Python] 8장 pyqt5 설치 방법  (0) 2024.03.28
[Python] 7.5장 과제 (Swing을 이용)  (0) 2024.03.28
[Python] 7장 자바 SWING  (0) 2024.03.28
1 ··· 6 7 8 9 10 11 12 13