用Tkinter打造GUI开发工具(4) Tkinter的Tk主窗口

112 篇文章 100 订阅
106 篇文章 119 订阅

用Tkinter打造GUI开发工具(4) Tkinter的Tk主窗口
通过前面学习,我们知道了建立Tk主窗口,是为了更好地管理Tkinter程序。Tk()对象root通过Wm给我们提供了操作管理Tkinter窗口的方法,通过Misc类提供了操作管理小部件的方法。因此使用Tkinter开发程序首先需要建立Tk()主窗口。
Python3中使用 Tkinter的使用流程如下。
1)导入Tkinter模块。

import  tkinter  as  tk   #导入Tkinter模块,仅用于Python3

2)创建Tkinter主窗口。

root =tk.Tk()

3)在主窗口上创建控件,例如Label标签等。

label =tk.Label(root,text = '窗口内容在此')

4)在主窗口上放置控件,放置方法可选pack()、 grid()、 place()等放置方法。

label.pack()

5)进入主循环。Tkinter一般只有执行mainloop()方法才能运行,才能创建窗口。前面我们也学习了Misc类,可以使用update()方法,在主循环启动前,执行Tkinter程序的一些操作。但是执行完毕,Tkinter程序就停止了。只有mainloop()方法才会使Tkinter程序循环操作,这时才会接收Tkinter的动作,例如事件处理,鼠标或键盘处理操作,按钮点击动作操作等等。

root.mainloop()

下面介绍Tk主窗口的一些方法。
1.获取屏幕和窗口信息
我们可以用下面方法获取屏幕和窗口信息,主要指像素大小。

screenwidth = root.winfo_screenwidth()  #获取屏幕宽度(单位:像素)
screenheight = root.winfo_screenheight()  #获取屏幕高度(单位:像素)
win_width = root.winfo_width()   #获取窗口宽度(单位:像素)
win_height = root.winfo_height()  #获取窗口高度(单位:像素)
x=root.winfo_x()   #获取窗口x坐标(单位:像素)
y=root.winfo_y()   #获取窗口y坐标(单位:像素)

2.设置窗口方法
设置窗口方法主要是改变窗口标题、大小、位置、状态等操作方法。
1)设置窗口标题
Tkinter主窗口对象root包含很多窗口操作的方法。我们可以使用Wm类方法,也可以使用Tkinter中定义的操作方法,Tkinter中定义的操作方法不包含字符“wm_”。

root.wm_title('窗口标题')  #Wm类设置窗口标题方法
root.title('窗口标题')  #Tkinter中设置窗口标题方法

后面我们主要介绍Tkinter为我们提供的操作方法。
2)设置窗口长宽和窗口的位置
Tkinter为我们改变窗口大小和放置在屏幕位置的操作方法。root.geometry()可以根据输入的屏幕宽高,坐标来改变Tkinter窗口的位置和大小。root.geometry()需要以字符串的方式提供参数。格式如root.geometry(‘300x200+150+250’),参数含义为屏幕宽度300,高度200,x坐标150,y坐标250。其中不能有变量或其它字符,因此我们可以用字符串格式’{}x{}+{}+{}’.format(width,height, x, y)来输入整型变量参数(width,height, x, y)。

width=300  #把窗口宽度(单位:像素)300赋值给变量width
height=200  #把窗口高度(单位:像素)300赋值给变量height
x,y=150,250  #给屏幕坐标(x,y)赋值(100,200)
root.geometry('{}x{}+{}+{}'.format(width,height, x, y))  #改变窗口位置和大小

如果仅仅想改变窗口的大小,可以用格式root.geometry(‘600x500),或者用字符串格式’{}x{}’.format(width,height)。

width=300  #把窗口宽度(单位:像素)300赋值给变量width
height=200  #把窗口高度(单位:像素)300赋值给变量height
root.geometry('{}x{}'.format(width,height))  #改变窗口大小

3)设置窗口的新图标
Tkinter的方法root.iconbitmap(bitmap)可以设置新的窗口图标,参数bitmap是包含路径的ico文件名。

root.iconbitmap(‘tt.ico’)

4)窗口的其它操作
Tkinter还提供有很多关于窗口的操作方法,我们这里给出常用的窗口操作方法。
(1)设置最顶层窗口
Tkinter窗口的root. attributes(’-topmost’,1)方法,把窗口设置为顶层窗口。即总是在最顶层显示窗口,覆盖了其它窗口。这个属性主要针对Windows系统平台。

root. attributes('-topmost',1)  #参数1,设置顶层窗口,覆盖其它窗口。
root. attributes('-topmost',0)  #参数0,正常窗口,允许其它窗口覆盖。

