Logo ryp的博客

博客

新博客

2025-09-04 15:59:41 By ryp
import tkinter as tk
import tkinter.simpledialog
from tkinterdnd2 import DND_FILES, TkinterDnD

rt = TkinterDnD.Tk ()
rt.title ('WyOJ 数据配置工具')

def ask_subtask_nr ():
    n = tk.simpledialog.askinteger (title='Subtask 数量',
                                    prompt='要配置的 Subtask 数量',
                                    initialvalue=0)

    print (f'你想配置 {n} 个 Subtask')
    return n

def configure_subtask (i):
    def config ():
        win = tk.Toplevel (rt)
        win.title (f'配置 Subtask {i}')

        droparea = tk.Label (win,
                             text='>>> 请将本 Subtask 中的测试点拖到这里 <<<',
                             height=10)
        txt = tk.Text (win)
        txt.pack ()

        def drop (ev):
            fp = ev.data
            txt.insert (tk.END, f'{fp}\n')

        droparea.drop_target_register (DND_FILES)
        droparea.dnd_bind ('<<Drop>>', drop)
        droparea.pack ()
        txt.pack ()

    return config

buttons = list ()
def create_subtask_buttons (nr):
    for i in range (1, nr + 1):
        butt = tk.Button (rt, text=f'配置 Subtask {i}',
                          command=configure_subtask (i))
        butt.place (x=80, y=20 + i * 40, width=60, height=30)
        butt.pack ()
        buttons.append (butt)

nr = ask_subtask_nr ()
create_subtask_buttons (nr)
rt.mainloop ()

评论

暂无评论

发表评论

可以用@mike来提到mike这个用户,mike会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。