python GUI(Tkinter)

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

Tkinter简介

是python内置的标准GUI库在安装python后导入模块即可正常使用Tk和Tkinter可在大多数的Unix以及Windows和Macintosh系统上运行。

关于Tkinter的导入注意大小写

在2.x版本上编写为from Tkinter import *

在3.x版本上编写为from tkinter import *


Tkinter组件

控件描述
Button按钮控件
Canvas画布控件显示图形元素如线条或文本
Checkbutton多选框控件不存在互斥可多个选择
Entry输入控件用于输入或者显示文本内容
Frame框架控件在屏幕上显示一个矩形区多用于作为容器
Label标签控件可用于显示文本和位图
Listbox列表控件
Menubutton菜单项按钮控件
Menu菜单控件显示菜单栏下拉菜单和弹出菜单等
Message消息控件用于显示多行文本与Label类似
Radiobutton多选框控件存在互斥多个只能选择一个
Scale范围控件显示一个数值刻度并设定范围
Scrollbar滚动条控件当内容超过可视化区域的时候使用比如列表框
Text文本控件用于显示多行文本
Toplevel容器控件用来提供一个单独的对话框和Frame类似
Spinbox输入控件与Entry类似但是可以指定输入范围值
PanedWindow窗口布局管理的插件可以包含一个或多个子控件
LabelFrame容器控件常用于负责的窗口布局
tkMessageBox用于显示你应用程序的消息框

Tkinter组件的共同属性

属性描述
Dimension控件大小
Color控件颜色
Font控件字体
Anchor锚点
Relief控件样式
Bitmap位图
Cursor光标

Tkinter组件的布局管理有三种pack, grid,place

关于布局管理的推荐网友博客感谢分享https://blog.csdn.net/liuxu0703/article/details/54428405

关于Grid讲解的推荐网友博客https://blog.csdn.net/ligou8000/article/details/46331075

我只简单的说明grid的几种属性用于大家对下面控件示例代码的理解。

option说明
row控件摆放的行数值从0开始
column控件摆放的列数值从0开始
rowspan可指定控件跨越多行显示
column可指定控件跨越多列显示
padxx轴方向的填充在控件外部的左右部分填充指定长度数值必须大于0
padyy轴方向的填充在控件外部的上下部分填充指定长度数值必须大于0
sticky控件的对齐方式默认会居中显示可以使用的值有N/S/E/W分别代表上下左右。如果你希望控件左对齐的话可以编写程序 sticky=E如果你希望控件左上对齐的话可以编写程序: sticky=E+N

Tkinter的使用示例首先搭建框架相关

# -*- coding:utf-8 -*-
# __author__ = 'Code~'

import Tkinter                  # 引用Tkinter库
from Tkinter import *           # 导入Tkinter库方法

DEF_PATH = 'C:\Python27'
# 消息框模块
class MsgBox:
    def __init__(self):
        # 创建Tkinter对象
        self.root = Tkinter.Tk()
        # 标题
        self.root.title('Tkinter Demo')
        # 设定窗口大小,注意‘x’一定要小写否则TclError: bad geometry specifier "500X400"
        self.root.geometry('500x400')
        # 初始化UI相关
        self.initUI()
        # 消息循环
        self.root.mainloop()
    
    # 初始化控件
    def initUI(self):
        root = self.root   
 

if __name__  == "__main__":
    messageBox = MsgBox()

img

接下来我们会将UI控件的示例编写在方法initUI中为了查看方便会分块展示


Button

# text按钮标题
# command: 事件绑定当按钮被点击时会执行
Button(self.root, text='按钮', command=self.BtnEvent).grid(row=0, column=0)

def BtnEvent(self):
    print(u'您点击了按钮')

img


Checkbutton

self.chkVar = []                    
for i in range(4):
    _str = 'CheckBtn' + str(i)  # 标题
    # 注意此处不可编写为self.chkVar[i] = IntVar()
    # 否则报错IndexError: list assignment index out of range
    self.chkVar.append(IntVar())
    # text: 标题
    # variable: 对象整型变量
    # command: 关联事件
    chkBtn = Checkbutton(self.root,text=_str,variable=self.chkVar[i],command=self.chkEvt)
    chkBtn.grid(row=1, column=(i+1))

# 事件
def chkEvt(self):
    for i in range(4):
       # 获取选中状态如果选中为1否则为0
        index = self.chkVar[i].get()     
        if index > 0:
             print(u'你选择的按钮为CheckBtn' + str(i)) 

img


Radiobutton

# 注意此处可不用使用列表
self.radioVar = IntVar()    
for i in range(1,4):
    _str = 'RaidoBtn' + str(i)
    # text: 标题
    # variable: 对象的整型变量
    # value: 获取选择对象的索引
    radioBtn = Radiobutton(self.root,text=_str,variable=self.radioVar,value=i,command=self.radioEvt)
    radioBtn.grid(row=2, column=(i+1))

def radioEvt(self):
        index = self.radioVar.get()
        print(u'你选择的radioButton的索引为:' + str(index))

img


Label

#Label文本
strContent = "这是标签控件,属性bg设置背景颜色fg设置文本颜色"
label = Label(self.root, text=strContent,bg='red',fg='blue',height=3)
label.grid(row=0, column=0)     

img


Entry

def initUI(self):
    #Entry
    # 不可使用text属性来设定
    en0 = Entry(self.root, text='请输入文本...',width=50, bg='red')
    en0.grid(row=1, column=0, sticky='E')
    # 使用StringVar()来绑定Entry通过set来设定初始化值通过get来获取其输入值可改变
    self.inputVar = StringVar()
    self.inputVar.set('请输入内容....')
    en1 = Entry(self.root, textvariable=self.inputVar, width=50,bg='yellow')
    en1.grid(row=2, column=0, sticky='E')
    Button(self.root, text='确认1', command=self.sureEvent1).grid(row=2, column=1)
    # 密码输入框
    self.inputVar2 = StringVar()
    self.inputVar2.set('请输入密码')
    en2 = Entry(self.root, textvariable=self.inputVar2, width=50,show='*')
    en2.grid(row=3, column=0, sticky='E')
    Button(self.root, text='确认2', command=self.sureEvent2).grid(row=3, column=1)
    # 设置输入框属性
    # 属性值有4个normal(可写),disabled(不可操作), readonly(只读不可操作),通过state来设定
    self.inputVar3 = StringVar()
    self.inputVar3.set('readonly')
    en3 = Entry(self.root, textvariable=self.inputVar3, width=50,state='readonly')
    en3.grid(row=4, column=0, sticky='E')
    Button(self.root, text='确认3', command=self.sureEvent3).grid(row=4, column=1)
    
def sureEvent1(self):
    inputStr = self.inputVar.get()
    print(u'您的第二个输入框内容' + inputStr)

def sureEvent2(self):
    inputStr = self.inputVar2.get()
    print(u'您的第三个输入框内容' + inputStr)

def sureEvent3(self):
    inputStr = self.inputVar3.get()
    print(u'您的第四个输入框内容' + inputStr)

img

End

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: python