[雪峰磁针石博客]python GUI作业:使用tkinter的重要控件

简介:

题目1:使用tkinter的重要控件 绘制如下菜单:

图片.png

参考代码:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 技术支持:https://www.jianshu.com/u/69f40328d4f0 
# 技术支持 https://china-testing.github.io/
# https://github.com/china-testing/python-api-tesing/blob/master/practices/tk/tk3.py
# 项目实战讨论QQ群630011153 144081101
# CreateDate: 2018-11-29


import tkinter as tk

root = tk.Tk()
root.title('tkinter控件')
#create a frame widget for placing menu
my_menu_bar = tk.Frame(root, relief='raised', bd=2)
my_menu_bar.pack(fill=tk.X)

# Create  Menu Widget 1 and Sub Menu 1
my_menu_button = tk.Menubutton(
    my_menu_bar,
    text='菜单1',
)
my_menu_button.pack(side=tk.LEFT)
#menu widget
my_menu = tk.Menu(my_menu_button, tearoff=0)
my_menu_button['menu'] = my_menu
my_menu.add('command', label='子菜单1')  #Add Sub Menu 1

# Create  Menu2 and Submenu2
menu_button_2 = tk.Menubutton(
    my_menu_bar,
    text='菜单2',
)
menu_button_2.pack(side=tk.LEFT)
my_menu_2 = tk.Menu(menu_button_2, tearoff=0)
menu_button_2['menu'] = my_menu_2
my_menu_2.add('command', label='子菜单2')  # Add Sub Menu 2

#
#
# my_frame_1  and its contents
#

# creating a frame (my_frame_1)
my_frame_1 = tk.Frame(root, bd=2, relief=tk.SUNKEN)
my_frame_1.pack(side=tk.LEFT)

# add label to to my_frame_1
tk.Label(my_frame_1, text='标签').pack()

#add entry widget to my_frame_1
tv = tk.StringVar()  #discussed later
tk.Entry(my_frame_1, textvariable=tv).pack()
tv.set('I am an entry widget')

#add button widget to my_frame_1
tk.Button(my_frame_1, text='tk.Button widget').pack()

#add check button widget to my_frame_1
tk.Checkbutton(my_frame_1, text='Checktk.Button Widget').pack()

#add radio buttons to my_frame_1
tk.Radiobutton(my_frame_1, text='Radio tk.Button  Un', value=1).pack()
tk.Radiobutton(my_frame_1, text='Radio tk.Button  Dos', value=2).pack()
tk.Radiobutton(my_frame_1, text='Radio tk.Button  Tres', value=3).pack()

#tk.OptionMenu Widget
tk.Label(my_frame_1, text='Example of tk.OptionMenu Widget:').pack()
tk.OptionMenu(my_frame_1, '', "Option A", "Option B", "Option C").pack()

#adding my_image image
tk.Label(my_frame_1, text='Image Fun with Bitmap Class:').pack()
my_image = tk.BitmapImage(file="gir.xbm")
my_label = tk.Label(my_frame_1, image=my_image)
my_label.image = my_image  # keep a reference!
my_label.pack()

#
#
# frame2 and widgets it contains.
#
#

#create another frame(my_frame_2) to hold a list box, Spinbox Widget,Scale Widget, :
my_frame_2 = tk.Frame(root, bd=2, relief=tk.GROOVE)
my_frame_2.pack(side=tk.RIGHT)

#add Photimage Class Widget to my_frame_2
tk.Label(
    my_frame_2, text='Image displayed with \nPhotoImage class widget:').pack()
dance_photo = tk.PhotoImage(file='dance.gif')
dance_photo_label = tk.Label(my_frame_2, image=dance_photo)
dance_photo_label.image = dance_photo
dance_photo_label.pack()

