首页 > 其他分享 >电话簿下载功能

电话簿下载功能

时间:2024-07-24 17:27:22浏览次数:9  
标签:功能 self window num def import 电话簿 data 下载

telephone文件(主文件)

"""
界面的执行文件
"""
import tkinter as tk
from tkinter import ttk
from Telephone.data.t_data_handle import Handle


class fMain():
    def __init__(self):
        self.ph = Handle()

    def pro_handle(self, pro_set, t_output_num, window):
        self.ph.data_handle(pro_set, t_output_num, window)

    def createMain(self, window):
        # 设置窗口的标题
        self.window = window
        window.title("电话号码下载")
        # 设定是否能够改变窗口大小的尺寸
        window.resizable(True, True)
        # 设置窗口背景颜色(#F5F5DC米色)
        window['bg'] = "#F5F5DC"
        # 获取屏幕宽度和高度
        screen_width = window.winfo_screenwidth()
        screen_height = window.winfo_screenheight()
        # 计算窗口在屏幕中间位置坐标
        x = (screen_width - 800) // 2
        y = (screen_height - 500) // 2
        # 设置窗口在屏幕中间位置
        window.geometry("800x500+{}+{}".format(x, y))
        # 创建文本标签
        l_input_num = tk.Label(window, text="Telephone Number", font=28, bg="#F5F5DC")
        l_input_num.place(relx=0.14, rely=0.08)
        l_output_num = tk.Label(window, text="Load Telephone", font=28, bg="#F5F5DC")
        l_output_num.place(relx=0.7, rely=0.08)
        l_pro_num = tk.Label(window, text="进度条:", font=28, bg="#F5F5DC")
        l_pro_num.place(relx=0.04, rely=0.84)
        # 创建文本输入框
        t_input_num = tk.Text(window, width=35, height=20, font=28, relief="groove")
        t_input_num.place(relx=0.05, rely=0.13)
        self.ph.input_msg(t_input_num)
        t_output_num = tk.Text(window, width=35, height=20, font=28, relief="groove")
        t_output_num.place(relx=0.6, rely=0.13)
        # 创建进度条
        pro_set = tk.ttk.Progressbar(window, length=670, mode='determinate', orient=tk.HORIZONTAL)
        pro_set.place(relx=0.12, rely=0.84)
        # 创建按钮
        # 使用lambda表达式实现command命令中函数的传参
        b_active = tk.Button(window, text="执行", height=3, width=10, font=28,
                             command=lambda: self.pro_handle(pro_set, t_output_num, window))
        b_active.place(relx=0.44, rely=0.4)


if __name__ == '__main__':
    fm = fMain()
    window = tk.Tk()
    fm.createMain(window)
    window.mainloop()

 数据库处理文件

sqlConnect和sqlHandle

"""
数据库的连接
"""
import sys
import datetime
import chardet
import cx_Oracle as ora
from datetime import datetime
from chardet import UniversalDetector
import Telephone.common.const.t_ora_db as tod


class dbHelper(object):
    def __init__(self, dt=tod.postgresqlDBT):
        self.__dbType = None
        self.passwd = ""
        self.con = self._getDatabaseConn(dt)
        self.cursor = self.con.cursor()

    def close(self):
        self.cursor.close()
        self.con.close()
        self.__connName = ""

    def _getDatabaseConn(self, dt):
        if dt == tod.lacsDB:
            dbConn = ora.connect(tod.oracle_lacs_db_user_name, tod.oracle_lacs_db_pass_word, tod.oracle_lacs_db)
            self.__dbType = 0
        return dbConn

    def queryScalar(self, sql, *params):
        """
        返回一行第一列
        :param sql:
        :param params:
        :return: 返回一行第一列
        """
        self.cursor.execute(sql, params)
        row = self.cursor.fetchone()
        if row is not None:
            return row[0]
        else:
            return None

    def queryAll(self, sql):
        """
        返回所有記錄
        :param sql:
        :return: 返回表的所有數據,list of tuple,[('aa',bb'),('cc','dd'),('ee','ff')]
        """
        try:
            self.cursor.execute(sql)
            result = self.cursor.fetchall()
        except Exception as e:
            print(e)
            raise
        return result

    def commit(self):
        self.con.commit()

    def getDbType(self):
        return self.__dbType

"""
数据库的处理
"""
import Telephone.sql.t_sql as ts


class sqlDel(object):
    def getPageList(self, dbCon):
        sql = ts.sql01[dbCon.getDbType()]
        # 返回所有記錄
        data = dbCon.queryAll(sql)
        return data

 数据处理

"""
窗口数据处理
"""
import time
from Telephone.sql.sqlHandle.t_sql_handle import sqlDel
from Telephone.sql.sqlConnect.t_sql_connect import dbHelper


