Python基础学习之奇异的GUI对话框

一、漂亮的标签图和按钮图

这个标签的设置config,如果熟悉office的操作,应该是一件不太难的事情。仿照文本的字体,颜色,字号,还有标签的高度宽度等等,做一个标签的仿本py文件如下:
文件在我的pywenjianjia之下。

from tkinter import *
root = Tk()
labelfont = ('times', 28, 'bold')
widget = Label(root, text='Hello tkinter world, I came here!')
widget.config(bg='black', fg='yellow')
widget.config(font=labelfont)
widget.config(height=5, width=40)
widget.pack(expand=YES, fill=BOTH)
root.mainloop()

在atom的packages中点python runner执行这个文件,于是就出现

如果你想做个还有点动态的按钮图片,可以使用button.py文件,也是来一个仿制的py文件。

在from tkinter import *
widget = Button(text='BUTTON', padx=20, pady=20)
widget.pack(padx=30, pady=30)
widget.config(cursor='gumby')
widget.config(bd=8, relief=RAISED)
widget.config(bg='dark green', fg='white')
widget.config(font=('helvetica', 24, 'underline italic'))
mainloop()

在atom的packages中点python runner执行这个文件,于是就出现:
一个漂亮的、彩色的、而且可按动的按钮图片。

二、窗口协议与窗口顶层

早年写那本《创新思维》教材时,学习visio画图花了点功夫,那时佩服visio软件在平面上的分层功夫。也就一个只给你平面感的屏幕,却可以画出很多奇奇怪怪的东西,还可以一层一层地叠放,并配置以不同的色彩。编程学到这里,过去那种怪怪的感觉因为这么多年计算机技术的不断升级,好多让你奇异的东西,早被更多超越给冲淡了。但你还是要为接触GUI的图片来一点惊喜感,而且还让你知道,这个魔幻平面的屏幕,还有相应的协议在发挥作用。我原以为,这个协议称为协议,一定有个协议各方的约定,是个超越GUI之外的东西呢,原来也是一个py代码的GUI文件。
而且,这个文件还有一个怪异,按照教材中的安排,你想去执行它,文件就显示有误。但试探着种种办法好像依然有误。回看教材文本,在窗口图标那一节似乎有个暗示,干脆去掉那个iconbitmap代码行,也就是去掉那个18行代码,文件就可以执行了。

展示文件的注释有点协议文本的味道,这大概就是协议的主要内容吧。我先给出总共28行的代码文件。

"""
弹出三个窗口,destroy()会停止一个窗口,quit()则停止所有窗口.
顶层窗口有标题、图标、协议等等,总是会有一个应用程序窗口。顶
层窗口都是容器,但不会封装/网格化。toplevel就像frame,它是新
窗口且包含一个菜单。
"""
from tkinter import *
root = Tk()    #显示根窗口

trees = [('The tkinter 之旅!',        'light blue'),
        ('The Paint!',          'light green'),
        ('The Giant wetearth !', 'red')]

for(tree, color) in trees:
    win = Toplevel(root)                              #新建窗口
    win.title('Sing...')                              #设置边框
    win.protocol('WM_DELETE_WINDOW', lambda:None)     #忽略关闭
    win.iconbitmap('py-blue-trans-out.ico')           #非红色Tk,有这一行则不运行

    msg = Button(win, text=tree, command=win.destroy) #关闭一个win
    msg.pack(expand=YES, fill=BOTH)
    msg.config(padx=10, pady=10, bd=10, relief=RAISED)
    msg.config(bg='black', fg=color, font=('times', 30, 'bold italic'))

root.title('Lumberjack demo')
Label(root, text='Main window', width=30).pack()
Button(root, text='Quit All', command=root.quit).pack() #终止所有程序
root.mainloop()

执行这个文件,出现以下结果:

Traceback (most recent call last):
  File "C:\Users\zzx21\GUI\Tour\toplevel2.py", line 18, in <module>
    win.iconbitmap('py-blue-trans-out.ico')           #非红色Tk,有这一行则不运行
  File "C:\Users\zzx21\pywenjianjia\lib\tkinter\__init__.py", line 2080, in wm_iconbitmap
    return self.tk.call('wm', 'iconbitmap', self._w, bitmap)
_tkinter.TclError: bitmap "py-blue-trans-out.ico" not defined

C:\Users\zzx21\GUI\Tour>

现在去掉行18,三个窗口按钮全出现了,还外带一个quit图标。使用shell的移动提示符,这些文件可以移动到屏幕上你想放置的地方,有点意思。

三、标准对话框是模态对话框

