问题描述
当我想布局我的框架时,标签不显示。我似乎无法解决它。出于某种原因,它确实显示了我所做的条目。有人可以帮我吗。
import tkinter as tk
from tkinter import *
from tkinter import filedialog
from PIL import ImageTk,Image
class main_screen():
def __init__(self,master):
self.master = master
self.master.title("Roboframe")
self.master.geometry("650x650")
self.create_frames()
self.create_entries()
def create_frames(self):
self.top = Frame(self.master).grid(row=0,column=0)
self.bottom = Frame(self.master).grid(row=0,column=0)
self.set_paths = LabelFrame(self.master,text="Set Path",padx=10,pady=10).grid(row=0,column=0)
self.options = LabelFrame(self.master,text="Options",column=0)
def create_entries(self):
python_path = StringVar(self.set_paths,"C:/python37/python.exe")
robot_path = StringVar(self.set_paths,"C:/ws/cmge.automation/RobotFrameworkCMGE")
self.set_path_python = Entry(self.set_paths,width=60,textvariable=python_path).grid(row=0,column=0)
self.set_path_robot = Entry(self.set_paths,textvariable=robot_path).grid(row=1,column=0)
root = tk.Tk()
app = main_screen(root)
root.mainloop()
The thing i'm rewritting the code for because it is a mess
第二张照片也是我自己做的。但是代码一团糟。
解决方法
您必须制作小部件的对象,而不是小部件的网格功能。 Grid 不会返回任何内容,因此很自然它们都不会出现。我相信这就是您想要的:
import tkinter as tk
from tkinter import *
from tkinter import filedialog
from PIL import ImageTk,Image
class main_screen():
def __init__(self,master):
self.master = master
self.master.title("Roboframe")
self.master.geometry("650x650")
self.create_frames()
self.create_entries()
def create_frames(self):
# you have grided all of your frames and label frames on the same row and column
self.top = Frame(self.master)
self.top.grid(row=0,column=0)
self.bottom = Frame(self.master)
self.bottom.grid(row=0,column=0)
self.set_paths = LabelFrame(self.master,text="Set Path",padx=10,pady=10)
self.set_paths.grid(row=0,column=0)
self.options = LabelFrame(self.master,text="Options",pady=10)
self.options.grid(row=0,column=0)
def create_entries(self):
python_path = StringVar(self.set_paths,"C:/Python37/python.exe")
robot_path = StringVar(self.set_paths,"C:/ws/cmge.automation/RobotFrameworkCMGE")
self.set_path_python = Entry(self.set_paths,width=60,textvariable=python_path)
self.set_path_python.grid(row=0,column=0)
self.set_path_robot = Entry(self.set_paths,textvariable=robot_path)
self.set_path_robot.grid(row=1,column=0)
root = tk.Tk()
app = main_screen(root)
root.mainloop()
还有一些事情:
- 您已经以两种不同的方式导入了 tkinter 两次,只需使用其中一种
- 您正在对同一行和列上的 LabelFrames 和框架进行网格化,但由于“self.options”不包含任何不会显示的内容,因此稍后要小心
这将显示两个 LabelFrame,第二个带有一个虚拟的 Entry 小部件。
import tkinter as tk
from tkinter import *
from tkinter import filedialog
from PIL import ImageTk,master):
self.master = master
self.master.title("Roboframe")
self.master.geometry("650x650")
self.create_frames()
self.create_entries()
def create_frames(self):
self.set_paths = LabelFrame(self.master,pady=10)
self.options.grid(row=1,column=0)
def create_entries(self):
python_path = StringVar(self.set_paths,column=0)
self.test = Entry(self.options,width=60)
self.test.grid(row=1,column=1)
root = tk.Tk()
app = main_screen(root)
root.mainloop()