Python的GUI程式設計(二)Button(按鈕)
Button 控制元件是一種標準 Tkinter 控制元件,
用來展現不同樣式的按鈕. Button 控制元件被用以和使用者互動, 比如按鈕被滑鼠點選後, 某種操作被啟動. 和 Label 控制元件類似,
按鈕可以展示圖片或者文字. 不同的是, Label 控制元件可以指定字型, Button 控制元件只能使用單一的字型. Button 上的文字可以多行顯示.
可以將一個 Python 函式或方法繫結到一個 Button 控制元件. 這個函式或方法將在按鈕被點選時執行.
按鈕Button控制元件的屬性:
activebackground, activeforeground型別:顏色;
說明:當 按鈕被啟用時所使用的顏色。anchor型別:常量;
說明:控制按鈕上內容的位置。使用N, NE, E, SE, S, SW, W, NW,or CENTER這些值之一。預設值是CENTER。background (bg), foreground (fg)型別:顏色;
說明:按鈕的顏色。預設值與特定平臺相關。bitmap型別:點陣圖;
borderwidth (bd)
型別:整數;
說明:按鈕邊框的寬度。預設值與特定平臺相關。但通常是1或2象素。
command
型別:回撥;
說明:當按鈕被按下時所呼叫的一個函式或方法。所回撥的可以是一個函式、方法或別的可呼叫的Python物件。
cursor
型別:游標;
說明:當滑鼠移動到按鈕上時所顯示的游標。
default
型別:常量;
說明:如果設定了,則按鈕為預設按鈕。注意這個語法在Tk 8.0b2中已改變。
disabledforeground
型別:顏色;
說明:當按鈕無效時的顏色。
font
型別:字型;
說明:按鈕所使用的字型。按鈕只能包含一種字型的文字。
highlightbackground, highlightcolor
型別:顏色;
說明:控制焦點所在的高亮邊框的顏色。當視窗部件獲得焦點的時候,邊框為highlightcolor所指定的顏色。否則邊框為highlightbackground所指定的顏色。預設值由系統所定。
highlightthickness
型別:距離;
說明:控制焦點所在的高亮邊框的寬度。預設值通常是1或2象素。
image
型別:圖象;
說明:在部件中顯示的圖象。如果指定,則text和bitmap選項將被忽略。
justify
型別:常量;
說明:定義多行文字如何對齊。可取值有:LEFT, RIGHT, 或 CENTER(預設)。
padx, pady
型別:距離;
說明:指定文字或圖象與按鈕邊框的間距。
relief
型別:常量;
說明:邊框的裝飾。通常按鈕按下時是凹陷的,否則凸起。另外的可能取值有GROOVE, RIDGE, 和 FLAT。
state
型別:常量;
說明:按鈕的狀態:NORMAL, ACTIVE 或 DISABLED。預設值為NORMAL。
takefocus
型別:標誌;
說明:表明使用者可以Tab鍵來將焦點移到這個按鈕上。預設值是一個空字串,意思是如果按鈕有按鍵繫結的話,它可以通過所繫結的按鍵來獲得焦點。
text
型別:字串;
說明:顯示在按鈕中的文字。文字可以是多行。如果bitmaps或image選項被使用,則text選項被忽略。
textvariable
型別:變數;
說明:與按鈕相關的Tk變數(通常是一個字串變數)。如果這個變數的值改變,那麼按鈕上的文字相應更新。
underline
型別:整數;
說明:在文字標籤中哪個字元加下劃線。預設值為-1,意思是沒有字元加下劃線。
width, height
型別:距離;
說明:按鈕的尺寸。如果按鈕顯示文字,尺寸使用文字的單位。如果按鈕顯示圖象,尺寸以象素為單位(或螢幕的單位)。如果尺寸沒指定,它將根據按鈕的內容來計算。
wraplength
型別:距離;
說明:確定一個按鈕的文字何時調整為多行。它以螢幕的單位為單位。預設不調整。
點選Button,利用回撥函式顯示文字內容。
from Tkinter import *
Bu=Tk()
#回撥函式
def PrintButton():
print '荷塘花!'
img=PhotoImage(file='D:/temp/1.gif')
Button(Bu,width=200,height=200,text='press',anchor='c',bg='blue',fg='red',padx=120,pady=120,borderwidth=10,relief='ridge',image=img,compound='bottom',command=PrintButton).pack()
Bu.mainloop()
anchor屬性:
from Tkinter import *
root = Tk()
for a in ['n','s','e','w','ne','nw','se','sw']:
Button(root,
text = 'anchor',
anchor = a,
width = 30,
height = 4).pack()
#文字顯示的位置。
Button(root,text = 'anchor',width = 30,height =4).pack()
Button(root,text = 'anchor',anchor = 'center',width = 30,height =4).pack()
Button(root,text = 'anchor',anchor = 'n',width = 30,height = 4).pack()
Button(root,text = 'anchor',anchor = 's',width = 30,height = 4).pack()
Button(root,text = 'anchor',anchor = 'e',width = 30,height = 4).pack()
Button(root,text = 'anchor',anchor = 'w',width = 30,height = 4).pack()
Button(root,text = 'anchor',anchor = 'ne',width = 30,height = 4).pack()
Button(root,text = 'anchor',anchor = 'nw',width = 30,height = 4).pack()
Button(root,text = 'anchor',anchor = 'se',width = 30,height = 4).pack()
Button(root,text = 'anchor',anchor = 'sw',width = 30,height = 4).pack()
root.mainloop()
利用按鈕退出Label計時器:
def after(self, ms, func=None, *args): """Call function once after given time. MS specifies the time in milliseconds. FUNC gives the function which shall be called. Additional parameters are given as parameters to the function call. Return identifier to cancel scheduling with after_cancel."""
after(self, ms, func=None, *args) Tkinter的方法。標籤例項 在給定時間後呼叫函式。MS以毫秒為單位指定時間。函式給出了響應呼叫的函式。額外的引數作為函式呼叫的引數。返回使用after_cancel取消排程的識別符號。if not func: # I'd rather use time.sleep(ms*0.001) self.tk.call('after', ms) else: def callit(): try: func(*args) finally: try: self.deletecommand(name) except TclError: pass callit.__name__ = func.__name__ name = self._register(callit) return self.tk.call('after', ms, name)回撥函式與函式:fun與fun()作為引數時表示的意義不同。
fun作為引數表示是函式
fun()作為引數時表示一個值
config(self, cnf=None, **kw) Tkinter方法。標籤例項
配置小部件的資源。資源的值被指定為關鍵字。
就是使用config來重新給標籤屬性賦值
程式暫停的幾種方法:
1、匯入os模組
import os
os.system('pause)
2、匯入subprocess模組import subprocess
subprocess.call("pause",shell=True)
3、input();
這種方法不用包含模組,因此這也是最常用的一種暫停手段。
Python2中的raw_input()和input()語句在Python3中已經被合併到input()中。
程式退出方法:
1、匯入os模組
import os
os._exit()
os._exit()會直接將python程式終止,之後的所有程式碼都不會繼續執行。
2、匯入sys模組
import sys
sys.exit()
sys.exit()會引發一個異常:SystemExit,如果這個異常沒有被捕獲,那麼python直譯器將會退出。如果有捕獲此異常的程式碼,那麼這些程式碼還是會執行。
計時器示例:
from Tkinter import *
import subprocess
import os
import sys
counter = 0
def counter_label(label):
counter = 0
def count():
global counter
counter += 1
#配置屬性
#區間大小
label.config(width=10, height=2)
#文字內容
label.config(text=str(counter/3600%24/10)+str(counter/3600%24%10)+':'+str(counter/60%60/10)+str(counter/60%60%10)+':'+str(counter%60/10)+str(counter%60%10))
#字型顏色
label.config(fg='red')
#label位置
label.config(anchor='c')
#after函式的第一個引數設定毫秒數後,呼叫count函式
label.after(1, count)
count()
def Pause():
# subprocess.call("pause",shell=True)
# os.system('pause')
# input()
sys.exit()
root = Tk()
root.title("計時器")
label = Label(root)
label.pack(side='left')
#查詢方法或屬性
# print help(label.config)
# print help(label.after)
counter_label(label)
button = Button(root, text='Stop', width=5, command=Pause,anchor='c').pack(side='right')#或command=root.destory小夥視窗
root.mainloop()
參考:http://blog.csdn.net/liuxu0703/article/details/60639166
相關推薦
Python的GUI程式設計(二)Button(按鈕)
Button 控制元件是一種標準 Tkinter 控制元件, 用來展現不同樣式的按鈕. Button 控制元件被用以和使用者互動, 比如按鈕被滑鼠點選後, 某種操作被啟動. 和 Label 控制元件
PTA - C程式設計 NoA - 二維陣列 (10道題)
應該是第10次上機題目了,本次共10道題(由於具體輸入輸出的樣例題目中都有,就不在部落格裡佔篇幅複製貼上了,只把題題目和要求賦值過來): 7-1 求矩陣的區域性極大值 7-2 矩陣運算 7-3
[luoguP2216] [HAOI2007]理想的正方形(二維單調隊列)
++ pla https hide 正方形 closed log 傳送門 name 傳送門 1.先弄個單調隊列求出每一行的區間為n的最大值最小值。 2.然後再搞個單調隊列求1所求出的結果的區間為n的最大值最小值 3.最後掃一遍就行 懶得畫圖,自己體會吧。
[luoguP2601] [ZJOI2009]對稱的正方形(二維Hash + 二分 || Manacher)
getchar() cst ons pro color tar zjoi fine long 傳送門 很蒙蔽,不知道怎麽搞。 網上看題解有說可以哈希+二分搞,也有的人說用Manacher搞,Manacher是什麽鬼?以後再學。 對於這個題,可以從矩陣4個角
LeetCode 543. Diameter of Binary Tree (二叉樹的直徑)
tween res edge public level 距離 sent java dot Given a binary tree, you need to compute the length of the diameter of the tree. The diamet
LeetCode 563. Binary Tree Tilt (二叉樹的傾斜度)
tor init 要求 += esc runtime 目標 兩個 out Given a binary tree, return the tilt of the whole tree. The tilt of a tree node is defined as the a
CentOS7 LNMP+phpmyadmin環境搭建(二、LNMP環境搭建)
用戶 lib 關聯 cin 特殊 get deb 分號 yum 上一篇博客我們在虛擬機上安裝了centos7,接下來,就開始安裝lnmp環境吧。 還是跟之前一樣,進入命令行後,先使用su命令切換到root權限。 首先配置防火墻 CentOS 7.0默認使用的是firewa
selenium自動化實戰-基於python語言(二: 編寫腳本)
獲取 pat 打開 border 命令 需要 框架 attribute 一個 上一篇文章說到顯示等待和隱式等待語句,我們繼續學習下面的命令方法。 8. 定位一組元素 這裏書上是自己寫了一個頁面代碼,通過訪問本地這個頁面來舉例。但我覺得找一個現有的頁面自己琢磨更有意思,而且
mysql-5.7.18版本(二進制包安裝)-自定義安裝路徑
mysql linux lnmp mysql-5.7.18版本(二進制包安裝)-自定義安裝路徑安裝路徑:/application/mysql-5.7.181.前期準備mysql依賴libaioyum install -y libaio創建用戶mysql,以該用戶的身份執行mysqluseradd
Aizu - ALDS1_7_B Binary Trees(二叉樹的表達)
二叉 orm print sts ica nod nts sin ostream A rooted binary tree is a tree with a root node in which every node has at most two children.
MySQL(二之數據引擎)
display 一個 etx variable 所在 面向 常熟 配置 dex 什麽是數據引擎 在初識數據中曾經講過關於數據庫相關的一些概念:數據庫 表 記錄等等 mysql中建立的庫===>文件夾 庫中建立的表===>文件而現實生活中我們
前端自動化測試之UI RECORDER(二、PC錄制)
啟動服務 域名 run ports shadow 科學 兼容 webp htm PC錄制教程 準備工作: NodeJs環境 請自行先安裝好nodejs環境,在命令行執行node -v命令成功說明已經安裝成功 Chrome瀏覽器 JAVA環境 UI Recorder We
Python學習筆記015——文件file的常規操作之二(二進制文件)
cde enc blog 模式 1byte 二進制文件 整數 style rst 1 字節(byte)的單位 1KB = 2*10 Bytes 1MB = 1KB * 1024 = 2**20 Bytes 1GB = 1KB * 1K * 1K = 2**30 Bytes
JPA學習(二、JPA_基本註解)
自增 簡化 留言 uniq 產生 規範 pri blob 時間 框架學習之JPA(二) JPA是Java Persistence API的簡稱,中文名Java持久層API,是JDK 5.0註解或XML描述對象-關系表的映射關系,並將運行期的實體對象持久化到數據庫中。 Sun
laravel5.5源碼筆記(二、服務提供者provider)
字符串 bst 啟動 osi bee bootp 系統初始 bootstra min laravel裏所謂的provider服務提供者,其實是對某一類功能進行整合,與做一些使用前的初始化引導工作。laravel裏的服務提供者也分為,系統核心服務提供者、與一般系統服務提供者。
codeforces869EThe Untended Antiquity(二維樹狀陣列)
/* 二維樹狀陣列+Hash 題意: 給一個地圖(n,m) 三種操作: 1,在以(r1,c1)、(r2,c2)為對角的矩形四條邊上新增障礙 2,消除以(r1,c1)、(r2,c2)為對角的矩形四條邊上的障礙 3,判斷(r1,c1)到(r2,c2)是否存在一條路徑,不經過障礙 利用二維樹
微信小程式H5預覽頁面框架(二維碼不隱藏)
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta http-equiv="X
【資料結構與演算法】之樹的基本概念及常用操作的Java實現(二叉樹為例) --- 第十二篇
樹是一種非線性資料結構,這種資料結構要比線性資料結構複雜的多,因此分為三篇部落格進行講解: 第一篇:樹的基本概念及常用操作的Java實現(二叉樹為例) 第二篇:二叉查詢樹 第三篇:紅黑樹 本文目錄: 1、基本概念 1.1 什麼是樹 1.2 樹的
jquery實現同時展示多個tab標籤+左右箭頭實現來回滾動(美化版增加刪除按鈕)
閒聊 前段時間小穎分享了:jquery實現同時展示多個tab標籤+左右箭頭實現來回滾動文章,引入專案後,我們的組長說樣子太醜了,小穎覺得還好啊,要不大家評評理,看下醜不醜?無圖無真相,來上圖:  
p1280 破鑼樂隊(二維費用的揹包)
題目 https://www.luogu.org/problemnew/show/P2736 題解 1.這是一道二維費用的揹包。(看到這種題,一旦知道了他要用揹包來寫,用哪種揹包來寫,基本就解決了。) 2.唯一不同的是:此題的狀態轉移方程比較不同。 //j代表光碟的數量,