class Handle(object):
    def data_rows(self):
        rows = []
        dbCon = dbHelper(100000)
        sd = sqlDel()
        try:
            rows = sd.getPageList(dbCon)
        except Exception as e:
            print(e)
        finally:
            dbCon.close()
            del dbCon
        data = []
        for r in rows:
            data.append(r[0])
        return data

    # 第一个输入框里面显示的内容
    def input_msg(self, t_input_num):
        data = self.data_rows()
        for i in range(0, len(data)):
            t_input_num.insert("insert", data[i])
            t_input_num.insert("insert", '\n')

    # 按钮执行的命令后显示的结果
    def data_handle(self, pro_set, t_output_num, window):
        data = self.data_rows()
        pro_set['value'] = 0
        step = int(100 / len(data) + 1)
        for i in range(0, len(data)):
            pro_set['value'] += step
            t_output_num.insert("insert", data[i])
            # 更新UI确保进度条的变化立即反映出来
            window.update_idletasks()
            time.sleep(1)
            t_output_num.insert("insert", '\n')

常量定义 

t_ora_db

"""
oracle的数据连接参数
"""
# 测试的数据库
lacsDB = 100000
oracle_lacs_db = "LACSDB01"
oracle_lacs_db_user_name = "sfcs"
oracle_lacs_db_pass_word = "efactory123"
postgresqlDBT = 300000

 感谢学习和参考,关注不迷路!!!

标签:功能,self,window,num,def,import,电话簿,data,下载
From: https://blog.csdn.net/weixin_58573288/article/details/140668387

相关文章

  • midjourney功能宝典
    ......
  • 如何使用 instaloader 下载特定数量的照片(而不是整个帖子)
    我正在使用名为instaloader的Instagramapi。我正在尝试从数组中的每个配置文件下载25张图片。我尝试使用get_postsforpostinprofile.get_posts():#downloadpostsL.download_post(post,target=data_path/p_name)但这会下载图片以及所有评论和元......
  • SketchUp v2023 激活版下载与安装教程 (强大的绘图三维建模工具)
    前言Sketchup草图大师专业版,一套面向建筑师、城市规划专家、制片人、游戏开发者以及相关专业人员的3D建模程序,全球知名的三维建模软件,强大的绘图工具、建模渲染、扩展插件和渲染器模板、海量3D模型库及建模灯光材质渲染效果图,用于建筑师、城市规划专家、游戏开发等行业。......
  • 中望CAD 机械 v2024 解锁版下载与安装教程 (CAD三维制图)
    前言中望CAD机械版是一款国产CAD制图软件,专为机械设计而打造。中望CAD机械版2024中文版拥有丰富的标准零件图库,提供绘图标准规范,并支持定制化需求。其智能注释功能更是一大亮点,通过一个命令即可完成80%的标注工作,极大提高了绘图效率。一、下载地址下载链接:中望CAD机械......
  • 简单易用的分页插件 原生HTML分页功能 JS ajax对接后台数据接口的调用
    简单易用的分页插件原生HTML分页功能JSajax对接后台数据接口的调用先来看一下整体的效果图如下:今天给大家推荐jQuery-Paging插件,一个用于简化网页分页的轻量级工具,包含自定义样式、动态生成分页、事件处理和集成示例。详细说明了如何在HTML中使用该插件及其功能配置。......
  • 我可以关闭特定课程的 PyCharm 自动完成功能吗
    Pycharm中的Python有没有办法表明我不希望在自动完成窗口中向用户显示特定类的类型提示?我有一个类Result可能包含字符串,例如1+2或另一个类的实例ExerciseExercise类包含2个数字,可以从中生成一个练习字符串。Result类......
  • 通过 CDSAPI 下载 ERA5-Complete Reanalysis 会导致错误 43。怎么修?
    我正在使用flex_extract通过CDSAPI发送请求以获取ERA5完整再分析数据。我可以获取2018/08/09区域74/-24/9.875/60.375的数据,但更改日期或区域会导致以下错误。有谁知道问题是什么以及如何解决它?错误正在尝试从气候数据存储(CDS)下载ERA5数据时遇到错......
  • python带界面实现word文档比对功能
    python实现word文档比对的功能较简单,笔者这里将其界面话,可以指定输入比对的文档,相似度,最小相似参数等。输出的结果以word的形式保存,重复部分会标出,基本实现了商业软件的功能。先看界面这里不废话了,直接给出全部源码,觉得好的点个赞。程序打包的话,自己百度。fromtkinterimp......
  • ESP32各型号模组进入下载模式的引脚配置及其自动下载电路
    1.自动下载电路 不同型号的ESP32模组的自动下载电路都相同,只是RST/EN,Boot引脚的引脚号不同,例如ESP32-C3的Boot脚为GPIO9而ESP32-Wroom-32的boot脚为GPIO0 上图为ESP32和ESP8265的自动下载电路2.进入下载模式的引脚配置 一般只有自动下载电路是不能在下载模式和运行模式来......
  • 智能巡航辅助功能中的KPI设计
    文章目录1.背景介绍2.常用的KPI3.总结与展望1.背景介绍关键绩效指标(KeyPerformanceIndicators,简称KPI)是用来衡量系统或公司是否达成主要目标的可量化指标。在智能巡航辅助系统中,KPI被用来评估不同驾驶场景下各项功能的性能和可靠性。KPI的重要性主要体现在以......