【python学习总结1】Tkinter学习总结

  • Tkinter的各种控件的介绍、语法格式、属性说明、常见方法:

        可参考文章  Tkinter是什么 (biancheng.net)

  • python tkinter可以使用的颜色

        可参考文章  

       https://blog.csdn.net/u013180459/article/details/82656958

  • messagebox消息对话框

        在tkinter中有三种标准对话框:messagebox、filedialog、colorchooser。

        三种消息框:

        1、消息提示框 showinfo(title, message, options)   

        2、消息警告框 showwarning(title, message, options)    

        3、错误消息框 showerror(title, message, options)    

         五种对话框:

        1、询问确认对话框 askquestion(title, message, options)

        2、确认/取消对话框 askokcancel(title, message, options)

        3、是/否对话框 askyesno(title, message, options)

        4、重试/取消对话框 askretrycancel(title, message, options)

        5、是/否/取消对话框 askyesnocancel(title, message, options)

参数用法
title设置消息对话框的标题文本
message设置消息对话框的主要文本内容,可用’\n’实现换行
default1. 设置默认的按钮(也就是按下回车响应的那个按钮);2. 默认是第一个按钮(像“确定”,“是”或“重试”);3. 可以设置的值根据对话框函数的不同可以选择:CANCEL,IGNORE,OK,NO,RETRY 或 YES
icon1. 指定对话框显示的图标;2. 可以指定的值有:ERROR,INFO,QUESTION 或 WARNING;3. 注意:不能指定自己的图标
parent1. 如果不指定该选项,那么对话框默认显示在根窗口上;2. 如果想要将对话框显示在子窗口 w 上,那么可以设置 parent=w

        返回值:
        showerror(),showinfo() 和 showwarning() 返回“ok”表示用户按下了“确定”按钮;

        askquestion() 返回“yes”或“no”字符串表示用户点击了“是”或“否”按钮;

        askokcancel(),askretrycancel() 和 askyesno() 返回布尔类型的值:用户点击了“确定”或“是”  按钮则返回 True,用户点击了“取消”或“否”按钮则返回 False。

例:

from tkinter import * 
import tkinter.messagebox

response = requests.post(url=url, data=json.dumps(payload), headers=headers)
if response.status_code != 200:
    txt = tkinter.messagebox.showerror(title="提示", message="更新版本信息失败,请检查!")
txt = tkinter.messagebox.showinfo(title="提示", message="更新版本信息成功!")
  • 自己练习的示例:

        示例1:

# -*- coding:UTF-8 -*-
from tkinter import *
import tkinter.messagebox
import tkinter.ttk as ttk
from PIL import Image,ImageTk,ImageSequence
import time
import requests
import json


