欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python GUI編程詳解

 更新時(shí)間:2021年10月08日 14:37:27   作者:Harris-H  
這篇文章主要介紹了Python GUI編程,結(jié)合完整示例形式分析了Python基于tkinter模塊的GUI圖形界面編程相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下

Python GUI編程

0.創(chuàng)建窗口

import tkinter as tk
#創(chuàng)建一個(gè)窗口
root = tk.Tk()
root.mainloop()
# 第2步,給窗口的可視化起名字
root.title('My Window')
# 設(shè)置窗口最小和最大
root.minsize(300,300)
root.maxsize(500,500)

img

1.Label和Button的使用

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# author:洪衛(wèi)
import tkinter as tk  # 使用Tkinter前需要先導(dǎo)入
# 第1步,實(shí)例化object,建立窗口window
window = tk.Tk()
# 第2步,給窗口的可視化起名字
window.title('My Window')
# 第3步,設(shè)定窗口的大小(長(zhǎng) * 寬)
window.geometry('500x300')  # 這里的乘是小x
# 第4步,在圖形界面上設(shè)定標(biāo)簽
var = tk.StringVar()  # 將label標(biāo)簽的內(nèi)容設(shè)置為字符類(lèi)型,用var來(lái)接收hit_me函數(shù)的傳出內(nèi)容用以顯示在標(biāo)簽上
l = tk.Label(window, textvariable=var, bg='green', fg='white', font=('Arial', 12), width=30, height=2)
# 說(shuō)明: bg為背景,fg為字體顏色,font為字體,width為長(zhǎng),height為高,這里的長(zhǎng)和高是字符的長(zhǎng)和高,比如height=2,就是標(biāo)簽有2個(gè)字符這么高
l.pack()
# 定義一個(gè)函數(shù)功能(內(nèi)容自己自由編寫(xiě)),供點(diǎn)擊Button按鍵時(shí)調(diào)用,調(diào)用命令參數(shù)command=函數(shù)名
on_hit = False

def hit_me():
    global on_hit
    if on_hit == False:
        on_hit = True
        var.set('you hit me')
    else:
        on_hit = False
        var.set('')

# 第5步,在窗口界面設(shè)置放置Button按鍵
b = tk.Button(window, text='hit me', font=('Arial', 12), width=10, height=1, command=hit_me)
b.pack()
# 第6步,主窗口循環(huán)顯示
window.mainloop()

2.Entry和Text的使用

Entry是tkinter類(lèi)中提供的的一個(gè)單行文本輸入域,用來(lái)輸入顯示一行文本,收集鍵盤(pán)輸入(類(lèi)似 HTML 中的 text)。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# author:洪衛(wèi)
import tkinter as tk  # 使用Tkinter前需要先導(dǎo)入
# 第1步,實(shí)例化object,建立窗口window
window = tk.Tk()
# 第2步,給窗口的可視化起名字
window.title('My Window')
# 第3步,設(shè)定窗口的大小(長(zhǎng) * 寬)
window.geometry('500x300')  # 這里的乘是小x
# 第4步,在圖形界面上設(shè)定輸入框控件entry并放置控件
e1 = tk.Entry(window, show='*', font=('Arial', 14))  # 顯示成密文形式
e2 = tk.Entry(window, show=None, font=('Arial', 14))  # 顯示成明文形式
e1.pack()
e2.pack()
# 第5步,主窗口循環(huán)顯示
window.mainloop()

Text是tkinter類(lèi)中提供的的一個(gè)多行文本區(qū)域,顯示多行文本,可用來(lái)收集(或顯示)用戶(hù)輸入的文字(類(lèi)似 HTML 中的 textarea),格式化文本顯示,允許你用不同的樣式和屬性來(lái)顯示和編輯文本,同時(shí)支持內(nèi)嵌圖象和窗口。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# author:洪衛(wèi)
import tkinter as tk  # 使用Tkinter前需要先導(dǎo)入
# 第1步,實(shí)例化object,建立窗口window
window = tk.Tk()
# 第2步,給窗口的可視化起名字
window.title('My Window')
# 第3步,設(shè)定窗口的大小(長(zhǎng) * 寬)
window.geometry('500x300')  # 這里的乘是小x
# 第4步,在圖形界面上設(shè)定輸入框控件entry框并放置
e = tk.Entry(window, show=None)  # 顯示成明文形式
e.pack()

# 第5步,定義兩個(gè)觸發(fā)事件時(shí)的函數(shù)insert_point和insert_end(注意:因?yàn)镻ython的執(zhí)行順序是從上往下,所以函數(shù)一定要放在按鈕的上面)
def insert_point():  # 在鼠標(biāo)焦點(diǎn)處插入輸入內(nèi)容
    var = e.get()
    t.insert('insert', var)

