python之Tkinter界面工具

__author__ = 'Jeff.xie'

import base64
import os
import tkinter as tk
from tkinter import *
from tkinter import filedialog, dialog

#os.path.expanduser('~')获取当前用户的目录 C:\Users\jeff.xie
user_data_path=path = os.path.expanduser('~')+"\\data.txt"
username_local=''
password_local=''
email_local=''
file_path = ''

def open_file():
    global file_path
    file_path = filedialog.askopenfilename(title=u'选择文件', initialdir=(os.path.expanduser('D:/')))
    if file_path is not None:
        e_path.delete(0,"end")  #清除文本
        e_path.insert('insert', file_path)

window = tk.Tk()
window.title('Tools')  # 标题
window.geometry('500x300+300+300')  # 窗口尺寸

open_btn =Button(window, text='Browser', width=15, height=1, command=open_file)
# open_btn =Button(window, text='Browser', command=open_file)
open_btn.grid(row=0,column=0,sticky=W)
e_path =Entry(window,width=50)
e_path.grid(row=0,column=1,sticky=W)

#用户名标签及输入框
l_user =Label(window,text='User:')
l_user.grid(row=1,sticky=W)  #W表示west,左对齐,
e_user =Entry(window)
e_user.grid(row=1,column=1,sticky=W) #E表示east,右对齐

#密码标签及输入框
l_pwd = Label(window,text='Password:')
l_pwd.grid(row=2,sticky=W)
e_pwd = Entry(window)
e_pwd['show']='*'
e_pwd.grid(row=2,column=1,sticky=W)
#email标签及输入框
l_email =Label(window,text='Email:')
l_email.grid(row=3,sticky=W)
e_email =Entry(window)
e_email.grid(row=3,column=1,sticky=W)


def mybase64_encode(data):  #加密,参数为字符串类型
    r=base64.b64encode(data.encode("utf8")) # data.encode("utf8")是把字符串转成bytes   #参数必须是字节类型
    jiami_data = r.decode('utf8') #转换成字符串
    # print("jiami_data:",jiami_data)
    return jiami_data

def mybase64_decode(data):  #解密,参数为字符串类型
    r=base64.b64decode(data.encode("utf8"))
    jiemi_data = r.decode('utf8')#转换成字符串
    # print("jiemi_data:",jiemi_data)
    return jiemi_data



def test():
    write_content_to_txt(get_user_content())
    if len(file_path) >0:
        with open(file_path,'rb',encoding='utf8') as f:
            data = f.readlines()
    else:
​​​​​​​        messagebox.showwarning("提示","请选择文件")
        # e_path.insert('insert', "请选择文件")

def write_content_to_txt(content):
    with open(path,"w") as f:
        f.write(content)
    # if not os.access(user_data_path, os.R_OK):  #如果不存在创建文件
    #     with open(path,"w") as f:
    #         f.write(content)

def get_user_data_from_local():
    global username_local
    global password_local
    global email_local
    if os.access(user_data_path, os.R_OK): #判断文件是否存在,是否可读
        with open(user_data_path,"r") as f:
            data=f.readlines()
            for i in data:
                if "username" in i:
                    username_local= i.split(":")[1].strip()
                if "password" in i:
                    p= i.split(":")[1].strip()
                    password_local = mybase64_decode(p)
                if "email" in i:
                    email_local= i.split(":")[1].strip()
    return username_local,password_local,email_local

def set_user_data():
    user,pwd,email= get_user_data_from_local()
    e_user.insert('insert', user)
    e_pwd.insert('insert', pwd)
    e_email.insert('insert', email)

def get_user_content():
    username = e_user.get() #获取输入框文本
    password = e_pwd.get()
    email = e_email.get()
    content = "username:"+username+"\n"
    content += "password:"+mybase64_encode(password)+"\n"
    content += "email:"+email+"\n"
    return content


# run =Button(window, text='Run', width=15, height=2, command=test)
run =Button(window, text='Run',width=30, command=test)
run.grid(row=4,columnspan=2)  #columnspan=2表示占用2列,rowspan=2表示占用2行,
# bt1 = tk.Button(window, text='打开文件', width=15, height=2, command=open_file)
# bt1.pack()
# text1 = tk.Text(window, width=50, height=10, bg='orange', font=('Arial', 12))
# text1.pack()
# bt2 = tk.Button(window,text='Run',width=15, height=2, command=test)
# bt2.pack()

set_user_data()


def JieShu():
    r=messagebox.askyesno(title='询问', message='确定要关闭此应用程序?')
    print(r)
    if r:
        sys.exit(0)
        # window.destroy()#销毁root窗口
    else:
        print("不需要关闭")
