使用PY2.7版本结合Tkinter,Frame,Canvas,Scrollbar,radiobutton功能,选择radiobutton后在界面中显示对应信息。
学习初始,感觉有点不规范和冗余,大神帮忙修改修改!
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author: Tim time:2019/02/02
from Tkinter import *
import Tkinter as tk
import ttk
root = tk.Tk()
root.title('古罗马与古希腊之神')
root.geometry('400x400')
root.resizable(0,0)
#列表元素是元组
Module=[('雅努斯Janus',0),('朱庇特Jupiter',1),('朱诺Juno',2),('墨邱利Mercury ',3),('维纳斯Vénus',4),('玛尔斯Mars',5),('萨敦Saturn',6),('玛亚Maia',7),('狄安娜Diane',8),('阿波罗Apollo',9),('米诺娃Minerve',10),('赛尔斯Cérès',11),('伏尔肯Vulcain',12),('尼普敦Neptune',13),('普鲁托Pluton',14),('邱比特Cupid',15),('萨杜恩Saturne',16),('阿特拉斯Atlas',17),('弗尔图娜Fortune',18),('弗洛拉Flore ',19)]
Matching=[('门神,具有前后两个面孔或四方四个面孔,象征开始',0),('神王。木星相对应于希腊神话的宙斯Zeus',1),('神后,相对应于希腊神话的赫拉Hera',2),('神的使者,水星相对应于希腊神话的赫耳墨斯Hermes,手持盘蛇杖',3),('美神、爱神,金星相对应于希腊神话的阿佛洛狄德Aphrodite',4),('战神,三月相对应于希腊神话的阿瑞斯Ares',5),('朱庇特的父亲,相对应于希腊神话的科罗努斯Kronus',6),('墨邱利的母亲,花神',7),('月亮女神,相对应于希腊神话的阿尔忒弥斯Artemis',8),('太阳神,希腊和罗马名字相同',9),('智慧女神,相对应于希腊神话的雅典娜Athena',10),('谷物和丰收女神,相对应于希腊神话的狄蜜特Demeter',11),('火神,维纳斯的丈夫,相对应于希腊神话的赫斐斯托斯Hephaestus',12),('海王神,海王星相对应于希腊神话的波赛东Posidon,朱庇特的弟弟',13),('冥神,冥王星相对应于希腊神话的哈底斯Hades,朱庇特的弟弟',14),('小爱神,维纳斯的儿子,相对应于希腊神话的爱罗斯Eros',15),('农神土星播种之神',16),('古希腊巨神受罚用肩顶住天穹',17),('古罗马命运女神',18),('古罗马花卉女神',19)]
#初始text内容
v=IntVar()
text = StringVar()
text.set('诸神之战')
s1 = tk.Scrollbar(root)
#定义单选按钮的响应函数
def callRB():
for i in range(14):
if (v.get()==i):
text.set('古希腊和古罗马神:'+Module[i][0]+'\n'+Matching[i][0]+'!')
Label(root,textvariable=text,fg='blue',width=60,height=10,relief=RIDGE).pack()
vscrollbar = tk.Scrollbar(root)
c= tk.Canvas(root,width=400,height=100,scrollregion=(0,0,200,300),yscrollcommand=vscrollbar.set)
vscrollbar.config(command=c.yview)
vscrollbar.pack(side=tk.RIGHT, fill=tk.Y)
f=tk.Frame(c) #Create the frame which will hold the widgets
c.pack(side="left", fill="both")
#Updated the window creation
c.create_window(0,0,window=f, anchor='nw')
for lan,num in Module:
R1=Radiobutton(f, text=lan, value=num, command=callRB,variable=v).pack(anchor=W, fill=tk.Y)#
root.update()
c.config(scrollregion=c.bbox("all"))
root.mainloop()
运行界面如下: