[파이썬 GUI 프로그래밍] 상단바

기초/Python 2018. 9. 11. 11:15
※ 상단바 
: 상단바라고 하면 실행되는 프로그램 제일 상단에 표시된 메뉴부분이다.







# 사용방법

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
from tkinter import *
 
class Window(Frame):
 
    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.master = master
        self.init_window()
 
    def init_window(self):
        self.master.title("GUI")
        self.pack(fill=BOTH, expand=1)
 
        # creating a menu instance
        menu = Menu(self.master)
        self.master.config(menu=menu)
 
        # create the file object
        file = Menu(menu)
 
        file.add_command(label="Exit", command=self.client_exit)
 
        # added "file" to our menu
        menu.add_cascade(label="File", menu=file)
 
        # create the file object
        edit = Menu(menu)
 
        # command it runs on event is client_exit
        edit.add_command(label="Undo")
 
        # added "file" to our menu
        menu.add_cascade(label="Edit", menu=edit)
 
    def client_exit(selfself):
        exit()
 
# you can later have windows within windows
root = Tk()
root.geometry("400x300")
 
# creation of an instance
app = Window(root)
#mainloop
root.mainloop()
cs




[실행화면]




15번째 줄 : 메뉴를 사용하기 위해서 인스턴스를 생성해주는 함수다. 

19번째 줄 : 윈도우 창.config(menu=메뉴 이름)을 통하여 해당 윈도우 창에 를 등록해준다.

21번, 30번째 줄 : 메뉴 항목에서 항목 안에서의 메뉴를 또 추가하게 된다.

24번, 33번째 줄 : 메뉴의 이름을 지정해주고, 추가를 해준다.






출처 : https://076923.github.io/posts/Python-tkinter-8/


'기초 > Python' 카테고리의 다른 글

[파이썬 GUI 프로그래밍] 처음 시작  (0) 2018.09.10
[파이썬 기초] 입력과 출력  (0) 2018.08.14
[파이썬 기초] 객체지향, 클래스  (0) 2018.08.10
[기초] 지역변수, Global문, DocString  (0) 2018.08.08
[기초] 함수  (0) 2018.08.07

설정

트랙백

댓글

[파이썬 GUI 프로그래밍] 처음 시작

기초/Python 2018. 9. 10. 15:47

[파이썬 GUI 프로그래밍]


시작하는 방법


Qt4 설치



1. Tkinter 소개

Tkinter는 Tcl/Tk에 대한 파이썬 Wrapper로서 Tcl/Tk를 파이썬에 사용할 수 있도록 한 Lightweight GUI 모듈이다. Tcl은 Tool Command Language의 약자로서 일종의 프로그래밍 언어이며, Tk는 크로스 플랫폼에 사용되는 일종의 GUI 툴킷이다. Tkinter는 타 GUI 프레임워크나 툴킷에 비해 지원되는 위젯들이 부족하고 UI도 그렇게 예쁘지 않다는 단점이 있지만, Python 설치시 기본적으로 내장되어 있는 파이썬 표준 라이브러리이기 때문에 쉽고 간단한 GUI 프로그램을 만들 때 활용




기본 

1
2
3
4
5
6
7
8
9
10
11
12
from tkinter import *
 
class Window(Frame):
 
    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.master = master
 
root = Tk()
app = Window(root)
root.mainloop()
 
cs


https://pythonprogramming.net/tkinter-python-3-tutorial-adding-buttons/?completed=/python-3-tkinter-basics-tutorial/







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from tkinter import *
 
class Window(Frame):
 
    def __init__(self, master=None):
 
        Frame.__init__(self, master)
        self.master = master
        self.init_window()
 
    def init_window(self):
        self.master.title("GUI")
        self.pack(fill=BOTH, expand=1)
        quitButton = Button(self, text="Exit", command=self.client_exit)
        quitButton.place(x=100, y=100)

# client function
    def client_exit(self):
        exit()
 
root = Tk()
# window size
root.geometry("400x300")
app = Window(root)
root.mainloop()
cs



[실행화면]








http://pythonstudy.xyz/python/article/120-Tkinter-%EC%86%8C%EA%B0%9C




'기초 > Python' 카테고리의 다른 글

[파이썬 GUI 프로그래밍] 상단바  (0) 2018.09.11
[파이썬 기초] 입력과 출력  (0) 2018.08.14
[파이썬 기초] 객체지향, 클래스  (0) 2018.08.10
[기초] 지역변수, Global문, DocString  (0) 2018.08.08
[기초] 함수  (0) 2018.08.07

설정

트랙백

댓글

