當前位置:首頁 » 編程軟體 » tkinter編程

tkinter編程

發布時間: 2023-02-20 05:19:57

A. python編程的tkinter窗口編譯成exe文件無法正確執行

最後一行加括弧,改成root.mainloop()

B. python怎麼用tkinter

Tkinter 是使用 python 進行窗口視窗設計的模塊。Tkinter模塊("Tk 介面")是Python的標准Tk GUI工具包的介面。作為 python 特定的GUI界面,是一個圖像的窗口,tkinter是python 自帶的,可以編輯的GUI界面,我們可以用GUI 實現很多直觀的功能,比如想開發一個計算器,如果只是一個程序輸入,輸出窗口的話,是沒用用戶體驗的。所有開發一個圖像化的小窗口,就是必要的。
對於稍有GUI編程經驗的人來說,Python的Tkinter界面庫是非常簡單的。python的GUI庫非常多,選擇Tkinter,一是最為簡單,二是自帶庫,不需下載安裝,隨時使用,三則是從需求出發,Python作為一種腳本語言,一種膠水語言,一般不會用它來開發復雜的桌面應用,它並不具備這方面的優勢,使用Python,可以把它作為一個靈活的工具,而不是作為主要開發語言,那麼在工作中,需要製作一個小工具,肯定是需要有界面的,不僅自己用,也能分享別人使用,在這種需求下,Tkinter是足夠勝任的!

C. python TKinter的主窗口運行程序完畢後,怎麼讓其自動關閉

採用的是main函數對主窗口運行程序完畢自動關閉的命令:

from tkinter import *def main():

root = Tk()

b = Button(root, text='退出', command=root.quit)

b.pack()

mainloop()if __name__ == '__main__':

main()

(3)tkinter編程擴展閱讀:

main函數的應用:

程序執行的出發點,main,是相對而言的,正如語音學理論關注的是泛音,泛音是程序中main以外的功能,產生泛音是為了迎合思維方式而不是某種模式。有主次之分,對其實現進行了詳細的分析,既可以模塊化程序,又可以實現一個封閉的整體。

模塊化編程方法是將整個程序劃分成幾個功能單一的程序模塊,然後分別實現,最後,所有程序模塊都像積木一樣組裝起來。

利用函數實現程序的模塊化,大大減少了編碼工作量,在函數或復合語句塊中定義的自動類型變數稱為局部變數。

局部變數的作用域從局部變數定義的位置開始,一直到該函數或復合語句的結尾,局部變數存活時間短。調用局部變數的函數時,將分配局部變數的內存空間,函數調用後,釋放局部變數的內存空間。

函數參數和參數屬於局部變數,調用函數時,將分配參數內存空間,函數調用後,參數內存空間被釋放,C語言函數參數傳遞可分為三種情況:簡單變數作為函數參數,數組名作為函數參數,指針作為函數參數。

D. 如何用tk封裝一裝圖片

語法如下

imageobj = PhotoImage(file="xxx.gif")
1
1
請留意早期PhotoImage只支持GIF格式,現在已經接受jpg和png了,為了使用方便將GIF圖片放在程序所在的文件夾中。

在標簽中可以用image=imageobj參數設置此圖像對象
在這里插入圖片描述
實例代碼

#!usr/bin/env python3
# -*- coding: UTF-8 -*-

from tkinter import *

window = Tk()
window.title("添加gif")

html_gif = PhotoImage(file="小埋.gif")
label = Label(window, image = html_gif)
label.pack()

window.mainloop()
1
2
3
4
5
6
7
8
9
10
11
12
13
1
2
3
4
5
6
7
8
9
10
11
12
13
在這里插入圖片描述

添加jpg文件
如果要在標簽內顯示jpg需要藉助PIL模塊的Image和ImageTk模塊,安裝pillow模塊

pip install pillow
1
1
引入模塊

from PIL import Image, ImageTk
1
1
找一個圖片
在這里插入圖片描述
這個圖片比較大,但是全屏應該可以顯示了,代碼如下:

#coding: UTF-8

from tkinter import *
from PIL import Image, ImageTk

root = Tk()
root.title("使用pillow模塊插入jpg")
root.state("zoomed") #全屏

image = Image.open("Python.jpg")
pyt = ImageTk.PhotoImage(image)
label = Label(root, image=pyt)
label.pack()

root.mainloop()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
在這里插入圖片描述

文字與圖像共存
使用Label的compound參數讓文字與標簽共存,compound參數設置圖像的位置。

compound參數可以是下列值

left:圖像在左
right:圖像在右
top:圖像在頂部
bottom:在下
center:文字覆蓋在圖像上方
實例:

#coding:UTF-8

from tkinter import *

root = Tk()
root.title("compound")
root.state("zoomed")
GText = """GitHub 是一個面向開源及私有軟體項目的託管平台,\n
因為只支持 Git 作為唯一的版本庫格式進行託管,\n
故名 GitHub。"""

G_gif = PhotoImage(file='Github.jpg')

label = Label(root, text=GText, image = G_gif, bg='lightyellow',
compound="left", font=("simsun", 20))

label.pack()