(2)设置工具栏样式窗口
Tkinter窗口的root.attributes("-toolwindow", 1)方法,可以把窗口设置为工具栏样式窗口,窗口顶栏没有了最大化和最小化按钮,只有关闭窗口的按钮。

root.attributes("-toolwindow", 1)  #参数1,设置工具栏样式窗口。
                             #参数1,没有最大化和最小化的按钮。
root.attributes("-toolwindow", 0)  #参数0,设置为普通窗口。

下面看一个Tkinter窗口设置工具栏样式窗口示例。

import  tkinter  as  tk   #导入Tkinter模块,仅用于Python3
root =tk.Tk()  #建立Tkinter主窗口root
root.geometry('{}x{}+{}+{}'.format(200,100, 250, 350)) #改变窗口位置和大小
root.iconbitmap(bitmap='tt.ico')  #设置窗口新图标
root. title('窗口标题')  #Tkinter中设置窗口标题方法
root.attributes("-toolwindow", 1)  #参数1,设置工具栏样式窗口。
root. attributes('-topmost',1)  #参数1,设置顶层窗口,覆盖其它窗口。
root.mainloop()  #Tkinter的mainloop()方法

程序运行会产生下图的一个窗口。
在这里插入图片描述

(3)隐藏窗口标题栏
Tkinter窗口的root.overrideredirect(True)方法,可以隐藏窗口标题栏。即不显示窗口标题和最大化、最小化、关闭按钮。root.overrideredirect(False)恢复显示窗口标题栏。
使用中请谨慎,没有关闭按钮,Tkinter窗口和程序没法关闭。

root.overrideredirect(True)  #参数True,隐藏窗口标题栏。
root.overrideredirect(False)  #参数False,恢复显示窗口标题栏。

(4)窗口最大化和最小化
Tkinter窗口的root.state()方法,仅用于Windows系统。
root.state(“zoomed”)方法,使窗口最大化。
root.state(“iconic”)方法,使窗口隐藏,只在Windows系统程序栏显示程序图标,相当于窗口最小化。
root.state(“normal”)方法,使窗口还原为普通状态。

root.state("zoomed")  #窗口最大化。
root.state("iconic")   #隐藏窗口,相当于窗口最小化。
root.state("normal")  #设置为普通窗口。

(5)设置全屏窗口
Tkinter窗口的root.attributes("-fullscreen", True)方法,可以把窗口设置为全屏窗口。
root.attributes("-fullscreen", False)方法,取消全屏窗口,还原为普通窗口。
看来用Tkinter开发图形游戏也不错,在全屏状态下,用Windows热键“Alt+F4”关闭这个全屏的Tkinter窗口。

root.attributes("-fullscreen", True)  #设置全屏窗口,没有Windows屏幕了。
root.attributes("-fullscreen", False)  #取消全屏窗口,还原为普通窗口。

(6)设置窗口透明度
Tkinter窗口的root.attributes("-alpha",n)方法可以设置窗口的透明度。透明度参数n从0到1之间,1是不透明,0是全透明。

root.attributes("-alpha",0.8)   #设置窗口的透明度0.8

本系列是我正在编写的书籍暂定书名<Python3下Tkinter高级编程>,内容都来自这个书中一些章节。大家可以学习,不要抄袭发表。
<Python3下Tkinter高级编程>的大致目录如下。有兴趣参与编写的朋友可以加我QQ:2775205。
我的手机:18578755056

Python3下Tkinter高级编程_目录
00.1 前言
第一章 Tkinter介绍
1.1 Tkinter介绍
1.2 Tkinter工作原理
1.3 Tkinter类的构成
1.4 Tkinter的窗口类
1.4.1 Tk类
1.4.2 Toplevel类
1.5 Tkinter的小部件类

第二章 Tkinter开发
2.1 Tk主窗口
2.2 Toplevel弹出窗口
2.3 Menu主菜单
2.4 Menu弹出菜单
2.5 Pack
2.6 Place
2.7 Grid
2.8 Label
2.9 Button
2.10 Entry
2.11 Menubutton
2.12 Checkbutton
2.13 Radiobutton
2.14 Scale
2.15 Frame
2.16 LabelFrame
2.17 Spinbox
2.18 Text
2.19 Listbox
2.20 Canvas
2.21 PanedWindow
2.22 Message

第三章 Tkinter.ttk开发
3.1 ttk.Style
3.2 ttk.Button
3.3 ttk.Checkbutton
3.4 ttk.Entry
3.5 ttk.Combobox
3.6 ttk.Frame
3.7 ttk.Label
3.8 ttk.Labelframe
3.9 ttk.Menubutton
3.10 ttk.Notebook
3.11 ttk.Panedwindow
3.12 ttk.Progressbar
3.13 ttk.Radiobutton
3.14 ttk.Scale
3.15 ttk.Scrollbar
3.16 ttk.Separator
3.17 ttk.Sizegrip
3.18 ttk.Spinbox
3.19 ttk.Treeview
3.20 ttk.LabeledScale
3.21 ttk.OptionMenu

