精华内容
下载资源
问答
  • fromPyQt5.QtWidgets import QApplication,QMainWindow,QActionfromPyQt5.QtGui import QIconimport sysclass GUI(QMainWindow):#inherit fromQMainwindowdef __init__(self):super().__init__()#initialize supercl...

    fromPyQt5.QtWidgets import QApplication,QMainWindow,QActionfromPyQt5.QtGui import QIcon

    import sysclass GUI(QMainWindow):#inherit fromQMainwindow

    def __init__(self):

    super().__init__()#initialize superclass,which creates the window

    self.initGUI() #refer to windowasself

    def initGUI(self):#add widgets and change properties

    self.setWindowTitle("这不是周")#refer to window asself

    self.resize(400,400) #resize(width,height)

    self.add_menu_and_status()

    def add_menu_and_status(self):

    self.statusBar().showMessage("状态栏内容")

    menubar=self.menuBar() #create menu bar

    file_menu=menubar.addMenu("文件") #add menu to menu bar

    new_icon=QIcon("file.png") #create icon

    new_action=QAction(new_icon,"创建",self) #crteate an Action

    new_action.setStatusTip("创建新文件")#statusbar pdated

    file_menu.addAction(new_action) # add Action to menu

    file_menu.addSeparator() #add separator line between menu

    exit_icon= QIcon("exit.png") # create icon

    exit_action= QAction(exit_icon, "退出", self) # crteate an Action

    exit_action.setStatusTip("点击退出系统") # statusbar pdated

    exit_action.triggered.connect(self.close)#close application when clicked

    exit_action.setShortcut("Ctrl+Q") #keyboard shortcut to close application

    file_menu.addAction(exit_action) # add Action to menu

    #-------------------------------------edit_menu=menubar.addMenu("编辑")#add second menu to menu bar

    self.resize(400,400)if __name__=="__main__":

    app=QApplication(sys.argv) #create Application

    gui=GUI() #create instance of classgui.show()#show the constructed Qt window

    sys.exit(app.exec_())#execute the application

    展开全文
  • 简介对于想学Python图形化编程的小伙伴来说,easygui是一个很好图形化入门编程模块!函数介绍ccbox()——双项选择cc表示continue 还是 cancel他返回的是1和0,但是不代表True和False,但是在if里面还是可以用1和0,...

    简介

    对于想学Python图形化编程的小伙伴来说,easygui是一个很好图形化入门编程模块!

    函数介绍

    ccbox()——双项选择

    cc表示continue 还是 cancel

    他返回的是1和0,但是不代表True和False,但是在if里面还是可以用1和0,另外,选项后面还可以加,自己随意。

    msgbox()——消息弹窗

    msgbox(msg=' ', title=' ', ok_button=' ', image=None, root=None)

    该函数一般调用前三个关键字即可,加载图片的话给image赋值需要下载其他库,否则只能加载GIF。

    环境安装

    案例:编写界面选择小游戏

    代码如下:

    import easygui as eg

    import sys

    while True:

    eg.msgbox(" 嗨,欢迎进入第一个界面小游戏^_^",'主界面')

    #消息主体

    msg =" 请问你平时的爱好是啥?"

    #对话框标题

    title = "小游戏互动"

    #选项

    choices = ["书法", "篮球", "乒乓球", "游戏"]

    choice = eg.choicebox(msg, title, choices)

    # 注意,msgbox的参数是一个字符串

    # 如果用户选择Cancel,该函数返回None

    eg.msgbox(" 你的选择是: " + str(choice)+ ' !', "结果")

    msg = " 你希望重新开始小游戏吗?"

    title = " 请选择"

    # 弹出一个Continue/Cancel对话框

    if eg.ccbox(msg, title):

    pass # 如果用户选择Continue

    else:

    sys.exit(0) # 如果用户选择Cancel

    运行效果

    watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

    watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

    watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

    watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

    选择返回主界面或退出

    watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

    退出游戏

    watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

    展开全文
  • 图形化界面设计时,由于其具有灵活的界面,因此往往比列表框更受喜爱。但该控件并不包含在 tkinter 模块中,而是与 TreeView、Progressbar、Separator等控件一同包含在tkinter 的子模块ttk中。如果使用该控件,应...

    3.1、文本输入和输出相关控件:文本的输入与输出控件通常包括:标签(Label)、消息(Message)、输入框(Entry)、文本框(Text)。他们除了前述共同属性外,都具有一些特征属性和功能。

    标签(Label)和 消息(Message):除了单行与多行的不同外,属性和用法基本一致,用于呈现文本信息。值得注意的是:属性text通常用于实例在第一次呈现时的固定文本,而如果需要在程序执行后发生变化,则可以使用下列方法之一实现:1、用控件实例的configure()方法来改变属性text的值,可使显示的文本发生变化;2、先定义一个tkinter的内部类型变量var=StringVar() 的值也可以使显示文本发生变化。

    看下面的一个例子:制作一个电子时钟,用root的after()方法每隔1秒time模块以获取系统当前时间,并在标签中显示出来。

    方法一:利用configure()方法或config()来实现文本变化。

    91844c5bca78

    import tkinter

    import time

    def gettime():

    timestr = time.strftime("%H:%M:%S") # 获取当前的时间并转化为字符串

    lb.configure(text=timestr) # 重新设置标签文本

    root.after(1000,gettime) # 每隔1s调用函数 gettime 自身获取时间

    root = tkinter.Tk()

    root.title('时钟')

    lb = tkinter.Label(root,text='',fg='blue',font=("黑体",80))

    lb.pack()

    gettime()

    root.mainloop()

    方法二:利用textvariable变量属性来实现文本变化。

    import tkinter

    import time

    def gettime():

    var.set(time.strftime("%H:%M:%S")) # 获取当前时间

    root.after(1000,gettime) # 每隔1s调用函数 gettime 自身获取时间

    root = tkinter.Tk()

    root.title('时钟')

    var=tkinter.StringVar()

    lb = tkinter.Label(root,textvariable=var,fg='blue',font=("黑体",80))

    lb.pack()

    gettime()

    root.mainloop()

    文本框(Text):

    文本框的常用方法如下:

    方法

    功能

    delete(起始位置,[,终止位置])

    删除指定区域文本

    get(起始位置,[,终止位置])

    获取指定区域文本

    insert(位置,[,字符串]...)

    将文本插入到指定位置

    see(位置)

    在指定位置是否可见文本,返回布尔值

    index(标记)

    返回标记所在的行和列

    mark_names()

    返回所有标记名称

    mark_set(标记,位置)

    在指定位置设置标记

    mark_unset(标记)

    去除标记

    上表位置的取值可为整数,浮点数或END(末尾),例如0.0表示第0列第0行

    如下一个例子:每隔1秒获取一次当前日期的时间,并写入文本框中,如下:本例中调用 datetime.now()获取当前日期时间,用insert()方法每次从文本框txt的尾部(END)开始追加文本。

    91844c5bca78

    获取当前日期的时间并写入文本中

    from tkinter import *

    import time

    import datetime

    def gettime():

    s=str(datetime.datetime.now())+' '

    txt.insert(END,s)

    root.after(1000,gettime) # 每隔1s调用函数 gettime 自身获取时间

    root=Tk()

    root.geometry('320x240')

    txt=Text(root)

    txt.pack()

    gettime()

    root.mainloop()

    输入框(Entry):通常作为功能比较单一的接收单行文本输入的控件,虽然也有许多对其中文本进行操作的方法,但通常用的只有取值方法get()和用于删除文本的delete(起始位置,终止位置),例如:清空输入框为delete(0,END)。

    3.2、按钮(Button):主要是为响应鼠标单击事件触发运行程序所设的,故其除控件共有属性外,属性command是最为重要的属性。通常,将按钮要触发执行的程序以函数形式预先定义,然后可以用一下两种方法调用函数。Button按钮的状态有:'normal','active','disabled'

    直接调用函数。参数表达式为"command=函数名”,注意函数名后面不要加括号,也不能传递参数。如下面的command=run1:

    利用匿名函数调用函数和传递参数。参数的表达式为"command=lambda”:函数名(参数列表)。例如下面的:"command=lambda:run2(inp1.get(),inp2.get())"。

    看下面的例子:1.从两个输入框去的输入文本后转为浮点数值进行加法运算,要求每次单击按钮产生的算是结果以文本的形式追加到文本框中,将原输入框清空。2.按钮方法一不传参数调用函数run1()实现,按钮"方法二”用lambda调用函数run2(x,y)同时传递参数实现。

    91844c5bca78

    简单加法器

    from tkinter import *

    def run1():

    a = float(inp1.get())

    b = float(inp2.get())

    s = '%0.2f+%0.2f=%0.2f ' % (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 ' % (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(inp1.get(), inp2.get()))

    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()

    3.3、单选按钮:(Radiobutton)是为了响应故乡排斥的若干单选项的单击事件以触发运行自定义函数所设的,该控件排除具有共有属性外,还具有显示文本(text)、返回变量(variable)、返回值(value)、响应函数名(command)等重要属性。响应函数名"command=函数名”的用法与Button相同,函数名最后也要加括号。返回变量variable=var通常应预先声明变量的类型var=IntVar()或var=StringVar(),在所调用的函数中方可用var.get()方法获取被选中实例的value值。例如下面:

    91844c5bca78

    单选按钮

    from tkinter import *

    def Mysel():

    dic = {0:'甲',1:'乙',2:'丙'}

    s = "您选了" + dic.get(var.get()) + "项"

    lb.config(text = s)

    root = Tk()

    root.title('单选按钮')

    lb = Label(root)

    lb.pack()

    var = IntVar()

    rd1 = Radiobutton(root,text="甲",variable=var,value=0,command=Mysel)

    rd1.pack()

    rd2 = Radiobutton(root,text="乙",variable=var,value=1,command=Mysel)

    rd2.pack()

    rd3 = Radiobutton(root,text="丙",variable=var,value=2,command=Mysel)

    rd3.pack()

    root.mainloop()

    3.4、复选框:(Checkbutton) 是为了返回多个选项值的交互控件,通常不直接触发函数的执行。该控件除具有共有属性外,还具有显示文本(text)、返回变量(variable)、选中返回值(onvalue)和未选中默认返回值(offvalue)等重要属性。返回变量variable=var 通常可以预先逐项分别声明变量的类型var=IntVar() (默认)或 var=StringVar(), 在所调用的函数中方可分别调用 var.get()方法 取得被选中实例的 onvalue或offvalue值。复选框实例通常还可分别利用 select()、deselect()和 toggle() 方法对其进行选中、清除选中和反选操作。

    如下的例子: 利用复选框实现,单击OK,可以将选中的结果显示在标签上。效果如下:

    91844c5bca78

    复选框的应用

    方法:利用函数中的 if-else 分支实现多项显示

    from tkinter import *

    import tkinter

    def run():

    if(CheckVar1.get()==0 and CheckVar2.get()==0 and CheckVar3.get()==0 and CheckVar4.get()==0):

    s = '您还没选择任何爱好项目'

    else:

    s1 = "足球" if CheckVar1.get()==1 else ""

    s2 = "篮球" if CheckVar2.get() == 1 else ""

    s3 = "游泳" if CheckVar3.get() == 1 else ""

    s4 = "田径" if CheckVar4.get() == 1 else ""

    s = "您选择了%s %s %s %s" % (s1,s2,s3,s4)

    lb2.config(text=s)

    root = tkinter.Tk()

    root.title('复选框')

    lb1=Label(root,text='请选择您的爱好项目')

    lb1.pack()

    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)

    ch1.pack()

    ch2.pack()

    ch3.pack()

    ch4.pack()

    btn = Button(root,text="OK",command=run)

    btn.pack()

    lb2 = Label(root,text='')

    lb2.pack()

    root.mainloop()

    3.5、列表框 与 组合框:

    3.5.1、列表框:(Listbox) 可供用户单选或多选所列条目以形成人机交互。列表框控件的主要方法见下面的表:

    方法

    功能描述

    curselection()

    返回光标选中项目编号的元组,注意并不是单个的整数

    delete(起始位置,终止位置)

    删除项目,终止位置可省略,全部清空为delete(0,END)

    get(起始位置,终止位)

    返回范围所含项目文本的元组,终止位置可忽略

    insert(位置,项目元素)

    插入项目元素(若有多项,可用列表或元组类型赋值),若位置为END,则将项目元素添加在最后

    size()

    返回列表框行数

    执行自定义函数时,通常使用"实例名.surselection()” 或 "selected” 来获取选中项的位置索引。由于列表框实质上就是将Python 的列表类型数据可视化呈现,在程序实现时,也可直接对相关列表数据进行操作,然后再通过列表框展示出来,而不必拘泥于可视化控件的方法。看下面的一个例子:实现列表框的初始化、添加、插入、修改、删除和清空操作,如下:

    91844c5bca78

    列表框的应用

    from tkinter import *

    def ini():

    Lstbox1.delete(0,END)

    list_items = ["数学","物理","化学","语文","外语"]

    for item in list_items:

    Lstbox1.insert(END,item)

    def clear():

    Lstbox1.delete(0,END)

    def ins():

    if entry.get() != '':

    if Lstbox1.curselection() == ():

    Lstbox1.insert(Lstbox1.size(),entry.get())

    else:

    Lstbox1.insert(Lstbox1.curselection(),entry.get())

    def updt():

    if entry.get() != '' and Lstbox1.curselection() != ():

    selected=Lstbox1.curselection()[0]

    Lstbox1.delete(selected)

    Lstbox1.insert(selected,entry.get())

    def delt():

    if Lstbox1.curselection() != ():

    Lstbox1.delete(Lstbox1.curselection())

    root = Tk()

    root.title('列表框实验')

    root.geometry('320x240')

    frame1 = Frame(root,relief=RAISED)

    frame1.place(relx=0.0)

    frame2 = Frame(root,relief=GROOVE)

    frame2.place(relx=0.5)

    Lstbox1 = Listbox(frame1)

    Lstbox1.pack()

    entry = Entry(frame2)

    entry.pack()

    btn1 = Button(frame2,text='初始化',command=ini)

    btn1.pack(fill=X)

    btn2 = Button(frame2,text='添加',command=ins)

    btn2.pack(fill=X)

    btn3 = Button(frame2,text='插入',command=ins) # 添加和插入功能实质上是一样的

    btn3.pack(fill=X)

    btn4 = Button(frame2,text='修改',command=updt)

    btn4.pack(fill=X)

    btn5 = Button(frame2,text='删除',command=delt)

    btn5.pack(fill=X)

    btn6 = Button(frame2,text='清空',command=clear)

    btn6.pack(fill=X)

    root.mainloop()

    3.5.2、组合框:(Combobox) 实质上是带文本框的上拉列表框,其功能也将是Python 的列表类型数据可视化呈现,并提供用户单选或多选所列条目以形成人机交互。在图形化界面设计时,由于其具有灵活的界面,因此往往比列表框更受喜爱。但该控件并不包含在 tkinter 模块中,而是与 TreeView、Progressbar、Separator等控件一同包含在tkinter 的子模块ttk中。如果使用该控件,应先与from tkinter import ttk 语句引用ttk子模块,然后创建组合框实例: 实例名=Combobox(根对象,[属性列表])

    指定变量var=StringVar(),并设置实例属性 textvariable = var,values=[列表...]。组合框控件常用方法有:获得所选中的选项值get()和获得所选中的选项索引current()。

    看下面的一个例子:实现四则运算计算器,将两个操作数分别填入两个文本框后,通过选择组合框中的算法触发运算,如下:

    91844c5bca78

    组合框的应用

    from tkinter.ttk import *

    def calc(event):

    a = float(t1.get())

    b = float(t2.get())

    dic = {0:a+b,1:a-b,2:a*b,3:a/b}

    c = dic[comb.current()]

    lbl.config(text=str(c))

    root = Tk()

    root.title('四则运算')

    root.geometry('320x240')

    t1 = Entry(root)

    t1.place(relx=0.1,rely=0.1,relwidth=0.2,relheight=0.1)

    t2 = Entry(root)

    t2.place(relx=0.5,rely=0.1,relwidth=0.2,relheight=0.1)

    var = StringVar()

    comb = Combobox(root,textvariable=var,values=['加','减','乘','除',])

    comb.place(relx=0.1,rely=0.5,relwidth=0.2)

    comb.bind('<>',calc)

    lbl=Label(root,text='结果')

    lbl.place(relx=0.5,rely=0.7,relwidth=0.2,relheight=0.3)

    root.mainloop()

    3.6、滑块:(Scale) 是一种 直观地进行数值输入的交互控件,其主要属性见下表:

    属性

    功能描述

    from_

    起始值(最小可取值)

    lable

    标签文字,默认为无

    length

    滑块控件实例宽(水平方向)或 高(垂直方向),默认为100像素

    orient

    滑块控件实例呈现方向,VERTCAL或HORIZONTAL(默认)

    repeatdelay

    鼠标响应延时,默认为 300ms

    resolution

    分辨精度,即最小值间隔

    sliderlength

    滑块宽度,默认为30 像素

    state

    状态,若设置 state=DISABLED,则滑块控件实例不可用

    tickinterval

    标尺间隔,默认为0,若设置过小,则会重叠

    to

    终止值(最大可取值)

    variable

    返回数值类型,可为IntVar(整数)、DoubleVar(浮点数)、或 StringVar(字符串)

    width

    控件实例本身的宽度,默认为15像素

    滑块控件实例的主要方法比较简单,有 get()和set(值),分别为取值和将滑块设在某特定值上。滑块实例也可绑定鼠标左键释放事件,并在执行函数中添加参数event来实现事件响应。

    例如:在一个窗体上设计一个200像素宽的水平滑块,取值范围为1.0~5.0,分辨精度为0.05,刻度间隔为 1,用鼠标拖动滑块后释放鼠标可读取滑块值并显示在标签上。效果如下:

    91844c5bca78

    滑块控件的应用

    from tkinter import *

    def show(event):

    s = '滑块的取值为' + str(var.get())

    lb.config(text=s)

    root = Tk()

    root.title('滑块实验')

    root.geometry('320x180')

    var=DoubleVar()

    scl = Scale(root,orient=HORIZONTAL,length=200,from_=1.0,to=5.0,label='请拖动滑块',tickinterval=1,resolution=0.05,variable=var)

    scl.bind('',show)

    scl.pack()

    lb = Label(root,text='')

    lb.pack()

    root.mainloop()

    3.7、菜单:(Menu)用于可视化地为一系列的命令分组,从而方便用户找到和触发执行这些命令。这里Menu所实例化别的主要是菜单,其通式为:

    菜单实例名=Menu(根窗体)

    菜单分组1=Menu(菜单实例名)

    菜单实例名.add_cascade(,

    菜单分组1.add_command(,)

    其中较为常见的方法有:add_cascade()、add_command()和add_separator(),分别用于添加一个菜单分组、添加一条菜单命令和添加一条分割线。

    利用Menu控件也可以创建快捷菜单(又称为上下文菜单)。通常需要右击弹出的控件实例绑定鼠标右击响应事件,并指向一个捕获event参数的自定义函数,在该自定义函数中,将鼠标的触发位置event.x_root 和 event.y_root以post()方法传给菜单。

    例子:仿照window自带的"记事本”中的文件和编辑 菜单,实现在主菜单个快捷菜单上触发菜单命令,并相应改变窗体上的标签的文本内容。效果如下:

    91844c5bca78

    菜单和快捷菜单

    from tkinter import *

    def new():

    s = '新建'

    lb1.config(text=s)

    def ope():

    s = '打开'

    lb1.config(text=s)

    def sav():

    s = '保存'

    lb1.config(text=s)

    def cut():

    s = '剪切'

    lb1.config(text=s)

    def cop():

    s = '复制'

    lb1.config(text=s)

    def pas():

    s = '粘贴'

    lb1.config(text=s)

    def popupmenu(event):

    mainmenu.post(event.x_root,event.y_root)

    root = Tk()

    root.title('菜单实验')

    root.geometry('320x240')

    lb1 = Label(root,text='显示信息',font=('黑体',32,'bold'))

    lb1.place(relx=0.2,rely=0.2)

    mainmenu = Menu(root)

    menuFile = Menu(mainmenu) # 菜单分组 menuFile

    mainmenu.add_cascade(label="文件",menu=menuFile)

    menuFile.add_command(label="新建",command=new)

    menuFile.add_command(label="打开",command=ope)

    menuFile.add_command(label="保存",command=sav)

    menuFile.add_separator() # 分割线

    menuFile.add_command(label="退出",command=root.destroy)

    menuEdit = Menu(mainmenu) # 菜单分组 menuEdit

    mainmenu.add_cascade(label="编辑",menu=menuEdit)

    menuEdit.add_command(label="剪切",command=cut)

    menuEdit.add_command(label="复制",command=cop())

    menuEdit.add_command(label="粘贴",command=pas())

    root.config(menu=mainmenu)

    root.bind('Button-3',popupmenu) # 根窗体绑定鼠标右击响应事件

    root.mainloop()

    3.8、子窗体:用Toplevel可新建一个显示在最前面的子窗体,其通式为: 字体实例名=Toplevel(根窗体),子窗体与根窗体类似,也可设置title、geomerty等属性,并在画布上布局其他控件。如下的例子:在根窗体上创建菜单,触发创建一个新的窗体

    91844c5bca78

    根窗体与子窗体

    from tkinter import *

    def newwind():

    winNew = Toplevel(root)

    winNew.geometry('320x240')

    winNew.title('新窗体')

    lb2 = Label(winNew,text='我在新窗体上')

    lb2.place(relx=0.2,rely=0.2)

    btClose=Button(winNew,text='关闭',command=winNew.destroy)

    btClose.place(relx=0.7,rely=0.5)

    root = Tk()

    root.title('新建窗体实验')

    root.geometry('320x240')

    lb1 = Label(root,text='主窗体',font=('黑体',32,'bold'))

    lb1.place(relx=0.2,rely=0.2)

    mainmenu = Menu(root)

    menuFile = Menu(mainmenu)

    mainmenu.add_cascade(label='菜单',menu=menuFile)

    menuFile.add_command(label='新窗体',command=newwind)

    menuFile.add_separator()

    menuFile.add_command(label='退出',command=root.destroy)

    root.config(menu=mainmenu)

    root.mainloop()

    关闭窗体程序运行的方法通常用 destory(),而不建议用 quit()。用Toplevel 所创建的子窗体是非模式(Modeless)的窗体,虽然初建时子窗体在最前面,但根窗体上的控件实例也是可以被操作的。

    3.9、模式对话框(Modal):是相对于前面介绍的非模式窗体而言的,所弹出的对话框必须应答,在关闭之前无法操作其后面的其他窗体。常见的模式对话框有消息对话框、输入对话框、文件选择对话框、颜色选择对话框等。

    3.9.1、交互对话框

    (一)、消息对话框: 引用 tkinter.messagebox 包,可使用消息对话框函数。执行这些函数,可弹出模式消息对话框,并根据用户的响应但会一个布尔值。其通式为:

    消息对话框函数(

    ,,[其他参数])

    看下面的例子:单击按钮,弹出确认取消对话框,并将用户回答显示在标签中。效果如下:

    91844c5bca78

    确定取消对话框

    from tkinter import *

    import tkinter.messagebox

    def xz():

    answer=tkinter.messagebox.askokcancel('请选择','请选择确定或取消')

    if answer:

    lb.config(text='已确认')

    else:

    lb.config(text='已取消')

    root = Tk()

    lb = Label(root,text='')

    lb.pack()

    btn=Button(root,text='弹出对话框',command=xz)

    btn.pack()

    root.mainloop()

    (二)、输入对话框: 引用tkinter.simpledialog包,可弹出输入对话框,用以接收用户的简单输入。输入对话框常用 askstring()、askfloat()和askfloat() 三种函数,分别用于接收字符串、整数和浮点数类型的输入。

    如下面的例子:单击按钮,弹出输入对话框,接收文本输入显示在窗体的标签上。如下:

    91844c5bca78

    输入对话框

    from tkinter.simpledialog import *

    def xz():

    s=askstring('请输入','请输入一串文字')

    lb.config(text=s)

    root = Tk()

    lb = Label(root,text='')

    lb.pack()

    btn=Button(root,text='弹出输入对话框',command=xz)

    btn.pack()

    root.mainloop()

    3.9.2、文件选择对话框:引用tkinter.filedialog包,可弹出文件选择对话框,让用户直观地选择一个或一组文件,以供进一步的文件操作。常用的文件选择对话框函数有 askopenfilename()、askopenfilenames()和asksaveasfilename(),分别用于进一步打开一个文件、一组文件和保存文件。其中,askopenfilename()和asksaveasfilenamme()函数的返回值类型为包含文件路径的文件名字符串,而askopenfilenames()函数的返回值类型为元组。

    例如:单击按钮,弹出文件选择对话框("打开”对话框),并将用户所选择的文件路径和文件名显示在窗体的标签上。如下

    91844c5bca78

    文件选择对话框

    from tkinter import *

    import tkinter.filedialog

    def xz():

    filename=tkinter.filedialog.askopenfilename()

    if filename != '':

    lb.config(text='您选择的文件是'+filename)

    else:

    lb.config(text='您没有选择任何文件')

    root = Tk()

    lb = Label(root,text='')

    lb.pack()

    btn=Button(root,text='弹出文件选择对话框',command=xz)

    btn.pack()

    root.mainloop()

    3.9.3、颜色选择对话框:引用tkinter.colorchooser包,可使用 askcolor()函数弹出模式颜色选择对话框,让用户可以个性化地设置颜色属性。该函数的返回形式为包含RGB十进制浮点元组和RGB十六进制字符串的元组类型,例如:"((135.527343.52734375,167.65234375,186.7265625)),'#87a7ba'”。通常,可将其转换为字符串类型后,再截取以十六进制数表示的RGB颜色字符串用于为属性赋值。

    举例:单击按钮,弹出颜色选择对话框,并将用户所选择的颜色设置为窗体上标签的背景颜色,如下:

    91844c5bca78

    颜色选择对话框

    from tkinter import *

    import tkinter.colorchooser

    def xz():

    color=tkinter.colorchooser.askcolor()

    colorstr=str(color)

    print('打印字符串%s 切掉后=%s' % (colorstr,colorstr[-9:-2]))

    lb.config(text=colorstr[-9:-2],background=colorstr[-9:-2])

    root = Tk()

    lb = Label(root,text='请关注颜色的变化')

    lb.pack()

    btn=Button(root,text='弹出颜色选择对话框',command=xz)

    btn.pack()

    root.mainloop()

    展开全文
  • PYTHON图形化操作界面的编程七__创建菜单十八、创建菜单1、水平菜单的创建创建菜单需要多条语句,所以这里通过实例来说明水平菜单的创建方法:下面的语句可以在窗口中添加水平菜单,其中前四行语句是导入tkinter库和...

    PYTHON图形化操作界面的编程七__创建菜单

    十八、创建菜单

    1、水平菜单的创建

    创建菜单需要多条语句,所以这里通过实例来说明水平菜单的创建方法:

    下面的语句可以在窗口中添加水平菜单,其中前四行语句是导入tkinter库和创建窗口w,从

    第五行语句开始(红框中的语句)为创建菜单语句,运行结果如下面右图所示。

    sg_trans.gif

    上面红框中的第一行代码为创建菜单对象m,红框中第2,3,4行代码为向菜单对象m中添加菜单项。红框中最后一条语句为将菜单显示在窗口中(实际是向窗口的"menu”属性赋值)

    创建Menu对象时仍可使用前面介绍的控件的公共属性,同时菜单对象还可以使用如下的属性:

    tearoff:该属性取值可以为True或False,此属性一般用在创建下拉菜单中,值为False时,创建的各级菜单间无虚线分隔。如果值为True,则上下级菜单间显示一条虚线分隔线且该菜单可以与上级菜单相分离。

    menu:该属性值为下级菜单对象的名称。从而可以将另一菜单对象和本菜单项关联起来。使另一菜单项成为本菜单的子菜单。

    菜单对象的的方法:

    add_cascade():向菜单对象中添加菜单项。上面红框中的三行代码就使用了这个方法。

    add_command():向菜单对象中增加菜单命令。

    add_separator():在菜单对象中创建菜单项间的分隔线

    下面通过实例来说明 上面方法的应用:

    在上面的代码基础上添加下面的代码,红框中为添加的代码:下面右图为代码运行后的结果。

    sg_trans.gif

    上面代码中第一个红框中的代码为:创建第二个菜单对象f1。第二个红框为小红框,其代码为:将新创建的菜单名称添加到原来第一个水平菜单项的menu属性中。使新创建的菜单对象成为原菜单的下级菜单。

    第三个红框中共有三条语句,第一条语句在f1菜单对象中添加菜单项(用add_cascade方法创建的是菜单项,将来该菜单项下还有下级菜单)

    第三个红框中的第二、三条语句均使用add.command方法向菜单对象f1中添加菜单命令,说明这两项本身就是菜单命令而无下级菜单。

    第四个红框中有两条语句,第一条创建菜单分隔线,第二条创建菜单命令,并为该菜单命令的command属性赋值exit,表示选中此菜单命令后就执行"exit”命令关闭窗口,结束程序运行。上面右图是上面代码运行后的结果,子菜单中第一项为菜单项,其余这菜单命令。

    下面的代码继续为第一个子菜单项添加下级菜单命令。下面右图为代码运行后的结果。

    sg_trans.gif

    上面代码中第一个红框中的代码为创建了第三个菜单对象名称为ff1,第二个小红框中的代码为将新建立的菜单对象ff1的名称赋值给上一个菜单子项的menu属性,使新建立的菜单对象成为其子菜单项。

    第三个红框中共四条代码,均用add_command方法创建,因此创建的均是菜单命令,为其指定command属性后就可以执行这些菜单命令。

    下面为菜单命令指定执行的函数,为了减少代码量而不影响问题的本质,我们假设点击任一菜单命令均执行同一个函数fun,代码修改如下:下面红框中的代码为新添加的内容。

    第一个红框为函数定义。为了节省篇幅我们在函数中放置了一个空语句,该语句不执行任何动作,只是占一条语句的位置。

    其余红框中的代码圴相同,只是为各菜单命令设置了command属性,使点击这些菜单项时执行command属性所指定的函数。

    实际使用中我们要为每个菜单命令指定不同的函数,并分别将这些函数名赋值给对应的菜单命令的command属性。

    属性tearoff取值对菜单的影响大家可以自行偿试。通过上面介绍的方法我们可以构建任何结构的菜单。

    sg_trans.gif

    2、快捷菜单的创建

    快捷菜单是右击鼠标后出现的菜单,创建快捷菜单很简单,下面是创建快捷菜单的步骤:

    1)先用下面的语句创建Menu对象:

    q=Menu(tearoff=False)

    其中 q是Menu对象的名称,属性tearoff=False是为了使创建的菜单不出现虚线分隔

    2)用下面的语句向菜单对象中添加菜单命令,属性command后的值为选中该快捷菜单项后执行的函数名称。

    q.add_command(label="复制",command=copy)

    q.add_command(label="剪切",command=cut)

    q.add_command(label="粘贴",command=paste)

    3)用下面的语句将菜单绑定到窗口或其他控件,本例中绑定的是窗体。即右击窗口中的任意位置弹出快捷菜单。下面语句中的w是窗体的名称。若要绑定其他控件,则要用其他控件的名称。pop是点击鼠标右键后执行的函数或方法的名称。

    w.bind("",pop)

    4)用下面的代码定义pop方法,方法内容是调用菜单对象的post()方法完成参数的传递。

    def

    pop(event):

    q.post(event.x_root,event.y_root)

    5)定义选中菜单项后要执行的各函数

    根据菜单项的功能,定义菜单项对应的函数,此例中要分别定义三个函数,此处只是为了验证快捷菜单项的执行情况,在每个函数中添加了一条输出语句。

    def

    copy():

    print("copy")

    def

    cut():

    print("cut")

    def

    paste():

    print("paste")

    最后的完整代码如下所示

    sg_trans.gif

    上面代码运行后,在窗口空白外右击鼠标,出现快捷菜单,参见下图。

    sg_trans.gif

    下面的代码可以创建二级快捷菜单,运行结果如下面右图所示。为了减少代码量而又不影响问题的讨论,下面代码将各菜单项的执行函数均设置为op,红框标出的代码为在上面例子的代码基础上添加的新代码。

    sg_trans.gif

    仔细分析上面代码,不难看出,和前面下拉菜单创建时的方法是基本相同的。

    展开全文
  • 0 写在前面未经允许,不得转载,谢谢~之前在这篇文章python 图形界面开发里记录了最开始学习python界面开发的有关知识,虽然整理了一些最常用的控件、属性,但还是缺少实践。下面这张就是我接下来想实现的整体界面的...
  • Python支持多种图形界面的第三方库,包括:TkwxWidgetsQtGTK等等。但是Python自带的库是支持Tk的Tkinter,使用Tkinter,无需安装任何包,就可以直接使用。本章简单介绍如何使用Tkinter进行GUI编程。Tkinter我们来...
  • 匿名用户1级2017-12-13 回答python提供了多个图形开发界面的库,几个常用Python GUI库如下:Tkinter:Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口.Tk和Tkinter可以在大多数的Unix平台下使用,...
  • 6.0 Python图形化界面GUI

    千次阅读 2021-03-28 15:26:30
    Python 提供了多个图形开发界面的库,几个常用 Python GUI 库如下: Tkinter: Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 W
  • 根据python在wiki上的介绍,Tkinter是一个面向对象的python标准图形化用户接口库。并且python3在安装的时候就已经安装了Tkinter,需要的时候直接用就可以了,不需要再次安装。 可以使用下面的代码测试是否有Tkinter....
  • GUI是图形用户界面的缩写,图形化的用户界面对使用过计算机的人来说应该都不陌生,在此也无需进行赘述。Python默认的GUI开发模块是tkinter(在Python 3以前的版本中名为Tkinter),从这个名字就可以看出它是基于Tk的...
  • GUI是图形用户界面的缩写,图形化的用户界面对使用过计算机的人来说应该都不陌生,在此也无需进行赘述。Python默认的GUI开发模块是tkinter(在Python 3以前的版本中名为Tkinter),从这个名字就可以看出它是基于Tk的...
  • Python图形用户界面和游戏开发

    千次阅读 2019-07-10 15:50:33
    GUI是图形用户界面的缩写,图形化的用户界面对使用过计算机的人来说应该都不陌生,在此也无需进行赘述。Python默认的GUI开发模块是tkinter(在Python 3以前的版本中名为Tkinter),从这个名字就可以看出它是基于Tk的...
  • 在本篇文章里小编给大家整理了关于Python图形用户界面和游戏开发知识点以及实例代码,需要的朋友们学习下。 基于tkinter模块的GUI GUI是图形用户界面的缩写,图形化的用户界面对使用过计算机的人来说应该都不陌生,...
  • 使用python 开发图形化界面,最初开始看B站莫烦的教程,好久忘了,今天自己想做个界面玩玩,并打包成exe玩一下。 直接上手,再翻到莫烦的教程直接看最后,把代码赋值,然后改改就可以了 很简单的图形化界面,只有...
  • 主要介绍了为Python程序添加图形化界面的教程,图形化界面编程是开发Python本地应用的必备,需要的朋友可以参考下
  • python tkinter 图形化界面

    千次阅读 2018-07-06 00:03:05
    1.python提供了多个图形开发界面的库: (1) Tkinter : Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口.Tk和Tkinter可以在大多数的Unix平台下使用,同样可以应用在Windows和Macintosh系统里.,Tk...
  • Python图形用户界面-Tkinter

    万次阅读 多人点赞 2017-08-22 10:19:58
    Tkinter是什么python 特定的GUI界面,是一个图像的窗口,tkinter是python 自带的,可以编辑的GUI界面,我们可以用GUI 实现很多一个直观的功能,如何想开发一个计算器,如果只是一个程序输入,输出窗口的话,是没用...
  • 本文主要学习并整理了:简要介绍用于python图形界面开发的第三方库如何利用Tkinter实现第一个GUI程序常见的Tkinter组件,以及控件属性等等1 第三方库及Tkinter介绍第三方库介绍python支持多种图形界面的第三方库,...
  • PyQt实现了类似Qt creator的功能,可以直接在界面通过拖动的方式调整类似于按钮、输入框等,很大的简化了使用。鉴于自己安装的是python2.7,所以使用PyQt4版本。 1. 安装 1.1 python2.7 1.2 开发环境 Pycharm ...
  • 安装wxpythonconda install wxpythonhelloworld入门继承方式# coding:utf-8import wx# wx 基本类是App#App, OnInit 初始class DriverApp(wx.App): #类的继承def OnInit(self): # 子类覆盖父类的方法frame = wx....
  • 一、运用阐明 ...本次图形界面开发是基于PyQT5的,详细界面的布置这里就不过多的引见了,主要是对其中的功用完成停止阐明: 其实思绪很简单,由于之前曾经有了论文下载的相关函数,我们只需求定义一个Butto
  • 介绍图形用户界面(GUI)是为用户交互提供灵活性的界面。它的交互性使我着迷。应用程序越吸引人,游戏开发就越好。GUI的最常见组件是主窗口,按钮,文本输入,标签,菜单等。在Python中进行...
  • GUI是图形用户界面的缩写,图形化的用户界面对使用过计算机的人来说应该都不陌生,在此也无需进行赘述。Python默认的GUI开发模块是tkinter(在Python 3以前的版本中名为Tkinter),从这个名字就可以看出它是基于Tk的...
  • 实现过程- 数据读取- 数据切片并对比匹配- 图形化开发3.运行效果- 界面- 选择路径- 读取数据- 最终效果4. 注意事项 1.开发背景 在今年疫情期间,许多高校的授课方式由线下转到了线上,伴随着这一举动,班级班委的...
  • GUI是图形用户界面的缩写,图形化的用户界面对使用过计算机的人来说应该都不陌生,在此也无需进行赘述。Python默认的GUI开发模块是tkinter(在Python 3以前的版本中名为Tkinter),从这个名字就可以看出它是基于Tk的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 563
精华内容 225
关键字:

python图形化界面开发

python 订阅