摄影作品网站风景,江苏省建设执业网站,泰安网络公司推荐,天津网站设计公司一、说明 python在用户界面开发中#xff0c;其中有QT5#xff0c;和Tkinter#xff1b;对于实际项目#xff0c;界面需要高大上#xff0c;因此用QT5#xff0c;对于开发人员的演示程序#xff0c;或简单程序中#xff0c;不建议QT5#xff1b;用Tkinter已经足够。本…一、说明 python在用户界面开发中其中有QT5和Tkinter对于实际项目界面需要高大上因此用QT5对于开发人员的演示程序或简单程序中不建议QT5用Tkinter已经足够。本文做一个Tkinter练习将最基本的功能实现起来就是花费少的时间实现更多的效益。
二、最基本窗口实现
2.1 导入程序包 包导入
from tkinter import *
from tkinter import ttk
2.2 窗口、应用、隐窗口 作为Tkinter的窗口由两个方面组成显式Frame窗口隐式窗口还有应用实体作为总体如图所示 程序中显式Frame窗口隐式窗口应用实体三者的关系是
程序中至少有一个app也就是root程序中至少有一个FrameFrame是可以看见的对象隐窗口是可见窗口的属性参数。设定Frame的属性需要通过approot访问。隐含窗口不是对象不需要专门生成。 2.3 显式生成root和Frame
root Tk()
frm ttk.Frame(root, padding10)
frm.grid()
root.geometry(300x300)
root.mainloop()
2.4 隐含root生成窗口
frm ttk.Frame(None)
frm.master.title(Sample application)
frm.master.geometry(300x300)
frm.mainloop()
2.5 加点小控件
from tkinter import *
from tkinter import ttk
root Tk()
frm ttk.Frame(root, padding10)
frm.grid()
root.geometry(300x300)
ttk.Label(frm, textHello World!).grid(column0, row0)
ttk.Button(frm, textQuit, commandroot.destroy).grid(column1, row0)
root.mainloop()
2.6 封装的窗口
#!/usr/bin/env python 1
import Tkinter as tk 2class Application(tk.Frame): 3def __init__(self, masterNone):tk.Frame.__init__(self, master) 4self.grid() 5self.createWidgets()def createWidgets(self):self.quitButton tk.Button(self, textQuit,commandself.quit) 6self.quitButton.grid() 7app Application() 8
app.master.title(Sample application) 9
app.master.geometry(300x300) 10
app.mainloop()
三、关于小控件
3.1 实现一个完整窗口 首先设计一个窗口将Frame和widget的布局设计好如下图 3.2 实现窗口
语句含义master Tk()# 生成Tkinter主窗口l1 Label(master, textHeight) l2 Label(master, textWidth)生成文字标签对象根是主窗l1.grid(row0, column0, stickyW, pady2) l2.grid(row1, column0, stickyW, pady2) # grid 方法分别排列标签 # 指定的行和列 # sticky是控件在cell的摆放见下面。 e1 Entry(master) e2 Entry(master) # 条目小部件用于从用户那里获取条目 e1.grid(row0, column1, pady2) e2.grid(row1, column1, pady2)# 这将排列条目小部件e1 Entry(master) e2 Entry(master) # 条目小部件用于从用户那里获取条目img PhotoImage(file prize.png) img1 img.subsample(2, 2) # 添加图像记住图像应该是 PNG 而不是 JPG Label(master, imageimg1).grid(row0, column2, columnspan2, rowspan2, padx5, pady5)# 创建标签并贴上图片
3.3 关于sticky 在cell中如何摆放小控件stickytk.??,其中就是如下图所指定 如果您不提供粘性属性则默认行为是将小部件在单元格中居中。您可以使用 Stickytk.NE右上角、tk.SE右下角、tk.SW左下角或 tk.NW左上角将小部件放置在单元格的一角。您可以使用 Stickytk.N顶部中心、tk.E右侧中心、tk.S底部中心或 tk.W左侧中心将小部件定位在单元格一侧的中心。使用 Stickytk.Ntk.S 垂直拉伸小部件但使其水平居中。使用 Stickytk.Etk.W 水平拉伸它但使其垂直居中。使用 Stickytk.Ntk.Etk.Stk.W 水平和垂直拉伸小部件以填充单元格。其他组合也将起作用。例如stickytk.Ntk.Stk.W 将垂直拉伸小部件并将其放置在西左墙上。
3.4 全部代码如下
from tkinter import *
from tkinter.ttk import *# creating main tkinter window/toplevel
master Tk()# this will create a label widget
l1 Label(master, textHeight)
l2 Label(master, textWidth)# grid method to arrange labels in respective
# rows and columns as specified
l1.grid(row0, column0, stickyW, pady2)
l2.grid(row1, column0, stickyW, pady2)# entry widgets, used to take entry from user
e1 Entry(master)
e2 Entry(master)# this will arrange entry widgets
e1.grid(row0, column1, pady2)
e2.grid(row1, column1, pady2)# checkbutton widget
c1 Checkbutton(master, textPreserve)
c1.grid(row2, column0, stickyW, columnspan2)# adding image (remember image should be PNG and not JPG)
img PhotoImage(file prize.png)
img1 img.subsample(2, 2)# setting image with the help of label
Label(master, imageimg1).grid(row0, column2,columnspan2, rowspan2, padx5, pady5)# button widget
b1 Button(master, textZoom in)
b2 Button(master, textZoom out)# arranging button widgets
b1.grid(row2, column2, stickyE)
b2.grid(row2, column3, stickyE)# infinite loop which can be terminated
# by keyboard or mouse interrupt
mainloop()
最基本的窗口实现这里提出两个方法各自实现并对照。 方法1
方法2