【python】tkinter组件,from Tkinter import * 与 import Tkinter 的区别

简介: 【python】tkinter组件,from Tkinter import * 与 import Tkinter 的区别


前言

tkinter可以用于 Python 的 GUI 编程,提供了一些常用的组件,如按钮、标签、文本框等,方便用户进行界面设计和交互。可以通过导入 tkinter 模块来使用这些组件。

python GUI 开发中,推荐使用哪个库?

我个人推荐使用 PyQt 或者 PySide2 这两个库。

PyQt和PySide2这两者最大的区别就是协议的不同,来自于不同的开发商,但其实这两个如果要修改并兼容的话,改动并不是很大,具体的可以参照Qt官方文档介绍

虽然PyQt发布的早,并且稳定,资料也比较多,而PySide起步比较晚,直到2018年6月正式发布了PySide2的第一个版本,从0到1是最难的一步,后面就容易了,尤其发布的Qt 5.12 LTS释放了非常积极的信号,PySide2已经日趋完善,又是亲生的,还有LGPL开源协议的加持,今后PySide2有足够的理由成为Python开发者使用Qt的第一选择。

LGPL协议是一个商业友好的协议使用 LGPL 协议开发闭源程序,如果你使用动态链接的形式,那么,你可以以任何形式(商业的、非商业的、开源的、非开源的等等)发布你的应用程序。

PyQt

PyQt要比PySide推出时间早得多,它的开发商是Riverbank Computing,由于推出时间早,PyQt就比较成熟了,并且资料也很完善,最开始是有PyQt4对应的是Qt4版本,后来推出了PyQt5,对应Qt5版本,目前最新发布的版本是PyQt v5.13.0。值得注意的是PyQt的采用的是GPLv3许可证和需要购买版权的商业许可证发布的,该许可证允许开发专有应用程序,可以由开发者选择。GPLv3许可证大概意思就是说,使用PyQt后你的程序就必须要开源,如果闭源商用就会违反协议,后果自负,在国内可能很多公司部注重这个,随便在用,但是如果公司比较有影响力的话,违反协议说不定哪天收到律师函。

组件在窗体上的定位

tkinter提供了三种位置管理方式:pack() grid() place()

pack函数

padx pady是指组件之间在xy方向上的间隔大小。

anchor组件间的对齐方式

def wm_geometry(self, newGeometry=None):
    """Set geometry 几何形状to NEWGEOMETRY of the form =widthxheight+x+y. Return
    current value if None is given."""设置几何几何形状为 NEWGEOMETRY 格式 = widthxheight + x + y 返回”
    return self.tk.call('wm', 'geometry', self._w, newGeometry)
geometry = wm_geometry
# coding=gbk
import tkinter
import tkinter
Mainform=tkinter.Tk()
Mainform.geometry("250x150")
btn1=tkinter.Button(Mainform,text="1",fg="black")
btn2=tkinter.Button(Mainform,text="2",fg="black")
btn3=tkinter.Button(Mainform,text="3",fg="black")
btn3.pack(side="top")
btn2.pack(side="top")
btn1.pack(side="top")
Mainform.mainloop()

tkinter常见事件类型

常见的 tkinter 事件类型包括:Button-1、Button-2、Button-3、Double-Button-1、Double-Button-2、Double-Button-3、Triple-Button-1、Triple-Button-2、Triple-Button-3、Enter、Leave、Motion、Key、Focus-In、Focus-Out、Configure、Map、Unmap、Destroy 等。

常见事件类型

事件属性

基本使用方法

resolution解决

class Button(Widget):
    """Button widget."""
    def __init__(self, master=None, cnf={}, **kw):
        """Construct a button widget部件 with the parent MASTER.
使用父 MASTER 构造一个按钮小部件。
        STANDARD OPTIONS
            activebackground, activeforeground, anchor,
            background, bitmap, borderwidth, cursor,
            disabledforeground, font, foreground
            highlightbackground, highlightcolor,
            highlightthickness, image, justify,
            padx, pady, relief, repeatdelay,
            repeatinterval, takefocus, text,
            textvariable, underline, wraplength
        WIDGET-SPECIFIC OPTIONS特定于小部件的选项
            command, compound, default, height,
            overrelief, state, width
            命令、复合词、默认值、高度、,浮雕、状态、宽度
        """
        Widget.__init__(self, master, 'button', cnf, kw)
# coding=gbk
import tkinter
help(tkinter.Button)

from Tkinter import * 与 import Tkinter 的区别

1、如果是from Tkinter import *

那么你是导入Tkinter下的所有函数等等(注意:如果package或者module下有__all__这样的一个全局变量的话,*中取的就是__all__中的元素__all__是一个元组对象,每一个元素都是一个str,后面我看到__all__也可以用list,元素同样是str即可),你在使用的时候,可以省略掉Tkinter即可

