Tkinter 对话框_tkinter dialog-程序员宅基地

技术标签: 程序图形化界面  python  python编程  Tkinter  GUI  

文章更新于:2020-04-26
注0:原英文教程地址:zetcode.com
注1:Introduction to Tkinter 参见:关于Tkinter的介绍
注2:Layout management in Tkinter 参见:Tkinter布局管理器
注3:Tkinter widgets 参见:Tkinter 控件

Dialogs in Tkinter

In this part of the Tkinter tutorial, we will work with dialogs.

在本章节,我们学习对话框的使用。

Dialog windows or dialogs are an indispensable part of most modern GUI applications.

A dialog is defined as a conversation between two or more persons.
In a computer application a dialog is a window which is used to “talk” to the application.

A dialog is used to input data, modify data, change the application settings etc.
Dialogs are important means of communication between a user and a computer program.

对话和对话框是GUI 必须可少的一部分。
两个或更多人的对话被定义为 对话
在计算机应用程序中,对话就像是计算机用户在和程序进行 对话
对话可以被用来输入数据、修改数据、改变应用设置等等。
对话是用户和计算机程序进行沟通的重要方式。

Tkinter message boxes

Message boxes are convenient dialogs that provide messages to the user of the application.
The message consists of text and image data.

Message boxes in Tkinter are located in the tkMessageBox module.

消息框是一种程序向用户显示信息很方便的一种方式。
消息可以包含文字和图片数据。
消息框在 Tkinter 中位于 tkMessageBox 模块。

#!/usr/bin/env python3

"""
ZetCode Tkinter tutorial

In this program, we show various
message boxes.

Author: Jan Bodnar
Last modified: April 2019
Website: www.zetcode.com
"""

from tkinter import Tk, BOTH
from tkinter.ttk import Frame, Button
from tkinter import messagebox as mbox

class Example(Frame):

    def __init__(self):
        super().__init__()

        self.initUI()


    def initUI(self):

        self.master.title("Message boxes")
        self.pack()

        error = Button(self, text="Error", command=self.onError)
        error.grid(padx=5, pady=5)
        warning = Button(self, text="Warning", command=self.onWarn)
        warning.grid(row=1, column=0)
        question = Button(self, text="Question", command=self.onQuest)
        question.grid(row=0, column=1)
        inform = Button(self, text="Information", command=self.onInfo)
        inform.grid(row=1, column=1)


    def onError(self):

        mbox.showerror("Error", "Could not open file")

    def onWarn(self):

        mbox.showwarning("Warning", "Deprecated function call")

    def onQuest(self):

        mbox.askquestion("Question", "Are you sure to quit?")

    def onInfo(self):

        mbox.showinfo("Information", "Download completed")


def main():

    root = Tk()
    ex = Example()
    root.geometry("300x150+300+300")
    root.mainloop()


if __name__ == '__main__':
    main()

We use the grid manager to set up a grid of four buttons. Each of the buttons shows a different message box.

我们使用 grid 布局管理器设置 4 个按钮,
每个按钮显示一条不同的数据。

from tkinter import messagebox as mbox

We import the messagebox which has the functions that show dialogs.

我们导入有显示对话框函数的消息框。

error = Button(self, text="Error", command=self.onError)

We create an error button, which calls the onError() method. Inside the method, we show the error message dialog.

我们创建了一个调用了 onError() 方法的错误按钮。
在这个方法中,我们显示错误消息框。

def onError(self):
    mbox.showerror("Error", "Could not open file")

In case we pressed the error button, we show the error dialog.
We use the showerror() function to show the dialog on the screen.

The first parameter of this method is the title of the message box, the second parameter is the actual message.

如果我们按下这个错误按钮,将展示这个错误消息框。
我们使用 showerror() 函数来将对话框显示在屏幕上。

这个方法的第一个参数是这个消息框的标题,第二个参数是实际显示的内容。

在这里插入图片描述

Tkinter color chooser

The color chooser is a dialog for selecting a colour.

颜色选择器是一个选择颜色的对话框。

#!/usr/bin/env python3

"""
ZetCode Tkinter tutorial

In this script, we use colorchooser
dialog to change the background of a frame.

Author: Jan Bodnar
Last modified: April 2019
Website: www.zetcode.com
"""

from tkinter import Tk, Frame, Button, BOTH, SUNKEN
from tkinter import colorchooser

class Example(Frame):

    def __init__(self):
        super().__init__()

        self.initUI()


    def initUI(self):

        self.master.title("Color chooser")
        self.pack(fill=BOTH, expand=1)

        self.btn = Button(self, text="Choose Color",
            command=self.onChoose)
        self.btn.place(x=30, y=30)

        self.frame = Frame(self, border=1,
            relief=SUNKEN, width=100, height=100)
        self.frame.place(x=160, y=30)


    def onChoose(self):

        (rgb, hx) = colorchooser.askcolor()
        self.frame.config(bg=hx)