计算机语言也常常使用逻辑学的一些术语,tkinter之旅中讲到的对话框,竟然有模态对话框和非模态对话框之说。这好像在拉近py语言和逻辑之间的距离,让人有一点缘分之感。你只要对现代逻辑历史稍有理解就知道,20世纪初成熟的现代逻辑,到了20年代,出现了和经典逻辑有点变异的逻辑,那就是非经典的模态逻辑,美国学者C.I.刘易斯构造了严格蕴涵系统的S1-S5,现在所说的模态逻辑就产生了,学名就叫modal logic。而对话框中提到的模态对话框与非模态对话框中的模态一词的英文,就是这个modal。但深入一点,好像这里的模态modal和逻辑的modal并没有什么关联,只是在用词上的一个巧合吧。
沿着教材的思路,先把标准对话框做个基本了解,大概能说明这种巧合。
标准对话框也称通用对话框,这样的对话框也是模态的。这里modal的意思是:这样的对话框会阻止其它界面,这些界面只有在用户关闭该对话框的时候才可能返回。所以,所谓标准对话框或者模态对话框,只要它在屏幕上出现,就把其它的窗口界面给强制挡住了。为什么这就是modal的,按我对于modal的理解,好像一点modal的含义都没有。因为逻辑中的模态总是指的互为定义的模态词,例如必然与可能,应该与禁止等等,好像没有这里的行为意义。且让我们用实例的模态对话框,来表明它的含义吧。虽然modal在这里的含义有点模糊,但实例的出现会消解我们对它的迷惑。很可能python中的模态和逻辑的模态就不是一回事,一种语词使用的巧合罢了。
标准对话框dIg1.pyw,

from tkinter import *
from tkinter.messagebox import *

def callback():
    if askyesno('Verify', 'Do you really want to quit?'):
        showwarning('Yes', 'Quit not yet implemented')
    else:
        showinfo('No', 'Quit has been cancellled')

errmsg = 'Sorry, no Spam allowed!'
Button(text='退出', command=callback).pack(fill=X)
Button(text='垃圾', command=(lambda: showerror('Spam', errmsg))).pack(fill=X)
mainloop()

我用中文按钮替换英文按钮,出现了中文的对话框。这些对话框按钮是可以按动然后给出选择的,如下两图。
按退出有如下选择

按垃圾有如下选择

四、标准对话框的多栏使用

先做出一个回调演示表的py文件,它可以作为模块反复使用,这就使得对话框的制作多样化起来。我依然把这些对话框的按钮用中文标识,然后再做一个多重的按钮栏文件,于是你看到一个更多功能的对话框图。一个可以打开文件,选择颜色,输入字符等等的对话框。把所有代码的功能全都理解清楚,还没有到火候,但终于可以照葫芦画瓢地把这些图框及其作用显示出来了。
演示按钮集合的py文件demoDIg.py

from tkinter import *
from dialogTable import demos
from quitter import Quitter

class Demo(Frame):
    def __init__(self, parent=None, **options):
        Frame.__init__(self, parent, **options)
        self.pack()
        Label(self, text='Basic demos').pack()
        for (key, value) in demos.items():
            Button(self, text=key, command=value).pack(side=TOP, fill=BOTH)
        Quitter(self).pack(side=TOP, fill=BOTH)

if __name__=='__main__': Demo().mainloop()

执行这个文件,于是出现按钮栏对话框

如果点打开按钮,则打开了window的文档文件

如果点击颜色,则可在颜色框中选择颜色。

如果点击输入,则可在输入框中按要求输入数字。

这个对话框的初步理解,颇有点开人眼界。作为计算机科学中的python语言,真有超越自然语言的诸多功能。冲着这一点,这个编程语言再难,也得一点一点地坚持学下去。