root.mainloop()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
在這里插入圖片描述

文章知識點與官方知識檔案匹配
Python入門技能樹桌面應用開發Tkinter
211518 人正在系統學習中
點擊閱讀全文 簡單介紹利用TK在Python下進行GUI編程的教程
我想要向您介紹能想像到的開始 GUI 編程的最簡單方法,就是使用 Scriptics 的 TK 和 Tkinter 封裝器。我們將與 developerWorks 中的 「Python 中的 curses 編程」 提到的 curses 庫進行很多比較。除了 curses 實現文本控制台而 TK 實現 GUI 這一差別之外,這兩個庫有著驚人相似的介面。在使用任何一個庫之前,需要基本了解窗口和事件循環,並參考可用的窗口小部件。(好,好的參考和適量的練習。)
如同關於 curses 的文章,本文僅討論 Tkinter 本身的特性。既然很多 Python 發行版都帶有 Tkinter,因此可能無需下載支持庫或其它 Python 模塊。本文後面的 參考資料 指向幾個更高級別的用戶介面窗口小部件的集合,但是您可以用 Tkinter 本身做許多事,包括構造自己的高級窗口小部件。學習基本 Tkinter 模塊將為您引入 TK 的思維方式,即使您繼續使用更高級的窗口小部件集合,這種思維方式仍十分重要。
TK 簡要描述

TK 是與 TCL 語言關系最密切、且被廣泛使用的圖形庫,TCL 語言和 TK 都由 John Ousterhout 開發。雖然 TK 於 1991 年作為 X11 庫出現,但實際上它從那時起就被移植到每一種流行的 GUI。(它與 Python 逐漸擁有「標准」GUI 的情形相似。)現在,大多數流行語言和很多小型語言都有 TK 綁定(Tkinter 模塊)。

在開始之前,我必須承認:我不是瘦小枯乾的 TK 編程專家。事實上,我的大部分 TK 編程經驗大約從我寫這篇文章三天前才開始。那三天並非沒有挑戰,但是最後我覺得很好地掌握了 Tkinter。我在這里要說的是:TK 和 Tkinter 封裝器設計得都非常好,便於用戶操作,並且只是關於 GUI 編程最簡單的介紹。

從測試應用程序開始

我們將使用 Txt2Html,這個在以前很多專欄(請參閱 參考資料 )中使用的文件格式轉換程序,的封裝器作為測試應用程序。雖然可以用幾種方式運行 Txt2Html,但這里的封裝器卻要從命令行運行 Txt2Html。該應用程序以批處理進程的形式運行,並帶有指出要執行的轉換各方面特性的命令行自變數。(以後,最好為用戶提供互動式選擇屏幕選項,以在執行實際轉換之前引導用戶逐步選擇不同的轉換選項並提供所選選項的可視反饋。)

tk_txt2html 基於帶有下拉菜單和嵌套子菜單的頂部菜單。旁邊有詳細的實現說明,它看起來與在 「Python 中的 Curses 編程」 中討論的 curses 版本很相象。雖然 TK 用較少的代碼可以實現更多的功能,但很明顯,tk_txt2html 和 curses_txt2html 很相似。例如,在 TK 中,象菜單這樣的特性可以依靠內置的 Tkinter 類實現,而無需從頭編寫。

除了設置配置選項之外,TK 封裝器還包括一個與 TK Text 窗口小部件一起構建的滾動幫助框(一個帶有 Message 窗口小部件的「關於」框)和一個進行 TK 動態幾何管理的歷史窗口。與大多數互動式應用程序一樣,封裝器用 TK 的 Entry 窗口小部件接受某些用戶輸入。

在進一步討論代碼之前,讓我們看一下實際運行中的應用程序。
201541390858446.gif (565×236)

學習基本知識

實際上,Tkinter 程序只需做三件事:
最小的 [Tkinter] 程序

import Tkinter # import the Tkinter mole
root = Tkinter.Tk() # create a root window
root.mainloop() # create an event loop

這是一個完全有效的 Tkinter 程序(不要介意它沒有實際用處,因為它甚至不管理 "hello world")。該程序唯一需要做的是創建一些容納其根窗口的窗口小部件。這樣增強之後,無需程序員進一步干涉,該程序的 root .mainloop() 方法調用就可以處理所有用戶交互。

main() 函數

現在,我們看一下 tk_txt2html.py 更現實的 main() 函數。請注意,我更喜歡使用 John Grayson 的 import Tkinter 語句,而不是 from Tkinter import (請參閱 參考資料 中所列的他的書籍)。這不是因為我擔心名稱空間的干擾( from ... import 語句的通常警告),而是因為我想明確使用 Tkinter 類;我不想冒險將它們與我自己的函數和類相混淆)。建議您也這樣做,至少在開始時這樣做。
tk_txt2html main() 函數

