【发布时间】:2019-01-30 08:00:28
【问题描述】:
我正在尝试使用 grid() 在 tkinter 框架窗口中将按钮小部件居中。我尝试了几种解决方案,包括weights,但它们都没有以文本“选择文件”将按钮小部件居中。它要么左粘要么右粘。我该怎么做呢?
顺便说一句,我不想使用pack()。我想继续使用grid()。
class MyFrame(Frame):
def __init__(self):
Frame.__init__(self)
self.master.title("PDF Merger v0.1")
self.filenamesopen = []
self.grid(sticky=W + E + N + S)
self.button = Button(self, text="Choose files", command=self.load_files, width=10)
self.button.grid(row=0, column=0,sticky=E+W)
self.button = Button(self, text="Merge", command=self.merge_files, width=10)
self.button.grid(row=1, column=0, sticky=W)
self.labelframe = LabelFrame(self, text="Files to merge:")
self.labelframe.grid(row=2, column=0, sticky=W)
self.left = Label(self.labelframe, text="")
self.left.grid(row=3, column=0, sticky=W)
def load_files(self):
try:
self.filenamesopen = filedialog.askopenfilenames(initialdir="/", title="Choose files to merge...",
filetypes=(("pdf", "*.pdf"), ("All files", "*.*")))
filenames = [os.path.split(file)[1] for file in self.filenamesopen]
self.left.configure(text="\n".join(filenames))
except:
showerror("Open Source File", "Failed to read files\n")
def merge_files(self):
self.merger = PdfFileMerger()
try:
for pdf in self.filenamesopen:
self.merger.append(open(pdf, 'rb'), import_bookmarks=False)
except:
showerror("Merger Error", "Failed to merge files\n")
return
self.save_files()
def save_files(self):
try:
self.filenamesave = filedialog.asksaveasfilename(initialdir="/", title="Save as...",
filetypes=(("pdf", "*.pdf"), ("All files", "*.*")),
defaultextension=".pdf")
with open(self.filenamesave, 'wb') as fout:
self.merger.write(fout)
except:
showerror("Save Source File", "Failed to save file\n")
if __name__ == "__main__":
MyFrame().mainloop()
【问题讨论】:
-
在窗口中居中,还是相对于其他小部件居中?您是否希望在调整窗口大小时所有内容都保持居中?
-
嗨@BryanOakley,我希望它在窗口中居中(当窗口也被调整大小时)。最后,我想将所有内容居中,但首先我尝试将其中一个 Button 小部件居中。