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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,406评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,732评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,711评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,380评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,432评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,301评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,145评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,008评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,443评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,649评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,795评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,501评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,119评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,731评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,865评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,899评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,724评论 2 354

推荐阅读更多精彩内容