if __name__=="__main__":
    root=Tk()
    root.title("APP版本升级配置工具")

    #第一步:选择环境
    label1=Label(root,text="1.请选择环境:",font =('微软雅黑',13,"bold"),fg = 'black',width = 12, height = 2,anchor=W)
    label1.grid(row=0,column=0,padx = 0,pady = 0)
    #新建1个整型变量,来表示中国、美西、欧洲、英国四个环境哪个被勾选
    radio_var1 = IntVar()
    #设置4个单选框控件,使用variable参数来接收变量
    radio1 = Radiobutton(root, text='中国', font =('微软雅黑',13), fg = 'black', width = 8, height = 2,anchor=W,value=1,variable = radio_var1)
    radio2 = Radiobutton(root, text='美西', font=('微软雅黑', 13), fg='black', width = 8, height = 2,anchor=W,value=2,variable = radio_var1)
    radio3 = Radiobutton(root, text='欧洲', font=('微软雅黑', 13), fg='black', width = 8, height = 2,anchor=W,value=3,variable = radio_var1)
    radio4 = Radiobutton(root, text='英国', font=('微软雅黑', 13), fg='black', width = 8, height = 2,anchor=W,value=4,variable = radio_var1)
    radio1.grid(row=0,column=1,padx = 0,pady = 0)
    radio2.grid(row=0,column=2,padx = 0,pady = 0)
    radio3.grid(row=0,column=3,padx = 0,pady = 0)
    radio4.grid(row=0, column=4, padx=0, pady=0)

    #第二步:选择平台
    label2 = Label(root, text="2.请选择平台:", font=('微软雅黑', 13, "bold"), fg='black', width=12, height=2, anchor=W)
    label2.grid(row=1, column=0, padx=0, pady=0)
    # 新建1个整型变量,来表示android、ios哪个被勾选
    radio_var2 = IntVar()
    # 设置2个单选框控件,使用variable参数来接收变量
    radio5 = Radiobutton(root, text='Android', font=('微软雅黑', 13), fg='black', width=8, height=2, anchor=W, value=1,
                         variable=radio_var2)
    radio6 = Radiobutton(root, text='IOS', font=('微软雅黑', 13), fg='black', width=8, height=2, anchor=W, value=2,
                         variable=radio_var2)
    radio5.grid(row=1, column=1, padx=0, pady=0)
    radio6.grid(row=1, column=2, padx=0, pady=0)

    #第三步:新建版本配置信息:APP Name、Version、Min Version、AppStore、Type、Scope、Description等
    label3 = Label(root, text="3.输入配置信息:", font=('微软雅黑', 13, "bold"), fg='black', width=12, height=2, anchor=W)
    label3.grid(row=2, column=0,padx=0, pady=0)
    # 输入APP Name
    label4 = Label(root, text="*APP Name:", font=('微软雅黑', 13), fg='black', width=13, height=2)
    label4.grid(row=3, column=0, padx=0, pady=0)
    app_name = Variable()
    entry_app_name = Entry(root, textvariable=app_name, bd=3, width=20, justify=LEFT)
    entry_app_name.grid(row=3, column=1, columnspan=1, padx=0, pady=0)
    # 输入APPID
    label5 = Label(root, text="*APPID:", font=('微软雅黑', 13), fg='black', width=13, height=2)
    label5.grid(row=3, column=2, padx=0, pady=0)
    app_id = Variable()
    entry_app_id = Entry(root, textvariable=app_id, bd=3, width=20, justify=LEFT)
    entry_app_id.grid(row=3, column=3, columnspan=1, padx=0, pady=0)
    # 输入Version
    label6 = Label(root, text="Version:", font=('微软雅黑', 13), fg='black', width=13, height=2)
    label6.grid(row=4, column=0, padx=0, pady=0)
    app_version = Variable()
    entry_app_version = Entry(root, textvariable=app_version, bd=3, width=20, justify=LEFT)
    entry_app_version.grid(row=4, column=1, columnspan=1, padx=0, pady=0)
    # 输入Min Version
    label7 = Label(root, text="Min Version:", font=('微软雅黑', 13), fg='black', width=13, height=2)
    label7.grid(row=4, column=2, padx=0, pady=0)
    app_min_version = Variable()
    entry_app_min_version = Entry(root, textvariable=app_min_version, bd=3, width=20, justify=LEFT)
    entry_app_min_version.grid(row=4, column=3, columnspan=1, padx=0, pady=0)
    # 输入Description
    label8 = Label(root, text="Description:", font=('微软雅黑', 13), fg='black', width=13, height=2)
    label8.grid(row=5, column=0, padx=0, pady=0)
    app_description = Variable()
    entry_app_name = Entry(root, textvariable=app_description, bd=3, width=20, justify=LEFT)
    entry_app_name.grid(row=5, column=1, columnspan=1, padx=0, pady=0)
    # 选择Scope,默认选中FullRelease,创建下拉菜单
    label9 = Label(root, text="Scope:", font=('微软雅黑', 13), fg='black', width=13, height=2)
    label9.grid(row=5, column=2, padx=0, pady=0)
    cbox = ttk.Combobox(root,width=18, justify=LEFT)
    cbox.grid(row=5, column=3,)
    cbox['value'] = ('Full release', 'Whitelist release')
    cbox.current(0)
    #安卓版本配置,需上传升级包,IOS版本配置,需输入AppStore链接
    label10 = Label(root, text="APK/AppStore路径:", font=('微软雅黑', 13), fg='black', width=15, height=2)
    label10.grid(row=6, column=0, padx=0, pady=0)
    app_apk = Variable()
    entry_app_apk = Entry(root, textvariable=app_apk, bd=3, width=40, justify=LEFT)
    entry_app_apk.grid(row=6, column=1, columnspan=2, padx=0, pady=0)

    #第四步:操作:保存配置、上架、下架
    env_list = ["中国", "美西", "欧洲", "英国"]
    platform_list = ["android", "ios"]
    login_base_url_list = ["https://***.cn",
                           "http://***.com",
                           "https://***.com",
                           "https://***.com"]
    app_version_manager_base_url_list = ['https://***/api/app-version-manager',
                                         'https://***/api/app-version-manager',
                                         'https://***/api/app-version-manager',
                                         'https://***/api/app-version-manager']
    label11 = Label(root, text="4.上/下架操作:", font=('微软雅黑', 13, "bold"), fg='black', width=12, height=2, anchor=W)
    label11.grid(row=7, column=0, padx=0, pady=0)
    save_btn = Button(root, text='更新配置', fg='black', font=('微软雅黑', 13), width=8, height=1,command = lambda: save_version_config())
    save_btn.grid(row=7, column=1)
    on_btn = Button(root, text='上架', fg='black', font=('微软雅黑', 13), width=8, height=1,command = lambda: on_and_off("on"))
    on_btn.grid(row=7, column=2)
    off_btn= Button(root, text='下架', fg='black', font=('微软雅黑', 13), width=8, height=1,command = lambda: on_and_off("off"))
    off_btn.grid(row=7, column=3)

    root.mainloop()

        示例2:一个窗口设置两个tab