到此这篇关于Python基础学习之奇异的GUI对话框的文章就介绍到这了,更多相关Python GUI对话框内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python GUI库图形界面开发之PyQt5输入对话框QInputDialog详细使用方法与实例

    PyQt5输入对话框QInputDialog介绍 QInputDialog控件是一个标准对话框,有一个文本框和两个按钮(ok和cancel)组成,当用户单击ok或enter键后,在父窗口可以收集通过QInputDialog控件输入的信息,QInputDialog控件是QDialog标准对话框的一部分 在QInpuTDialog控件中可以输入数字,字符串或列表中的选项,标签用于提示必要的信息 QInputDialog类中常用的方法 方法 描述 getint() 从控件中获得标准整数输入 getDo

  • 七个Python必备的GUI库

    GUI(图形用户界面),顾名思义就是用图形的方式,来显示计算机操作的界面,更加方便且直观. 与之相对应的则是CUI(命令行用户交互),就是常见的Dos命令行操作,需要记忆一些常用的命令,对于普通人而言,操作起来学习难度还是蛮高的. 一个好看又好用的GUI,可以大大提高大家的使用体验,提高效率. 比如你想开发一个计算器,如果只是一个程序输入,输出窗口的话,是没有用户体验的. 所以开发一个图像化的小窗口,就变得很有必要. 今天,小F就给大家介绍七个Python必备的GUI库,每一个都值得学习. 01

  • python GUI库图形界面开发之PyQt5打开保存对话框QFileDialog详细使用方法与实例

    PyQt5打开保存对话框QFileDialog介绍 QFIleDialog是用于打开和保存文件的标准对话框.QFileDialog类继承自QDialog类 QFileDialog在打开文件时使用可文件过滤器,用于显示指定扩展名的文件,也可以设置使用QFileDialog打开文件时的起始目录和指定扩展名的文件 QFileDialog类中的常用方法 方法 描述 getOpenFileName() 返回用户所选择文件的名称,并打开该文件 getSaveFileName() 使用用户选择的文件名保存文件

  • 基于wxPython的GUI实现输入对话框(1)

    本文实例为大家分享了基于wxPython的GUI实现输入对话框的具体代码,供大家参考,具体内容如下 编程时,免不了要输入一些参数等,这时输入对话框就派上用处了: #-*- coding:utf-8 -*- #~ #-------------------------------------------------------------------------------- #~ FileName=wxinputbox.py #~ Funciton:wx的输入对话框 #~ author:吴徐平 #

  • python 制作一个gui界面的翻译工具

    一.准备工作 除了Tkinter,还需要google_trans_new,没有安装这个库的朋友,可以使用 pip install google_trans_new 安装一下. 二.预览 1.主界面 2.翻译 3.支持多种语言哦 三.源代码 设计流程很简单,这里就直接贴代码了 3.1 My_Translator-v2.0.py from tkinter import * from tkinter import messagebox from tkinter import ttk import py

  • 基于Python的EasyGUI学习实践

    01_msgbox # 使用easygui功能,可以直接导入easygui模块 import easygui # 需要弹框时,要使用easygui. # msgbox(m)方法,输出带有m内容的信息框. # msg = message . easygui.msgbox('你好,我是easygui模块.') easygui.msgbox('今天也是充满希望的一天!') # easygui.msgbox(m,t,b)有三个参数. # m是显示的信息messag,t是信息框的标题tittle,b是信息

  • python制作的天气预报小工具(gui界面)

    一.准备工作 不需要准备. 二.预览 1.启动 启动以后自动定位所在城市,展示定位城市的天气. 2.添加城市 3.展示多个城市天气 添加天气之后能够显示多个城市天气信息. 三.设计流程 1.获取城市天气信息过程 用此流程图展示定位城市信息到获取城市天气信息过程. 四.源代码 1.Weather_Tool-v1.0.py from tkinter import * from tkinter import ttk from PIL import Image,ImageTk from tkinter

  • Python GUI之如何使用tkinter控件

    一.功能按钮 格式:Button(父对象,options,-) 父对象:表示当前按钮建立在哪一个窗口下. options:下面总结一部常用的. 1.bg或者background:背景色 2.fg或者foreground:前景色 3.command:单击按钮时,执行此方案 4.font:字体 5.height:字符高度 6.width:字符宽度 7.image:按钮上的图片 8.padx:设置文字与按钮左右间隔 9.pady:设置文字与按钮上下间隔 10.state:NORMAL表示启用按钮,DI

  • 基于wxPython的GUI实现输入对话框(2)

    接着上一篇基于wxPython的GUI输入对话框1,继续学习. 在程序输入中,有时会要求同时改变多个参数值,而且类型也不尽相同, 这时TextEntryDialog就显得不适用了.WxInput模块则比较彻底的解决了这个问题. 比如我有三个值要用户交互式设置,一个是int数,一个是str,一个是float,先看示例文件: from WInput import InputBox values={'int':1,'String':'This is String','float':3.5} title

  • python之PyAutoGui教你做个自动脚本计算器的方法

    前提环境准备 python3+pillow+pyautogui 先提前安装好python3以及pillow和pyautogui模块 这里介绍一下模块安装方法 pip install pillow pip install pyautogui pip install opencv-python 最终效果是利用python脚本模拟电脑计算器进行自动计算,相当于模拟人去点击自带的计算器进行运算,想要做到这一点需要有两个条件: 1.模拟鼠标和键盘的输入工作 2.识别计算器按钮的位置 先来看一下win10电

随机推荐