凑合着做了一个彩色字符计算器界面——Python学习笔记之二十
那本厚厚的luze的Python编程学习手册,看到GUI那一部分,总是要碰到一些绕不开的坎。因为文件名的情形,在显示照片的那部分,无论你怎么样折腾,也折腾不过去。真有点像几天前的郑州大水淹没了隧道阻住了汽车的通行,地铁五号线灌进了水阻住了地铁的通行一样。不过,只是有那么丁丁点相像而已。实在的世界和字符的世界终究不是一回事。实在的世界真有可能让你无路可退,也无路可进,最后被无情的灾祸所吞没。字符的世界,则似乎总会让你有贯通之路。厚书难读,换一本薄的看看,也许就柳暗花明又一村的呢。把有关GUI的东西,换一本较薄的菜鸟式gui编程书,一口气看完,也操作完前四章,照片显示的问题好像解决了。而且第四章接近尾声的时候,每一个小编程都还算顺利过关的经历,突然给了你一点勇气,自己来编一个试试。
有了这想法,开始思考编什么,自然是从最简单的开始,而且还要有模本。模本立刻就想到,使用第四章那个计算器按钮的布局合适。也就立一个小目标,给每个按钮配置一个颜色吧。于是,就有以下自制编程的一段历程。
一、十几个按钮太多,先做两个按钮的界面
Ch1234-1
from tkinter import *
root = Tk()
root.title('彩色计算器')
Colors=['red','green']
lab = Label(root,text='',bg='blue',width=20)
redbtn = Button(root,text='one', fg='red', width=10)
greenbtn = Button(root,text='two', fg='green', width=10)
lab.grid(row=0,column=0,columnspan=4)
redbtn.grid(row=1,column=0,padx=10)
greenbtn.grid(row=1,column=1,padx=10)
root.mainloop()
执行后图片
那些色彩的编码原来是胡编,去掉多余的成ch1234-2
from tkinter import *
root = Tk()
root.title('彩色字符计算器')
lab = Label(root,text='',bg='yellow',width=20)
redbtn = Button(root,text='one', fg='red', width=10)
greenbtn = Button(root,text='two', fg='green', width=10)
lab.grid(row=0,column=0,columnspan=4)
redbtn.grid(row=1,column=0,padx=10)
greenbtn.grid(row=1,column=1,padx=10)
root.mainloop()
执行后的结果图片
二、无意中发现给按钮配色的技巧没有学到,却发现可以给文本字体配色
这才发现,原先设想的按钮颜色设置得另想办法,这里的颜色不是按钮的,而是字符的颜色。那就干脆多做些按钮,从二个增加到16个,正好四行,加上一个exit按钮,于是有ch1234-3
from tkinter import *
root = Tk()
root.title(‘彩色字符计算器’)
lab = Label(root,text=’’,bg=‘purple’,width=20)
redbtn = Button(root,text=‘ONE’, fg=‘red’, width=10)
greenbtn = Button(root,text=‘TWO’, fg=‘green’, width=10)
yellowbtn = Button(root,text=‘THREE’, fg=‘yellow’, width=10)
bluebtn = Button(root,text=‘x’, fg=‘blue’, width=10)
orangebtn = Button(root,text=‘FOUR’, fg=‘orange’, width=10)
brownbtn = Button(root,text=‘FIVE’, fg=‘brown’, width=10)
graybtn = Button(root,text=‘SIX’, fg=‘gray’, width=10)
darkredbtn = Button(root,text=’-’, fg=‘darkred’, width=10)
darkgreenbtn = Button(root,text=‘SEVNE’, fg=‘darkgreen’, width=10)
darkyellowbtn = Button(root,text=‘EIGHT’, fg=‘lightyellow’, width=10)
darkbluebtn = Button(root,text=‘NINE’, fg=‘darkblue’, width=10)
darkorangebtn = Button(root,text=’+’, fg=‘darkorange’, width=10)
darkbrownbtn = Button(root,text=‘0’, fg=‘brown’, width=10)
darkgraybtn = Button(root,text=’.’, fg=‘darkgray’, width=10)
darkgoldbtn = Button(root,text=’=’, fg=‘gold’, width=10)
goldbtn = Button(root,text=‘EXIT’, fg=‘black’, width=10)
lab.grid(row=0,column=0,columnspan=4)
redbtn.grid(row=1,column=0,padx=10)
greenbtn.grid(row=1,column=1,padx=10)
yellowbtn.grid(row=1,column=2,padx=10)
bluebtn.grid(row=1,column=3,padx=10)
orangebtn.grid(row=2,column=0,padx=10)
brownbtn.grid(row=2,column=1,padx=10)
graybtn.grid(row=2,column=2,padx=10)
darkredbtn.grid(row=2,column=3,padx=10)
darkgreenbtn.grid(row=3,column=0,padx=10)
darkyellowbtn.grid(row=3,column=1,padx=10)
darkbluebtn.grid(row=3,column=2,padx=10)
darkorangebtn.grid(row=3,column=3,padx=10)
darkbrownbtn.grid(row=4,column=0,padx=10)
darkgraybtn.grid(row=4,column=1,padx=10)
darkgoldbtn.grid(row=4,column=2,padx=10)
goldbtn.grid(row=4,column=3,padx=10)
root.mainloop()
执行后的图片
三、又是一个奇怪的念头,把显示照片的标签加到彩色计算机按钮图中,于是标签就成了两个,一个是lab1,另一个是lab2,这就产生了ch1234-4.
这个想法立刻就实现了,好像没有任何周折,一次就增加成功了,有点意思。
from tkinter import *
root = Tk()
root.title(‘彩色字符计算器和Python图片’)
root.geometry(‘640x480’)
five = PhotoImage(file=‘five.gif’)
lab1=Label(root, image=five)
lab1.place(relx=0.2,rely=0.2,relwidth=0.8,relheight=0.8)
lab2 = Label(root,text=’’,bg=‘purple’,font=‘Italic 20 bold’)
redbtn = Button(root,text=‘ONE’, fg=‘red’, width=10)
greenbtn = Button(root,text=‘TWO’, fg=‘green’, width=10)
yellowbtn = Button(root,text=‘THREE’, fg=‘yellow’, width=10)
bluebtn = Button(root,text=‘x’, fg=‘blue’, width=10)
orangebtn = Button(root,text=‘FOUR’, fg=‘orange’, width=10)
brownbtn = Button(root,text=‘FIVE’, fg=‘brown’, width=10)
graybtn = Button(root,text=‘SIX’, fg=‘gray’, width=10)
darkredbtn = Button(root,text=’-’, fg=‘darkred’, width=10)
darkgreenbtn = Button(root,text=‘SEVEN’, fg=‘darkgreen’, width=10)
darkyellowbtn = Button(root,text=‘EIGHT’, fg=‘lightyellow’, width=10)
darkbluebtn = Button(root,text=‘NINE’, fg=‘darkblue’, width=10)
darkorangebtn = Button(root,text=’+’, fg=‘darkorange’, width=10)
darkbrownbtn = Button(root,text=‘0’, fg=‘brown’, width=10)
darkgraybtn = Button(root,text=’.’, fg=‘darkgray’, width=10)
darkgoldbtn = Button(root,text=’=’, fg=‘gold’, width=10)
goldbtn = Button(root,text=‘EXIT’, fg=‘black’, width=10)
lab2.grid(row=0,column=0,columnspan=4)
redbtn.grid(row=1,column=0,padx=10)
greenbtn.grid(row=1,column=1,padx=10)
yellowbtn.grid(row=1,column=2,padx=10)
bluebtn.grid(row=1,column=3,padx=10)
orangebtn.grid(row=2,column=0,padx=10)
brownbtn.grid(row=2,column=1,padx=10)
graybtn.grid(row=2,column=2,padx=10)
darkredbtn.grid(row=2,column=3,padx=10)
darkgreenbtn.grid(row=3,column=0,padx=10)
darkyellowbtn.grid(row=3,column=1,padx=10)
darkbluebtn.grid(row=3,column=2,padx=10)
darkorangebtn.grid(row=3,column=3,padx=10)
darkbrownbtn.grid(row=4,column=0,padx=10)
darkgraybtn.grid(row=4,column=1,padx=10)
darkgoldbtn.grid(row=4,column=2,padx=10)
goldbtn.grid(row=4,column=3,padx=10)
root.mainloop()
执行后的图片