【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之【Tkinter模块】
python之【Tkinter模块】
12 5
|
11天前
|
Python
全网最适合入门的面向对象编程教程:Python函数方法与接口-函数与方法的区别和lamda匿名函数
【9月更文挑战第15天】在 Python 中,函数与方法有所区别:函数是独立的代码块,可通过函数名直接调用,不依赖特定类或对象;方法则是与类或对象关联的函数,通常在类内部定义并通过对象调用。Lambda 函数是一种简洁的匿名函数定义方式,常用于简单的操作或作为其他函数的参数。根据需求,可选择使用函数、方法或 lambda 函数来实现代码逻辑。
|
12天前
|
机器学习/深度学习 人工智能 安全
python和Java的区别以及特性
Python:适合快速开发、易于维护、学习成本低、灵活高效。如果你需要快速上手,写脚本、数据处理、做点机器学习,Python就是你的首选。 Java:适合大型项目、企业级应用,性能要求较高的场景。它类型安全、跨平台能力强,而且有丰富的生态,适合更复杂和规模化的开发。
18 3
|
30天前
|
存储 测试技术 Python
Python 数组和列表有什么区别?
【8月更文挑战第29天】
30 4
|
30天前
|
算法 TensorFlow 算法框架/工具
写Python时不用import,你会遭遇什么
写Python时不用import,你会遭遇什么
|
30天前
|
C++ Python
python类方法中使用:修饰符@staticmethod和@classmethod的作用与区别,还有装饰器@property的使用
python类方法中使用:修饰符@staticmethod和@classmethod的作用与区别,还有装饰器@property的使用
13 1
|
1月前
|
Python
python中set和frozenset方法和区别
python中set和frozenset方法和区别
|
1月前
|
Python
python tkinter 实现简易秒表计时器
python tkinter 实现简易秒表计时器
43 1
|
1月前
|
数据可视化 文件存储 Python
【python】python基于tkinter的学生成绩管理系统(源码+数据文件)【独一无二】(二)
【python】python基于tkinter的学生成绩管理系统(源码+数据文件)【独一无二】(二)
|
1月前
|
存储 数据可视化 Python
【python】python tkinter 计算器GUI版本(模仿windows计算器 源码)【独一无二】
【python】python tkinter 计算器GUI版本(模仿windows计算器 源码)【独一无二】