def main():
global root, history_frame, info_line
root = Tkinter.Tk()
root.title('Txt2Html TK Shell')
init_vars()
#-- Create the menu frame, and menus to the menu frame
menu_frame = Tkinter.Frame(root)
menu_frame.pack(fill=Tkinter.X, side=Tkinter.TOP)
menu_frame.tk_menuBar(file_menu(), action_menu(), help_menu())
#-- Create the history frame (to be filled in ring runtime)
history_frame = Tkinter.Frame(root)
history_frame.pack(fill=Tkinter.X, side=Tkinter.BOTTOM, pady=2)
#-- Create the info frame and fill with initial contents
info_frame = Tkinter.Frame(root)
info_frame.pack(fill=Tkinter.X, side=Tkinter.BOTTOM)
# first put the column labels in a sub-frame
LEFT, Label = Tkinter.LEFT, Tkinter.Label # shortcut names
label_line = Tkinter.Frame(info_frame, relief=Tkinter.RAISED, borderwidth=1)
label_line.pack(side=Tkinter.TOP, padx=2, pady=1)
Label(label_line, text="Run #", width=5).pack(side=LEFT)
Label(label_line, text="Source:", width=20).pack(side=LEFT)
Label(label_line, text="Target:", width=20).pack(side=LEFT)
Label(label_line, text="Type:", width=20).pack(side=LEFT)
Label(label_line, text="Proxy Mode:", width=20).pack(side=LEFT)
# then put the "next run" information in a sub-frame
info_line = Tkinter.Frame(info_frame)
info_line.pack(side=Tkinter.TOP, padx=2, pady=1)
update_specs()
#-- Finally, let's actually do all that stuff created above
root.mainloop()

在這個簡單的 main() 函數中有幾件事要注意:

每一個窗口小部件都有一個父代。每當創建窗口小部件時,傳遞給實例創建的第一個自變數是新的窗口小部件的父代。
如果有其它窗口小部件創建自變數,將通過名稱傳遞它們。Python 的這一特性給我們以指定選項或允許它們取預設值的極大靈活性。
有幾個窗口小部件實例 (Frame) 是全局變數。可以通過在函數間傳遞變數來使它們成為本地變數,以便維護代碼范圍的理論純潔性,但是與它的實際用處相比過於麻煩。另外,使這些基本的 UI 元素全局化強調了這樣一個事實:它們可以在整個函數中使用。但是,要確保對自己的全局變數使用良好的命名規范。(事先給您一個警告,Python 人員看起來討厭匈牙利符號。)
創建完窗口小部件之後,我們調用一個幾何圖形管理器來讓 TK 知道在哪裡放置窗口小部件。TK 在計算細節信息時有許多魔力,特別是當調整窗口大小或動態添加窗口小部件時更是如此。但是在任何情況下,都需要讓 TK 知道使用哪套咒語。

應用幾何圖形管理器

TK 提供三個幾何圖形管理器: .pack() 、 .grid() 和 .place() 。雖然 .place() 可用於精細(換句話說,非常復雜)的控制,但 tk_txt2html 只使用頭兩個。大多數時候,您將使用 .pack() 。

當然,可以不帶自變數來調用 .pack() 方法。但是如果那樣做,窗口小部件可能會在顯示屏幕的某處結束,您可能也想為 .pack() 提供一些提示。這些提示中最重要的是 side 自變數。可能的值是 LEFT、RIGHT、TOP 和 BOTTOM(請注意這些是 Tkinter 名稱空間中的變數)。

.pack() 的許多魔力來自可以將窗口小部件嵌套這一事實。特別的,除了作為其它窗口小部件的容器(它有時顯示不同類型的邊界)之外,Frame 窗口小部件幾乎不作什麼。這樣,就可以很方便地在所希望的方向排列幾個框架,然後在每個框架中添加其它窗口小部件。按照調用框架(以及其它窗口小部件)的 .pack() 方法的順序來排列它們。因此,如果兩個窗口小部件都請求 side=TOP ,則滿足先進入的請求。

tk_txt2html 還偶爾使用 .grid() 。grid 幾何圖形管理器用可視的坐標線覆蓋父代窗口小部件。當窗口小部件調用 .grid(row=3, column=4) 時,它請求其父代將它放在第三行第四列上。通過查看父代的所有子代的請求來計算父代的總行數和總列數。

別忘了對自己的窗口小部件應用幾何圖形管理器,以免在顯示屏幕上看不到它們時後悔莫及。

E. python tkinter編程中如何把一個函數附加到Button上,比如寫計算器中的等於號

#!/usr/bin/envpython
#-*-coding:utf-8-*-
importTkinter


classWindow:
def__init__(self,root):
self.root=root
self.setbtn=Tkinter.Button(root,text='SetText',command=self.Settxt)
#創建一個按鈕對象,command=這個地方就是當按鈕按下去時觸發的函數
self.setbtn.place(x=120,y=15)
self.edit=Tkinter.Text(root)
self.edit.place(y=50)
self.edit.insert(Tkinter.END,"thisisoriginaltext")

defSettxt(self):
self.edit.insert(Tkinter.END,' thisisinstertext')


root=Tkinter.Tk()
window=Window(root)
root.minsize(600,480)
root.mainloop()


編寫了一個最簡單的例子,看了你就應該明了。

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:746
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:1010
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:716
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:878
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:774
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1124
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:349
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:227
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:911
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:873