无法应对Dialog和Gridgeometry经理

时间:2014-12-13 15:30:34

标签: python python-3.x tkinter

你可以帮我理解我做错了什么。 我想要这个this

我的代码是:

from tkinter import *
import Pmw

master = Tk()

class GetPassword(Pmw.Dialog):
    def body(self, master):
        self.title('Enter New Password')
        Label(master, text='Old Password:').grid(row=0, sticky=W)
        Label(master, text='New Password:').grid(row=1, sticky=W)
        Label(master, text='Enter New Password Again:').grid(row=2, sticky=W)
        self.oldpw = Entry(master, width = 16, show='*')
        self.newpw1 = Entry(master, width = 16, show='*')
        self.newpw2 = Entry(master, width = 16, show='*')

        self.oldpw.grid(row=0, column=1, sticky=W)
        self.newpw1.grid(row=1, column=1, sticky=W)
        self.newpw2.grid(row=2, column=1, sticky=W)

a = GetPassword()
a.body(master)
master.mainloop()

结果看起来像这样:

enter image description here

我的问题:

  1. 标题为Tk而非Enter Enter Password。
  2. 我以某种方式设法将框架拆分为两个:1。输入字段。 2.按钮。
  3. 我只获得一个按钮(取消按钮在某处丢失)。
  4. 如果你能帮助我,我将感激不尽。

1 个答案:

答案 0 :(得分:0)

1。标题是Tk而不是Enter New Password。

您需要为master设置标题。问题中的代码将小部件放在master(主窗口)中。

master = Tk()
master.title('Enter New Password')

如果您解决了第二个问题,可能不需要这样做。

2。我以某种方式设法将框架拆分为两个:...

在对话框body方法中,您将小部件放入主控。使用Pmw.Dialog.interior()将小部件置于对话框中:

def body(self, master):
    self.title('Enter New Password')
    Label(self.interior(), text='Old Password:').grid(row=0, sticky=W)
    Label(self.interior(), text='New Password:').grid(row=1, sticky=W)
    Label(self.interior(), text='Enter New Password Again:').grid(row=2, sticky=W)
    self.oldpw = Entry(self.interior(), width = 16, show='*')
    self.newpw1 = Entry(self.interior(), width = 16, show='*')
    self.newpw2 = Entry(self.interior(), width = 16, show='*')

    self.oldpw.grid(row=0, column=1, sticky=W)
    self.newpw1.grid(row=1, column=1, sticky=W)
    self.newpw2.grid(row=2, column=1, sticky=W)

3。我只得到一个按钮(取消按钮在某处丢失)。

使用buttons option列出按钮名称:

a = GetPassword(buttons=('OK', 'Cancel'))

enter image description here