원격 저장소 클론, 푸시 테스트하기

- 지난번에 원격저장소에 푸시했었는데, 지금 다른 컴퓨터에서 작업하려고 한다.

- 원격저장소로부터 클론받고 잘 푸시 되는지 확인해보자

- 안에 파일들이 정상적으로 내려받았다.

 

- 잘 푸시되는지 보기위해 텍스트파일 하나 만들고 아무거나 입력후 커밋해보자

 -> 커밋하는 사람인지 누구인지 식별문제로 커밋되지 않는다. 아래 명령어대로 이메일과 이름을적자

- 컨피그 명령을 입력하면 커밋이 된다.

- 이제 푸시하면 깃헙 저장소에 잘 올라간걸 볼수있다.

 

 

 

섭씨 화씨 온도 변환기 구현

 

from tkinter import Frame, Label, Entry, DoubleVar, W,\
                Tk, Button

class App:
    def __init__(self, master):
        frame = Frame(master)
        frame.pack()
        # deg C : 엔트리
        Label(frame, text = "deg C").grid(row=0, column=0)
        self.c_var = DoubleVar()
        self.c_var.set(0.0);
        Entry(frame, textvariable=self.c_var).grid(row=0, column=1)
        # def F : 엔트리
        Label(frame, text="deg F").grid(row=1, column=0)
        self.f_var = DoubleVar()
        self.f_var.set(32.0)
        Label(frame, textvariable=self.f_var).grid(row=1, column=1, sticky=W)
        # Convert 버
        button = Button(frame, text="Convert", command = self.convert)
        button.grid(row=2, columnspan=2)
    
    def convert(self):
        c = self.c_var.get()
        self.f_var.set(c * 1.8 + 32)

window = Tk()
window.wm_title("temp converter")
app = App(window)
window.mainloop()

 

 

계산기 구현

from tkinter import Frame, Label, Entry, DoubleVar, W,\
                Tk, Button, StringVar, SUNKEN, NSEW
import tkinter as tk



class Calculator(Frame):
    def __init__(self):
        Frame.__init__(self)
        self.option_add("*Font","arial 16 bold")
        self.grid(row = 0, column=0)
        self.master.resizable(0, 0)
        #이 화면을 맨 위에 표시되게 함.
        self.master.wm_attributes("-topmost", 1)
        self.make_form()
    
    
    # 버튼 입력때마다 호출, 전달받은 c를 strExpr에 추가. 엔트리에 반영되면서 커서도이동
    def update_expr(self, c):
        self.strExpr.set(self.strExpr.get() + c)
        self.entry.icursor(len(self.strExpr.get()))
 
    #selfExpr의 계산 내용을 계산 후 결과를 strExpr에 대입, 커서는 맨뒤로 이동
    def calc(self):
        try:
            self.strExpr.set(eval(self.strExpr.get()))
            self.entry.icursor(len(self.strExpr.get()))
        except:
            self.strExpr.set("Error")
    
    def make_form(self):
        self.strExpr = StringVar()
        self.entry = Entry(self, relief=SUNKEN, textvariable=self.strExpr)
        self.entry.grid(row=0, column=0, columnspan=5, sticky=NSEW)
        self.entry.bind("<Return>", lambda event, s=self: s.calc())
        self.entry.focus() # 이 엔트리에 문자, 연산자 입력 가능하도록 함
        
        """
        2번째 행부터 
        계산기 숫자버튼 구현
        7 8 9
        4 5 6
        1 2 3        
        """
        for r, item in enumerate(("789", "456", "123")):
            for c, ch in enumerate(item):
                btn = Button(self, text=ch,
                             command=(lambda s=self, c=ch:s.update_expr(c)))
                btn.grid(row=r+1, column=c, padx=2, pady=2, sticky=NSEW)
        
        btn = Button(self, text="0", command=(lambda s=self, c="0":s.update_expr(c)))
        btn.grid(row=4, column=0, columnspan=2, padx=2, pady=2, sticky=NSEW)
        
        btn = Button(self, text=".", command=(lambda s=self, c=".":s.update_expr(c)))
        btn.grid(row=4, column=2, padx=2, pady=2, sticky=NSEW)
        
        
        
        """
        계산기 숫자 우측에 연산자 버튼 넣기
        """
        for r, ch in enumerate("/*-+"):
            btn = Button(self, text = ch, command=(lambda s=self, c=ch:s.update_expr(c)))
            btn.grid(row= r+1, column=3, padx = 2, pady = 2, sticky=NSEW)
        
        
        # C, = 버튼 넣기
        btn = Button(self, text="C", command=(lambda s=self, w=self.strExpr:w.set("")))
        btn.grid(row=1, column=4, rowspan=2, padx=2, pady=2, sticky=NSEW)
        btn = Button(self, text="=", command=(lambda s=self:s.calc()))
        btn.grid(row=3, column=4, rowspan=2, padx=2, pady=2, sticky=NSEW)

if __name__ == "__main__":
    Calculator().mainloop()

 

 

 

스톱워치 구현

 


from tkinter import Frame, Label, Entry, DoubleVar, W,\
                Tk, Button, StringVar, SUNKEN, NSEW, TOP, LEFT
import tkinter as tk
import time



def runTimer():
    global timer, start_time, elapsed_time, prev_elapsed_time
    if (running):
        cur_time = time.time()
        time_diff = cur_time - start_time
        elapsed_time = time_diff + prev_elapsed_time
        timeText.configure(text="{:7.3f}".format(elapsed_time))
    window.after(10, runTimer) # 10ms뒤에 runTimer 다시 호출

def start():
    global running, start_time, elapsed_time, prev_elapsed_time
    if (running !=True):
        running = True
        start_time = time.time()
        prev_elapsed_time = elapsed_time

def stop():
    global running, prev_elapsed_time, elapsed_time
    running = False
    prev_elapsed_time = elapsed_time

def reset():
    global running, timer, elapsed_time, prev_elapsed_time
    running = False
    elapsed_time = 0.0
    prev_elapsed_time = 0.0
    timeText.configure(text="{:7.3f}".format(elapsed_time))

window = Tk()
window.title("My Simple Stop watch")
running = False

timer = 0
start_time = stop_time = time.time()
prev_elapsed_time = elapsed_time = 0.0
timeText = Label(window, height = 5, text="0.000", font=("Arial 40 bold"))
timeText.pack(side=TOP)

startButton = Button(window, width=10, text="Start", bg="green", command=start)
startButton.pack(side = LEFT)
stopButton = Button(window, width=10, text="Stop", bg="red", command=stop)
stopButton.pack(side = LEFT)
resetButton = Button(window, width=10, text="Rest", bg="yellow", command=reset)
resetButton.pack(side = LEFT)

if __name__ == "__main__":
    runTimer()
    window.mainloop()

+ Recent posts