[파이썬 기초] 입력과 출력

기초/Python 2018. 8. 14. 19:03

프로그램을 만들다 보면 입력을 해야하는 경우가 있고, 출력을 해야하는 경우가 있다.  그래서 입력은 input()함수를 사용하고, 출력은 print() 문을 사용한다.

 

[사용자로부터 입력받기]

1

2

3

4

5

6

7

8

9

10

11

def reverse(text):

    return text[::-1]

 

def is_palindrome(text):

    return text == reverse(text)

 

something = input("Enter text: ")

if is_palindrome(something):

    print("Yes, it is  a palindrome")

else:

    print("No, it is not a palindrome")

 










출력화면


 

 

  • 문자열을 뒤집기 위해서는 슬라이스를 사용한다. 열거형의 슬라이스 기능을 이용하여 seq[a:b] 같은 코드를 통해 a부터 b까지 문자열을 얻어올 있다. 슬라이스 숫자에 번쨰 인수를 넘겨주어 슬라이스 스텝을 지정해줄 있다.

 

  • input() 함수는 인수로 넘겨받은 문자열을 받아들인다. 사용자가 무언가를 입력하고 엔터 키를 누를 때까지 기다려준다.

 

 

[파일 입출력 예제]

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

파일 /출력

poem = '''\

Programming is fun

When the work is done

if you wanna make your work also fun:

    use Python!

'''

 

#   Open for 'w'riting

= open('poem.txt''w')

# Write text to file

f.write(poem)

# Close the file

f.close()

 

# If no mode is specified,

# 'r'ead mode is assumed by default

= open('poem.txt')

while True: # (무한반복)

    line = f.readline()  # 파일의 내용을 읽어들인다.

    # Zero length indicates EOF

    if len(line) == 0:

        break

    # The 'line' already has a newline

    # at the end of each line

    print(line)

# close the file

f.close()

 




























  • 결과화면


 



 

  • 소스코드 안에 입력한 내용이 같은 폴더 안에 'poem.txt' 새로 생성이 되고, 안의 내용도 추가한 내용대로 추가되어있다.

 

[Pickle]

: 이것은 어떤 파이썬 객체이든지 파일로 저장해 두었다가 나중에 불러와서 사용할 있게 하는 모듈이다. 이것은 객체를 영구히 저장해 둔다.


 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

import pickle

 

# The name of the file where we will store the object

shoplistfile = 'shoplist.data'

# The list of things to buy

shoplist = ['apple''mango''carrot']

 

# Write to the file

= open(shoplistfile, 'wb')

# Dump the object to a file

pickle.dump(shoplist, f)

f.close()

 

# Destroy the shoplist variable

del shoplist

 

# Read back from the storage

= open(shoplistfile, 'rb')

# Load the oebject from the file

storedlist = pickle.load(f)

print(storedlist)

 

  • 결과화면


 

https://www.programcreek.com/python/example/191/pickle.dump

 

  • 파일에 객체를 저장하기 위해서 먼저 Open 문을 이용하여 쓰기/바이너리 모드로 파일을 열어준 pickle 모듈의 dump 함수를 호출하여 준다. 과정을 피클링(pickling)이라고 한다.

 

  • pickle 모듈의 load 함수를 이용하여 파일에 저장된 객체를 불러온다. 과정을 언피클링(unpickling)이라고 한다.

 





설정

트랙백

댓글

[파이썬 기초] 객체지향, 클래스

기초/Python 2018. 8. 10. 18:39

클래스란?

파이썬은 객체지향 프로그래밍(OOP, Object Oriented Programming) 기본적으로 지원하고 있다. 파이썬에서 객체지향 프로그래밍의 기본 단위인 클래스를 만들기 위해서는 아래와 같이 "class 클래스명" 사용하여 정의한다.

 

 

2. 클래스 멤버

클래스는 메서드(method), 속성(property), 클래스 변수(class variable), 인스턴스 변수(instance variable), 초기자(initializer), 소멸자(destructor) 등의 여러 맴버들을 가질 수 있는데, 크게 나누면 데이타를 표현하는 필드와 행위를 표현하는 메서드로 구분

 

1

2

3

4

5

6

class Person:

    pass # An empty block

 

= Person()

print(p)

 

 

메소드

: 클래스/객체는 메소드를 가질 있으며 메소드는 추가된 self 변수를 제외하고 함수와 똑같다.

 

1

2

3

4

5

6

7

8

# Class Example

class Person:

    def say_hi(self):

        print("Hello, how are you?")

 

= Person()

p.say_hi()

 

 

[결과화면]



 

 

