Tkinter 对话框

文章更新于: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.

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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值