进一步解释:__all__属于module的属性,它是一个全局变量

Python中一切都是对象全局变量则是module属性类变量则的类的属性,实例变量则是对象的属性,局部变量就可以认为是函数或方法的属性嘛

OptionMenu(self.root, variable, "one", "two", "three")

2、如果是 import Tkinter,那么不能省略掉模块名Tkinter

import Tkinter,那么不能省略掉模块名Tkinter

Tkinter.OptionMenu(self.root, variable, "one", "two", "three")

3、总结

from xxxx import *

a、如果没有__all__,则是module中所有的属性

b、如果有__all__,则为__all__中的元素(注意:__all__可以为tuple、也可以为list,看样子只要是线性表即可)

简易组件使用案例

# coding=gbk
from tkinter import *
master = Tk()
master.geometry("999x999")
#===============标签label
l_show=Label(master,text="kun")# 创建带标题的label的标签
photo=PhotoImage(file="ttqq.png")
l_show1=Label(master,image=photo)
l_show.pack(side="left")
l_show1.pack(side="left")
#====输入框
e_show=Entry(master,width=10)
e_show.pack(side="left")
#======多行文本输入框
mainloop()

总结

一语惊醒梦中人!!!

Python中一切都是对象全局变量则是module属性类变量则的类的属性,实例变量则是对象的属性,局部变量就可以认为是函数或方法的属性嘛

相关文章
|
2月前
|
存储 开发者 Python
Python 中的数据结构与其他编程语言数据结构的区别
不同编程语言都有其设计理念和应用场景,开发者需要根据具体需求和语言特点来选择合适的数据结构
|
2月前
|
数据可视化 开发者 Python
Python GUI开发:Tkinter与PyQt的实战应用与对比分析
【10月更文挑战第26天】本文介绍了Python中两种常用的GUI工具包——Tkinter和PyQt。Tkinter内置于Python标准库,适合初学者快速上手,提供基本的GUI组件和方法。PyQt基于Qt库,功能强大且灵活,适用于创建复杂的GUI应用程序。通过实战示例和对比分析,帮助开发者选择合适的工具包以满足项目需求。
158 7
|
3月前
|
存储 大数据 数据处理
Python 中的列表推导式与生成器:特性、用途与区别
Python 中的列表推导式与生成器:特性、用途与区别
37 2
|
3月前
|
存储 C语言 Python
解密 Python 的变量和对象,它们之间有什么区别和联系呢?
解密 Python 的变量和对象,它们之间有什么区别和联系呢?
32 2
|
4月前
|
前端开发 Python
python之【Tkinter模块】
python之【Tkinter模块】
58 5
|
4月前
|
存储 Python
Python中类方法、实例方法与静态方法的区别
这三种方法的正确使用可以使代码更加清晰、组织良好并且易于理解,从而有效地支持软件开发的面向对象编程范式。
67 1
|
3月前
|
机器学习/深度学习 缓存 Linux
python环境学习:pip介绍,pip 和 conda的区别和联系。哪个更好使用?pip创建虚拟环境并解释venv模块,pip的常用命令,conda的常用命令。
本文介绍了Python的包管理工具pip和环境管理器conda的区别与联系。pip主要用于安装和管理Python包,而conda不仅管理Python包,还能管理其他语言的包,并提供强大的环境管理功能。文章还讨论了pip创建虚拟环境的方法,以及pip和conda的常用命令。作者推荐使用conda安装科学计算和数据分析包,而pip则用于安装无法通过conda获取的包。
170 0
|
4月前
|
Python
全网最适合入门的面向对象编程教程:Python函数方法与接口-函数与方法的区别和lamda匿名函数
【9月更文挑战第15天】在 Python 中,函数与方法有所区别:函数是独立的代码块,可通过函数名直接调用,不依赖特定类或对象;方法则是与类或对象关联的函数,通常在类内部定义并通过对象调用。Lambda 函数是一种简洁的匿名函数定义方式,常用于简单的操作或作为其他函数的参数。根据需求,可选择使用函数、方法或 lambda 函数来实现代码逻辑。
|
4月前
|
机器学习/深度学习 人工智能 安全
python和Java的区别以及特性
Python:适合快速开发、易于维护、学习成本低、灵活高效。如果你需要快速上手,写脚本、数据处理、做点机器学习,Python就是你的首选。 Java:适合大型项目、企业级应用,性能要求较高的场景。它类型安全、跨平台能力强,而且有丰富的生态,适合更复杂和规模化的开发。
83 3
|
4月前
|
存储 编译器 Linux
Cython 和 Python 的区别
Cython 和 Python 的区别
55 0