#add my_listbox widget to my_frame_2
tk.Label(my_frame_2, text='Below is an example of my_listbox widget:').pack()
my_listbox = tk.Listbox(my_frame_2, height=4)
for line in ['Listbox Choice 1', 'Choice 2', 'Choice 3', 'Choice 4']:
  my_listbox.insert(tk.END, line)
my_listbox.pack()

#spinbox widget
tk.Label(my_frame_2, text='Below is an example of spinbox widget:').pack()
tk.Spinbox(my_frame_2, values=(1, 2, 4, 8, 10)).pack()

#scale widget
tk.Scale(
    my_frame_2, from_=0.0, to=100.0, label='Scale widget',
    orient=tk.HORIZONTAL).pack()

#LabelFrame
label_frame = tk.LabelFrame(
    my_frame_2, text="LabelFrame Widget", padx=10, pady=10)
label_frame.pack(padx=10, pady=10)
tk.Entry(label_frame).pack()

#message widget
tk.Message(my_frame_2, text='I am a Message widget').pack()

#
#
# tk.Frame 3
#
#

my_frame_3 = tk.Frame(root, bd=2, relief=tk.SUNKEN)

#text widget and associated tk.Scrollbar widget
my_text = tk.Text(my_frame_3, height=10, width=40)
file_object = open('textcontent.txt', encoding='utf-8')
file_content = file_object.read()
file_object.close()
my_text.insert(tk.END, file_content)
my_text.pack(side=tk.LEFT, fill=tk.X, padx=5)

#add scrollbar widget to the text widget
my_scrollbar = tk.Scrollbar(my_frame_3, orient=tk.VERTICAL, command=my_text.yview)
my_scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
my_text.configure(yscrollcommand=my_scrollbar.set)
my_frame_3.pack()

#
#
# tk.Frame 4
#
#
#create another frame(my_frame_4)
my_frame_4 = tk.Frame(root)
my_frame_4.pack()

my_canvas = tk.Canvas(my_frame_4, bg='white', width=340, height=80)
my_canvas.pack()
my_canvas.create_oval(20, 15, 60, 60, fill='red')
my_canvas.create_oval(40, 15, 60, 60, fill='grey')
my_canvas.create_text(
    130, 38, text='I am a tk.Canvas Widget', font=('arial', 8, 'bold'))

#
#
# A paned window widget
#
#

tk.Label(root, text='Below is an example of Paned window widget:').pack()
tk.Label(
    root,
    text='Notice you can adjust the size of each pane by dragging it').pack()
my_paned_window_1 = tk.PanedWindow()
my_paned_window_1.pack(fill=tk.BOTH, expand=2)
left_pane_text = tk.Text(my_paned_window_1, height=6, width=15)
my_paned_window_1.add(left_pane_text)
my_paned_window_2 = tk.PanedWindow(my_paned_window_1, orient=tk.VERTICAL)
my_paned_window_1.add(my_paned_window_2)
top_pane_text = tk.Text(my_paned_window_2, height=3, width=3)
my_paned_window_2.add(top_pane_text)
bottom_pane_text = tk.Text(my_paned_window_2, height=3, width=3)
my_paned_window_2.add(bottom_pane_text)

root.mainloop()

题目2:如何查看tkinter的tk版本?

参考答案:

tkinter._test()

图片.png

GUI程序设计通常有哪几部分组成?

图片.png

tkinter的重要控件有哪些?

图片.png

