日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python视窗编程_[PYTHON] 核心编程笔记(19.图形用户界面编程)

發布時間:2024/7/23 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python视窗编程_[PYTHON] 核心编程笔记(19.图形用户界面编程) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

19.1 簡介

19.1.1 什么是Tcl,Tk和Tkinter?

19.1.2 安裝和使用Tkinter

# apt-get install python-tk -y

# python

-------------------------------

Python 2.7.3 (default, Sep 26 2012, 21:51:14)

[GCC 4.7.2] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> import Tkinter

>>>

--------------------------------

19.2 Tkinter與Python編程

19.2.1 Tkinter模塊:把Tk引入您的程序

1.導入Tkinter模塊(import Tkinter,或者,from Tkinter import *)

2.創建一個頂層窗口對象,來容納您的整個GUI程序

3.在您頂層窗口對象上或其中創建所有的GUI模塊(以及功能)

4.把這些GUI模塊與地層程序代碼相連接

5.進入主事件循環

第一步很明顯,所有使用Tkinter的GUI程序必須先導入Tkinter模塊,第一步就是為

了獲得Tkinter的訪問權

19.2.2 GUI程序開發簡介

19.2.3 頂層窗口:Tkinter.Tk()

>>> import Tkinter

>>> top = Tkinter.Tk()

19.2.4 Tk組件

例,標簽組件演示(tkhello1.py)

# vi tkhello1.py

----------------------------

#!/usr/bin/env python

import Tkinter

top = Tkinter.Tk()

label = Tkinter.Label(top, text = 'Hello World!')

label.pack()

Tkinter.mainloop()

----------------------------

19.3 Tkiner 舉例

19.3.1 標簽組件

19.3.2 按鈕組件

例,按鈕組件演示

# vi tkhello2.py

------------------------------

#!/usr/bin/env python

import Tkinter

top = Tkinter.Tk()

quit = Tkinter.Button(top, text = 'Hello World!', command = top.quit)

quit.pack()

Tkinter.mainloop()

------------------------------

19.3.3 標簽和按鈕組件

例,標簽和按鈕組件演示

# vi tkhello3.py

------------------------------

#!/usr/bin/env python

import Tkinter

top = Tkinter.Tk()

hello = Tkinter.Label(top, text='Hello World!')

hello.pack()

quit = Tkinter.Button(top, text='QUIT',

command=top.quit, bg='red',fg='white')

quit.pack(fill=Tkinter.X, expand=1)

Tkinter.mainloop()

------------------------------

19.3.4 標簽,按鈕和進度條組件

例,標簽,按鈕和進度條組件演示

我們最后一個組件例子介紹進度條組件,重點放在組件間通過回調函數的交互[諸

如resize()],您對進度條組件的動作將影響標簽組件上的文字

# vi tkhello4.py

------------------------------------

#!/usr/bin/env python

from Tkinter import *

def resize(ev=None):

label.config(font='Helvetica -%d bold' % \

scale.get())

top = Tk()

top.geometry('250x150')

label = Label(top, text='Hello World!',

font='Helvetica -12 bold')

label.pack(fill=Y, expand=1)

scale = Scale(top, from_=10, to=40,

orient=HORIZONTAL, command=resize)

scale.set(12)

scale.pack(fill=X, expand=1)

quit = Button(top, text='QUIT',

command=top.quit, activeforeground='white',

activebackground='red')

quit.pack()

mainloop()

------------------------------------

19.3.5 偏函數應用舉例

例,運用PFA的路燈指示牌GUI程序

# vi pfaGUI2.py

--------------------------------------

#!/usr/bin/env python

from functools import partial as pto

from Tkinter import Tk, Button, X

from tkMessageBox import showinfo, showwarning, showerror

WARN = 'warn'

CRIT = 'crit'

REGU = 'regu'

SIGNS = {

'do not enter': CRIT,

'railroad crossing': WARN,

'55\nspeed limit': REGU,

'wrong way': CRIT,

'merging traffic': WARN,

'one way': REGU,

}

critCB = lambda : showerror('Error', 'Error Button Pressed!')

warnCB = lambda : showwarning('Warning',

'Warning Button Pressed!')

infoCB = lambda : showinfo('Info', 'Info Button Pressed!')

top = Tk()

top.title('Road Signs')

Button(top, text='QUIT', command=top.quit,

bg='red', fg='white').pack()

MyButton = pto(Button, top)

CritButton = pto(MyButton, command=critCB, bg='white', fg='red')

WarnButton = pto(MyButton, command=warnCB, bg='goldenrod1')

ReguButton = pto(MyButton, command=infoCB, bg='white')

for eachSign in SIGNS:

signType = SIGNS[eachSign]

cmd = '%sButton(text=%r%s).pack(fill=X, expand=True)' % (

signType.title(), eachSign,

'.upper()' if signType == CRIT else '.title()')

eval(cmd)

top.mainloop()

--------------------------------------

19.3.6 中級Tkinter范例

例,文件遍歷系統(listdir.py)

這個稍高級一些的GUI程序擴大的組件的使用范圍,演員名單新增了列表框,文本框

,和滾動條,而且還有大量的回調函數,例如鼠標點擊,鍵盤輸入,和滾動條操作

# vi listdir.py

----------------------------------------

#!/usr/bin/env python

import os

from time import sleep

from Tkinter import *

class DirList:

def __init__(self, initdir=None):

self.top = Tk()

self.label = Label(self.top, \

text='Directory Lister' + ' v1.1')

self.label.pack()

self.cwd=StringVar(self.top)

self.dirl = Label(self.top, fg='blue',

font=('Helvetica', 12, 'bold'))

self.dirl.pack()

self.dirfm = Frame(self.top)

self.dirsb = Scrollbar(self.dirfm)

self.dirsb.pack(side=RIGHT, fill=Y)

self.dirs = Listbox(self.dirfm, height=15, \

width=50, yscrollcommand=self.dirsb.set)

self.dirs.bind('', self.setdirandgo)

self.dirsb.config(command=self.dirs.yview)

self.dirs.pack(side=LEFT, fill=BOTH)

self.dirfm.pack()

self.dirn = Entry(self.top, width=50, \

textvariable=self.cwd)

self.dirn.bind('', self.dols)

self.dirn.pack()

self.bfm = Frame(self.top)

self.clr = Button(self.bfm, text='Clear', \

command=self.clrdir, \

activeforeground='white', \

activebackground='blue')

self.ls = Button(self.bfm, \

text='List Directory', \

command=self.dols, \

activeforeground='white', \

activebackground='green')

self.quit = Button(self.bfm, text='Quit', \

command=self.top.quit, \

activeforeground='white', \

activebackground='red')

self.clr.pack(side=LEFT)

self.ls.pack(side=LEFT)

self.quit.pack(side=LEFT)

self.bfm.pack()

if initdir:

self.cwd.set(os.curdir)

self.dols()

def clrdir(self, ev=None):

self.cwd.set('')

def setdirandgo(self, ev=None):

self.last = self.cwd.get()

self.dirs.config(selectbackground='red')

check = self.dirs.get(self.dirs.curselection())

if not check:

check = os.curdir

self.cwd.set(check)

self.dols()

def dols(self, ev=None):

error = ''

tdir = self.cwd.get()

if not tdir: tdir = os.curdir

if not os.path.exists(tdir):

error = tdir + ': no such file'

elif not os.path.isdir(tdir):

error = tdir + ': not a directory'

if error:

self.cwd.set(error)

self.top.update()

sleep(2)

if not (hasattr(self, 'last') \

and self.last):

self.last = os.curdir

self.cwd.set(self.last)

self.dirs.config( \

selectbackground='LightSkyBlue')

self.top.update()

return

self.cwd.set( \

'FETCHING DIRECTORY CONTENTS...')

self.top.update()

dirlist = os.listdir(tdir)

dirlist.sort()

os.chdir(tdir)

self.dirl.config(text=os.getcwd())

self.dirs.delete(0, END)

self.dirs.insert(END, os.curdir)

self.dirs.insert(END, os.pardir)

for eachFile in dirlist:

self.dirs.insert(END, eachFile)

self.cwd.set(os.curdir)

self.dirs.config( \

selectbackground='LightSkyBlue')

def main():

d = DirList(os.curdir)

mainloop()

if __name__ == '__main__':

main()

----------------------------------------

19.4 其他GUI簡介

19.4.1 Tk interface eXtensions(Tix)

# apt-get install tix -y

# vi animalTix.pyw

-------------------------------------------