root=Tk()
root.title("...APP版本配置工具")
#root.geometry("600x500-10+10")
tab_main = ttk.Notebook()  # 创建分页栏
tab_main.grid(row=0, column=0, padx=0, pady=0)
tab1 = Frame(tab_main)  # 创建第一页框架
tab1.grid(row=0, column=0, padx=0, pady=0)
tab_main.add(tab1, text='Android版本配置')
tab2 = Frame(tab_main)  # 创建第二页框架
tab2.grid(row=0, column=0, padx=0, pady=0)
tab_main.add(tab2, text='IOS版本配置')
tab_list=[tab1,tab2]

        示例3:显示动图

if __name__=="__main__":
    root=Tk()
    root.title("你该休息啦!")
    root.geometry("500x90-10+10")
    label1=Label(root,text="站起来动一动,喝杯水吧!",font =('Arial Rounded MT Bold',25,"bold"),fg = 'DeepPink', bg = 'Gold', width = 20, height = 2)
    label1.grid(row=0,column=1,padx = 0,pady = 0)

    canvas1 = Canvas(root, width=85, height=90, bg='white')
    canvas1.grid(row=0, column=0, padx=0, pady=0)

    root.after(5000, root.destroy)
    while True:
        photo1=Image.open("C:/Users/X20232/Desktop/休息提醒/imo1.gif")
        iter = ImageSequence.Iterator(photo1)
        for frame in iter:
            pic = ImageTk.PhotoImage(frame)
            canvas1.create_image((45, 48), image=pic)
            time.sleep(0.1)
            root.update_idletasks()  # 刷新
            root.update()


    root.mainloop()

示例4:下拉选择框、csv文件读取、写入

# -*- coding:UTF-8 -*-
from tkinter import *
import tkinter.messagebox
import tkinter.ttk as ttk
from PIL import Image,ImageTk,ImageSequence
import time
import requests
import json
import csv
import os

a*l_token=None
def A*l_login(event):
    token=None
    env=cbox1.get()
    print("env=%s"%env)
    if env !='':
        login_url="/api/base-uc-app/portal/login"
        if env == env_list[0]:
            url=login_base_url_list[0]+login_url
            account="***"
            password="test2021"
        if env == env_list[1]:
            url = login_base_url_list[1] + login_url
            account = "***"
            password = "test2021"
        if env == env_list[2]:
            url = login_base_url_list[2] + login_url
            account = "***"
            password = "test2021"
        if env == env_list[3]:
            url = login_base_url_list[3] + login_url
            account = "***"
            password = "test2021"
        headers = {
        "Accept": "application/json, text/plain, */*",
        "Content-Type": "application/json;charset=UTF-8",}
        payload={"password": password, "account": account, "loginFrom": "WEB"}
        response = requests.post(url=url,headers=headers,data=json.dumps(payload))
        print(response)
        if response.status_code != 200:
            txt = tkinter.messagebox.showerror(title="提示", message="%s环境登录失败,请检查环境或账号信息!"%var1.get())
        print("%s环境登录成功"%var1.get())
        token = response.json()['data']['token']
        a*l_token=token
    print("a*l_token=%s"%token)
    return