相关文章
|
13天前
|
人工智能 自然语言处理 程序员
体验通义灵码的AI程序员:用Python+Tkinter实现表单向config.ini写入与读取
本文介绍了如何利用通义灵码的AI程序员快速开发一个基于Python和Tkinter的表单应用程序,实现对config.ini文件的读写。通过简单的自然语言描述,通义灵码能自动生成代码框架、自动补全功能代码,并提供错误检测与修复建议,极大提高了开发效率。开发者只需安装必要库(如configparser)并配置VSCode插件TONGYI Lingma,即可轻松创建包含多个输入项和按钮的表单界面。运行程序后,用户可以编辑表单并保存数据到config.ini文件中,再次启动时数据会自动加载显示。这一过程展示了AI在编程中的高效性和灵活性,为开发者提供了全新的开发方式。
96 3
|
4月前
|
数据可视化 开发者 Python
Python GUI开发:Tkinter与PyQt的实战应用与对比分析
【10月更文挑战第26天】本文介绍了Python中两种常用的GUI工具包——Tkinter和PyQt。Tkinter内置于Python标准库,适合初学者快速上手,提供基本的GUI组件和方法。PyQt基于Qt库,功能强大且灵活,适用于创建复杂的GUI应用程序。通过实战示例和对比分析,帮助开发者选择合适的工具包以满足项目需求。
287 7
|
5月前
|
存储 C语言 索引
Python 语法及入门 (超全超详细) 专为Python零基础 一篇博客让你完全掌握Python语法
本文全面介绍了Python的基础知识,包括Python的诞生背景、为什么学习Python、Python的应用场景、Python环境的安装、Python的基础语法、数据类型、控制流、函数以及数据容器的使用方法,旨在为Python零基础读者提供一篇全面掌握Python语法的博客。
1070 1
Python 语法及入门 (超全超详细) 专为Python零基础 一篇博客让你完全掌握Python语法
|
4月前
|
数据采集 JavaScript 程序员
探索CSDN博客数据:使用Python爬虫技术
本文介绍了如何利用Python的requests和pyquery库爬取CSDN博客数据,包括环境准备、代码解析及注意事项,适合初学者学习。
180 0
|
6月前
|
前端开发 Python
python之【Tkinter模块】
python之【Tkinter模块】
86 5
|
7月前
|
安全 数据库 开发者
揭秘!Python Web开发新宠儿Web2py,轻松打造博客竟有如此奥秘?一探究竟!
【8月更文挑战第31天】Web2py是一款全功能的Python Web应用框架,以其简洁、高效和全面的特点脱颖而出。它集成了数据库抽象层、表单处理、模板引擎等模块,使Web开发变得更简单、快速和安全。本文通过构建一个简单的博客应用,详细介绍了Web2py的安装、配置及实际应用,展示了其强大的功能和直观的代码结构,适合希望提高开发效率的开发者。
118 1
|
7月前
|
前端开发 搜索推荐 JavaScript
"揭秘!Python高手如何用Sphinx玩转个人博客?从零搭建,美到犯规,技术干货一网打尽,让你的博客秒变网红级存在!"
【8月更文挑战第14天】Sphinx是Python社区中用于编写和技术分享的强大工具,以其易用性和美观的文档输出著称。本文介绍如何用Sphinx打造个性化博客。首先需安装Python、Sphinx及sphinx_rtd_theme主题。接着通过`sphinx-quickstart`命令初始化项目并配置基本选项。在`conf.py`中可自定义博客元信息和主题设置。
127 3
|
7月前
|
数据库 Java 数据库连接
Struts 2 与 Hibernate 的完美邂逅:如何无缝集成两大框架,轻松玩转高效 CRUD 操作?
【8月更文挑战第31天】本文通过具体示例介绍了如何在 Struts 2 中整合 Hibernate,实现基本的 CRUD 操作。首先创建 Maven 项目并添加相关依赖,接着配置 Hibernate 并定义实体类及其映射文件。然后创建 DAO 接口及实现类处理数据库操作,再通过 Struts 2 的 Action 类处理用户请求。最后配置 `struts.xml` 文件并创建 JSP 页面展示用户列表及编辑表单。此示例展示了如何配置和使用这两个框架,使代码更加模块化和可维护。
217 0
Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Button展示图片事件)
Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Button展示图片事件)
Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Button展示图片事件)
|
存储 区块链 数据安全/隐私保护
Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Listbox/Scrollbar)
Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Listbox/Scrollbar)
Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Listbox/Scrollbar)

热门文章

最新文章