-2

我试图在其父框架内网格化一个标签,但它却显示在窗口的底部,我认为这与我告诉它去的地方无关。这是我的代码:

class Window:
def __init__(self, root):
    #configure the window as root
    self.root = root

    #create a canvas
    self.canvas = Canvas(self.root, bg="white", width=500, height=300).grid(row=0, column=0, rowspan=2)

    #create two frames to the right of the canvas for entering letters and displaying wrong guesses
    self.wrong_guess_frame = Frame(self.root, bg="red", width=150, height=150).grid(row=0, column=1)
    self.entry_frame = Frame(self.root, bg="green", width=150, height=150).grid(row=1, column=1)

    #create a title label for the wrong answers and a frame in which to sit it
    self.wrngguess_title_frame = Frame(self.wrong_guess_frame, bg="blue",width = 100).grid()
    self.wrngguess_title = Label(self.wrong_guess_frame, text="Wrong Guesses:").grid()

最后两行是我遇到的麻烦。self.wrngguess_title没有出现在窗口wrong_guess_frame的底部,而是出现在窗口的底部,我无法弄清楚是什么原因造成的。

任何帮助,将不胜感激。TIA

4

2 回答 2

1

self.wrong_guess_frame不涉及任何框架;这个变量其实就是你在创建框架后应用到框架None的方法的返回值。.grid()并且None,作为任何小部件构造函数的第一个参数,被解释为对根窗口的引用。

如果您还希望有一个变量引用小部件,则必须将小部件创建和网格/打包作为两个单独的语句:

self.wrong_guess_frame = Frame(self.root, bg="red", width=150, height=150)
self.wrong_guess_frame.grid(row=0, column=1)
于 2018-03-08T02:30:22.263 回答
0

看来,根据您在问题中指定的内容,您需要做的就是指定row和 与column框架相同,如下所示:

    self.wrngguess_title = Label(self.wrong_guess_frame, text="Wrong Guesses:").grid(row=0, column=1)
    self.wrngguess_title_frame = Frame(self.wrong_guess_frame, bg="blue",width = 100).grid(row=0, column=1)

前面的代码产生以下结果: 结果

但是,如果您想将该行向下移动一点,请使用以下代码段:

self.wrngguess_title_frame = Frame(self.wrong_guess_frame, bg="blue",width = 100).grid(row=0, column=1, pady=(25,10))

这产生了这个结果:结果

希望对您有所帮助。这就是我从你的问题中推断出你想要的。

于 2018-03-08T02:16:33.623 回答