def a*l_location_service():
    token = a*l_token
    env = cbox1.get()
    print("env=%s" % env)
    if env=='':
        txt = tkinter.messagebox.showerror(title="提示", message="A**位置解析请选择环境!")
    if csv_entry.get() == '':
        txt = tkinter.messagebox.showerror(title="提示", message="请输入设备经纬度信息csv文件路径!")
    print(csv_entry.get())
    file1=open(csv_entry.get().split("\n")[0],'r')
    csv_file=csv.reader(file1)
    success = []

    for r in csv_file:
        print(r)
        if r[0]=="SN":
            continue
        serial_no=r[0]
        latitude=r[1]
        longitude=r[2]
        location_url = "/api/device/product/bind-gps/"+serial_no
        if env == env_list[0]:
            url = login_base_url_list[0] + location_url
        if env == env_list[1]:
            url = login_base_url_list[1] + location_url
        if env == env_list[2]:
            url = login_base_url_list[2] + location_url
        if env == env_list[3]:
            url = login_base_url_list[3] + location_url
        headers = {
                "Accept": "application/json, text/plain, */*",
                "Content-Type": "application/json;charset=UTF-8",
                "autel-token":token
                }
        payload = {"lat": float(latitude),
                    "lon": float(longitude)
                   }
        response = requests.post(url=url, headers=headers, data=json.dumps(payload))
        print(response)
        if response.status_code != 200:
            print("SN号为%s的设备位置解析失败!"%serial_no)
            outcome1.insert(tkinter.END, ('SN%s,返回码:%d'%(serial_no,response.status_code)))
            outcome1.insert(tkinter.END, '\n')
        else:
            print("SN号为%s的设备位置解析成功!"%serial_no)
            country = response.json()['data']['country']
            level_1 = response.json()['data']['level_1']
            level_2 = response.json()['data']['level_2']
            level_3 = response.json()['data']['level_3']
            outcome1.insert(tkinter.END, ('SN:%s,country:%s,level_1:%s,level_2:%s,level_3:%s'%(serial_no,country,level_1,level_2,level_3)))
            outcome1.insert(tkinter.END, '\n')
            success.append([serial_no, country, level_1, level_2,level_3])
    file1.close()
    print("解析完成,将结果写入csv文件中")
    outcome_file_path = os.path.dirname(csv_entry.get()) + '\\A**位置解析结果.csv'
    print(outcome_file_path)
    file2 = open(outcome_file_path, 'w', newline="")
    outcome_file = csv.writer(file2)
    outcome_file.writerow(["SN", "country", "level_1", "level_2","level_3"])
    for s in success:
        outcome_file.writerow([s])
    file2.close()
    return


def tencent_location_service():
    if csv_entry.get() == '':
        txt = tkinter.messagebox.showerror(title="提示", message="请输入设备经纬度信息csv文件路径!")
    print(csv_entry.get())
    file1 = open(csv_entry.get().split("\n")[0], 'r')
    csv_file = csv.reader(file1)
    success=[]
    i=1
    for r in csv_file:
        print(r)
        if r[0]=="SN":
            continue
        serial_no = r[0]
        latitude = r[1]
        longitude = r[2]
        location_url = "https://apis.map.qq.com/ws/geocoder/v1?key=5Q5BZ-5EVWJ-SN5F3-K6QBZ-B3FAO-RVBWM&location="+str(latitude)+","+str(longitude)+"&sig=90da272bfa19122547298e2b0bcc0e50"
        headers = {
            "Accept": "application/json, text/plain, */*",
            "Content-Type": "application/json;charset=UTF-8",
        }
        response = requests.get(url=location_url, headers=headers)
        print(response)
        if response.status_code != 200:
            print("SN号为%s的设备位置解析失败!" % serial_no)
            outcome2.insert(tkinter.END, ('SN%s,返回码:%d' % (serial_no, response.status_code)))
            outcome2.insert(tkinter.END, '\n')
        else:
            print("SN号为%s的设备位置解析成功!" % serial_no)
            print(response.json())
            country = response.json()["result"]['address_component']["nation"]
            print("22",country)
            if (response.json()["result"]['address_component']).__contains__("province") is True:
                province = response.json()['result']['address_component']["province"]
                city = response.json()['result']['address_component']["city"]
                county = response.json()['result']['address_component']["district"]
            else:
                province = response.json()['result']['address_component']["ad_level_1"]
                city = response.json()['result']['address_component']["ad_level_2"]
                county = response.json()['result']['address_component']["ad_level_3"]
            outcome2.insert(tkinter.END, ('SN:%s,country:%s,province:%s,city:%s,county:%s' % (serial_no, country, province, city,county)))
            outcome2.insert(tkinter.END,'\n')
            success.append([serial_no, country, province, city, county])
            i+=1
            #腾讯位置解析接口一个key每秒请求量只有10个
            if i%10==0:
                time.sleep(1)

    file1.close()
    print("解析完成,将结果写入csv文件中")
    outcome_file_path = os.path.dirname(csv_entry.get()) + '\\腾讯位置解析结果.csv'
    print(outcome_file_path)
    file2=open(outcome_file_path, 'w', newline="")
    outcome_file = csv.writer(file2)
    outcome_file.writerow(["SN", "country", "province", "city", "county"])
    for s in success:
        outcome_file.writerow([s])
    file2.close()
    return