#下面这一句最重要,是接收到关闭点击操作的语句,之后调用JieShu函数
window.protocol("WM_DELETE_WINDOW", JieShu)
​​​​​​​
window.mainloop()  # 显示
这是一个VB6的IDE插件(Addin),使用VB6的IDE直接设计Python界面Python和VB都是能让人快乐的编程语言,我使用了Python之后,很多自己使用的工具都使用Python开发或改写了,因为最终实现的Python代码实在太短了(相比VB),有时候Python一行代码就可以实现VB一个函数的功能。 Python就是这种让人越用越开心的语言。 不过说实在,使用Python开发GUI界面还是麻烦了一些了,自带的标准库Tkinter使用起来非常简单,不过对于习惯了VB拖放控件完成界面设计的偶来说,还是不够人性化。TK也有一个工具叫GUI Builder,不过它使用Layout布局,不够直观,而且用起来很不爽。。 至于PyQt/wxPython等GUI库,尽管有可视化设计工具,但总感觉做一般的轻量级应用是杀鸡用牛刀, 而且不够环保,不够低碳,要带一个很大的库,需要目标机上夜同样安装了PyQt/wxPython,做不了绿色软件。 所以最终的结果是我更喜欢Tkinter,用起来很简单,绿色环保,真正的跨平台,一个py文件到处运行(担心泄密就编译成pyc)。 很多人都认为TK界面不够美观,不过我经过多次实验后发现导入Python自带的标准TTK主题库,界面非常Native,不输PyQt/wxPython。 此Addin默认启用TTK支持,也可选择关闭。 总而言之,轻量级GUI,TK+TTK足够。 使用此Addin,你可以不用写一句代码就可以生成一个完整可运行的Python的GUI界面,支持2.X和3.X。 安装方法:将压缩包解压到你希望的目录,然后执行Setup.exe完成注册插件过程,打开VB6就可以用了。 在VB窗体上设计完成界面后(你可以大胆的设置各控件的属性,Addin尽量将其翻译为tkinter的控件属性),点工具栏上的VisualTkinter(图标为一片羽毛),再点'生成代码'按钮,即可生成可运行的Python代码,可以拷贝至剪贴板或保存至文件。 一般情况下你可以不用再改变tkinter的控件属性,但是如果你熟悉tkinter,需要更多的控制,可以一一核对各属性,并且修改,再生成代码。 当然除了用来设计界面外,此ADDIN内置的各控件属性列表可以做为编程参考,比较完整,除了极少数我认为大多数人都不用的属性外,属性定义基本上是我从官方的tkinter文档直接翻译的。 如果还没有VB6,网上找一个VB6精简版即可,不到20M,小巧玲珑。 代码已经在Github上托管,更新的版本可以在这上面找到,需求也可以在上面提: https://github.com/cdhigh/Visual-Tkinter-for-Python
这是一个VB6的IDE插件(Addin),使用VB6的IDE直接设计Python界面Python和VB都是能让人快乐的编程语言,我使用了Python之后,很多自己使用的工具都使用Python开发或改写了,因为最终实现的Python代码实在太短了(相比VB),有时候Python一行代码就可以实现VB一个函数的功能。 Python就是这种让人越用越开心的语言。 不过说实在,使用Python开发GUI界面还是麻烦了一些了,自带的标准库Tkinter使用起来非常简单,不过对于习惯了VB拖放控件完成界面设计的同学来说,还是不够人性化。TK也有一个工具叫GUI Builder,不过它使用Layout布局,不够直观,而且界面简陋,用起来也不爽。 至于PyQt/wxPython等GUI库,尽管有可视化设计工具,但总感觉做一般的轻量级应用是杀鸡用牛刀,学习起来也比较复杂,而且不够环保,不够低碳,要带一个很大的库,需要目标机上夜同样安装了PyQt/wxPython,做不了绿色软件。 所以最终的结果是我更喜欢Tkinter,用起来很简单,绿色环保,真正的跨平台,一个py文件到处运行(担心泄密就编译成pyc)。 很多人都认为TK界面不够美观,不过导入Python自带的标准TTK主题库,界面非常Native,不输PyQt/wxPython。 此Addin默认启用TTK支持,也可选择关闭。 总而言之,轻量级GUI,TK+TTK足够。 使用此Addin,你可以不用写一句代码就可以生成一个完整可运行的Python的GUI界面,支持python 2.X和3.X。 安装方法:将压缩包解压到你希望的目录,然后执行Setup.exe完成注册插件过程,打开VB6就可以用了。 在VB窗体上设计完成界面后(你可以大胆的设置各控件的属性,Addin尽量将其翻译为tkinter的控件属性),点工具栏上的VisualTkinter(图标为一片橙红色羽毛),再点'生成代码'按钮,即可生成可运行的Python代码,可以拷贝至剪贴板或保存至文件。 一般情况下你可以不用再改变tkinter的控件属性,但是如果你熟悉tkinter,需要更多的控制,可以一一核对各属性,并且修改,再生成代码。 除了用来设计界面外,此ADDIN内置的各控件属性列表可以做为编程参考,比较完整,除了极少数我认为大多数人都不用的属性外,属性定义基本上是我从官方的tkinter文档直接翻译的。 如果还没有VB6,网上找一个VB6精简版即可(建议使用12M的版本,6M的版本也可以使用,不过工具栏图标无法显示,可以通过菜单执行此插件)。 经过网友测试,完美支持WinXP,Windows 7, Windows 8。
### 回答1: Python GUI Tkinter界面编程是使用Python编程语言和Tkinter模块创建图形用户界面的过程。TkinterPython标准库中的一个模块,它提供了一组工具和组件,可以用于创建各种类型的GUI应用程序。使用Tkinter,开发人员可以创建按钮、标签、文本框、滚动条、菜单等各种控件,并将它们组合在一起以创建完整的GUI应用程序。Tkinter还提供了一些布局管理,可以帮助开发人员轻松地布置和排列控件。Python GUI Tkinter界面编程是Python编程中的一个重要领域,它可以用于创建各种类型的应用程序,如桌面应用程序、游戏、数据可视化工具等。 ### 回答2: Python是一种高级编程语言,广泛应用于各种领域,其中图形用户界面(GUI)编程是其中一个重要分支。TkinterPython最常用的GUI编程库之一,它提供了一组常用的GUI组件,如按钮、标签、文本框等,可以通过构建这些组件来创建各种各样的GUI应用程序。 首先,要使用Tkinter编写GUI应用程序,需要导入tkinter模块。然后,可以定义一个根窗口对象,并使用各种组件来构建GUI界面。例如,可以使用Button组件创建一个按钮,使用Label组件创建一个标签,使用Entry组件创建一个文本框等。 在创建GUI界面时,可以设置组件的各种属性,如位置、大小、颜色、字体等。此外,还可以通过为组件定义回调函数来实现用户交互功能,例如通过按钮的点击事件来执行一些操作。 除了基本的组件,Tkinter还提供了其他高级组件,如Canvas、Menu、ScrollBar等,可以用于创建更复杂的GUI应用程序。此外,Tkinter还支持图片、动画、声音等多媒体功能,并提供了一些布局管理,可帮助开发人员更方便地控制GUI界面的布局。 总之,Python Tkinter是一个功能强大的GUI编程库,可以用于构建各种类型的GUI应用程序。它易于学习、灵活性强、并且与Python语言天然结合,使得开发者拥有无限可能,可以借此创建出非常漂亮、实用的GUI应用程序,带来很好的使用体验。 ### 回答3: Python是一种非常流行的面向对象编程语言,被广泛用于数据科学和机学习等领域。TkinterPython的一个标准图形用户界面(GUI)工具包,它提供了一个方便的方式来创建窗口和各种用户界面元素,如标签,按钮,文本框和滑块等。 TkinterPython内置的库之一,因此使用它无需安装任何其他的软件或库。这使得开发者可以快速方便地开始使用Tkinter的GUI开发工具。同时,由于它是Python的一部分,所以与使用其他GUI库时存在的兼容性问题也比较少。 在使用Tkinter进行GUI开发时,开发者通常会建立一个主窗口或根窗口,然后向该窗口添加各种用户界面元素,例如标签,按钮等。这些元素可以通过代码定义,或者可以使用可视化设计工具来创建和配置。 对于新手和初学者而言,需要花费一些时间来熟悉Tkinter的API以及如何构建GUI。但一旦掌握了基本的概念和方法,就可以快速地创建复杂的窗口和应用程序。Tkinter还提供了一些高级功能,例如对话框,菜单和弹出式菜单等,这些功能可以帮助开发者创建更加丰富和互动的用户界面PythonTkinter在数据科学和机学习领域已经被广泛采用,也有很多文档和资源可以参考。因此,尽管Tkinter最初可能会对一些开发者来说具有一定的学习曲线,但它仍然是一种强大和流行的GUI工具包,可以帮助使用Python进行开发并创建出漂亮的界面
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值