init 메소드

: init 메소드는 클래스가 인스턴스화 호출된다따라서 메소드는 객체가 생성될 여러가지 초기화 명령들이 필요할 유용하게 사용된다.

 

1

2

3

4

5

6

7

8

class Person:

    def __init__(self, name):

        self.name = name

    def say_hi(self):

        print('Hello, my name is', self.name)

 

= Person('Swaroop')

p.say_hi()

 

[결과화면]



 

매개 변수 name 넘겨받는 init 메소드를 정의한다.(물론 self 포함하여 정의한다.) 그리고 'name'이라는 필드를 생성한다. 개의 다른 변수의 이름으로 'name'이라는 동일한 이름을 지정해 주었다self 칭해지는 객체에 내장된 것으로써 self.name 형태로 사용되며 하나인 name 지역변수를 의미하는 것으로 사용되기 떄문이다.

 

클래스 변수와 객체변수

: 필드는 일반적인 변수와 다를 것이 없으나 가지, 클래스 혹은 객체의 네임스페이스에 묶여 있다는 점이 있다.

클래스 변수는 공유되고, 객체는 클래스로부터 생성된 각각의 객체/인스턴스에 속해 있는 변수다.


 

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

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

class Robot:

    """Represents a robot, with a name."""

 

    population = 0

 

    def __init__(self, name):

        """Initializes the data."""

        self.name = name

        print("(Initializing {})".format(self.name))

 

        # When this person is created, the robot

        # adds to the population

        Robot.population += 1

 

    def die(self):

        """I am dying."""

        print("{} is being destroyed!".format(self.name))

 

        Robot.population -= 1

 

        if Robot.population == 0:

            print("{} was last one.".format(self.name))

        else:

            print("There are still {:d} robots working.".format(Robot.population))

 

    def say_hi(self):

        """Greeting by the robot."""

        print("Greetings, my masters call me {}".format(self.name))

 

    @classmethod

    def how_many(cls):

        """Prints the current population."""

        print("We have {:d} robots".format(cls.population))

 

droid1 = Robot("R2-D2")

droid1.say_hi()

Robot.how_many()

 

droid2 = Robot('C-3P0')

droid2.say_hi()

Robot.how_many()

 

print('\nRobots can do some work here.\n')

 

print("Robots have finished their work. So let's destory them.")

droid1.die()

droid2.die()

 

Robot.how_many()

 

[결과화면]


 


파이썬 소스코드를 입력할 들여쓰기나 내어쓰기를 구분해서 사용해야 한다.

파이썬의 모든 함수나 객체들은 외부에 공개되어 있지만 클래스나 객체에 __privatevar 같이 앞에 '__' 붙여주게 된다면 숨기게 된다.

 


설정

트랙백

댓글

[기초] 지역변수, Global문, DocString

기초/Python 2018. 8. 8. 22:20

[지역변수]

: 함수 밖에 있는 같은 이름의 변수들과 함수 안에 있는 변수들과는 서로 연관이 없다. 함수 안에 있는 변수들을 함수의 지역(local) 변수라고 하며, 범위를 스코프(scope)라고 한다.

 

1

2

3

4

5

6

7

8

9

10

지역변수

= 50

 

def func(x):

    print('x is ', x)

    x = 2

    print('Chagned local x to', x)

 

func(x)

print('x is still', x)

 

[결과화면]

x is  50

Chagned local x to 2

x is still 50

 

 

[global]

함수나 클래스 내부에서 상위 블록에서 선언된 변수의 값을 변경하고 싶을 경우, 파이썬에게 변수를 앞으로 지역 변수가 아닌 전역(global) 변수로 사용할 것임을 알려 주어야 한다.

 

1

2

3

4

5

6

7

8

9

10

11

12

13

# global(전역변수)

= 50

 

def func():

    global x

 

    print('x is', x) 이때는 위에 선언한 x 값을 읽어서 50 출력이 된다.

    x = 2

    print('Changed global x to', x)

 

func()

print('Value of x is', x) 이건 func() 함수 안에서 x 값이 변경이 되었으므로

                        변경되어서 출력이 된다.

 

  • 결과화면


 

 

[DocString]

: 설명(Documentation) 문자열(String) 이라고 불리우는 짧게 줄여서 DocString 불리우는 편리한 기능을 가지고 있다. DocString 여러분이 만든 프로그램을 알아보기 쉽게 해주고, 후에 프로그램에 대한 설명서를 작성할 유용하게 사용될 있는 중요한 도구다.

 

  • 동작원리 함수에 포함된 논리적 명령행에 적어둔 문자열은 함수의 DocString이라고 불리우는 것이다. DocString 모듈과 클래스에도 똑같이 적용된다.

 