#!/usr/bin/env python

from Tkinter import Label, Button, END

from Tix import Tk, Control, ComboBox

top = Tk()

top.tk.eval('package require Tix')

lb = Label(top,

text='Animals (in pairs; min: pair, max: dozen)')

lb.pack()

ct = Control(top, label='Number:',

integer=True, max=12, min=2, value=2, step=2)

ct.label.config(font='Helvetica -14 bold')

ct.pack()

cb = ComboBox(top, label='Type:', editable=True)

for animal in ('dog', 'cat', 'hamster', 'python'):

cb.insert(END, animal)

cb.pack()

qb = Button(top, text='QUIT',

command=top.quit, bg='red', fg='white')

qb.pack()

top.mainloop()

-------------------------------------------

19.4.2 Python MegaWidgets(PMW)

19.4.3 wxWidgets和wxPython

Pmw GUI程序演示

# apt-get install python-pmw -y

# vi animalPmw.pyw

----------------------------------

#!/usr/bin/env python

from Tkinter import Button, END, Label, W

from Pmw import initialise, ComboBox, Counter

top = initialise()

lb = Label(top,

text='Animals (in pairs; min: pair, max: dozen)')

lb.pack()

ct = Counter(top, labelpos=W, label_text='Number:',

datatype='integer', entryfield_value=2,

increment=2, entryfield_validate={'validator':

'integer', 'min': 2, 'max': 12})

ct.pack()

cb = ComboBox(top, labelpos=W, label_text='Type:')

for animal in ('dog', 'cat', 'hamster', 'python'):

cb.insert(END, animal)

cb.pack()

qb = Button(top, text='QUIT',

command=top.quit, bg='red', fg='white')

qb.pack()

top.mainloop()

----------------------------------

wxPython GUI程序演示

# vi animalWx.pyw

-----------------------------------

#!/usr/bin/env python

from Tkinter import Button, END, Label, W

from Pmw import initialise, ComboBox, Counter

top = initialise()

lb = Label(top,

text='Animals (in pairs; min: pair, max: dozen)')

lb.pack()

ct = Counter(top, labelpos=W, label_text='Number:',

datatype='integer', entryfield_value=2,

increment=2, entryfield_validate={'validator':

'integer', 'min': 2, 'max': 12})

ct.pack()

cb = ComboBox(top, labelpos=W, label_text='Type:')

for animal in ('dog', 'cat', 'hamster', 'python'):

cb.insert(END, animal)

cb.pack()

qb = Button(top, text='QUIT',

command=top.quit, bg='red', fg='white')

qb.pack()

top.mainloop()

-----------------------------------

19.4.4 GTK+ 和 PyGTK

PyGTk GUI 程序演示(animalGtk.pyw)

# vi animalGtk.pyw

--------------------------------------

#!/usr/bin/env python

import pygtk

pygtk.require('2.0')

import gtk

import pango

class GTKapp(object):

def __init__(self):

top = gtk.Window(gtk.WINDOW_TOPLEVEL)

top.connect("delete_event", gtk.main_quit)

top.connect("destroy", gtk.main_quit)

box = gtk.VBox(False, 0)

lb = gtk.Label(

'Animals (in pairs; min: pair, max: dozen)')

box.pack_start(lb)

sb = gtk.HBox(False, 0)

adj = gtk.Adjustment(2, 2, 12, 2, 4, 0)

sl = gtk.Label('Number:')

sl.modify_font(

pango.FontDescription("Arial Bold 10"))

sb.pack_start(sl)

ct = gtk.SpinButton(adj, 0, 0)

sb.pack_start(ct)

box.pack_start(sb)

cb = gtk.HBox(False, 0)

c2 = gtk.Label('Type:')

cb.pack_start(c2)

ce = gtk.combo_box_entry_new_text()

for animal in ('dog', 'cat', 'hamster', 'python'):

ce.append_text(animal)

cb.pack_start(ce)

box.pack_start(cb)

qb = gtk.Button("")

red = gtk.gdk.color_parse('red')

sty = qb.get_style()

for st in (gtk.STATE_NORMAL,

gtk.STATE_PRELIGHT, gtk.STATE_ACTIVE):

sty.bg[st] = red

qb.set_style(sty)

ql = qb.child

ql.set_markup('QUIT')