def main():

    root = Tk()
    ex = Example()
    root.geometry("300x150+300+300")
    root.mainloop()


if __name__ == '__main__':
    main()

We have a button and a frame. Clicking on the button we show a color chooser dialog.
We will change the background color of the frame by selecting a colour from the dialog.

在这个例子中,我们有一个按钮和一个框架。
点击这个按钮将显示一个颜色对话框。

我们可以通过在对话框中选择颜色来改变面板的背景色。

(rgb, hx) = colorchooser.askcolor()
self.frame.config(bg=hx)

The askcolor() function shows the dialog. If we click OK, a tuple is returned.
It is a colour value in RGB and hexadecimal format.
In the second line we change the background colour of the frame with the returned colour value.

askcolor() 函数显示这个对话框。
当我们点击 OK ,会返回一个元祖。
它是一个 RGB16 进制 的颜色值。

在第二行,我们使用返回的元祖数据改变了框架的背景色。
在这里插入图片描述

Tkinter file dialog

tkFileDialog dialog allows a user to select a file from the filesystem.

tkFileDialog 允许用户从文件系统选择一个文件。

#!/usr/bin/env python3

"""
ZetCode Tkinter tutorial

In this program, we use the
tkFileDialog to select a file from
a filesystem.

Author: Jan Bodnar
Last modified: April 2019
Website: www.zetcode.com
"""

from tkinter import Frame, Tk, BOTH, Text, Menu, END
from tkinter import filedialog

class Example(Frame):

    def __init__(self):
        super().__init__()

        self.initUI()


    def initUI(self):

        self.master.title("File dialog")
        self.pack(fill=BOTH, expand=1)

        menubar = Menu(self.master)
        self.master.config(menu=menubar)

        fileMenu = Menu(menubar)
        fileMenu.add_command(label="Open", command=self.onOpen)
        menubar.add_cascade(label="File", menu=fileMenu)

        self.txt = Text(self)
        self.txt.pack(fill=BOTH, expand=1)


    def onOpen(self):

        ftypes = [('Python files', '*.py'), ('All files', '*')]
        dlg = filedialog.Open(self, filetypes = ftypes)
        fl = dlg.show()

        if fl != '':
            text = self.readFile(fl)
            self.txt.insert(END, text)


    def readFile(self, filename):

        with open(filename, "r") as f:
            text = f.read()

        return text


def main():

    root = Tk()
    ex = Example()
    root.geometry("300x250+300+300")
    root.mainloop()


if __name__ == '__main__':
    main()

In our code example, we use the tkFileDialog dialog to select a file and display its contents in a Text widget.

在这个例子中,我们使用 tkFileDialog 对话框来选择文件,并且在 Text 控件中显示它的内容。

self.txt = Text(self)

This is the Text widget in which we will show the contents of a selected file.

这是我们显示选择文件内容的 Text 控件。

ftypes = [('Python files', '*.py'), ('All files', '*')]

These are file filters. The first shows only Python files, the other shows all files.

这些是过滤器。
第一个只有 python 文件,其他的则显示全部文件。

dlg = filedialog.Open(self, filetypes = ftypes)
fl = dlg.show()

The dialog is created and shown on the screen. We get the return value, which is the name of the selected file.

对话框被创建并显示在屏幕上。
我们得到一个返回值,也就是选择文件的文件名。

text = self.readFile(fl)

We read the contents of the file.

我们读取这个文件的内容。

self.txt.insert(END, text)

The text is inserted into the Text widget.

将这个文件的内容插入到 Text 控件中。

在这里插入图片描述

In this part of the Tkinter tutorial, we worked with dialog windows.

在这一部分,我们学习了对话框。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_21516633/article/details/105775373

智能推荐

视频教程-跟一夫学UI设计 APPUI综合设计与图标实战案例视频教程 photoshop绘制icon案例-UI-程序员宅基地

文章浏览阅读104次。跟一夫学UI设计 APPUI综合设计与图标实战案例视频教程 photoshop绘制icon案例 ..._app风格案例视频

vue 海康视频播放_vue-hkvideo-程序员宅基地

文章浏览阅读4k次,点赞4次,收藏22次。1. 下载并安装海康 web 插件https://open.hikvision.com/download/5c67f1e2f05948198c909700?type=102. 把上一步解压的三个 js, 复制到你的项目中, 根据路径, 自己引入到 index.html 中3. 建议运行它的 demo, 大概看看代码, 了解一下它的大致结构, 它的注解很详细, 3 分钟就能看完4. 贴上我的代码(我的是每次只显示一个画面, 点击摄像头切换画面)<temp.._vue-hkvideo

html li 鼠标经过变色,CSS实现li标签鼠标经过时改变背景颜色-程序员宅基地

