当前位置:   article > 正文

1. tkinter中的数据输入框、文件对话框与消息提醒框简介_tkinter布局助手输入框数据回写

tkinter布局助手输入框数据回写

相信大家程序写多了,尤其是把自己的代码给别人用时,都有这样一个体会:“我前段时间写了一份代码,现在,又需要改代码了,比如,改代码里面的文件路径,之前定义的常量,才能运行起来从而解决手头的问题。”如果想避免每次都改代码,那应该怎么做呢???这就是本文要解决的问题,即通过GUI操作,也就是当程序运行时,弹一些窗口出来让用户输入程序运行所需的参数,这样一来,就不必去改代码了。GUI,即图形用户接口(Graphical User Interface),通俗来说就是具有按钮,文本框,单选框、复选框等元素的程序界面,Python中最常用的GUI有tkinter、PyQT、wxPython。本文中,小编分享一些Python自带的(标准库)GUI模块——tkinter的基本使用方法。tkinter是一个比较轻量的GUI框架,只能通过一行一行地写代码的方式来做界面,因此简单的程序界面,还是比较简单,比较人性化的,但是做复杂的程序界面,就很让人头疼了,而且做出来也难看,因此对于tkinter,小编只打算介绍一些简单的对话框控件的使用,满足日常需求中,程序运行时能够弹出窗口让用户填写参数即可!值得欣慰的是,ArcMap中,也可以使用tkinter来做对话框。后边有机会小编会给大家分享一些PyQT的GUI开发经验,PyQT不仅仅可以用代码来写界面,也可以像C#生态中WinForm一样,通过拖拽的方式来做界面,而且做出来的界面也相对好看一些!

  • tkinter对话框简介

在开始本文各种对话框之前,须要导入以下下几个tkinter模块。注意Python是严格区分大小写的,因此这里说的是tkinter而非Tkinter。此外,对话框必须依赖于一个tkinter顶级app,因此,在开始使用下文中介绍的对话框之前,除了引入必要的包之外,还需定义顶级app。相应代码如下:

from tkinter import Tk
from tkinter.simpledialog import askinteger, askfloat, askstring
from tkinter.filedialog import askopenfilename, askopenfilenames, asksaveasfilename, askdirectory
from tkinter.messagebox import showinfo, showwarning, showerror

if __name__ == "__main__":
    #
    app = Tk()  #初始化GUI程序
    app.withdraw() #仅显示对话框,隐藏主窗口
    ##
    #
    #下文中对话框的代码放在这里
    #
    ##
    app.destroy() #关闭GUI窗口,释放资源
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 下表罗列了本文中介绍的所有对话框的作用及其常用的参数:
对话框作用所需参数
askinteger弹出一个对话框,接受用户输入一个整型数(当用户错误的输入浮点数或者字符串时,该对话框会弹出警告提示窗,并让用户重新输入)title,prompt
askfloat弹出一个对话框,接受用户输入一个浮点数title,prompt
askstring弹出一个对话框,接受用户输入一个字符或字符串,当用户输入数字(包括浮点数时,该对话框将会将用户的输入转换为字符类型在返回给用户)title,prompt
askopenfilename弹出一个对话框,让用户选择一个指定后缀名的文件title,filetypes
askopenfilenames弹出一个对话框,让用户选择一个或多个指定后缀名的文件title,filetypes
asksaveasfilename弹出一个对话框,让用户创建或选择一个指定后缀名的文件title,filetypes,defaultextension
askdirectory弹出一个对话框,让用户创建或选择一个指定后缀名的文件title
showinfo弹出一个对话框,用以显示提示信息,弹窗上为圆形蓝色感叹号图标title,message
showwarning弹出一个对话框,用以显示警告信息,弹窗上为三角形黄色感叹号图标title,message
showerror弹出一个对话框,用以显示错误信息,弹窗上为错误×图标title,message
  • 数据输入框

当所编写的程序中需要用户给出一个整型数、浮点型或者字符(串)时,除了直接让用户修改代码外,最直接的办法就是分别使用如下对话框,让用户直接输入,这样可避免不懂代码的小白修改代码。

(1)整型数输入对话框

var_int = askinteger(title = "请输入一个整数",
                     prompt = "整型变量x:")
  • 1
  • 2

输入整数对话框
这里输入的是15,该对话框不会保存,但当输入浮点数或者字符时,对话框将弹出如下警告信息的对话框:
输入整数对话框的错误提示

(2)浮点数输入对话框

var_float = askfloat(title = "请输入一个浮点数",
                     prompt = "浮点型变量x:")
  • 1
  • 2

输入浮点数对话框

(3)字符或字符串输入对话框

var_string = askstring(title ="请输入一个字符或字符串",
                       prompt = "字符型变量x:")
  • 1
  • 2

输入字符或字符串对话框

  • 文件对话框

实际编程处理数据时,很多数据都存放在Excel文件、csv文件、tif影像文件中,此时,就需要在程序中定义一个变量并将相应的文件路径赋值给该变量,但一旦将程序拷给别人用,或者自己的数据文件路径发生改变,则需要修改代码。因此,小编推荐大家使用文件对话框的方式,来代替在代码中直接编写文件路径。文件包括打开文件对话框、保存文件对话框、选择文件夹(目录)对话框,这应该是各类程序中用得最多的一组对话框,下面,小编介绍了两个对话框的使用方式。

