導航:首頁 > 編程語言 > pythontkinter例子

pythontkinter例子

發布時間:2025-03-18 00:19:19

『壹』 python tkinter 如何做一個如下所示的下拉菜單

Tkinter居然沒有這種組件,所以就只能模擬了

#! /usr/bin/python
# -*- coding: utf8 -*-
from Tkinter import *
class Select(Frame):
def __init__(self, master=None):
Frame.__init__(self, master)
self.label = Label(self, text="選擇項目")
self.listBox = Listbox(self, height=1)
self.button = Button(self, text='V', command=self.triggle)
self.hideList = True
for i in xrange(10):
self.listBox.insert(i, 'Item%d'%i)
self.label.grid(row=0, column=0, sticky=N)
self.listBox.grid(row=0, column=1, sticky=N)
self.button.grid(row=0, column=2, sticky=N)
self.grid()
def triggle(self):
self.hideList ^= 1
self.listBox.config(height=[self.listBox.size(), 1][self.hideList])
app = Select()
app.mainloop()

僅供參考。

『貳』 python tkinter grid布局顯示問題求助

什麼時候使用Grid管理器

grid管理器是Tkinter裡面最靈活的幾何管理布局器。如果你不確定什麼情況下從三種布局管理中選擇,你至少要保證自己會使用grid。
當你設計對話框的時候,grid布局管理器是一個非常方便的工具。如果你之前使用pack進行布局的話,你會被使用grid後的簡潔而震驚。與適應很多frame來讓pack工作不同,在大多數情況下,你只需要將所有控制項放置到容器中,然後使用grid將它們布局到任何你想要布局的地方。

參考下面這個例子:

使用pack進行布局的話,你不得不使用一些額外的frame控制項,而且還需要花費一些功夫讓他們變得好看。如果你使用grid的話,你只需要對每個控制項使用grid,所有的東西都會以合適的方式顯示。

注意:不要試圖在一個主窗口中混合使用pack和grid。

使用grid進行布局管理非常容易。只需要創建控制項,然後使用grid方法去告訴布局管理器在合適的行和列去顯示它們。你不用事先指定每個網格的大小,布局管理器會自動根據裡面的控制項進行調節。

from Tkinter import *

master = Tk()
Label(master, text="First").grid(row=0)
Label(master, text="Second").grid(row=1)

e1 = Entry(master)
e2 = Entry(master)

e1.grid(row=0, column=1)
e2.grid(row=1, column=1)

mainloop()

運行如下圖所示:

label1占據0行0列,label2占據1行0列,entry1占據0行1列,entry2占據1行1列。
注意:1.在使用grid方法時,如果不指定column參數,則默認從0開始。
2.沒有被使用的行和列號將被忽略,在上面的例子中如果使用10行和20行,則運行效果是一樣的。

使用sticky參數
默認的空間會在網格中居中顯示。你可以使用sticky選項去指定對齊方式,可以選擇的值有:N/S/E/W,分別代表上/下/左/右。如果你想讓label靠左顯示,你可以設置stricky的值為W。
from Tkinter import *

master = Tk()
Label(master, text="First").grid(row=0, sticky=W)
Label(master, text="Second").grid(row=1, sticky=w)

e1 = Entry(master)
e2 = Entry(master)

e1.grid(row=0, column=1)
e2.grid(row=1, column=1)

mainloop()

運行效果如下圖:

你同樣可以指定控制項跨越一個或者多個網格。columnspan選項可以指定控制項跨越多列顯示,而rowspan選項同樣可以指定控制項跨越多行顯示。
下面的代碼創建了我們最初演示的示意圖:
from Tkinter import *

master = Tk()
var = IntVar()

Label(master, text="First").grid(sticky=E)
Label(master, text="Second").grid(sticky=E)

e1 = Entry(master)
e2 = Entry(master)

e1.grid(row=0, column=1)
e2.grid(row=1, column=1)

checkbutton = Checkbutton(master, text='Preserve aspect', variable=var)
checkbutton.grid(columnspan=2, sticky=W)

photo = PhotoImage(file='2qq.gif')
label = Label(image=photo)
label.image = photo
label.grid(row=0, column=2, columnspan=2, rowspan=2, sticky=W+E+N+S, padx=5, pady=5)

button1 = Button(master, text='Zoom in')
button1.grid(row=2, column=2)

button2 = Button(master, text='Zoom out')
button2.grid(row=2, column=3)

mainloop()

運行效果如下圖:

在這段代碼中,有一些細節需要注意:
1. 我們沒有為左邊的兩個label控制項指定具體的位置,在這種情況下,column將會從0開始,而row將會從第一個沒有使用的值開始。
2. 我們隊checkbutton設置了columnspan參數,所以它會顯示在第二行,並占據第0和1列。
3. 圖像label佔用了2行2列,而最後的兩個button都只佔用了1列。
望採納

閱讀全文

與pythontkinter例子相關的資料

熱點內容
地磅儀表盤加密方法 瀏覽:480
brew安裝php環境 瀏覽:829
電腦版釘釘如何加密 瀏覽:709
android動畫結合 瀏覽:925
androidfb0 瀏覽:579
我的世界怎麼給伺服器稱號 瀏覽:462
編譯器怎麼寫簡單 瀏覽:151
windows7如何連接伺服器 瀏覽:23
部隊開進命令怎麼下達 瀏覽:768
linux安裝mingw 瀏覽:55
寶武app工資待遇怎麼樣 瀏覽:249
gradle編譯速度很慢 瀏覽:916
500人視頻學慣用什麼伺服器好 瀏覽:340
三菱plc讀出來的程式編譯不了 瀏覽:411
rockey4加密狗復制下載 瀏覽:365
農商銀行app怎麼裝不上 瀏覽:826
先解壓後拿綠本還是先拿綠本 瀏覽:366
計量經濟分析格林pdf 瀏覽:654
什麼app摳圖好用免費的 瀏覽:281
文電通pdfgold 瀏覽:853