1.标准对话框(tkinter.messagebox)

常用标准对话框

tkinter.messagebox.askokcancel

tkinter.messagebox.askquestion
tkinter.messagebox.askretrycancel
tkinter.messagebox.askyesno
tkinter.messagebox.showerror
tkinter.messagebox.showinfo
tkinter.messagebox.showwarning

tkinter.messagebox.askyesnocancel

from tkinter import *
from tkinter.messagebox import * import Pmw class App:
def __init__(self,master):
self.result=Pmw.EntryField(master,entry_width=8,
value="",
label_text="Returned value:",
labelpos=W,labelmargin=1)
self.result.pack(padx=15,pady=15) root=Tk()
question=App(root) button=askquestion("question:",
"Oh,Dear,did somebody\nsay mattress to Mr Lambert?",
default="no")
question.result.setentry(button) root.mainloop()

>>

2.数据输入对话框(tkinter.simpledialog)

实例1:

from tkinter import *
import Pmw
from tkinter.simpledialog import * class App:
def __init__(self,master):
self.result=Pmw.EntryField(master,entry_width=15,value="",label_text="Returned value:",labelpos=W,labelmargin=1)
self.result.pack(padx=15,pady=15) root=Tk() display=App(root) retVal=askinteger("The Larch","What is the number of the Larch?",minvalue=0,maxvalue=50)
display.result.setentry(retVal)
root.mainloop()

>>

实例2:

from tkinter import *

from tkinter.simpledialog import *
import tkinter.messagebox class GetPassword(Dialog): def body(self,master):
self.title("Enter New Password") Label(master,text="Old Password:").grid(row=0,sticky=W)
Label(master,text="New Password").grid(row=1,sticky=W)
Label(master,text="Entry New Password Again:").grid(row=2,sticky=W) self.oldpw=Entry(master,width=16,show="*")
self.newpw1=Entry(master,width=16,show="*")
self.newpw2=Entry(master,width=16,show="*") self.oldpw.grid(row=0, column=1, sticky=W)
self.newpw1.grid(row=1, column=1, sticky=W)
self.newpw2.grid(row=2, column=1, sticky=W) return self.oldpw
def apply(self):
opw=self.oldpw.get()
npw1=self.newpw1.get()
npw2=self.newpw2.get() if not npw1==npw2:
tkinter.messagebox.showerror("Bad Password","New Passwords do not match")
else:
pass
root=Tk()
dialog=GetPassword(root)

>>

3.简单表格

from tkinter import *
import Pmw
import string class Shell:
def __init__(self, title=''):
self.root = Tk()
self.root.option_add('*font', ('verdana', 12, 'bold'))
Pmw.initialise(self.root)
self.root.title(title) def doBaseForm(self, master):
# Create the Balloon.
self.balloon = Pmw.Balloon(master)
self.menuBar = Pmw.MenuBar(master, hull_borderwidth=1,
hull_relief='raised',
hotkeys=1, balloon=self.balloon)
self.menuBar.pack(fill='x')
self.menuBar.addmenu('File', 'Exit')
self.menuBar.addmenuitem('File', 'command',
'Exit the application',
label='Exit', command=self.exit)
self.menuBar.addmenu('View', 'View user information')
self.menuBar.addmenuitem('View', 'command',
'Get user information',
label='Get info',
command=self.getStatus)
self.menuBar.addmenu('Help', 'About Example 10-4', side='right')
self.menuBar.addmenuitem('Help', 'command',
'Get information on application',
label='About...', command=self.help) self.dataFrame = Frame(master)
self.dataFrame.pack(fill='both', expand=1) self.infoFrame = Frame(self.root,
bd=1, relief='groove')
self.infoFrame.pack(fill='both', expand=1, padx=10) self.statusBar = Pmw.MessageBar(master, entry_width=40,
entry_relief='groove',
labelpos='w',
label_text='')
self.statusBar.pack(fill='x', padx=10, pady=10) # Add balloon text to statusBar
self.balloon.configure(statuscommand=self.statusBar.helpmessage) # Create about dialog.
Pmw.aboutversion('10.4')
Pmw.aboutcopyright('Copyright My Company 1999\nAll rights reserved')
Pmw.aboutcontact(
'For information about this application contact:\n' +
' My Help Desk\n' +
' Phone: 800 555-1212\n' +
' email: help@my.company.com'
)
self.about = Pmw.AboutDialog(master,
applicationname='Example 10-4')
self.about.withdraw() def exit(self):
import sys
sys.exit(0) def getStatus(self):
username = self.userName.get()
cardnumber = self.cardNumber.get()
self.img = PhotoImage(file='%s.gif' % username)
self.pictureID['image'] = self.img
self.userInfo.importfile('%s.txt' % username)
self.userInfo.configure(label_text=username) def help(self):
self.about.show() def doDataForm(self):
self.userName = Pmw.EntryField(self.dataFrame, entry_width=8,
value='',
modifiedcommand=self.upd_username,
label_text='User name: ',
labelpos=W, labelmargin=1)
self.userName.place(relx=.20, rely=.325, anchor=W) self.cardNumber = Pmw.EntryField(self.dataFrame, entry_width=8,
value='',
modifiedcommand=self.upd_cardnumber,
label_text='Card number: ',
labelpos=W, labelmargin=1)
self.cardNumber.place(relx=.20, rely=.70, anchor=W) def doInfoForm(self):
self.pictureID = Label(self.infoFrame, bd=0)
self.pictureID.pack(side='left', expand=1) self.userInfo = Pmw.ScrolledText(self.infoFrame,
borderframe=1,
labelpos='n',
usehullsize=1,
hull_width=270,
hull_height=100,
text_padx=10,
text_pady=10,
text_wrap='none') self.userInfo.configure(text_font=('verdana', 8))
self.userInfo.pack(fill='both', expand=1) def upd_username(self):
#upname = string.upper(self.userName.get())
#upname = self.userName.get().upper
upname = self.userName.get()
if upname:
self.userName.setentry(upname) def upd_cardnumber(self):
valid = self.cardNumber.get()
if valid:
self.cardNumber.setentry(valid) if __name__ == '__main__':
shell = Shell(title='Example 10-4')
shell.root.geometry("%dx%d" % (400, 350))
shell.doBaseForm(shell.root)
shell.doDataForm()
shell.doInfoForm()
shell.root.mainloop()

