【发布时间】:2020-01-25 02:14:00
【问题描述】:
我无法在我想要的位置打开自定义对话框。我玩过self.geometry("+%d+%d" % (x1, x2)),但没有成功。理想情况下,我希望它在鼠标指针所在的位置打开。
对话框通过菜单命令调用:
menu = tk.Menu(self.treeDocs, tearoff=0)
menu.add_command(label="Check-In",
command=lambda tv=self.treeDocs: self.CheckIn(tv))
def CheckIn(self, tv):
cd = CalendarDialog(self)
docDate = cd.result
if docDate is not None:
docID = tv.set(self.ident, "ID")
conn = pyodbc.connect(strConn)
cursor = conn.cursor()
strSQL = '''INSERT INTO tblDocDates (ID_DOC, ACCESSDATE)
VALUES (%s, #%s#)''' % (docID, docDate)
cursor.execute(strSQL)
cursor.commit()
这是课程:
class CalendarDialog(tk.simpledialog.Dialog):
def __init__(self, master, title="Check-In"):
tk.simpledialog.Dialog.__init__(self, master, title="Check-In")
def body(self, master):
self.calendar = tkcalendar.DateEntry(master)
self.calendar.pack()
def apply(self):
self.result = self.calendar.get()
感谢您的帮助!
【问题讨论】:
-
Edit 你的问题并显示
def CheckIn(self, tv):的调用方式并解释什么 是tv? -
@stovfl 已更新,包含完整的签入和呼叫(通过菜单命令)。 tv 是一个树视图小部件。谢谢!
-
从
Menu.command你没有得到x/y光标位置,我能想到的最接近的是Tkinter.Menu.yposition-method。更改为lambda....CheckIn(tv, (x, y))。在哪里x=menu.winfo_x, y=menu.yposition(<index of menu item>).
标签: python python-3.x tkinter