본문 바로가기
프로그래밍/PYTHON

[python]파이썬_Tkinter_엑셀형식_Entry입력(ScrollableFrame, Entry)

by 루티즈 2020. 8. 1.
반응형

Tkinter Entry ( 입력 폼을 가로 3개 세로 10개 입력)


bg = []
cnt = 0
for i in range(10):
	for j in range(3):
		bg.append( tk.Entry(frame.scrollable_frame, text="", width=17))
		bg[cnt].grid(row = i, column = j)
		cnt += 1

 

3 x 10 Entry 객체

 

Scrollbar 및 결과를 확인 하기 위한 Button 추가


ScrollableFrame : 프레임에 스크롤이 달린 객체 ( 스크롤에 따라 프레임 위치 결정)

Button 추가 : checkEmpty() 기능 추가

checkEmpty() : 모든 Entry 값 확인하여 빈칸 갯수 Count

import tkinter as tk
from tkinter import ttk

class ScrollableFrame(ttk.Frame):
    def __init__(self, container, *args, **kwargs):
        super().__init__(container, *args, **kwargs)
        canvas = tk.Canvas(self)
        scrollbar = ttk.Scrollbar(self, orient="vertical", command=canvas.yview)
        self.scrollable_frame = ttk.Frame(canvas)

        self.scrollable_frame.bind(
            "<Configure>",
            lambda e: canvas.configure(
                scrollregion=canvas.bbox("all")
            )
        )

        canvas.create_window((0, 0), window=self.scrollable_frame, anchor="n")

        canvas.configure(yscrollcommand=scrollbar.set)

        canvas.pack(side="left", fill="x", expand=True)

        scrollbar.pack(side="right", fill="y")

def checkEmpty():
    global cnt
    eCnt = 0
    for i in range(cnt):
        if bg[i].get() == '':
            eCnt +=1

    l.config(text=str(eCnt))

root = tk.Tk()

frame = ScrollableFrame(root)
bg = []
cnt = 0
for i in range(10):
    for j in range(3):
        bg.append( tk.Entry(frame.scrollable_frame, text="", width=17))
        bg[cnt].grid(row = i, column = j)
        cnt += 1

frame.pack()
b = tk.Button(root, text = "Empty Check", command = checkEmpty)
b.pack()
l = tk.Label(root)
l.pack()

root.mainloop()

 

빈칸 체크 

 

반응형