1

2

3

4

5

6

7

8

9

10

11

12

13

def print_max(x, y):

    '''Prints the maximum of two numbers.

    The two values must be integers.'''

    x = int(x)

    y = int(y)

 

    if x > y:

        print(x, 'is maximum')

    else:

        print(y, 'is maximum')

 

print(print_max.__doc__)

 

  • 결과화면


 

 


'기초 > Python' 카테고리의 다른 글

[파이썬 기초] 입력과 출력  (0) 2018.08.14
[파이썬 기초] 객체지향, 클래스  (0) 2018.08.10
[기초] 함수  (0) 2018.08.07
[Python 기초] for문, break문, continue문  (0) 2018.08.06
[파이썬 기초] 흐름제어 IF문  (0) 2018.08.05

설정

트랙백

댓글

[기초] 함수

기초/Python 2018. 8. 7. 19:37
[함수]


복합적인 기능을 사용하기 위해서 편하게 함수로 선언을 하고, 필요할 마다 호출해서 불러와서 쓰는 함수다.

 

파이썬에서는 함수를 def 선언을 하고, def 선언된 문에 필요한 기능을 넣으면 된다. 형식은 아래와 같다.


def 함수명(입력파라미터):
    문장1
    문장2
    [return 리턴값]


그래서 간단한 예제 코드를 짜보자.


1
2
3
4
5
6
# 함수 예제1
def say_hello():
    print("Hello World")
 
say_hello()
say_hello()

[결과 화면]
Hello World
Hello World



- 함수는 한번을 호출하든 두번을 호출하든 똑같은 코드가 반복되어 실행됨으로 

똑같은 화면을 출력할 수 있다.


- 그리고 함수는 저렇게 보이는 화면 말고도 매개변수를 이용해서 함수 안쪽으로 값을

넘겨줘서 함수 안에서는 밖에서 받아온 변수의 값으로 실행이 되어져 결과값을 보여준다. 


- 함수를 정의할 때 주어진 이름을 매개 변수라고 하고, 함수에 넘겨준 값을 인자라고

한다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
#함수 예제2
def print_max(a,b):
    if a > b:
        print(a, "is maximum")
    elif a == b:
        print(a, "is equal to", b)
    else:
        print(b, "is maximum")
 
print_max(34)
 
= 5
= 10
print(x, y)

[결과 화면]

4 is maximum

10 is maximum


named 매개변수

: 함수를 호출할 때 보통 함수에 정의된 대로 입력 파라미터를 순서대로 전달한다. 이러한 순서에 의한 전달 방식 외에 또 다른 호출 방식으로 "파라미터명=파라미터값"과 같은 형식으로 파라미터를 전달할 수도 있는데, 이를 Named Parameter라 부른다. 


1
2
3
4
5
# named 매개변수
def my(name, age, score):
    print(name, age, score)
 
my(age=20, name="ina", score=88)


[결과화면]


ina 20 88




가변길이 인자

: 함수의 입력 값들 중 갯수를 미리 알 수 없거나, 0부터 N개의 인자를 받아들이도록 하고 싶다면 가변길이 인자 앞에 *를 붙여 가변길이임을 표시한다. 


1
2
3
4
5
6
7
8
9
10
11
def sub(*numbers):
    sum = 0
    for n in numbers:
        sum += n
    return sum
 
 
= sub(12)
print(t)
= sub(1526)
print(t)


[결과화면]

3

14



리턴값

: 함수로부터 호출자로 리턴하기 위해서는 return 문을 사용한다. return문은 단독으로 쓰이면 아무 값을 호출자에게 전달하지 않으며, 'return 리턴값'처럼 쓰이면, 값을 호출자에게 전달한다.


1
2
3
4
5
6
7
8
9
10
11
def calc(*num):
    cnt = 0
    tot = 0
    for n in num:
        cnt += 1
        tot += n
    return cnt, tot
 
 
cnt, sum = calc(79101115)
print(cnt, sum)



설정

트랙백

댓글

[Python 기초] for문, break문, continue문

기초/Python 2018. 8. 6. 23:08

[for문]


반복문 종류 중에서 하나로 쓰여지는 for문이다. for ..in 문은 객체의 열거형(Sequence)을 따라서 반복하여 실행할 때 사용되는 파이썬이 내장된 또 하나의

반복문이다.



for i in range(1, 5):

print(i)

else:

print('The for loop is over')



위의 형식을 가지고 있다. while문 같은 경우엔 조건이 주어진 한에서 돌아간다면

