본문 바로가기

하라는 공부는 안하고/파이썬하고있네

버튼을 클릭하면 복사가 되는 gui(tkinter)



이전 글에서 urllib로 만든 텍스트파일을 불러와 직관적으로 표시하고 클릭하면 지정한 코드가 복사되는 gui를 만들었습니다.

물론 주석은 업죠





__author__ = 'bigfood'
from tkinter import *

coin = 0
tk = Tk()
bs = Frame(tk, width=15)
cf = Frame(tk, width=15)
tk.geometry('920x250')
var = StringVar(bs)
var.set("name")
option = OptionMenu(bs, var, "name", "000000", "#000000", "rgb")
option.grid(row=0, column=8)
exec(open("asda.txt", "r").read())

def t2c (name, code, rgb):
selected = var.get()
if selected == 'name':
tk.clipboard_clear()
tk.clipboard_append(name)
elif selected == '000000':
tk.clipboard_clear()
tk.clipboard_append(code)
elif selected == '#000000':
tk.clipboard_clear()
tk.clipboard_append('#%s' %code)
elif selected == 'rgb':
tk.clipboard_clear()
tk.clipboard_append(rgb)
class bgclass:
def __init__(self):
pass
def btgen(self,ia, iaa, iaaa, nr, nc):
self=Button(cf, text='%s\n%s\n%s' %(ia, iaa, iaaa), bg='#%s' % iaa, command=lambda:t2c(ia, iaa, iaaa), width=15)\
.grid(row=nr, column=nc)

def bgen (color):
for widget in cf.winfo_children():
widget.destroy()
nowrow=1
nowcolumn=0
for i in color:
if nowcolumn > 7:
nowcolumn=0
nowrow=nowrow+1
ia = str(i[0])
iaa = str(i[1])
iaaa = str(i[2])
bgclass().btgen(ia, iaa, iaaa, nowrow, nowcolumn)
nowcolumn = nowcolumn+1
cf.grid(row=1)
red1=Button(bs, text='red', command=lambda:bgen(red)).grid(row=0, column=0)
pink1=Button(bs, text='pink', command=lambda:bgen(pink)).grid(row=0, column=1)
purple1=Button(bs, text='purple', command=lambda:bgen(purple)).grid(row=0, column=2)
blue1=Button(bs, text='blue', command=lambda:bgen(blue)).grid(row=0, column=3)
green1=Button(bs, text='green', command=lambda:bgen(green)).grid(row=0, column=4)
yellow1=Button(bs, text='yellow', command=lambda:bgen(yellow)).grid(row=0, column=5)
orange1=Button(bs, text='orange', command=lambda:bgen(orange)).grid(row=0, column=6)
gray1=Button(bs, text='gray', command=lambda:bgen(gray)).grid(row=0, column=7)
bs.grid(row=0, sticky=W)

tk.title('flat color picks')
tk.mainloop()

아주 옛날에 작성한 코드라 난잡하지만 정 필요하시면 뜯어서 쓰세요

※    파이썬3.4.3사용

※    orange를 클릭했을 때 _tkinter.TclError: invalid color name "##e9d460"이런 오류가 뜰 수도 있습니다. http://www.flatuicolorpicker.com/orange사이트 자체에 오타가 있네요.

asda.txt에 orange 첫번째에 '#e9d460'를 'e9d460'로 고치면 정상작동 합니다.