第四章 Tkinter.tix开发
4.1 tix.Tk
4.2 tix.Form
4.3 tix.DisplayStyle
4.4 tix.Balloon
4.5 tix.ButtonBox
4.6 tix.ComboBox
4.7 tix.Control
4.8 tix.DirList
4.9 tix.DirTree
4.10 tix.DirSelectBox
4.11 tix.ExFileSelectBox
4.12 tix.DirSelectDialog
4.13 tix.ExFileSelectDialog
4.14 tix.FileSelectBox
4.15 tix.FileSelectDialog
4.16 tix.FileEntry
4.17 tix.HList
4.18 tix.InputOnly
4.19 tix.LabelEntry
4.20 tix.LabelFrame
4.21 tix.ListNoteBook
4.22 tix.Meter
4.23 tix.NoteBook
4.24 tix.OptionMenu
4.25 tix.PanedWindow
4.26 tix.PopupMenu
4.27 tix.ResizeHandle
4.28 tix.ScrolledHList
4.29 tix.ScrolledListBox
4.30 tix.ScrolledText
4.31 tix.ScrolledTList
4.32 tix.ScrolledWindow
4.33 tix.Select
4.34 tix.Shell
4.35 tix.DialogShell
4.36 tix.StdButtonBox
4.37 tix.TList
4.38 tix.Tree
4.39 tix.CheckList
4.40 tix.Grid
4.42 tix.ScrolledGrid

第五章 Tkinter高级开发
5.1 在Tk窗口中使用OpenGL图形
5.2 在Tk窗口中显示matplotlib.pyplot图形
5.3 在Tk窗口中显示OpenCV图形
5.4 Tkinter的二次开发

第六章 Tkinter可视化开发工具设计

  • 13
    点赞
  • 89
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
这是一个VB6的IDE插件(Addin),使用VB6的IDE直接设计Python的界面。 Python和VB都是能让人快乐的编程语言,我使用了Python之后,很多自己使用的工具都使用Python开发或改写了,因为最终实现的Python代码实在太短了(相比VB),有时候Python一行代码就可以实现VB一个函数的功能。 Python就是这种让人越用越开心的语言。 不过说实在,使用Python开发GUI界面还是麻烦了一些了,自带的标准库Tkinter使用起来非常简单,不过对于习惯了VB拖放控件完成界面设计的偶来说,还是不够人性化。TK也有一个工具叫GUI Builder,不过它使用Layout布局,不够直观,而且用起来很不爽。。 至于PyQt/wxPythonGUI库,尽管有可视化设计工具,但总感觉做一般的轻量级应用是杀鸡用牛刀, 而且不够环保,不够低碳,要带一个很大的库,需要目标机器上夜同样安装了PyQt/wxPython,做不了绿色软件。 所以最终的结果是我更喜欢Tkinter,用起来很简单,绿色环保,真正的跨平台,一个py文件到处运行(担心泄密就编译成pyc)。 很多人都认为TK的界面不够美观,不过我经过多次实验后发现导入Python自带的标准TTK题库,界面非常Native,不输PyQt/wxPython。 此Addin默认启用TTK支持,也可选择关闭。 总而言之,轻量级GUITK+TTK足够。 使用此Addin,你可以不用写一句代码就可以生成一个完整可运行的PythonGUI界面,支持2.X和3.X。 安装方法:将压缩包解压到你希望的目录,然后执行Setup.exe完成注册插件过程,打开VB6就可以用了。 在VB窗体上设计完成界面后(你可以大胆的设置各控件的属性,Addin尽量将其翻译为tkinter的控件属性),点工具栏上的VisualTkinter(图标为一片羽毛),再点'生成代码'按钮,即可生成可运行的Python代码,可以拷贝至剪贴板或保存至文件。 一般情况下你可以不用再改变tkinter的控件属性,但是如果你熟悉tkinter,需要更多的控制,可以一一核对各属性,并且修改,再生成代码。 当然除了用来设计界面外,此ADDIN内置的各控件属性列表可以做为编程参考,比较完整,除了极少数我认为大多数人都不用的属性外,属性定义基本上是我从官方的tkinter文档直接翻译的。 如果还没有VB6,网上找一个VB6精简版即可,不到20M,小巧玲珑。 代码已经在Github上托管,更新的版本可以在这上面找到,需求也可以在上面提: https://github.com/cdhigh/Visual-Tkinter-for-Python
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荷蒲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值