【发布时间】:2021-04-21 09:14:53
【问题描述】:
我刚刚学习Python,我开始使用Tkinter 创建一个gui。
我的主窗口由 2 个框架组成;一个在顶部,一个在底部。
在我的顶部框架上,我想放置一个必须占据相对于框架宽度和高度的图像。
我知道label.resize((50, 50), Image.ANTIALIAS) 函数,但赋予它的值是绝对值。
有没有办法使用相对尺寸?
我的 MWE 如下
import tkinter as tk
from tkinter import *
from tkinter import ttk
from PIL import ImageTk, Image
import os
#____________________________________________________________________________________________
#This will be the main window
window = tk.Tk()
window.geometry('500x500')
window.title("daq")
#____________________________________________________________________________________________
#Upper frame
frame_logo = Frame(window)
frame_logo.pack(expand=1, fill="both")
frame_logo.place(rely=0.0, relx=0.0, relwidth=1.0)
# This is the logo that will be placed on the top frame
image_logo = ImageTk.PhotoImage(Image.open("images/dice.jpg").resize((50, 50), Image.ANTIALIAS))
image_logo_label = tk.Label(frame_logo, image = image_logo)
image_logo_label.pack(side = "bottom", fill = "both", expand = "yes")
#image_logo_label = image_logo_label.resize((50, 50), Image.ANTIALIAS)
#image_logo_label.place(relx=0.5, rely=0.5)
#image_logo_load = Image.open("images/dice.jpg")
#image_logo_load = image_logo_load.resize((50, 50), Image.ANTIALIAS)
#image_logo = ImageTk.PhotoImage(image_logo_load)
#image_label = ttk.Label(frame_logo, image=image_logo)
#image_label.place(relx=0.8, y=1, relwidth=0.2)
#image_label.pack(fill="none", expand = 0)
#image_label.image = image_logo
#image_label.pack(expand=1, fill="both")
#image_label.place(relx=0.8, rely=0.0, relwidth=1., relheight=1.)
#____________________________________________________________________________________________
#Lower frame
frame_main = Frame(window)
frame_main.pack(expand=1, fill="both")
frame_main.place(rely=0.10, relx=0.0, relwidth=1.0)
#Create a tabcontrol
tabControl = ttk.Notebook(frame_main)
tab_Digitizer = ttk.Frame(tabControl)
tabControl.add(tab_Digitizer, text=' Digitizer ')
tab_SignalViewer = ttk.Frame(tabControl)
tabControl.add(tab_SignalViewer, text=' Signal Viewer ')
tabControl.pack(expand=1, fill="both")
#This keeps the window open - has to be at the end
window.mainloop()
【问题讨论】:
-
您可以将
frame_logo上的<Configure>事件绑定到回调,然后根据传递给回调的事件对象的width和height属性调整徽标大小。 -
@acw1668 感谢您的评论!我不知道你在说什么!
标签: python python-3.x tkinter