日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python GUI编程(Tkinter)笔记

發布時間:2024/10/8 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python GUI编程(Tkinter)笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Python GUI編程Tkinter筆記

  • 1 顯示任意格式圖片
  • 2 固定框架Frame大小
  • 3 選擇文件夾或文件
  • 4 展示菜單欄
  • 5 展示選擇的圖片

1 顯示任意格式圖片

Tkinter只支持顯示GIF圖片,若需要顯示PNG、JPG、BMP等格式圖片,方法如下:

import tkinter from PIL import Image, ImageTkroot = tkinter.Tk() label_text = tkinter.Label(root, text="圖片標題") label_text.pack()img_open = Image.open('img/result.bmp') img_png = ImageTk.PhotoImage(img_open) label_img = tkinter.Label(root, image=img_png) label_img.pack() root.mainloop()

2 固定框架Frame大小

frame會隨內部的按鈕等部件擺放設置變化而變化大小,請問怎樣能固定住?

Frame如果設置大小的話,只有當使用了pack_propagate(0)或者grid_propagate(0)之后,(width,height)才起作用,而且調用前Frame要pack或者grid了。

3 選擇文件夾或文件

from tkinter import * from tkinter.filedialog import askdirectorydef selectPath():path_ = askdirectory()print(path_)path.set(path_)root = Tk() path = StringVar()Label(root, text="目標路徑:").grid(row=0, column=0) Entry(root, textvariable=path).grid(row=0, column=1) Button(root, text="路徑選擇", command=selectPath).grid(row=0, column=2)root.mainloop()


4 展示菜單欄

from tkinter import *def new():s = '新建'lb1.config(text=s)def ope():s = '打開'lb1.config(text=s)def sav():s = '保存'lb1.config(text=s)def cut():s = '剪切'lb1.config(text=s)def cop():s = '復制'lb1.config(text=s)def pas():s = '粘貼'lb1.config(text=s)def popupmenu(event):mainmenu.post(event.x_root, event.y_root)root = Tk() root.title('菜單實驗') root.geometry('420x340')lb1 = Label(root, text='顯示信息', font=('黑體', 32, 'bold')) lb1.place(relx=0.2, rely=0.2)mainmenu = Menu(root) menuFile = Menu(mainmenu) # 菜單分組 menuFile mainmenu.add_cascade(label="文件", menu=menuFile) menuFile.add_command(label="新建", command=new) menuFile.add_command(label="打開", command=ope) menuFile.add_command(label="保存", command=sav) menuFile.add_separator() # 分割線 menuFile.add_command(label="退出", command=root.destroy)menuEdit = Menu(mainmenu) # 菜單分組 menuEdit mainmenu.add_cascade(label="編輯", menu=menuEdit) menuEdit.add_command(label="剪切", command=cut) menuEdit.add_command(label="復制", command=cop()) menuEdit.add_command(label="粘貼", command=pas())root.config(menu=mainmenu) root.bind('Button-3', popupmenu) # 根窗體綁定鼠標右擊響應事件 root.mainloop()

5 展示選擇的圖片

import tkinter as tk from tkinter import * from tkinter import filedialog import cv2 import numpy as np from PIL import Image, ImageTkclass DisplayImage:'''用于展示選擇的圖片'''def __init__(self, master):self.master = mastermaster.title("GUI")self.image_frame = Frame(master, bd=0, height=200, width=800, bg='yellow', highlightthickness=2,highlightbackground='gray', highlightcolor='black')self.image_frame.pack()self.Text_label = Label(master, text='圖像預覽')self.Text_label.pack()self.Choose_image = Button(master, command=self.choose_pic, text="Choose image",width=17, default=ACTIVE, borderwidth=0)self.Choose_image.pack()self.Display_image = Button(master, command=self.display_image, text="Display image",width=17, default=ACTIVE, borderwidth=0)self.Display_image.pack()self.filenames = []self.pic_filelist = []self.imgt_list = []self.image_labellist = []def display_image(self, event=None):# 在重新選擇圖片時清空原先列表self.pic_filelist.clear()self.imgt_list.clear()self.image_labellist.clear()# 清空框架中的內容for widget in self.image_frame.winfo_children():widget.destroy()# 布局所選圖片for i in range(len(self.filenames)):self.pic_filelist.append(Image.open(self.filenames[i]).resize((200, 200)))self.imgt_list.append(ImageTk.PhotoImage(image=self.pic_filelist[i]))self.image_labellist.append(Label(self.image_frame, highlightthickness=0, borderwidth=0))self.image_labellist[i].configure(image=self.imgt_list[i])self.image_labellist[i].pack(side=LEFT, expand=True)def choose_pic(self, event=None):self.filenames.clear()self.filenames += filedialog.askopenfilenames()def main():window = tk.Tk()GUI = DisplayImage(window)window.title('投影亮度參數標定軟件模塊')window.geometry('1000x600')window.mainloop()if __name__ == '__main__':main()


總結

以上是生活随笔為你收集整理的Python GUI编程(Tkinter)笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。