>>

4.tkinter变量

from tkinter import *

class Var(Frame):
def __init__(self,master=None):
Frame.__init__(self,master=None)
self.pack() self.field=Entry()
self.field.pack() self.value=StringVar()
self.value.set("Jean-Paul Sartre")
self.field["textvariable"]=self.value
self.field.bind("<Key-Return>",self.print_value) def print_value(self,event):
print("Value is %s"%self.value.get()) test=Var()
test.mainloop()

>>

5.活页夹标签

在3.7版本的python中,Pmw的NoteBook方法感觉废了~所以推荐使用ttk.Notebook方法

实例1:

#https://stackoverflow.com/questions/284234/notebook-widget-in-tkinter
from tkinter import ttk
import tkinter as tk
from tkinter.scrolledtext import ScrolledText def demo():
root = tk.Tk()
root.title("ttk.Notebook") nb = ttk.Notebook(root) # adding Frames as pages for the ttk.Notebook
# first page, which would get widgets gridded into it
page1 = ttk.Frame(nb)
text = ScrolledText(page1)
text.pack(expand=1, fill="both")
# second page
page2 = ttk.Frame(nb)
text = ScrolledText(page2)
text.pack(expand=1, fill="both") nb.add(page1, text='One')
nb.add(page2, text='Two') nb.pack(expand=1, fill="both") root.mainloop() if __name__ == "__main__":
demo()

实例2:

#https://stackoverflow.com/questions/16514617/python-tkinter-notebook-widget
from tkinter import *
from tkinter import ttk root = Tk()
scheduledimage=PhotoImage(data="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")
note = ttk.Notebook(root) tab1 = ttk.Frame(note)
tab2 = ttk.Frame(note)
tab3 = ttk.Frame(note) Button(tab1, text='Exit', command=root.destroy).pack(padx=100, pady=100)
#Button(tab2, text='help', command=root.destroy).pack(padx=100, pady=100) note.add(tab1, text = "Tab One",image=scheduledimage, compound=TOP)
#note.add(tab1, text = "Tab One", compound=TOP)
note.add(tab2, text = "Tab Two")
note.add(tab3, text = "Tab Three")
note.pack() root.mainloop()

>>

6.进度条程序

简单的进度条

from tkinter import *

class ProgressBar:
def __init__(self,master=None,appearance=SUNKEN,width=100,height=18,background="gray",fillColor="blue",
labelText="说点什么好呢",labelColor="yellow",labelFont="Verdana",bd=2,value=50,min=0,max=100,orientation="horizontal"):
self.master=master
self.width=width
self.height=height
self.fillColor=fillColor
self.labelText=labelText
self.labelColor=labelColor
self.labelFont=labelFont
self.value=value
self.min=min
self.max=max
self.orientation=orientation self.frame=Frame(master,relief=appearance,bd=bd)
self.frame.pack() self.canvas=Canvas(self.frame,width=width,height=height,bd=0,
highlightthickness=0,background=background) self.scale=self.canvas.create_rectangle(0,0,width,height,fill=fillColor) self.label=self.canvas.create_text(self.canvas.winfo_reqwidth()/2,height/2,text=labelText,anchor="c",fill=labelColor,font=self.labelFont) self.canvas.pack(side=TOP,fill=X,expand="no") self.update() def update(self):
value=self.value
if value>self.max:
value=self.max
if value<self.min:
value=self.min if self.orientation=="horizontal":
self.canvas.coords(self.scale,0,0,float(value)/self.max*self.width,self.height)
else:
self.canvas.coords(self.scale, 0,
self.height - (float(value) / self.max * self.height),
self.width, self.height)

编程思路如下图,进度条变化,通过改变scale的位置来实现,变量只有一个,即右下角坐标(x,y)的x值

