minsize()和maxsize()方法在tkinter python(顶级)中不起作用

2024-06-01 03:27:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近试图用python制作一个pdf查看器,所以我设置了窗口的minsize()和maxsize(),但它似乎不起作用。这是我的密码

from pdf2image import convert_from_path
import tkinter as tk
from tkinter import filedialog
from PIL import Image, ImageTk

root4=tk.Toplevel()
root4.geometry("800x900")
root4.title("PDF Viewer")
root4.configure(bg="#202020")
root4.minsize(300, 200)
root4.maxsize(900, 800)

pdf_frame = tk.Frame(root4)
pdf_frame.pack(fill=tk.BOTH,expand=1)

scrol_y = tk.Scrollbar(pdf_frame,orient=tk.VERTICAL)
pdf = tk.Text(pdf_frame,yscrollcommand=scrol_y.set,bg="grey")

scrol_y.pack(side=tk.RIGHT,fill=tk.Y)
scrol_y.config(command=pdf.yview)
pdf.pack(fill=tk.BOTH,expand=1)


pages = convert_from_path(filedialog.askopenfilename(initialdir = "/",title = "Select file",filetypes = (("pdf files","*.pdf"),("all files","*.*"))),size=(800,900))

photos = []

for i in range(len(pages)):
  photos.append(ImageTk.PhotoImage(pages[i]))

for photo in photos:
  pdf.image_create(tk.END,image=photo)
  pdf.insert(tk.END,'\n\n')

root4.update()
root4.mainloop()

Tags: pathfromimportconvertpdfpagesfillframe
1条回答
网友
1楼 · 发布于 2024-06-01 03:27:01

当您创建父窗口时,使用Tk(),否则使用Toplevel()将创建一个Tk()(minsize和maxsize不适用于该窗口),而您没有要求它,并且您可能误解了root4窗口的这一点,所以只需说:

tk.Tk().withdraw()
root4 = tk.Tk()

对我来说,这解决了弹出两个窗口的问题。请记住minsize()maxsize()是有效的,只是您在错误的窗口上尝试了它

相关问题 更多 >