如何添加StatusBar类并使用网格列作为边框

问题描述 投票:0回答:1

我是学习 tkinter 的新手,我正在尝试制作一个简单的 tkinter GUI 来运行 EXIFTool。

问题1)当我取消注释StatusBar时,出现以下错误;无法在内部使用几何管理器网格。已经有由包管理的奴隶。格式化代码以防止此问题的最佳方法是什么?

问题 2)如何防止第 0 列折叠,使其充当边框?

#!/usr/bin/python3

import getpass
import subprocess
import tkinter as tk
from tkinter import ttk
from PIL import ImageTk,Image  
from datetime import datetime
from tkinter import filedialog



class MainFrame(ttk.Frame):
    def __init__(self, container):
        super().__init__(container)

        
        # configure the grid
        self.columnconfigure(0, weight=4)
        self.columnconfigure(1, weight=2)
        self.columnconfigure(2, weight=2)
        self.columnconfigure(3, weight=2)
        self.columnconfigure(4, weight=2)
        self.columnconfigure(5, weight=4)

        self.createwidgets()
    
    def createwidgets(self):

        ### FILE
        self.entry1_var = tk.StringVar()
        #self.entry1_var.set('')
        self.entry1=tk.Entry(self, textvariable=self.entry1_var, justify='center')
        self.entry1.grid(row=0, column=1, columnspan=4, sticky=tk.EW, padx=0, pady=40, ipady=10 )

        ##--------------------------------------------------##

        ### SELECT BUTTON
        self.button1=tk.Button(self, text='FILE', bg="#873600", bd=4, relief="raised")
        #self.button1['command'] = self.openfile
        self.button1.grid(column=1, row=1, padx=0, pady=0, ipadx=30)
        
        ### CLEAN BUTTON
        self.button2=tk.Button(self, text='INFO', bg="#873600", bd=4, relief="raised")
        #self.button2['command'] = self.exif_info
        self.button2.grid(column=2, row=1, padx=0, pady=0, ipadx=30)
        
        ### VIEW EXIF DATA
        self.button3=tk.Button(self, text='EXIF', bg="#873600", bd=4, relief="raised")
        #self.button3['command'] = self.exif_clean
        self.button3.grid(column=3, row=1, padx=0, pady=0, ipadx=30)

        ### EXIT
        self.button4=tk.Button(self, text='EXIT', bg="#873600", bd=4, relief="raised")
        #self.button4['command'] = container.exit
        self.button4.grid(column=4, row=1, padx=0, pady=0, ipadx=30)

        ##--------------------------------------------------##

        ### EXIF INFO
        self.text1=tk.Text(self, height=12)
        self.text1.grid(row=3, column=1, columnspan=4, padx=0, pady=40, ipady=10)
        
        
        self.grid()
    
#####################################################################################

class App(tk.Tk):
    def __init__(self):
        super().__init__() 

        bg_colour = "#4C4E52" 

        self.geometry("1400x870") # air
        #self.configure(bg=bg_colour)
        self.resizable(False, False)
        self.title('EXIF CLEANER v1')

    def exit(self):
        self.destroy()

    
class StatusBar(tk.Frame):   
    def __init__(self, container):
        super().__init__(container)

        time_date = datetime.now().strftime('%I:%M:%S %p on %A, %B the %dth, %Y')
        
        self.variable=tk.StringVar()
        self.variable.set(time_date)     
        
        self.statusbar=tk.Label(self, bd=0, relief="solid", height="2", width="100", 
            textvariable=self.variable, foreground="red", background='#2f2f2f', font=('helvetica',8))                       
        
        self.statusbar.pack(side=tk.BOTTOM, fill=tk.X)
        self.pack(fill="x", side="bottom", ipady=0, padx=0, pady=0)


        #self.parent1 = tk.Frame()
        #self.parent1.pack(side=tk.TOP)


if __name__ == "__main__":
    app = App()
    #StatusBar(app)
    MainFrame(app)
    app.mainloop()
python-3.x tkinter-layout
1个回答
0
投票

如何添加 StatusBar 类并使用网格列作为边框

我收到以下错误;无法在内部使用几何管理器网格。已经有由 pack 管理的奴隶

问题可以解决:

在第 65 行,更改以下内容:

self.grid()

至:

self.pack()

第106行,评论在

StatusBar(app)

截图:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.