📜  Python Tkinter顶层窗口(1)

📅  最后修改于: 2023-12-03 15:34:05.402000             🧑  作者: Mango

Python Tkinter顶层窗口的介绍

概述

Python Tkinter是Python标准库的一个GUI工具包,可以用于开发不同类型的应用程序,包括顶层窗口。顶层窗口是应用程序的主窗口,用户会在这个窗口中进行所有的操作。本篇文章将介绍如何使用Python Tkinter来创建顶层窗口,并为读者提供一些常见的应用实例。

创建顶层窗口

创建顶层窗口的过程非常简单。首先,需要导入Tkinter模块,然后创建一个tkinter.Tk()对象,该对象就是应用程序的主窗口。如下所示:

import tkinter

# 创建主窗口
root = tkinter.Tk()

# 设置窗口标题
root.title("My Application")

# 进入主循环
root.mainloop()

执行以上代码,将会打开一个名为"My Application"的空白窗口。

添加组件

一旦创建了一个顶层窗口,便可以在窗口中添加各种组件,例如标签、文本框、按钮等等。如下所示,是添加一个标签的例子:

import tkinter

# 创建主窗口
root = tkinter.Tk()
root.title("My Application")

# 添加标签组件
label = tkinter.Label(root, text="Hello, World!")
label.pack()

# 进入主循环
root.mainloop()

执行以上代码,将会在窗口中添加一个显示"Hello, World!"的标签。

常见应用实例

除了添加标签,还有很多其他的应用场景,例如创建一个简单的文本编辑器,一个计算器等等。下面将为读者介绍一些这样的实例。

文本编辑器

下面的代码将创建一个简单的文本编辑器,允许用户输入和保存文本:

import tkinter
from tkinter import scrolledtext, filedialog
import os

# 创建主窗口
root = tkinter.Tk()
root.title("Text Editor")

# 添加滚动文本框组件
textarea = scrolledtext.ScrolledText(root, width=50, height=30)
textarea.pack()

# 添加保存文件功能
def save_file():
    file_path = filedialog.asksaveasfilename(defaultextension=".txt")
    if file_path:
        with open(file_path, "w") as f:
            f.write(textarea.get("1.0", "end"))
        root.title("Text Editor - " + os.path.basename(file_path))

menu = tkinter.Menu(root)
root.config(menu=menu)

file_menu = tkinter.Menu(menu)
menu.add_cascade(label="File", menu=file_menu)
file_menu.add_command(label="Save", command=save_file)
file_menu.add_separator()
file_menu.add_command(label="Exit", command=root.quit)

# 进入主循环
root.mainloop()

执行以上代码,将会打开一个窗口,并在窗口中展示一个滚动的文本框。用户可以在文本框中输入文件内容,并通过"File -> Save"菜单保存文件。

计算器

下面的代码将创建一个简单的计算器,允许用户进行基本的加、减、乘、除计算:

import tkinter

# 创建主窗口
root = tkinter.Tk()
root.title("Calculator")

# 创建计算器面板
panel = tkinter.Frame(root)
panel.pack()

# 创建显示区域
display = tkinter.Entry(panel, width=30, justify="right")
display.grid(row=0, column=0, columnspan=4)

# 添加按钮
def add_number(number):
    display.insert("end", number)

def add_operation(operator):
    display.insert("end", operator)

def calculate():
    result = eval(display.get())
    display.delete(0, "end")
    display.insert("end", result)

def clear():
    display.delete(0, "end")

button1 = tkinter.Button(panel, text="1", command=lambda: add_number("1"))
button1.grid(row=1, column=0)

button2 = tkinter.Button(panel, text="2", command=lambda: add_number("2"))
button2.grid(row=1, column=1)

button3 = tkinter.Button(panel, text="3", command=lambda: add_number("3"))
button3.grid(row=1, column=2)

button_divide = tkinter.Button(panel, text="/", command=lambda: add_operation("/"))
button_divide.grid(row=1, column=3)

button4 = tkinter.Button(panel, text="4", command=lambda: add_number("4"))
button4.grid(row=2, column=0)

button5 = tkinter.Button(panel, text="5", command=lambda: add_number("5"))
button5.grid(row=2, column=1)

button6 = tkinter.Button(panel, text="6", command=lambda: add_number("6"))
button6.grid(row=2, column=2)

button_multi = tkinter.Button(panel, text="*", command=lambda: add_operation("*"))
button_multi.grid(row=2, column=3)

button7 = tkinter.Button(panel, text="7", command=lambda: add_number("7"))
button7.grid(row=3, column=0)

button8 = tkinter.Button(panel, text="8", command=lambda: add_number("8"))
button8.grid(row=3, column=1)

button9 = tkinter.Button(panel, text="9", command=lambda: add_number("9"))
button9.grid(row=3, column=2)

button_minus = tkinter.Button(panel, text="-", command=lambda: add_operation("-"))
button_minus.grid(row=3, column=3)

button_clear = tkinter.Button(panel, text="C", command=clear)
button_clear.grid(row=4, column=0)

button0 = tkinter.Button(panel, text="0", command=lambda: add_number("0"))
button0.grid(row=4, column=1)

button_calc = tkinter.Button(panel, text="=", command=calculate)
button_calc.grid(row=4, column=2)

button_add = tkinter.Button(panel, text="+", command=lambda: add_operation("+"))
button_add.grid(row=4, column=3)

# 进入主循环
root.mainloop()

执行以上代码,将会打开一个窗口,并在窗口中展示一个计算器面板。用户可以在面板中进行四则运算。