if __name__=="__main__":
    root=Tk()
    root.title("根据经纬度查询位置工具")
    root.geometry("590x430-10+10")

    #第一步:A**l位置解析需选择环境
    label1=Label(root,text="A**位置解析请选择环境:",font =('微软雅黑',11),fg = 'black',width = 22, height = 2,anchor=W)
    label1.grid(row=0,column=0,padx = 0,pady = 0)
    #创建一个变量,用来表示中国、美西、欧洲、英国哪个环境被选择
    var1=tkinter.StringVar()
    #创建下拉菜单,包含中国、美西、欧洲、英国四个环境
    cbox1=ttk.Combobox(root,textvariable=var1,width=15,justify=LEFT)
    # 设置下拉菜单中的值
    cbox1['value'] = ('中国', '美西', '欧洲', '英国')
    # 绑定下拉菜单事件
    env_list = ["中国", "美西", "欧洲", "英国"]
    login_base_url_list = ["https://***.cn",
                           "https://***.com",
                           "https://***.com",
                           "https://***.com"]
    cbox1.bind("<<ComboboxSelected>>", A**l_login)
    cbox1.grid(row=0, column=1, padx=0, pady=0)
    #第二步:输入设备经纬度信息csv文件路径
    label2 = Label(root, text="设备经纬度csv文件路径:", font=('微软雅黑',11), fg='black', width=22, height=2,anchor=W)
    label2.grid(row=1, column=0, padx=0, pady=0)
    var2= Variable()
    csv_entry = Entry(root, textvariable=var2, bd=3, width=38, justify=LEFT)
    csv_entry.grid(row=1, column=1,  columnspan=2,padx=0, pady=0,sticky = W)
    #第三步:点击按钮执行A**位置解析或腾讯位置解析,以及数据导出按钮
    autel_btn = Button(root, text='A**位置解析', fg='black', font=('微软雅黑', 11), width=12, height=1, command=lambda: a*l_location_service())
    autel_btn.grid(row=2, column=0)
    tencent_btn = Button(root, text='腾讯位置解析', fg='black', font=('微软雅黑', 11), width=12, height=1,command=lambda: tencent_location_service())
    tencent_btn.grid(row=2, column=2)
    #第四步:解析结果展示
    outcome1= Text(root, height=20, width=35)
    outcome1.grid(row=3, column=0,columnspan=2,sticky = W)
    outcome2 = Text(root, height=20, width=35)
    outcome2.grid(row=3, column=2,columnspan=2,sticky = W)
    label4 = Label(root, text="A**解析结果展示", font=('微软雅黑', 8), fg='black', width=22, height=2)
    label4.grid(row=4, column=0, padx=0, pady=0)
    label5 = Label(root, text="腾讯解析结果展示", font=('微软雅黑', 8), fg='black', width=22, height=2)
    label5.grid(row=4, column=2, padx=0, pady=0)


    root.mainloop()

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您好!下面是关于 Python Tkinter 和 MySQL 的一些信息: Python TkinterPython 的标准 GUI(图形用户界面)库,提供了创建 GUI 应用程序的工具和方法。Tkinter 可以在多个平台上使用,并且它易于学习和使用。 MySQL 是一种流行的关系型数据库管理系统,用于存储和管理数据。MySQL 是免费和开源的,它可以在多个操作系统上运行,并且被广泛应用于 Web 应用程序和其他类型的软件中。 在 Python 中使用 Tkinter 和 MySQL 结合使用可以创建一个具有图形用户界面的应用程序,它可以连接到 MySQL 数据库并执行数据库操作,例如插入、更新和删除数据。 要在 Python 中连接到 MySQL 数据库,您需要安装 Python 的 MySQL 驱动程序,例如 MySQL Connector。安装驱动程序后,您可以使用 Python 编写代码来连接到 MySQL 数据库并执行各种操作。 在 Tkinter 中,您可以创建各种 GUI 元素,例如文本框、标签、按钮等,然后将它们与数据库操作结合使用,例如当用户点击按钮时插入数据到数据库中。 希望这些信息能对您有所帮助! ### 回答2: Python TkinterPython编程语言的标准GUI库,可以用于创建图形用户界面。而MySQL则是一种关系型数据库管理系统,用于存储和管理数据。在Python中,可以使用Tkinter和MySQL进行数据库的连接和操作。 首先,导入必要的模块,如`tkinter`和`mysql.connector`: ```python import tkinter as tk import mysql.connector ``` 接下来,可以使用Tkinter创建一个GUI窗口: ```python window = tk.Tk() window.title("Python Tkinter与MySQL") window.geometry("300x200") ``` 然后,可以创建一个连接MySQL数据库的函数: ```python def connect_to_mysql(): mydb = mysql.connector.connect( host="localhost", user="username", password="password", database="database_name" ) mycursor = mydb.cursor() # 进行数据库操作 ``` 在`connect_to_mysql`函数中,需要提供MySQL数据库的连接信息,包括主机名、用户名、密码和数据库名。`mycursor`是用于执行SQL语句和获取结果的游标对象。 在函数的注释处,可以添加具体的数据库操作,例如查询或插入数据。 最后,可以在窗口中添加一个按钮,用于执行连接MySQL数据库的函数: ```python connect_btn = tk.Button(window, text="连接数据库", command=connect_to_mysql) connect_btn.pack() ``` 使用`tk.Button`创建一个按钮,并将函数`connect_to_mysql`绑定到按钮的`command`属性上。 最后,使用`window.mainloop()`启动窗口的事件循环。 总结来说,Python Tkinter和MySQL可以结合使用来创建一个具有图形用户界面的MySQL数据库管理工具。可以使用Tkinter创建窗口和按钮,并使用MySQL.connector模块连接到数据库并进行数据库操作。 ### 回答3: Python tkinter是一种Python编程语言的图形用户界面(GUI)工具包,它提供了一组用于创建GUI应用程序的函数和方法。Tkinter可以用来创建各种类型的窗口、按钮、标签等GUI组件,以及处理用户输入和各种事件。 MySQL是一个关系型数据库管理系统(RDBMS),它是用C和C++编写的。MySQL支持多用户、多线程和多个存储引擎,适用于各种规模的应用程序。 使用Python tkinter和MySQL可以实现以下功能: 1. 连接数据库:使用Python中的MySQL连接器来连接MySQL数据库,输入主机名、用户名、密码、数据库名称等信息,创建与MySQL数据库的连接。 2. 查询数据:通过编写SQL查询语句,在Python程序中执行查询操作,获取MySQL数据库中的数据。将查询结果显示在GUI窗口中的文本框、列表框或表格中。 3. 插入、更新和删除数据:通过编写SQL插入、更新和删除语句,实现GUI程序中对MySQL数据库的数据增、删和改操作。在用户点击按钮或输入操作时,执行相应的SQL语句。 4. 数据可视化:使用Python tkinter的图形绘制功能,将MySQL数据库中的数据以图表、图形等形式展示。例如,可以创建饼图、柱状图、折线图等,显示数据库中各项数据的分布和趋势。 5. 数据导入和导出:通过Python tkinter的文件操作功能,实现将MySQL数据库中的数据导出为CSV文件或其他格式,或将外部数据导入到MySQL数据库中。用户可以选择导入或导出的文件路径和文件名。 综上所述,使用Python tkinter和MySQL可以方便地创建GUI应用程序,并对MySQL数据库进行各种操作和数据可视化。它可以在图形化界面下展示、查询、处理和管理数据,适用于开发各种类型的数据库应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值