python tkinter实例与前端的区别_让自己的Script更好用——使用tkinter打造Python脚本程序的可视化GUI窗口(新手向)...

前段时间写了一个从.dat文件读取数据转移到.xlsx文件里面的一个脚本,本质上和First principle calculation 没有什么关系,有点挂羊头卖狗肉的感觉,所以单开了一个Python的分类:P

之前的script(参见让搬砖变得轻松——python操作excel用的脚本)是完全的文本的页面,所有的东西都是靠手动文本输入然后运行的,虽然完成任务还OK,但是每次都要去找文件夹的info然后copy paste文件path,就觉得很烦了,于是就想能不能给他加一个前端(其实就是一个输入的窗口)呢?

因为疫情哪也去不了,反正都是在家呆着,说干就干,首先就去查了一下python的GUI的包,发现python3.7其实内置了一个叫做tkinter的模块,直接就对接了mac的GUI接口,对于懒人的我来说简直太美好了,虽然有很多大大也说了tkinter有很多坑啥的,所以用Qt之类的,不过对于这个界面要求没那么高的我来说,tkinter完全够用了,毕竟只是做一个简单的可视化操作

1. 前期准备

首先,先说一下这个tkinter,这个东西在python3.7里是可以自带的,所以不需要再去安装,而且就算安装,也不是用pip安装的!这个坑其实还挺滑稽的,我觉得应该不止我一个人试过

pip3 install tkinter

这种辣眼睛的操作的吧,不过这里就总结一下,千万不要这样,因为这个tkinter好像就不是一个这样的包,如果真的需要安装,请移步:https://www.activestate.com/products/tcl/,这里不再赘述,毕竟就是为了不需要额外安装才选择的tkinter

整理一下思路大概就是:我们需要一个窗口来输入我们生成的summary文件的名字(这步其实可有可无,毕竟summary就叫sum.xlsx也完全可以,主要是想联系一下窗口的指令)——>可视化选择文件输出的路径——>在指定路径下生成一个.xlsx文件——>可视化选择读入文件的路径,也就是数据的parent文件夹——>运行我们之前的script写入数据

这样的好处就是可以不用每次使用的时候都手动的去copy paste文件的path,不用每次都打开程序的代码去进行编辑,这样可以防止出现一些不必要的误操作,而且省时省力

2. 代码实现

获得文件名字的代码大概就是这样:

def getname():

name = file_name.get()

if name != '':

messagebox.showinfo('File name read', 'The file name is %s, click OK to choose file path' % name)

getpath(name)

window.quit()

else:

messagebox.showinfo('Error', 'Please enter at least one character as filename!')