def insert_end():  # 在文本框內(nèi)容最后接著插入輸入內(nèi)容
    var = e.get()
    t.insert('end', var)

# 第6步,創(chuàng)建并放置兩個(gè)按鈕分別觸發(fā)兩種情況
b1 = tk.Button(window, text='insert point', width=10,
               height=2, command=insert_point)
b1.pack()
b2 = tk.Button(window, text='insert end', width=10,
               height=2, command=insert_end)
b2.pack()
# 第7步,創(chuàng)建并放置一個(gè)多行文本框text用以顯示,指定height=3為文本框是三個(gè)字符高度
t = tk.Text(window, height=3)
t.pack()
# 第8步,主窗口循環(huán)顯示
window.mainloop()

Entry.get() 獲取輸入的文本內(nèi)容。

Text.insert(‘insert',content) 鼠標(biāo)焦點(diǎn)處插入內(nèi)容

Text.insert(‘end',content) 末尾插入內(nèi)容。

3.Grid網(wǎng)格布局

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# author:洪衛(wèi)
import tkinter as tk  # 使用Tkinter前需要先導(dǎo)入
# 第1步,實(shí)例化object,建立窗口window
window = tk.Tk()
# 第2步,給窗口的可視化起名字
window.title('My Window')
# 第3步,設(shè)定窗口的大小(長(zhǎng) * 寬)
window.geometry('500x300')  # 這里的乘是小x
# 第4步,grid 放置方法
for i in range(3):
    for j in range(3):
        tk.Label(window, text='('+str(i)+','+str(j)+')').grid(row=i, column=j, padx=10, pady=10, ipadx=10, ipady=10)
# 第5步,主窗口循環(huán)顯示
window.mainloop()

4.Frame框架

Frame:框架,用來(lái)承載放置其他GUI元素,就是一個(gè)容器,是一個(gè)在 Windows 上分離小區(qū)域的部件, 它能將 Windows 分成不同的區(qū),然后存放不同的其他部件. 同時(shí)一個(gè) Frame 上也能再分成兩個(gè) Frame, Frame 可以認(rèn)為是一種容器.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# author:洪衛(wèi)
import tkinter as tk  # 使用Tkinter前需要先導(dǎo)入
# 第1步,實(shí)例化object,建立窗口window
window = tk.Tk()
# 第2步,給窗口的可視化起名字
window.title('My Window')
# 第3步,設(shè)定窗口的大小(長(zhǎng) * 寬)
window.geometry('500x300')  # 這里的乘是小x
# 第4步,在圖形界面上創(chuàng)建一個(gè)標(biāo)簽用以顯示內(nèi)容并放置
tk.Label(window, text='on the window', bg='red', font=('Arial', 16)).pack()  # 和前面部件分開(kāi)創(chuàng)建和放置不同,其實(shí)可以創(chuàng)建和放置一步完成
# 第5步,創(chuàng)建一個(gè)主frame,長(zhǎng)在主window窗口上
frame = tk.Frame(window)
frame.pack()
# 第6步,創(chuàng)建第二層框架frame,長(zhǎng)在主框架frame上面
frame_l = tk.Frame(frame)  # 第二層frame,左frame,長(zhǎng)在主frame上
frame_r = tk.Frame(frame)  # 第二層frame,右frame,長(zhǎng)在主frame上
frame_l.pack(side='left')
frame_r.pack(side='right')
# 第7步,創(chuàng)建三組標(biāo)簽,為第二層frame上面的內(nèi)容,分為左區(qū)域和右區(qū)域,用不同顏色標(biāo)識(shí)
tk.Label(frame_l, text='on the frame_l1', bg='green').pack()
tk.Label(frame_l, text='on the frame_l2', bg='green').pack()
tk.Label(frame_l, text='on the frame_l3', bg='green').pack()
tk.Label(frame_r, text='on the frame_r1', bg='yellow').pack()
tk.Label(frame_r, text='on the frame_r2', bg='yellow').pack()
tk.Label(frame_r, text='on the frame_r3', bg='yellow').pack()
# 第8步,主窗口循環(huán)顯示
window.mainloop()

在這里插入圖片描述

關(guān)于邊距

padx,pady 外邊距水平方向和垂直方向。

ipadx,ipady 內(nèi)邊距。

padx=10,表示左右邊距為10像素。

padx=(10,20) 表示左邊距10,右邊距20.

//www.dbjr.com.cn/article/224752.htm

5.messagebox消息框

import tkinter as tk
from tkinter import messagebox
if __name__ == '__main__':
    def LoginButton():
        u = rt.username.get()
        p = rt.password.get()
        if len(u) == 0 or len(p) == 0:
            messagebox.showerror('提示:', '輸入信息為空')
        else:
            messagebox.showinfo('提示:', '用戶(hù)名: %s\n密碼為: %s\n' % (u, p))

    # 主窗口
    rt = tk.Tk()
    rt.geometry('300x300')
    # 變量
    rt.username = tk.StringVar()
    rt.password = tk.StringVar()
    # 賬號(hào)
    f1 = tk.Frame(rt)
    tk.Label(f1, text='賬號(hào):  ').grid(row=0, column=0, padx=30)
    tk.Entry(f1, textvariable=rt.username).grid(row=0, column=1)
    f1.grid(pady=50)
    # 密碼
    f2 = tk.Frame(rt)
    tk.Label(f2, text='密碼:  ').grid(row=1, column=0, padx=30)
    tk.Entry(f2, show='*', textvariable=rt.password).grid(row=1, column=1)
    f2.grid()
    # 登錄按鈕
    tk.Button(rt, text='登錄', command=LoginButton).grid(pady=30)
    rt.mainloop()

在這里插入圖片描述

6.下拉框

    def GetIdentity(*args):
        identity = rt.identity.get()
        print(identity)
# 身份下拉框
    f0 = tk.Frame(rt)
    tk.Label(f0, text='身份:  ').grid(row=0, column=0, padx=(5,30))
    identityBox = ttk.Combobox(f0, textvariable=rt.identity, values=['管理員', '用戶(hù)', '其他'],width=10)
    identityBox.grid(row=0, column=1)
    identityBox.current(1)
    identityBox.bind("<<ComboboxSelected>>", GetIdentity)
    f0.grid(padx=0,pady=20)

在這里插入圖片描述

7.Menu菜單

創(chuàng)建一個(gè)頂級(jí)菜單,你需要先創(chuàng)建一個(gè)菜單實(shí)例,然后使用 add() 方法將命令和其它子菜單添加進(jìn)去:

import tkinter as tk
root = tk.Tk()
def callback():
        print("~被調(diào)用啦~")
#創(chuàng)建一個(gè)頂級(jí)菜單
menubar = tk.Menu(root)
menubar.add_command(label = "Hello", command = callback)
menubar.add_command(label = "Quit", command = root.quit)
#顯示菜單
root.config(menu = menubar)
root.mainloop()

2.創(chuàng)建一個(gè)下拉菜單(或者其他子菜單),方法也是大同小異,最主要的區(qū)別是它們最后需要添加到主菜單上(而不是窗口上):

import tkinter as tk
root = tk.Tk()
def callback():
    print("~被調(diào)用了~")
# 創(chuàng)建一個(gè)頂級(jí)菜單
menubar = tk.Menu(root)
# 創(chuàng)建一個(gè)下拉菜單“文件”,然后將它添加到頂級(jí)菜單中
filemenu = tk.Menu(menubar, tearoff=False)
filemenu.add_command(label="打開(kāi)", command=callback)
filemenu.add_command(label="保存", command=callback)
filemenu.add_separator()
filemenu.add_command(label="退出", command=root.quit)
menubar.add_cascade(label="文件", menu=filemenu)
# 創(chuàng)建另一個(gè)下拉菜單“編輯”,然后將它添加到頂級(jí)菜單中
editmenu = tk.Menu(menubar, tearoff=False)
editmenu.add_command(label="剪切", command=callback)
editmenu.add_command(label="拷貝", command=callback)
editmenu.add_command(label="粘貼", command=callback)
menubar.add_cascade(label="編輯", menu=editmenu)
# 顯示菜單
root.config(menu=menubar)
root.mainloop()

//www.dbjr.com.cn/article/224757.htm

項(xiàng)目學(xué)習(xí)、

1.點(diǎn)名器

在這里插入圖片描述

在這里插入圖片描述

a.導(dǎo)航欄

頂級(jí)菜單分為兩個(gè)子菜單:菜單和導(dǎo)入人名列表。

子菜單三個(gè)功能:刪除庫(kù),退出,顯示作者。

b.主體

用一個(gè)Label 表示提示信息(請(qǐng)導(dǎo)入人名列表,請(qǐng)選擇人數(shù))

然后三個(gè)Label分別顯示選擇幾個(gè)人,三個(gè)Button按鈕。

清零按鈕用來(lái)清屏三個(gè)Label。

c.邏輯

運(yùn)行程序,先檢查是否當(dāng)前工作目錄下是否有文件庫(kù).txt(人名數(shù)據(jù)表)

沒(méi)有提示導(dǎo)入,然后點(diǎn)擊導(dǎo)入,會(huì)在工作目錄下生成一個(gè)庫(kù).txt。

點(diǎn)對(duì)應(yīng)的生成按鈕,利用random函數(shù)從人名表中生成。

總結(jié)

本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • Python實(shí)現(xiàn)輕松切割MP3文件

    Python實(shí)現(xiàn)輕松切割MP3文件

    有時(shí)我們需要將大型MP3文件切割成較小的部分以便上傳或發(fā)送,所以本文為大家整理了可以輕松切割MP3文件的Python腳本,希望對(duì)大家有所幫助
    2023-06-06
  • Python圖形驗(yàn)證碼識(shí)別教程詳解

    Python圖形驗(yàn)證碼識(shí)別教程詳解

    這篇文章主要介紹了Python圖形驗(yàn)證碼識(shí)別,目前,許多網(wǎng)站采取各種各樣的措施來(lái)反爬蟲(chóng),其中一個(gè)措施便是使用驗(yàn)證碼。隨著技術(shù)的發(fā)展,驗(yàn)證碼的花樣越來(lái)越多。驗(yàn)證碼最初是幾個(gè)數(shù)字組合的簡(jiǎn)單的圖形驗(yàn)證碼,后來(lái)加入了英文字母和混淆曲線(xiàn)
    2023-02-02
  • Python+Selenium實(shí)現(xiàn)自動(dòng)化的環(huán)境搭建的步驟(圖文)

    Python+Selenium實(shí)現(xiàn)自動(dòng)化的環(huán)境搭建的步驟(圖文)

    這篇文章主要介紹了Python+Selenium實(shí)現(xiàn)自動(dòng)化的環(huán)境搭建的步驟(圖文),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • OpenCV-Python使用cv2實(shí)現(xiàn)傅里葉變換

    OpenCV-Python使用cv2實(shí)現(xiàn)傅里葉變換

    在OpenCV中,我們通過(guò)cv2.dft()來(lái)實(shí)現(xiàn)傅里葉變換,使用cv2.idft()來(lái)實(shí)現(xiàn)逆傅里葉變換。本文就詳細(xì)的介紹一下這兩種用法,感興趣的可以了解一下
    2021-06-06
  • Python實(shí)現(xiàn)的視頻播放器功能完整示例

    Python實(shí)現(xiàn)的視頻播放器功能完整示例

    這篇文章主要介紹了Python實(shí)現(xiàn)的視頻播放器功能,結(jié)合完整實(shí)例形式分析了Python基于pyglet庫(kù)實(shí)現(xiàn)視頻播放功能的相關(guān)操作技巧,需要的朋友可以參考下
    2018-02-02
  • pygraphviz安裝教程

    pygraphviz安裝教程

    Graphviz 是一款由 AT&T Research 和 Lucent Bell 實(shí)驗(yàn)室開(kāi)源的可視化圖形工具,可以很方便的用來(lái)繪制結(jié)構(gòu)化的圖形網(wǎng)絡(luò),支持多種格式輸出,這篇文章主要介紹了pygraphviz安裝教程,需要的朋友可以參考下
    2023-02-02
  • Python基于DES算法加密解密實(shí)例

    Python基于DES算法加密解密實(shí)例

    這篇文章主要介紹了Python基于DES算法加密解密實(shí)現(xiàn)方法,以實(shí)例形式分析了DES算法實(shí)現(xiàn)加密解密的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • python爬蟲(chóng)之selenium庫(kù)的安裝及使用教程

    python爬蟲(chóng)之selenium庫(kù)的安裝及使用教程

    今天帶大家來(lái)學(xué)習(xí)怎么安裝使用selenium庫(kù),文中有非常詳細(xì)的圖文介紹,對(duì)正在學(xué)習(xí)python爬蟲(chóng)的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • Python實(shí)現(xiàn)多線(xiàn)程并發(fā)請(qǐng)求測(cè)試的腳本

    Python實(shí)現(xiàn)多線(xiàn)程并發(fā)請(qǐng)求測(cè)試的腳本

    這篇文章主要為大家分享了一個(gè)Python實(shí)現(xiàn)多線(xiàn)程并發(fā)請(qǐng)求測(cè)試的腳本,文中的示例代碼簡(jiǎn)潔易懂,具有一定的借鑒價(jià)值,需要的小伙伴可以了解一下
    2023-06-06
  • Python 提取dict轉(zhuǎn)換為xml/json/table并輸出的實(shí)現(xiàn)代碼

    Python 提取dict轉(zhuǎn)換為xml/json/table并輸出的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Python 提取dict轉(zhuǎn)換為xml/json/table并輸出的實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2016-08-08

最新評(píng)論