(1)打开一个文件对话框

# 选择打开一个文件
open_file_path = askopenfilename(title = "请选择一个要打开的Excel文件",
                                 filetypes = [("Microsoft Excel文件", "*.xlsx"),
                                              ("Microsoft Excel 97-20003 文件", "*.xls")])
  • 1
  • 2
  • 3
  • 4

选择文件对话框

(2) 打开一个或多个文件对话框

# 一次性打开多个文件,askopenfilenames,多了一个s,复数形式
open_file_path_list = askopenfilenames(title = "请选择一个要打开的Excel文件",
                                       filetypes = [("Microsoft Excel文件", "*.xlsx"),
                                                    ("Microsoft Excel 97-20003 文件", "*.xls")])
  • 1
  • 2
  • 3
  • 4

选择多个文件对话框

(3)保存文件对话框

#saveas而非save,此外未指定defaultextension参数时,则需要在对话框中收到添加文件后缀名
save_file_path = asksaveasfilename(title = "请创建或者选择一个保存数据的Excel文件",
                                   filetypes = [("Microsoft Excel文件", "*.xlsx"),
                                                ("Microsoft Excel 97-20003 文件", "*.xls")],
                                   defaultextension = ".xlsx")
  • 1
  • 2
  • 3
  • 4
  • 5

保存文件对话框
保存文件对话框参数详解

(4)选择文件夹(目录)对话框

select_directory = askdirectory(title = "请选择一个文件夹")
  • 1

选择文件夹

  • 消息提醒框

消息对话框的作用是什么?比如,可以在程序运行完毕时,弹出一个对话框告诉用户,程序执行完毕。相对于文件对话框,对于一般的需求来说,如果不做程序的异常处理,则消息对话框的使用场景比较少。这里小编介绍了3个对话框——消息提示对话框、程序警告对话框、程序错误对话框。

showinfo(title = "提示",
         message = "这是一个提示信息对话框!")
  • 1
  • 2

提示消息对话框

showwarning(title = "警告",
            message = "这是一个警告信息对话框!")
  • 1
  • 2

警告消息对话框

showerror(title = "错误",
          message = "这是一个错误信息对话框!")
  • 1
  • 2

错误消息对话框

  • 完整代码及运行动图如下所示

# -*- coding:utf-8 -*-

from tkinter import Tk
from tkinter.simpledialog import askinteger, askfloat, askstring
from tkinter.filedialog import askopenfilename, askopenfilenames, asksaveasfilename, askdirectory
from tkinter.messagebox import showinfo, showwarning, showerror

if __name__ == "__main__":
    #
    app = Tk()  #初始化GUI程序
    app.withdraw() #仅显示对话框,隐藏主窗口
    ##
    #
    showinfo(title = "提示",
              message = "这是一个提示信息对话框!")
    showwarning(title = "警告",
                message = "这是一个警告信息对话框!")
    showerror(title = "错误",
              message = "这是一个错误信息对话框!")
    #
    showinfo(title = "提示",
              message = "程序程序即将开始运行!")
    #
    var_int = askinteger(title = "请输入一个整数",
                         prompt = "整型变量x:")
    var_float = askfloat(title = "请输入一个浮点数",
                         prompt = "浮点型变量x:")
    var_string = askstring("请输入一个字符或字符串",
                           prompt = "字符型变量x:")
    #
    open_file_path = askopenfilename(title = "请选择一个要打开的Excel文件",
                                     filetypes = [("Microsoft Excel文件", "*.xlsx"),
                                                  ("Microsoft Excel 97-20003 文件", "*.xls")])
    open_file_path_list = askopenfilenames(title = "请选择一个或多个要打开的Excel文件",
                                           filetypes = [("Microsoft Excel文件", "*.xlsx"),
                                                        ("Microsoft Excel 97-20003 文件", "*.xls")])
    save_file_path = asksaveasfilename(title = "请创建或者选择一个保存数据的Excel文件",
                                       filetypes = [("Microsoft Excel文件", "*.xlsx"),
                                                    ("Microsoft Excel 97-20003 文件", "*.xls")],
                                       defaultextension = ".xlsx")
    select_directory = askdirectory(title = "请选择一个文件夹")
    #
    print("var_int:",var_int)
    print("var_float:",var_float)
    print("var_string:",var_string)
    print(open_file_path)
    print(open_file_path_list)
    print(save_file_path)
    print(select_directory)
    #
    showinfo(title = "提示",
              message = "程序已运行结束!")
    #
    ##
    app.destroy() #关闭GUI窗口,释放资源
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55

完整代码行动图

- 关注我的微信公众号——GIS遥感研究与开发

更多关于“Python编程与GIS遥感数据处理”的文章,您可以扫描以下二维码或者搜索“PyGIRS”来关注我的微信公众号:
微信公众号二维码

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/813303
推荐阅读
相关标签
  

闽ICP备14008679号