python根窗口的创建_Python接口Tkinter的GUI设计简介,界面,入门,tkinter

根窗口Tk

import tkinter as tk # 导入

window = tk.Tk() # 实例化

window.title('My Window') # 设置窗口名字

window.geometry('500x300') # 设置窗口大小

window.mainloop() #窗口循环显示

顶层Toplevel

与Frame类似,但是它包含窗体属性(如Title)

标签Label

Label:显示一个文本或图象。

大纲

1.显示文本

2.显示图像

1.显示文本

l = tk.Label(window, #标签基于window窗口

text='你好!this is Tkinter', #标签初始值

bg='green', #标签背景颜色

fg='white', #标签字体颜色

font=('Arial', 12), #标签字体与字号

width=30, height=2)#标签长高

l.pack() #放置标签

#标签值

#标签值常量

text='你好!this is Tkinter'

#标签值变量

textvariable=var

#其中var = tk.StringVar(),将label标签的内容设置为字符类型

#标签长高

width=30, height=2

#长和高指字符长和高,height=2,为标签有2个字符高

# 放置标签

l.pack()

l.place()

#有两种,区别是:

2.显示图像

按钮Button

Button:包含文本或图象。按钮关联Python函数或方法。当按钮按下,调用相关联的函数或方法。

大纲

1.文本按钮

2.图像按钮

b = tk.Button(window, #按钮基于window窗口

text='hit me', #按钮初始值

font=('Arial', 12), #按钮字体和字号

width=10, height=1, #按钮长高

command=hit_me) #按钮关联的函数

b.pack() #放置按钮

#按钮关联的函数

command

#调用函数写法def hit_me():

bind

#调用函数写法def hit_me(even):

#使用方法:窗体对象.bind(事件类型,回调函数)

t=Label(window, text='标签')

t.bind(, hit_me) # 鼠标左键点击时调用函数

#事件类型

#表示鼠标左键单击

#表示鼠标中键单击

#表示鼠标右键单击

#表示A键被按下

#表示按下Ctrl和V键

#表示按下的是F1键

单行文本框Entry

e = tk.Entry(window,

show=None, # 显示成明文形式

#show='*', # 显示成密文形式

font=('Arial', 14)) #文本框字体字号

e.pack() #放置文本框

多行文本框Text

t = tk.Text(window, height=3)

t.pack()

#文本框值的显示

var = entry.get() #获得单行文本框内值

var = text.get('i.j', 'end')#获得多行文本框内值(从i行j列开始,0.0)

t.insert('insert', var) #文本框光标处传入var值

t.insert('end', var) #文本框最后处传入var值

e2.delete(0,'end') #清除单行文本框内容

t2.delete('0.0','insert') #清除多行文本框内容

滚动文本框

text与scroll结合

#需要引入模块

from tkinter import scrolledtext

#scrolledtext.ScrolledText像Text一样使用即可

菜单Menu

#创建菜单

menubar = tk.Menu(window)

# 创建menubar子菜单栏1filemenu

filemenu = tk.Menu(menubar, tearoff=0)

# 菜单menubar添加子菜单,子菜单为filemenu,名称定为'File'

menubar.add_cascade(label='File', menu=filemenu)

# 子菜单filemenu添加触发单元,触发单元触发do_job函数,名称定为New、Open、Save

filemenu.add_command(label='New', command=do_job)

filemenu.add_command(label='Open', command=do_job)

filemenu.add_command(label='Save', command=do_job)

# 创建filemenu子菜单栏submenu

submenu = tk.Menu(filemenu, tearoff=0)

# 菜单filemenu添加子菜单,子菜单为submenu,名称定为Import'

filemenu.add_cascade(label='Import', menu=submenu)

# 子菜单submenu添加触发单元,触发单元触发do_job函数,名称定为'Submenu_1'

submenu.add_command(label='Submenu_1', command=do_job)

#放置菜单

window.config(menu=menubar)

框架Frame

# 创建主frame,基于window窗口

frame = tk.Frame(window)

frame.pack()

# 创建次frame,基于frame

frame_l = tk.Frame(frame)

frame_r = tk.Frame(frame)

frame_l.pack(side='left')

frame_r.pack(side='right')

弹窗messageBox

import tkinter.messagebox # 要使用messagebox先要导入模块

tkinter.messagebox.showinfo(title='Hi', message='你好!') # 提示信息对话窗

tkinter.messagebox.showwarning(title='Hi', message='有警告!') # 提出警告对话窗

tkinter.messagebox.showerror(title='Hi', message='出错了!') # 提出错误对话窗

print(tkinter.messagebox.askquestion(title='Hi', message='你好!')) # 询问选择对话窗return 'yes', 'no'

print(tkinter.messagebox.askyesno(title='Hi', message='你好!')) # return 'True', 'False'

print(tkinter.messagebox.askokcancel(title='Hi', message='你好!')) # return 'True', 'False'

import tkinter.messagebox # 要使用messagebox先要导入模块

def hit_me():

tkinter.messagebox.showinfo(title='Hi', message='你好!') # 提示信息对话窗

# tkinter.messagebox.showwarning(title='Hi', message='有警告!') # 提出警告对话窗

# tkinter.messagebox.showerror(title='Hi', message='出错了!') # 提出错误对话窗

# print(tkinter.messagebox.askquestion(title='Hi', message='你好!')) # 询问选择对话窗return 'yes', 'no'

# print(tkinter.messagebox.askyesno(title='Hi', message='你好!')) # return 'True', 'False'

# print(tkinter.messagebox.askokcancel(title='Hi', message='你好!')) # return 'True', 'False'

# 按钮触发

tk.Button(window, text='hit me', bg='green', font=('Arial', 14), command=hit_me).pack()

三种放置方式pack/grid/place

基于A的控件B1默认居中于A顶部

基于A的控件B2默认居中于A顶部,在B1下方

控件位置由pack()决定

B1.pack(side=‘left’) B1在A最左侧

B2.pack(side=‘right’)B2在A最右侧

1. 方格Grid

for i in range(3):

for j in range(3):

tk.Label(window, text=1).grid(row=i, column=j, padx=10, pady=10, ipadx=10, ipady=10)

以上的代码就是创建一个三行三列的表格,其实 grid 就是用表格的形式定位的。这里的参数 row 为行,colum 为列,padx 就是单元格左右间距,pady 就是单元格上下间距,ipadx是单元格内部元素与单元格的左右间距,ipady是单元格内部元素与单元格的上下间距。

button1.grid(row=2, column=0, sticky=W)

sticky=W指靠西方位,即左

2. Pack

上下左右排列

tk.Label(window, text='P', fg='red').pack(side='top') # 上

tk.Label(window, text='P', fg='red').pack(side='bottom') # 下

tk.Label(window, text='P', fg='red').pack(side='left') # 左

tk.Label(window, text='P', fg='red').pack(side='right') # 右

3. Place

给精确的坐标来定位,如此处给的(50, 100),就是将这个部件放在坐标为(x=50, y=100)的这个位置, 后面的参数 anchor=‘nw’,就是前面所讲的锚定点是西北角。

tk.Label(window, text='Pl', font=('Arial', 20), ).place(x=50, y=100, anchor='nw')

显示与隐藏

控件

widget.pack() #显示

widget.pack_forget() #隐藏

窗口

window.withdraw() #隐藏

window.destroy() #关闭

window.update() #显示中可有可无

window.deiconify() #显示

通过控件、容器的不断关闭显示,实现主窗口中页面的载入。

局部变量变全局变量

global x

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值