文章浏览阅读5.3k次,点赞3次,收藏4次。很多时候需要用到这个css效果,实际上就用了一个li标签的热点样式,不仅是li标签,div等也可以的完整代码如下,div/css鼠标热点改变li标签背景颜色body{ background-color:#CCCC99; margin:0; padding:0; color:#fff;}ul{ margin:0; padding:50px;}li{ list-style:none; height:2..._ul li 样式 鼠标移入颜色

数据恢复:在 Linux 上恢复删除了的文件_linux系统,删了某一个文件夹的数据还清空了回收站,还能不能找回来我的数据-程序员宅基地

文章浏览阅读238次,点赞4次,收藏8次。把删除创建为rm -i 的别名当 -i 选项配合 rm 命令(也包括其他文件处理命令比如 cp 或者 mv)使用时,在删除文件前会出现一个提示。其中,/home/gacanepa/rescued 是另外一个磁盘中的目录 - 请记住,把文件恢复到被删除文件所在的磁盘中不是一个明智的做法。安装完成后,我们做一个简单的测试吧。如果在恢复过程中,占用了被删除文件之前所在的磁盘分区,就可能无法恢复文件。但愿你对于你的文件足够小心,当你要从外部磁盘或 USB 设备中恢复丢失的文件时,你只需使用这个工具即可。

2021-09-15 WPF上位机 15-属性绑定(数据格式化)_wpf 自定义属性绑定 格式化 实现-程序员宅基地

文章浏览阅读3.2w次。<Window x:Class="Zhaoxi.BindingStudy.DataFormatStudy.DataFormatStudyWin" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.._wpf 自定义属性绑定 格式化 实现

[常用办公软件] wps怎么自动生成目录?wps自动生成目录的设置教程_wps目录自动生成-程序员宅基地

文章浏览阅读1.1w次,点赞3次,收藏5次。转载请说明来源于"厦门SEO"本文地址:http://www.96096.cc/Article/160880.html常用办公软件  WPS Office是由金山软件股份有限公司开发的一款针对个人永久免费的办公软件,在我们的日常生活和工作中,WPS Office比起微软Microsoft Office来说在文字上的处理会更深入国人用户的人心,熟悉操作WPS的办公小技巧,能够更高效的提高我们的工作效率,今天小编要为大家分享的是WPS怎么自动生成目录?快来一起看看WPS自动生成目录的设置教程吧。_wps目录自动生成

随便推点

使用OkHttp 缓存 API 调用提高Android应用性能

要能够将 API 调用的响应本地存储到缓存中,首先,我们需要定义缓存并通知客户端。在下面的代码片段中,我们使用 okhttp 库中的 Cache 类定义了缓存。我们将此缓存的最大大小设置为 5 MB。然后,在初始化 okhttpclient 参数时使用cache()函数。.build()如果设备连接到互联网:如果最后一次 API 响应是在不到 30 分钟之前检索的,则显示缓存的响应;否则,获取新的响应并将其存储在缓存中。如果设备离线:使用最多 1 天前的 API 响应以保持应用程序功能。

一键实现在VS Code中绘制流程图

而其较为出众的一点,就是较好的可拓展性,即丰富的插件应用,这些应用可以极大地提高生产效率,并优化日常使用。可以发现,其整体格局和我们常见的流程图编辑应用较为类似,其主题颜色也与我们的VS Code保持一致,在这里为了编辑方便,我们还是将编辑器主题改为浅色。当然,其功能仍存在局限,不能够完全代替我们传统的图形绘制工具,但也可以作为我们日常工作的有益补充,帮助我们完成一些特定情景下的项目。整体布局也十分明晰,与我们常用的Visio极为类似:左侧为形状选项卡,中间为画布容器,右侧为样式编辑。

go http框架下的静态资源代理实现(压缩,缓存验证自定义)

之前在说了我的第一版静态资源代理,后面我又完善了一下:照着以上思路,可以在其他语言其他框架中实现,因为对框架没有依赖,都是使用的一些基本功能。

RecyclerView实现吸顶效果项目实战(三):布局管理器LayoutManager-程序员宅基地

文章浏览阅读338次,点赞4次,收藏6次。架构师不是天生的,是在项目中磨练起来的,所以,我们学了技术就需要结合项目进行实战训练,那么在Android里面最常用的架构无外乎 MVC,MVP,MVVM,但是这些思想如果和模块化,层次化,组件化混和在一起,那就不是一件那么简单的事了,我们需要一个真正身经百战的架构师才能讲解透彻其中蕴含的深理。此时,RecyclerView第一个item是添加进Adapter中的最后一个,最后一个item是第一个加进Adapter的数据,RecyclerView会自动滑到末尾,另外item整体是依靠下方的。

【智能排班系统】基于AOP和自定义注解实现接口幂等性-程序员宅基地

文章浏览阅读884次。使用多种方式实现接口幂等性,通过定义注解方便对方法进行幂等性控制

SpringBoot整合Swagger2 详解_springboot swagger2 开关-程序员宅基地

文章浏览阅读324次。SpringBoot、Swagger2 整合详解_springboot swagger2 开关

推荐文章

热门文章

相关标签