--********************************************************************************************************************************
--import------import Tkinter 模塊---圖庫----------------------------------------------------------------------------
--********************************************************************************************************************************
--圖1-------------import------import Tkinter 模塊-------------Python GUI編程--------tkinter 佈局---------------------------------------------------------
Tkinter 編程
Tkinter 是 Python 的標準 GUI 庫。Python 使用 Tkinter 可以快速的創建 GUI 應用程序。
由於 Tkinter 是內置到 python 的安裝包中、只要安裝好 Python 之後就能 import Tkinter 庫、而且 IDLE 也是用 Tkinter 編寫而成、對於簡單的圖形界面 Tkinter 還是能應付自如。
注意: Python3.x 版本使用的庫名爲 tkinter,即首寫字母 T 爲小寫。
import tkinter
創建一個GUI程序
1、導入 Tkinter 模塊
2、創建控件
3、指定這個控件的 master, 即這個控件屬於哪一個
4、告訴 GM(geometry manager) 有一個控件產生了。
實例:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import Tkinter
top = Tkinter.Tk()
# 進入消息循環
top.mainloop()
以上代碼執行結果如下圖:
tkwindow
實例2:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
from Tkinter import * # 導入 Tkinter 庫
root = Tk() # 創建窗口對象的背景色
# 創建兩個列表
li = ['C','python','php','html','SQL','java']
movie = ['CSS','jQuery','Bootstrap']
listb = Listbox(root) # 創建兩個列表組件
listb2 = Listbox(root)
for item in li: # 第一個小部件插入數據
listb.insert(0,item)
for item in movie: # 第二個小部件插入數據
listb2.insert(0,item)
listb.pack() # 將小部件放置到主窗口中
listb2.pack()
root.mainloop() # 進入消息循環
以上代碼執行結果如下圖:
Tkinter 組件
Tkinter的提供各種控件,如按鈕,標籤和文本框,一個GUI應用程序中使用。這些控件通常被稱爲控件或者部件。
目前有15種Tkinter的部件
Button 按鈕控件;在程序中顯示按鈕。
Canvas 畫布控件;顯示圖形元素如線條或文本
Checkbutton 多選框控件;用於在程序中提供多項選擇框
Entry 輸入控件;用於顯示簡單的文本內容
Frame 框架控件;在屏幕上顯示一個矩形區域,多用來作爲容器
Label 標籤控件;可以顯示文本和位圖
Listbox 列表框控件;在Listbox窗口小部件是用來顯示一個字符串列表給用戶
Menubutton 菜單按鈕控件,由於顯示菜單項。
Menu 菜單控件;顯示菜單欄,下拉菜單和彈出菜單
Message 消息控件;用來顯示多行文本,與label比較類似
Radiobutton 單選按鈕控件;顯示一個單選的按鈕狀態
Scale 範圍控件;顯示一個數值刻度,爲輸出限定範圍的數字區間
Scrollbar 滾動條控件,當內容超過可視化區域時使用,如列表框。.
Text 文本控件;用於顯示多行文本
Toplevel 容器控件;用來提供一個單獨的對話框,和Frame比較類似
Spinbox 輸入控件;與Entry類似,但是可以指定輸入範圍值
PanedWindow PanedWindow是一個窗口布局管理的插件,可以包含一個或者多個子控件。
LabelFrame labelframe 是一個簡單的容器控件。常用與複雜的窗口布局。
tkMessageBox 用於顯示你應用程序的消息框。
標準屬性
標準屬性也就是所有控件的共同屬性,如大小,字體和顏色等等。
屬性 描述
Dimension 控件大小;
Color 控件顏色;
Font 控件字體;
Anchor 錨點;
Relief 控件樣式;
Bitmap 位圖;
Cursor 光標;
幾何管理
Tkinter控件有特定的幾何狀態管理方法,管理整個控件區域組織,一下是Tkinter公開的幾何管理類: 包、網格、位置
幾何方法 描述
pack() 包裝;
grid() 網格;
place() 位置;
--python的tkinter佈局之簡單的聊天窗口實現方法
這篇文章主要介紹了python的tkinter佈局之簡單的聊天窗口實現方法,對於tkinter用法做了初步的介紹與應用展示,需要的朋友可以參考下
本文實例展示了一個python的tkinter佈局的簡單聊天窗口。分享給大家供大家參考之用。具體方法如下:
該實例展示的是一個簡單的聊天窗口,可以實現下方輸入聊天內容,點擊發送,可以增加到上方聊天記錄列表中。現在只是“單機”版。
右側預留了空位可以放點兒其它東西。感興趣的讀者可以進一步做成socket雙方互聊。
以下是功能代碼部分:
from Tkinter import *
import datetime
import time
root = Tk()
root.title(unicode('與xxx聊天中','eucgb2312_cn'))
#發送按鈕事件
def sendmessage():
#在聊天內容上方加一行 顯示發送人及發送時間
msgcontent = unicode('我:','eucgb2312_cn') + time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()) + '\n '
text_msglist.insert(END, msgcontent, 'green')
text_msglist.insert(END, text_msg.get('0.0', END))
text_msg.delete('0.0', END)
#創建幾個frame作爲容器
frame_left_top = Frame(width=380, height=270, bg='white')
frame_left_center = Frame(width=380, height=100, bg='white')
frame_left_bottom = Frame(width=380, height=20)
frame_right = Frame(width=170, height=400, bg='white')
##創建需要的幾個元素
text_msglist = Text(frame_left_top)
text_msg = Text(frame_left_center);
button_sendmsg = Button(frame_left_bottom, text=unicode('發送','eucgb2312_cn'), command=sendmessage)
#創建一個綠色的tag
text_msglist.tag_config('green', foreground='#008B00')
#使用grid設置各個容器位置
frame_left_top.grid(row=0, column=0, padx=2, pady=5)
frame_left_center.grid(row=1, column=0, padx=2, pady=5)
frame_left_bottom.grid(row=2, column=0)
frame_right.grid(row=0, column=1, rowspan=3, padx=4, pady=5)
frame_left_top.grid_propagate(0)
frame_left_center.grid_propagate(0)
frame_left_bottom.grid_propagate(0)
#把元素填充進frame
text_msglist.grid()
text_msg.grid()
button_sendmsg.grid(sticky=E)
#主事件循環
root.mainloop()
以下是運行截圖:
希望本文所述對大家的Python程序設計有所幫助
--Python Tkinter簡單佈局實例教程
這篇文章主要介紹了Python Tkinter簡單佈局實例教程,包括了填充、左右佈局、絕對佈局、網格佈局等,需要的朋友可以參考下
本文實例展示了Python Tkinter實現簡單佈局的方法,示例中備有較爲詳盡的註釋,便於讀者理解。分享給大家供大家參考之用。具體如下:
# -*- coding: utf-8 -*-
from Tkinter import *
root = Tk()
# 80x80代表了初始化時主窗口的大小,0,0代表了初始化時窗口所在的位置
root.geometry('80x80+10+10')
# 填充方向
'''
Label(root, text = 'l1', bg = 'red').pack(fill = Y)
Label(root, text = 'l2', bg = 'green').pack(fill = BOTH)
Label(root, text = 'l3', bg = 'blue').pack(fill = X)
# 左右佈局
Label(root, text = 'l1', bg = 'red').pack(fill = Y, side = LEFT)
Label(root, text = 'l2', bg = 'green').pack(fill = BOTH, side = RIGHT)
Label(root, text = 'l3', bg = 'blue').pack(fill = X, side = LEFT)
# 絕對佈局
l4 = Label(root, text = 'l4')
l4.place(x = 3, y = 3, anchor = NW)
'''
# Grid 網格佈局
l1 = Label(root, text = 'l1', bg = 'red')
l2 = Label(root, text = 'l2', bg = 'blue')
l3 = Label(root, text = 'l3', bg = 'green')
l4 = Label(root, text = 'l4', bg = 'yellow')
l5 = Label(root, text = 'l5', bg = 'purple')
l1.grid(row = 0, column = 0)
l2.grid(row = 1, column = 0)
l3.grid(row = 1, column = 1)
l4.grid(row = 2 )
l5.grid(row = 0, column = 3)
root.mainloop()
Grid 網格佈局運行效果如下圖所示:
感興趣的讀者可以測試一下本文實例運行效果,相信對大家的Python程序設計有一定的借鑑價值。
--Python模塊結構與佈局操作方法實例分析
這篇文章主要介紹了Python模塊結構與佈局操作方法,結合實例形式分析了Python模塊與佈局的相關概念、使用方法與相關注意事項,需要的朋友可以參考下
本文實例講述了Python模塊結構與佈局操作方法。分享給大家供大家參考,具體如下:
#coding=utf8
#起始行
#!/usr/bin/env python
#模塊文檔
'''''
合理的Module佈局:
(1) 起始行(Unix) 通常只有在類Unix環境下才使用起始行,有起始行可以輸入腳本名來執行腳本。
(2) 模塊文檔 簡要介紹模塊功能及重要全局變量的含義,模塊外可以通過module.__doc__訪問這些內容。
(3) 模塊導入 導入當前模塊的代碼需要的所有模塊;每個模塊僅導入一次; 函數內部的模塊導入代碼不會被執行,除非該函數正在執行。
(4) 變量定義 這裏定義的變量爲全局變量,本模塊中的所有函數都可以直接使用。 儘量使用局部變量代替全局變量,這樣不但容易維護,還可以提高性能並節省內存。
(5) 類定義 所有的類需要在這裏定義。當模塊被導入時class語句會被執行,類也會被定義。 類的文檔變量是class.__doc__
(6) 函數定義 此處定義的函數可以通過module.function()在外部被訪問到,當模塊被導入時def語句會被執行, 函數也就會定義好,函數的文檔變量是function.__doc__
(7) 主程序 無論這個模塊使被別的模塊導入還是作爲腳本直接執行,都會執行這部分代碼。 通常這裏不會有太多功能性代碼,而是根據執行的模式調用不同的函數。
'''
#導入模塊
import sys
import time
from scrapy.utils import job
#定義變量
flag=1
#類定影
class Person(object):
'''''
Person class
set person name、sex、age、job
output the person information
'''
def __init__(self):
self.name=''
self.sex=''
self.age=18
self.job=''
def setName(self,name):
self.name=name
def setSex(self,sex):
self.sex=sex
def setAge(self,age):
self.age=age
def setJob(self,job):
self.job=job
def outPut(self):
print '''''
name:%s
sex:%s
age:%d
job:%s
''' %(self.name,self.sex,self.age,self.job)
#函數定義
def test():
'''''
test function
'''
if flag:
print '''''
run test()
'''
person=Person()
person.setName("ewang")
person.setAge(25)
person.setSex("famale")
person.setJob("big data testing")
person.outPut()
#主程序
#如果模塊使被導入,__name__的值爲模塊名字
#如果模塊使被直接執行,__name__的值爲'__main__'
if __name__=='__main__':
test()