for문은 시작점과 끝점을 정할 수 있다.



for문 예제1

1
2
3
4
animals = [땅다람쥐, 바다코끼리, 스컹크, 아나콘다, 코알라, 하이에나, 바다소]
for animal in animals:
    print(animal)
 



for문 예제2

1
2
3
for j in range(210):
    for i in range(110):
        print('{}x{}={}'.format(j, i, j * i))


for문 예제3
1
2
for i in range(110):
    print('{}x{}={}'.format(2, i, 2 * 1))




[break문]

: break문은 루프 문을 강제로 빠져나올 때, 즉 아직 루프 조건이 'False'가 되지 않았거나 열거형의 끝까지 루프가 도달하지 않았을 경우 루프 문의 실행을 강제로 정지시키고 싶을 떄 사용된다.


break문 예제

1
2
3
4
5
6
7
while True:
    s = input('Enter something : ')
    if s == 'quit':
        break
    print('Length of the string is'len(s))
 
print('Done')



 실행을 시키면 입력된 값이 'quit'이란 문자열이 되어야지 for문을 빠져나오는 프로그램이다. 그래서 quit을 입력을 안하면 게속 무한 루프에 빠지게 되는 거다.



[continue문]

: continue 문은 현재 실행중인 루프 블록의 나머지 명령문들을 실행하지 않고 곧바로 다음 루프로 넘어가도록 한다.


continue문 예제

1
2
3
4
5
6
7
8
9
10
11
12
while True:
    s = input('Enter something : ')
    
    if s == 'quit':
        break
 
    if len(s) < 3:
        print('Too small')
        continue
    
    print('Input is of sufficient Length')
 




'기초 > Python' 카테고리의 다른 글

[파이썬 기초] 입력과 출력  (0) 2018.08.14
[파이썬 기초] 객체지향, 클래스  (0) 2018.08.10
[기초] 지역변수, Global문, DocString  (0) 2018.08.08
[기초] 함수  (0) 2018.08.07
[파이썬 기초] 흐름제어 IF문  (0) 2018.08.05

설정

트랙백

댓글

[파이썬 기초] 흐름제어 IF문

기초/Python 2018. 8. 5. 21:28

If문


if문은 조건을 판별할 때 사용이 된다. if(만약) 조건이 참이라면, _if 블록_의 명령문을 실행하며 else (아니면) _else 블록_의 명령문을 실행합니다. 이 때 else 조건절은 생략이 가능하다.


if 조건문:

  ~~~~

elif 조건문:

~~~~

else:

~~~


위의 형식을 가진다.


1
2
3
4
5
6
7
8
9
guess = int(input())
 
if guess == 1:
    print('Guess is %d\n', guess)
elif guess == 2:
    print('Guess is %d\n', guess)
else:
    print('Guess is Not value!\n')
 

입력창이 뜨면 1이나 2를 입력했을 때 해당된 조건으로 넘어가서 출력할 부분을 출력하고 프로그램이 종료된다.

Python에서는 입력을 하고 싶은게 있다면 input() 함수를 이용해서 입력을 하면 되고, input()을 이용해서 입력을 하면 문자열로 인식을 하기 때문에 숫자로 입력받고 싶으면 int()를 사용해야 숫자형식으로 인식을 한다.

if 문의 문장 끝에 : (콜론)을 꼭 붙여야 한다. 콜론은 그 다음줄부터 새로운 블록이 시작된다는 것을 의미한다. 그리고 if문만 사용해도 되고, elif문이나 else문은 꼭 사용안해도 된다.


사용예제 1
1
2
3
4
5
6
7
8
9
10
guess = 'pizza'
 
if guess == 'hambuger':
    print('Guess is hambeguer!')
elif guess == 'pizza':
    print('Guess is pizza')
else:
    print('Guess is not food')
 
print('done')





사용예제 2

1
2
3
4
5
6
7
8
9
10
11
guess = int(input())
 
if guess == 1:
    print('guess is ', guess)
elif guess == 2:
    print('guess is ', guess)
elif guess == 3:
    print('guess is ', guess)
elif guess == 4:
    print('guess is ', guess)
 






'기초 > Python' 카테고리의 다른 글

[파이썬 기초] 입력과 출력  (0) 2018.08.14
[파이썬 기초] 객체지향, 클래스  (0) 2018.08.10
[기초] 지역변수, Global문, DocString  (0) 2018.08.08
[기초] 함수  (0) 2018.08.07
[Python 기초] for문, break문, continue문  (0) 2018.08.06

설정

트랙백

댓글