qb.connect_object("clicked",

gtk.Widget.destroy, top)

box.pack_start(qb)

top.add(box)

top.show_all()

if __name__ == '__main__':

animal = GTKapp()

gtk.main()

--------------------------------------

19.5 相關模塊和其他GUI

GUI 模塊或系統描述

TkinterTK INTERface: Python的默認GUI工具集

PmwPython MegaWidgets(Tkinter擴展)

TixTk Interface eXtension(Tk 擴展)

TkZinc(Zinc) Extended Tk Canvas type(Tk 擴展)

EasyGUI(easygui) 非常簡單的非事件驅動GUI(Tk 擴展)

TIDE+(IDE Studio) Tix集成開發環境

wxWidgets相關模塊

wxPython Python對wxWidgets的綁定,一個跨平臺的GUI框架庫(早期稱為wxWindows)

Boa ConstructorPython集成開發環境兼wxPython GUI構造工具

PythonCard 基于wxPython的GUI桌面應用程序工具集

wxGlade 另一個wxPython GUI設計工具

商業軟件

win32ui Python版的Microsoft MFC

swing Python版的Sun Microsystems Java/swing(基于Jython)

總結

以上是生活随笔為你收集整理的python视窗编程_[PYTHON] 核心编程笔记(19.图形用户界面编程)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 一二三区精品视频 | 在线观看1区 | 成人国产精品免费 | 日韩伦乱 | 欧美xx在线 | 欧美精品日韩精品 | 69久久久| 婷婷伊人五月天 | 啪啪自拍 | 亚洲一区二区三区播放 | 91成人综合 | 日本精品在线视频 | 亚洲免费色 | 久久久18禁一区二区三区精品 | 成人免费毛片嘿嘿连载视频 | 久久影库 | 在线观看欧美成人 | 九一av| 依依av| 国产日韩精品一区二区三区在线 | 美女性高潮视频 | 亚洲精品成av人片天堂无码 | 在线超碰av | 国产精品国产三级国产专区51区 | 香蕉在线视频播放 | 久久精品久久精品 | 欧美xxxxx少妇 | 今天高清视频在线观看视频 | 久久精品牌麻豆国产大山 | 疯狂少妇 | 丰满少妇麻豆av苏语棠 | 日韩精品一区二区三区网站 | 黄色小视频免费在线观看 | 国产在线视频一区二区 | 日本一区二区三区欧美 | 可以免费观看的毛片 | 日韩一区二区三 | 国产欧美网站 | av无码久久久久久不卡网站 | 国产毛片视频 | 国产婷婷色综合av蜜臀av | 黄色网免费看 | 手机在线中文字幕 | 欧美综合网站 | 亚洲区av | 成人网在线免费观看 | 国产第5页| 天天躁日日躁狠狠躁免费麻豆 | 超碰在线人人 | 亚洲人色| 免费成人电影在线观看 | 精品久久五月天 | 伊人二区| 玉米地疯狂的吸允她的奶视频 | 69堂视频| 欧美精品日韩在线观看 | 日日日插插插 | 国产一区二区成人 | 欧美日韩一区二区三区四区五区 | 青青草视频网站 | 四虎综合 | 成年人免费网址 | 久久久久久久久久免费视频 | 欧美在线视频免费播放 | 男人操女人逼逼视频 | 日韩中文字幕在线不卡 | 女人脱下裤子让男人捅 | 丰满少妇高潮在线观看 | 影音先锋中文字幕在线视频 | 黄色大片在线播放 | 亚洲精品大片www | 国产精品欧美激情在线播放 | 国产成人高清视频 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 欧美极品在线 | 国产精品vip | 亚洲一区不卡 | 大肉大捧一进一出视频 | 国产三级在线看 | www.国产黄色 | 在线日韩欧美 | 97人妻精品一区二区三区免 | 国产麻豆成人 | 天天干天天摸天天操 | 黑人巨大av | 亚洲午夜不卡 | 超级砰砰砰97免费观看最新一期 | 欧美精品免费一区二区 | 日韩女人性猛交 | 国产欧美一区二 | 五月天一区二区三区 | 欧产日产国产精品98 | 有码在线视频 | 国语对白91 | 久久中文免费视频 | 成人免费a视频 | 99热在线观看免费精品 | 国产成人一区二区三区别 | 国产激情av |