本篇文章给大家谈谈python二级用哪个版本的软件,以及二级python 值不值得考,希望对各位有所帮助,不要忘了收藏本站喔。
大家好,给大家分享一下如何用python绘制六角形,很多人还不知道这一点。下面详细解释一下。现在让我们来看看!
大家好,小编为大家解答python图形界面开发不好看的问题。很多人还不知道python图形化界面开发工具,现在让我们一起来看看吧!
本篇文章给大家谈谈python图形界面开发不好看,以及python图形化界面开发工具,希望对各位有所帮助,不要忘了收藏本站喔python做个笑脸。
1.根窗体
(1)创建根窗体对象
①():创建一个根窗体对象python六瓣花的画法。使用后会立即显示窗口,别忘记用root接收高中信息技术python试题。
②root.title(name):设置根窗体的标题。
③root.geometry('aaaxbbb'):设置根窗体的尺寸。注意这里的乘号是小写字母x,aaa为宽,bbb为高。
④root.mainloop():监听上方代码,封锁下方代码,直到窗口被关闭。
import tkinter
root = ()
root.title('myapp') #不要写成root.title='myapp',这与c++窗体不同
root.geometry('500x300')
root.mainloop()
(2)控件布局
.pack()方法(用Label举例)
①tkinter.Label(root,..,text,fg,relief):创建一个标签对象。其中,root是根窗体;text是标签文本;fg是标签颜色,各种颜色用英文表示;relief是标签边缘属性,relief=tkinter.GROOVE为边缘凹陷属性。注意Label中L为大写。
②():将label放置在根窗体上。放置的规则为:如果不加参数的默认方式,将以不重叠且紧挨着的形式从上往下纵向排列,水平位置居中。
③()可设置fill和side等参数。其中,参数fill 可取值:fill=X,fill=Y或fill=BOTH,分别表示允许控件向水平方向、垂直方向或二维方向将剩余空间填充满。参数 side 可取值:side=TOP(默认),side=LEFT,side=RIGHT,side=BOTTOM,分别表示本控件实例的布局相对于下一个控件实例的方位。
import tkinter
()
lbred=tkinter.Label(root,text='red',fg='red',relief=tkinter.GROOVE)
()
lbgreen=tkinter.Label(root,text='绿',fg='green',relief=tkinter.GROOVE)
()
lbblue=tkinter.Label(root,text='blue',fg='blue',relief=tkinter.GROOVE)
()
root.mainloop()
.grid()方法
基于表格布局,在相应表格中放置放置控件。其中一些参数意义如下: ①column,row:控件的行、列坐标,默认为0(注意坐标从0开始)。
②columnspan,rowspan:控件跨越的行数、列数,默认为1
③ipadx,ipady:实例控件所呈现区域内的像素数,定义控件的大小。
④padx,pady:实例控件所在单元格的大小,定义单元格的大小。
.place()方法
根据空间在父容器中的相对位置进行布局:
①x,y:控件相对于根窗体下的坐标。
②relx,rely:控件相对与根窗体下的相对位置。
③height和width:控件的高度和宽度。(单位为像素)。
④relheight和relwidth:控件相对于根窗体的相对高度和宽度。
注:可以和grid()方法混合使用
import tkinter
root = ()
root.title('myapp') #不要写成root.title='myapp',这与c++窗体不同
root.geometry('500x300')
msg1=tkinter.Message(root,text='我是一行文字我是另一行文字',relief=tkinter.GROOVE)
msg1.place(relx=0.2,rely=0.4,relwidth=0.6,relheight=0.4)
root.mainloop()
2.常见控件
(1)常用控件简介
常用空间如下:
控件名称作用Button按钮单击触发事件Canvas画布绘制图形或绘制特殊控件Checkbutton复选框多项选择Entry输入框接收单行文本输入Frame框架用于控件分组Label标签单行文本显示Listbox列表框显示文本列表Menu 菜单创建菜单命令Message消息多行文本标签,与Label 用法类似Radiobutton单选框从互斥的多个选项中做单项选择Scale滑块 鼠标拖动数值变化Scrollbar滑动条即滚动条Text文本框接受或输出显示多行文本Toplevel新建窗体容器在顶层新建窗体容器
控件共同属性:
属性 说明取值anchor文本的起始位置CENTER(默认),E,S,W,N,NE,SE,SW,NWbg背景色'red','green'等bd加粗无cursor鼠标悬停光标-font字体例如:('华文新魏',32)fg 前景色'red','green'等height高(文本控件单位为行,不是像素)数字image显示图像无justify多行文本对齐方式CENTER(默认),LEFT,RIGHT,TOP,BOTTOMpadx水平扩展像素无pady垂直扩展像素无relief边界样式FLAT,RAISED,SUNKEN,GROOVE,RIDGEstate控件实例状态是否可用NORMAL(默认),DISABLEDwidth宽(文本控件的单位为行,不是像素)无
from tkinter import *
root=Tk()
lb = Label(root,text='hello world!',\
bg='#00ffff',\
fg='green',\
font=('微软雅新',32),\
relief=GROOVE,\
width=20,\
height=2)
()
root.mainloop()
注:width和height单位为列或行,这是因为用pack()或grid()放置时按表格的单位给出。若用place()放置,可以在place参数中设置其控件大小,此时单位为像素。
(2)文本输入和输出相关控件
.标签(Label)和消息(Message):Label显示单行文本,Message显示多行文本。其余属性基本一致。
text属性只能用于第一次呈现时的固定文本。若需文本变更,有以下两种方法:
①用configure()方法改变text的值;
②定义tkinter的内部类型变量var=StringVar(),改变其值也可使文本发生变化。
方法一:用configure()方法改变text的值
from tkinter import *
import time
root=Tk()
root.geometry('500x300')
def gettime():
nowtime=time.strftime("%H:%M:%S")
lb.config(text=nowtime)
root.after(1000,gettime) #1000ms后调用gettime()函数
if __name__=='__main__':
root.title('time')
lb=Label(root,text='',fg='red',font=('微软雅新',80))
()
gettime()
root.mainloop()
注:样例中用了config(),实际上configure()有同样作用。关于它们的差别,在使用中没有找出差别,网上资料查找也无果。
方法二:利用textvariable变量属性来实现文本变化。
from tkinter import *
import time
root=Tk()
root.geometry('500x300')
def gettime():
nowtime=time.strftime("%H:%M:%S")
#lb.configure(text=nowtime,fg='green')
(nowtime)
root.after(1000,gettime) #1000ms后调用gettime()函数
if __name__=='__main__':
root.title('time')
var=StringVar() #创建一个特殊变量对象
lb=Label(root,textvariable=var,fg='red',font=('微软雅新',80)) #注意这里定义Label时定义textvariable而不是text
()
gettime()
root.mainloop()
.文本框(Text)
文本框方法如下:
上表位置的取值可为整数,浮点数或END(末尾),例如0.0表示第0列第0行
from tkinter import *
import time
import datetime
root=Tk()
root.geometry('500x300')
def gettime():
nowtime=str(())+'\n'
txt.insert(END,nowtime)
root.after(1000,gettime) #1000ms后调用gettime()函数
if __name__=='__main__':
root.title('timetext')
txt=Text(root)
()
gettime()
root.mainloop()
.输入框(Entry):接受单行文本输入的控件。通常只用get()和delete()两个方法,delete(0,END)可清空输入框。
(3)按钮(Button)
button相应鼠标单击事件。相应的事件函数需先定义好,然后用以下两种方法调用函数。
.直接调用函数。command=函数名。注意函数名后加括号不加参数
.利用匿名函数调用函数和传递参数。参数的表达式为,“command=lambda”:函数名(参数列表)。例如:“command=lambda:run2((),())”。
from tkinter import *
def run1():
a = float(())
b = float(())
s = '%0.2f+%0.2f=%0.2f\n' % (a, b, a + b)
txt.insert(END, s) # 追加显示运算结果
inp1.delete(0, END) # 清空输入
inp2.delete(0, END) # 清空输入
def run2(x, y):
a = float(x)
b = float(y)
s = '%0.2f+%0.2f=%0.2f\n' % (a, b, a + b)
txt.insert(END, s) # 追加显示运算结果
inp1.delete(0, END) # 清空输入
inp2.delete(0, END) # 清空输入
root = Tk()
root.geometry('460x240')
root.title('简单加法器')
lb1 = Label(root, text='请输入两个数,按下面两个按钮之一进行加法计算')
lb1.place(relx=0.1, rely=0.1, relwidth=0.8, relheight=0.1)
inp1 = Entry(root)
inp1.place(relx=0.1, rely=0.2, relwidth=0.3, relheight=0.1)
inp2 = Entry(root)
inp2.place(relx=0.6, rely=0.2, relwidth=0.3, relheight=0.1)
# 方法-直接调用 run1()
btn1 = Button(root, text='方法一', command=run1)
btn1.place(relx=0.1, rely=0.4, relwidth=0.3, relheight=0.1)
# 方法二利用 lambda 传参数调用run2()
btn2 = Button(root, text='方法二', command=lambda: run2((), ()))
btn2.place(relx=0.6, rely=0.4, relwidth=0.3, relheight=0.1)
# 在窗体垂直自上而下位置60%处起,布局相对窗体高度40%高的文本框
txt = Text(root)
txt.place(rely=0.6, relheight=0.4)
root.mainloop()
(4)单选按钮(Radiobutton)
排除具有共有属性外,还具有显示文本(text)、返回变量(variable)、返回值(value)、响应函数名(command)等重要属性。响应函数名“command=函数名”的用法与Button相同,函数名最后不要加括号。
返回变量variable=var通常应预先声明变量的类型var=IntVar()或var=StringVar(),在所调用的函数中方可用()方法获取被选中实例的value值。
from tkinter import *
def Mysel():
dic = {0:'甲',1:'乙',2:'丙'}
s = "您选了" + (()) + "项"
lb.config(text = s)
root = Tk()
root.title('单选按钮')
lb = Label(root)
()
var = IntVar()
rd1 = Radiobutton(root,text="甲",variable=var,value=0,command=Mysel)
()
rd2 = Radiobutton(root,text="乙",variable=var,value=1,command=Mysel)
()
rd3 = Radiobutton(root,text="丙",variable=var,value=2,command=Mysel)
()
root.mainloop()
(5)复选框:(Checkbutton)
该控件除具有共有属性外,还具有显示文本(text)、返回变量(variable)、选中返回值(onvalue)和未选中默认返回值(offvalue)等重要属性。
返回变量variable=var 通常可以预先逐项分别声明变量的类型var=IntVar() (默认)或 var=StringVar(), 在所调用的函数中方可分别调用 ()方法 取得被选中实例的 onvalue或offvalue值。
from tkinter import *
import tkinter
def run():
if(()==0 and ()==0 and ()==0 and ()==0):
s = '您还没选择任何爱好项目'
else:
s1 = "足球" if ()==1 else ""
s2 = "篮球" if () == 1 else ""
s3 = "游泳" if () == 1 else ""
s4 = "田径" if () == 1 else ""
s = "您选择了%s %s %s %s" % (s1,s2,s3,s4)
lb2.config(text=s)
root = ()
root.title('复选框')
lb1=Label(root,text='请选择您的爱好项目')
()
CheckVar1 = IntVar()
CheckVar2 = IntVar()
CheckVar3 = IntVar()
CheckVar4 = IntVar()
ch1 = Checkbutton(root,text='足球',variable = CheckVar1,onvalue=1,offvalue=0)
ch2 = Checkbutton(root,text='篮球',variable = CheckVar2,onvalue=1,offvalue=0)
ch3 = Checkbutton(root,text='游泳',variable = CheckVar3,onvalue=1,offvalue=0)
ch4 = Checkbutton(root,text='田径',variable = CheckVar4,onvalue=1,offvalue=0)
()
()
()
()
btn = Button(root,text="OK",command=run)
()
lb2 = Label(root,text='')
()
root.mainloop()
(6)列表框(Listbox)与 组合框(Combobox)
. 列表框(Listbox)
列表框实质上就是将Python 的列表类型数据可视化呈现,在程序实现时,也可直接对相关列表数据进行操作,然后再通过列表框展示出来 。
from tkinter import *
root=Tk()
root.geometry('500x300')
def init():
list=['数学','物理','化学','语文','外语']
listbox.delete(0,END)
for item in list:
listbox.insert(END,item)
return
def insert():
if () != '':
if listbox.curselection() !=():
id=listbox.curselection()[0]
listbox.insert(id,())
else:
listbox.insert(END,())
return
def change():
if () !='':
if listbox.curselection() != ():
id=listbox.curselection()[0]
listbox.delete(id)
listbox.insert(id,())
return
def delete():
if listbox.curselection() != ():
listbox.delete(listbox.curselection())
return
def clear():
listbox.delete(0,END)
return
if __name__=='__main__':
root.title('列表框实验')
fm1=Frame(root)
fm2=Frame(root)
fm1.place(relx=0.0)
fm2.place(relx=0.5)
listbox=Listbox(fm1)
()
entry=Entry(fm2)
()
btn1=Button(fm2,text='初始化',command=init)
btn2=Button(fm2,text='插入',command=insert)
btn3=Button(fm2,text='修改',command=change)
btn4=Button(fm2,text='删除',command=delete)
btn5=Button(fm2,text='清空',command=clear)
(fill=X)
(fill=X)
(fill=X)
(fill=X)
(fill=X)
root.mainloop()
. 组合框(Combobox)
该控件并不包含在 tkinter 模块中,而是与 TreeView、Progressbar、Separator等控件一同包含在tkinter 的子模块ttk中。因此使用该控件前,应先from import *。
from tkinter import *
from import *
root=Tk()
root.geometry('500x300')
def cul(event): #注意一定要传递一个参数,将来这个参数代表实例本身
c=cb.current()
try:
a=float(())
b=float(())
except:
return
dict={0:a+b,1:a-b,2:a*b,3:a/b}
lb.configure(text=str((c)))
return
if __name__=='__main__':
root.title('四则运算')
input1=Entry(root)
input2=Entry(root)
input1.place(relx=0.1,rely=0.1)
input2.place(relx=0.5,rely=0.1)
cb=Combobox(root,values=['加','减','乘','除'])
cb.place(relx=0.1,rely=0.5)
('<<ComboboxSelected>>',cul) #设置复选框被选择的相应函数
lb=Label(root)
lb.place(relx=0.5,rely=0.5)
root.mainloop()
指定变量var=StringVar(),并设置实例属性 textvariable = var,values=[列表...]。组合框控件常用方法有:获得所选中的选项值get()和获得所选中的选项索引current()。
注:定义的cur()函数必须带一个参数,名字可以任意。因为当定义<<ComboboxSelected>>事件的相应函数时,也将实例cb传入了进去。
(7)滑块:(Scale)
滑块(Scale)是一种直观地进行数值输入的交互控件。其主要属性见下表:
滑块控件实例的主要方法比较简单,有 get()和set(值) ,滑块控件实例的主要方法比较简单,有 get()和set(值)。
滑块实例也可绑定鼠标左键释放事件<ButtoonRelease-1>,并在执行函数中添加参数event来实现事件响应。注意是单括号‘<’,'>',不是双括号‘<<’,'>>'。
from tkinter import *
root=Tk()
root.geometry('500x300')
def getval(event):
()
lb.configure(text=f'滑块的取值为{c}')
return
if __name__=='__main__':
root.title('滑块实验')
var=DoubleVar()
sc=Scale(root,orient=HORIZONTAL,length=200,from_=1.0,to=5.0,label='请拖动滑块',tickinterval=1,resolution=0.05,variable=var)
()
lb=Label(root,text='滑块取值为1')
()
('<ButtonRelease-1>',getval)
root.mainloop()
(8)菜单(Menu)
原文地址:https://blog.csdn.net/Rtee1/article/details/137011361