#!/usr/bin/python
# -*- coding: UTF-8 -*-
import xlrd #openpyxl模块 无法打开xls文件 故用这个模块
# import openpyxl #可读取表格文件里的 图片 且读取的数量比较大
import PIL
from PIL import Image, ImageTk
from openpyxl import workbook
from openpyxl import load_workbook
import os
from tkinter import *
import tkinter as tk
from tkinter import scrolledtext
from tkinter import filedialog #导入打开文件夹对话框
# 导入消息对话框子模块
import tkinter.messagebox
#数据使用的全局变量########
data = [] # 将表格数据注入到该变量
findData = [] # 查询到的数据注入到该变量 # [['1', '槐', '性耐寒,喜阳光,稍耐阴,不耐阴湿而抗旱,在低洼积水处生长不良,深根,对土壤要求不严,较耐瘠薄,石灰及轻度盐碱地(含盐量0.15%左右)上也能正常生长。但在湿润、肥沃、深厚、排水良好的沙质土壤上生长最佳。 耐烟尘,能适应城市街道环境。病虫害不多。寿命长,耐烟毒能力强。', '可作行道树,并为优良的蜜源植物。槐花花蕾可食,含芳香油,又为清凉性收敛止血药;槐实亦能止血、降压;根皮、枝叶药用,治疮毒;种子含油约11%;木材供建筑。', '豆科', '槐属', '乔木,高达25米;树皮灰褐色,具纵裂纹。当年生枝绿色,无毛。羽状复叶长达25厘米;叶轴初被疏柔毛,旋即脱净;叶柄基部膨大,包裹着芽;托叶形状多变,有时呈卵形,叶状,有时线形或钻状,早落;小叶4-7对,对生或近互生,纸质,卵状披针形或卵状长圆形,长2.5-6厘米,宽1.5-3厘米,先端渐尖,具小尖头,基部宽楔形或近圆形,稍偏斜,下面灰白色,初被疏短柔毛,旋变无毛;小托叶2枚,钻状。圆锥花序顶生,常呈金字塔形,长达30厘米;花梗比花萼短;小苞片2枚,形似小托叶;花萼浅钟状,长约4毫米,萼齿5,近等大,圆形或钝三角形,被灰白色短柔毛,萼管近无毛;花冠白色或淡黄色,旗瓣近圆形,长和宽约11毫米,具短柄,有紫色脉纹,先端微缺,基部浅心形,翼瓣卵状长圆形,长10毫米,宽4毫米,先端浑圆,基部斜戟形,无皱褶,龙骨瓣阔卵状长圆形,与翼瓣等长,宽达6毫米;雄蕊近分离,宿存;子房近无毛。荚果串珠状,长2.5-5厘米或稍长,径约10毫米,种子间缢缩不明显,种子排列较紧密,具肉质果皮,成熟后不开裂,具种子1-6粒;种子卵球形,淡黄绿色,干后黑褐色。花期7-8月,果期8-10月。', '', 'Sophora japonica Linn'], ['12', '槐', '喜光,适应干冷气候.耐瘠薄和轻盐碱土壤,对二氧化硫及烟尘抗性强;生长缓慢,寿命可长达千年以上。', '树姿优美,树皮洁白雅净。为珍贵庭园观赏树种。常植于公园、庭院、寺庙及墓地,北京尤多古树,生长好;长江流域各城市也有少量栽培,但生长较差。', '松科', '松属', '乔木,高达30米,胸径可达3米;有明显的主干,或从树干近基部分成数干;枝较细长,斜展,形成宽塔形至伞形树冠;幼树树皮光滑,灰绿色,长大后树皮成不规则的薄块片脱落,露出淡黄绿色的新皮,老则树皮呈淡褐灰色或灰白色,裂成不规则的鳞状块片脱落,脱落后近光滑,露出粉白色的内皮,白褐相间成斑鳞状;一年生枝灰绿色,无毛;冬芽红褐色,卵圆形,无树脂。针叶3针一束,粗硬,长5-10厘米,径1.5-2毫米,叶背及腹面两侧均有气孔线,先端尖,边缘有细锯齿;横切面扇状三角形或宽纺锤形,单层皮下层细胞,在背面偶尔出现1-2个断续分布的第二层细胞,树脂道6-7,边生,稀背面角处有1-2个中生;叶鞘脱落。雄球花卵圆形或椭圆形,长约l厘米,多数聚生于新枝基部成穗状,长5-10厘米。球果通常单生,初直立,后下垂,成熟前淡绿色,熟时淡黄褐色,卵圆形或圆锥状卵圆形,长5-7厘米,径4-6厘米,有短梗或几无梗;种鳞矩圆状宽楔形,先端厚,鳞盾近菱形,有横脊,鳞脐生于鳞盾的中央,明显,三角状,顶端有刺,刺之尖头向下反曲,稀尖头不明显;种子灰褐色,近倒卵圆形,长约1厘米,径5-6毫米,种翅短,赤褐色,有关节易脱落,长约5毫米;子叶9-11枚,针形,长3.1-3.7厘米,宽约1毫米,初生叶窄条形,长1.8-4厘米,宽不及1毫米,上下面均有气孔线,边缘有细锯齿。花期4-5月,球果第二年10-11月成熟。', '', 'Pinus bungeana Zucc']]
searchIndex = 0 # 查到的数据变量索引,默认0 即第一个
pic_path = '' # 图片文件价路径
# ###创建窗体全局变量#####
#创建主窗口
root = Tk()
root.title('植物名录查询——运城学院园林植物数据库')
# 设置窗口大小
root.minsize(750,750)
# 设置单选按钮全局变量接收值
radioVal = StringVar() # 获取值方式 radioVal.get()
radioVal.set('中文名') # 默认选择中文名
#定义变量
path = StringVar()
path.set('')
count = StringVar()
count.set('')
num = StringVar()
num.set('')
Cname = StringVar()
Cname.set('')
Fname = StringVar()
Fname.set('')
Gname = StringVar()
Gname.set('')
pic = StringVar()
pic.set('')
Lname = StringVar()
Lname.set('')
#右侧输出内容的标签进行占位
#num text, name text, habit text
le_path = Label(root, textvariable = path,padx=30,anchor='w').place(x = 100, y = 80) #
le_count = Label(root, textvariable = count,padx=30,anchor='w').place(x = 100, y = 110) # 注意不是没显示,而是被挡住了 故加外边框
le_num = Label(root, textvariable = num).place(x = 100, y = 140) #
le_Cname = Label(root, textvariable = Cname).place(x = 100, y = 170) #
le_Lname = Label(root, textvariable = Lname).place(x = 100, y = 200) #
le_Fname = Label(root, textvariable = Fname).place(x = 100, y = 230) #
le_Gname = Label(root, textvariable = Gname).place(x = 100, y = 260) #
#设置滚动窗口文本
#习性
habits = tk.LabelFrame(root, text="习 性", padx=10, pady=10 ) # 水平,垂直方向上的边距均为 10
habits.place(x=40, y=290)
habits_Window = scrolledtext.ScrolledText(habits, width=85, height=5, padx=10, pady=10, wrap=tk.WORD)
habits_Window.grid()
#用途
use = tk.LabelFrame(root, text="用 途", padx=10, pady=10 ) # 水平,垂直方向上的边距均为 10
use.place(x=40, y=430)
use_Window = scrolledtext.ScrolledText(use, width=85, height=5, padx=10, pady=10, wrap=tk.WORD)
use_Window.grid()
#植物志
flora = tk.LabelFrame(root, text="植物志", padx=10, pady=10 ) # 水平,垂直方向上的边距均为 10
flora.place(x=40, y=570)
flora_Window = scrolledtext.ScrolledText(flora, width=85, height=5, padx=10, pady=10, wrap=tk.WORD)
flora_Window.grid()
###############全局变量结束###################
#查询按钮响应函数
def select(root, label):
#清空全局变量
global findData
findData = []
global searchIndex
searchIndex = 0
# print('result: ', findData)
sname = label.get()
# print(sname)
#
# print(data)
# 遍历数据各个函数,看是否有相等的数据,并打印出来
for index in range(0,len(data)):
# partData = []
if data[index][radioVal.get()]==sname:
# print(data[index])
# for temp in data[index].items():
# partData.append(temp[1])
# # print(partData)
findData.append(data[index]) #将查询到的数据压入一会儿渲染用的数组中
# print(findData)
if len(findData) <= 0:
tkinter.messagebox.showinfo('提示',sname+'植物名不存在,请输入其他植物名!')
elif len(findData) >1:
Button(ro
没有合适的资源?快使用搜索试试~ 我知道了~
python植物名录查询.zip
共5个文件
png:2个
py:1个
exe:1个
需积分: 10 1 下载量 20 浏览量
2022-01-12
10:55:59
上传
评论
收藏 26.12MB ZIP 举报
温馨提示
基于python的GUI可视化界面植物名录查询系统(直接读取excel内的表格数据),可视化界面通过读取表格内的数据,用户进行输入查询内容,返回相应的数据信息至GUI
资源详情
资源评论
资源推荐
收起资源包目录
python植物名录查询.zip (5个子文件)
python植物名录查询
test.py 19KB
pictures
1.png 259KB
12.png 3.78MB
植物学名录.xlsx 843KB
植物名录查询.exe 21.78MB
共 5 条
- 1
u013546588
- 粉丝: 1
- 资源: 30
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0