1. 程式人生 > >Python的GUI程式設計(二)Button(按鈕)

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代表光碟的數量,