tkinter对话框和窗体的更多相关文章

  1. 【Exception—WebForm】当应用程序不是以 UserInteractive 模式运行时显示模式对话框或窗体是无效操作。请指定 ServiceNotification 或 DefaultDesktopOnly 样式,以显示服务应用程序发出的通知。

    最近做的项目现在发布到服务器上开始测试了,本地好好的程序,到服务器上却报异常了: 当应用程序不是以 UserInteractive 模式运行时显示模式对话框或窗体是无效操作.请指定 ServiceNo ...

  2. 当应用程序不是以UserInteractive 模式运行时显示模式对话框或窗体

    最近在做一个WCF程序的时候,WCF程序老是弹出一个错误“当应用程序不是以UserInteractive 模式运行时显示模式对话框或窗体是无效操作.请指定ServiceNotification或Def ...

  3. MFC中在基于对话框的窗体中使用CFileDialog导致菜单栏变灰的解决方案

    CSDN的博客编辑器实在是难用……转战博客园 直接把CSDN发的搬过来了 ————————————————————————————我是分割线———————————————————————————— 第 ...

  4. C++windows内核编程笔记day09_day10,对话框和窗体基本控件等的使用

    //设置字体颜色 SetTextColor(hdc,RGB(255,0,0)); //窗体背景 //wce.hbrBackground=(HBRUSH)(COLOR_WINDOW+1); //wce. ...

  5. 登录对话框(窗体程序)--JAVA基础

    1.用到的JFrame(框架)类对象(这里设JFrame类对象是frame)的方法有: frame.add(); 添加组件到frame框架中 frame.setVisible(); 设置框架是否可见 ...

  6. python的tkinter对话框

    import tkinter.messagebox #这个是消息框,对话框的关键 root = tkinter.Tk() root.withdraw() a=tkinter.messagebox.sh ...

  7. WPF MVVM 中怎样在ViewModel总打开的对话框在窗体之前

    今天在WPF的项目中,写打印插件,在ViewModel中对需要弹出打印对话框,而对话框如果没有Owner所属的时候经常会被当前应用程序遮住,导致我都不知道到底弹出来没有! 参照:http://www. ...

  8. 当应用程序不是以 UserInteractive 模式运行时显示模式对话框或窗体是无效操作

    在Web程序中引用了WinForm的类库引起了 主要是为了在web程序中使用Message.Show()以及SaveFileDialog类,能web程序中引用了WinForm类库 在Visual St ...

  9. python3中 tkinter模块创建window窗体、添加按钮、事务处理、创建菜单等的使用

    开始接触桌面图形界面编程,你可以到安装路径  \lib\tkinter 打开__init__.py 文件了解tkinter 1    tkinter 模块创建窗体,代码如下截图: 运行结果,如有右图显 ...

随机推荐

  1. Java 用户输入

    章节 Java 基础 Java 简介 Java 环境搭建 Java 基本语法 Java 注释 Java 变量 Java 数据类型 Java 字符串 Java 类型转换 Java 运算符 Java 字符 ...

  2. Java 类的属性

    章节 Java 基础 Java 简介 Java 环境搭建 Java 基本语法 Java 注释 Java 变量 Java 数据类型 Java 字符串 Java 类型转换 Java 运算符 Java 字符 ...

  3. [BJDCTF2020]Cookie is so stable

    0x00 知识点 Twig模板注入 链接: https://www.k0rz3n.com/2018/11/12/%E4%B8%80%E7%AF%87%E6%96%87%E7%AB%A0%E5%B8%A ...

  4. Golang的运算符-位运算符

    Golang的运算符-位运算符 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.位运算符概述 常见的位逻辑运算符: &: 位与运算符,表示AND(表示所有条件都得匹配), ...

  5. code first网站发布后数据表中没有数据问题

    code first网站发布后数据表中没有数据问题 (1).将internal sealed class Configuration类访问修饰符改为public  class Configuratio ...

  6. netty权威指南学习笔记一——NIO入门(2)伪异步IO

    在上一节我们介绍了四种IO相关编程的各个特点,并通过代码进行复习了传统的网络编程代码,伪异步主要是引用了线程池,对BIO中服务端进行了相应的改造优化,线程池的引入,使得我们在应对大量客户端请求的时候不 ...

  7. 前端解析返回的对象时json显示$ref问题的解决

    在mapper中写的语句,结果集中association,采用的一个对象,整个list列表中每个元素有一个对象元素,如果第二个元素中有一个与第一个元素中对象同名的,就会去引用上一个元素的地址,在jso ...

  8. Swift Json解析基础

    func JSONToData(obj:Any) -> Data { //先判断是否可以转换 if !JSONSerialization.isValidJSONObject(obj) { ret ...

  9. FFT各种模板

    丑陋敬请谅解: 求两列数的卷积: 递归版: #include <stdio.h> #include <algorithm> #include <math.h> us ...

  10. codeforces 594

    D 给你一个长度为n的括号序列,然后你可以选择交换两个位置,你需要使得能够变成 合法括号序列的起点最多. 题解 人尽皆知的东西:合法的括号序列是,令'('为1,')'为-1,那么前缀和需要>=0 ...