messagebox.showinfo这个函数是一个弹窗的函数(对,就是你在用程序的时候的那些弹窗,里面是('Title', 'Content text')这样一个结构,所以输出的窗口就是这样的

上面的messagebox函数的输出结果

原理都是相同的,后面的一系列messagebox也是用这个方法做出来的,其实就是起到了prompts的作用

getname里面调用了一个getpath的函数,是为了在获得名字之后自动跳转到获得path的界面,getpath的函数如下:

def getpath(name):

root = tk.Tk()

root.withdraw()

path_xlsx = filedialog.askdirectory()

messagebox.showinfo('File path', 'Your chosen file path is %s, click OK to choose .dat file path' % path_xlsx)

book_name_xlsx = path_xlsx + r'/%s.xlsx'% name

# .xlsx file path where we want to generate this file

wb = Workbook()

wb.save(book_name_xlsx)

# Create and save file as given name and path

root2 = tk.Tk()

root2.withdraw()

path_dat_parent = filedialog.askdirectory()

messagebox.showinfo('Choose .dat file parent path', 'Your chosen . dat file parent path is %s, '

'click OK to continue' % path_dat_parent)

弹出来的选择path的窗口

两次弹窗选择path,分别是选择输出和读入的两个path,选择path的界面就是本地的选择path的那个窗口,因为这个tkinter直接接入了本地的GUI,我在中间两次弹窗中间加入了一些prompts,方便记忆,在这段函数之后加入我们之前script里面的写入数据的函数,就大功告成了

接下来,我们在main function里面调用他们

if __name__=='__main__':

# Create a main menu, which contains filename input and a prompt

window = tk.Tk() #create a window

window.title('Text to xlsx program') #Title of the window

window.geometry('600x400') #Window size setting

tk.Label(window, text='File name').place(x=150, y=130) # a text label and its name and position

tk.Label(window, text='Please enter filename in the box, then click "OK"').place(x=130, y=180)

file_name = tk.StringVar()

entry_usr_name = tk.Entry(window, textvariable=file_name) # an empty textbox for reading input filename

entry_usr_name.place(x=250, y=130)

get_name_button = tk.Button(window, text='OK', command=getname) #invoke getname when you click OK button

get_name_button.place(x=300, y=250)

window.mainloop()

main function里面我直接写了主窗口的代码,感觉这样可能会被骂,但是好像为了可以让getname用到file_name这个variable,写在这里比较方便一些,最后window.mainloop()让窗口开始运作,到这里代码就结束了

这样就实现了之前的可视化读入,不需要每次都对输入的地址进行手动的改写,而且地址的选择更加直观

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一个VB6的IDE插件(Addin),使用VB6的IDE直接设计Python的界面。 Python和VB都是能让人快乐的编程语言,我使用Python之后,很多自己使用的工具都使用Python开发或改写了,因为最终实现的Python代码实在太短了(相比VB),有时候Python一行代码就可以实现VB一个函数的功能。 Python就是这种让人越用越开心的语言。 不过说实在,使用Python开发GUI界面还是麻烦了一些了,自带的标准库Tkinter使用起来非常简单,不过对于习惯了VB拖放控件完成界面设计的偶来说,还是不够人性化。TK也有一个工具叫GUI Builder,不过它使用Layout布局,不够直观,而且用起来很不爽。。 至于PyQt/wxPythonGUI库,尽管有可视化设计工具,但总感觉做一般的轻量级应用是杀鸡用牛刀, 而且不够环保,不够低碳,要带一个很大的库,需要目标机器上夜同样安装了PyQt/wxPython,做不了绿色软件。 所以最终的结果是我更喜欢Tkinter,用起来很简单,绿色环保,真正的跨平台,一个py文件到处运行(担心泄密就编译成pyc)。 很多人都认为TK的界面不够美观,不过我经过多次实验后发现导入Python自带的标准TTK主题库,界面非常Native,不输PyQt/wxPython。 此Addin默认启用TTK支持,也可选择关闭。 总而言之,轻量级GUI,TK+TTK足够。 使用此Addin,你可以不用写一句代码就可以生成一个完整可运行的PythonGUI界面,支持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
### 回答1: tkinterPython 的一个 GUI 库,可以用来创建窗口和图形用户界面。使用 tkinter 可以让你的 Python 程序变得更加直观和易于使用。通过 tkinter,你可以创建各种控件,如按钮、标签、文本框等,并将它们组合在一起形成一个完整的 GUI 界面。同时,tkinter 还提供了许多事件处理函数,可以让你对用户的操作做出相应的响应。总之,学习 tkinter 可以让你更加轻松地创建出漂亮、实用的 GUI 程序。 ### 回答2: TkinterPython 中最常用的 GUI 套件,它提供了一些标准的 GUI 组件,如按钮、文本框、标签等,使开发者可以轻松构建简单却美观的界面。 Tkinter 主要的组件有: 1.窗口(Window):程序的主界面,可以用来容纳其他组件。 2.标签(Label):用于显示文本或图片等。 3.按钮(Button):用户可以通过点击按钮来触发特定的操作。 4.文本框(Entry):用户可以在文本框中输入和编辑文本内容。 5.列表框(Listbox):用于显示列表信息。 6.滚动条(Scrollbar):用于滚动显示的内容。 Tkinter 窗口可视化教学可以分为以下几个方面: 1.窗口设计:要设计出美观、易用的窗口,需要考虑窗口的布局、颜色、字体、组件等。 2.组件选择:根据窗口设计的需要,选择合适的组件进行布局和设计。 3.组件事件响应:通过事件绑定方法来响应组件的操作,如点击按钮、滑动滚动条等。 4.布局管理:使用 Tkinter 提供的布局管理器来进行组件的布局管理,如 Pack、Grid、Place 等。 5.界面美化:可以通过设置组件的样式、颜色、字体等来美化界面。 总的来说,Tkinter窗口可视化教学需要根据实际需求进行设计和开发,尤其需要考虑用户体验和界面美观性。开发者需要了解 Tkinter 的基本组件和事件机制,然后通过实践来熟悉 Tkinter 窗口可视化设计和开发。 ### 回答3: Python 是一种流行的编程语言,而 Tkinter 是一个用于构建 Python 程序 GUI 的工具包。使用 Tkinter,我们可以轻松地构建具有各种功能和表现形式的 GUI。本文将介绍如何通过 Tkinter 窗口可视化你的 Python 程序 GUI。 首先,要使用 Tkinter,你需要导入它。这可以通过以下代码完成: ```python import tkinter as tk ``` 接下来,你需要创建一个窗口对象。可以通过使用 `tk.Tk()` 函数来实现: ```python window = tk.Tk() ``` 在创建窗口后,你可以通过使用各种小部件来添加不同类型的控件,如标签,按钮,文本框等。以下是一些常见小部件和它们的示例代码: - 标签:`tk.Label(window, text="Hello, world!")` - 按钮:`tk.Button(window, text="Click me!", command=my_function)` - 文本框:`tk.Entry(window)` 你还可以设置这些控件的属性来更改它们的外观和行为。例如,你可以通过设置 `font` 属性更改标签的字体: ```python tk.Label(window, text="Hello, world!", font=("Arial Bold", 50)) ``` 你还可以使用像 `pack` 和 `grid` 这样的布局管理器来在窗口中定位控件。 在你完成 GUI 的构建后,你需要使用窗口的 `mainloop()` 方法来保持窗口的运行: ```python window.mainloop() ``` 通过此方法,窗口将一直处于运行状态,直到用户退出为止。 总而言之,Tkinter 是一个强大的工具包,可用于在 Python 中创建具有不同功能和表现形式的 GUI。通过熟练掌握构建小部件,设置属性和使用布局管理器等操作,你可以轻松地使用 Tkinter 来构建自定义 GUI

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值