【问题标题】:text box input in for loop and print text in scrollboxfor循环中的文本框输入并在滚动框中打印文本
【发布时间】:2020-11-10 19:51:46
【问题描述】:

对不起,如果这已经被问到了。我已经搜索了2天,但我找不到答案。 我对编码很陌生,所以可能这就是为什么我找不到我所犯的错误。

我希望用户能够像这样在文本框中输入 2 个名称:

John
Peter

如果用户按下 Vul script 按钮,我希望滚动框中的输出如下所示:

create user "JOHN" identified by "JOHN";
Grant CONNECT to "JOHN ";
Grant RLOCUSR to "JOHN ";
create user "PETER" identified by "PETER";
Grant CONNECT to "PETER";
Grant RLOCUSR to "PETER";

上面的代码应该在滚动框中输出为文本。 但这不会发生。

这里是完整的代码:

# Tkinter import ( The graphic user interface )
    from tkinter import *
    from tkinter import scrolledtext


# scripttext ( creat user ect ) script plus name copy into scrollbox
def vulscript():
    vultext = textbox.get("1.0", "end-1c")
    for names in [vultext]:
        scripttext = "create user \"" + names.upper() + "\" identified by \"" + names.upper() + "\";" \
             "\n""Grant CONNECT to \"" + names.upper() + "\";" \
             "\n" "Grant RLOCUSR to \"" + names.upper() + "\";" "\n"
        scr.insert(0.0, scripttext)


# Clearbutton function
def clear():
    textbox.delete(1.0, END)
    scr.delete(1.0, END)


# Making the screen
root = Tk()
root.title("Webnaam toevoegen script")
root.geometry("710x500")
root.resizable(width=FALSE, height=FALSE)
root.configure(bg='#f0f5f5')

# Script vul button
vulbutton = Button(root, text="Vul script", bg='#d1e0e0', command=vulscript, width=7)
vulbutton.grid(row=0, column=0)
# Clear button
clearbutton = Button(root, text="Clear all", bg='#d1e0e0', width=7, command=clear)
clearbutton.grid(row=1, column=0, sticky=N)

# Name label and text box next to it
namelabel = Label(root, text="Name", bg='#f0f5f5')
namelabel.grid(row=0, column=1, sticky=N)
textbox = Text(root, width=18, height=29)
textbox.grid(row=1, column=1, sticky=N)

# script label
scriptlabel = Label(root, text="Script", bg='#f0f5f5')
scriptlabel.grid(row=0, column=2)

# Scroll tekst window
scrolW = 30
scrolH = 3
scr = scrolledtext.ScrolledText(root, width=60, height=29, wrap=WORD)
scr.grid(row=1, column=2)


root.mainloop()

我添加了一些解释的图片。

【问题讨论】:

    标签: python loops tkinter input textbox


    【解决方案1】:

    你要做的就是在有换行符的地方分割你的 vultext:

    def vulscript():
        vultext = textbox.get("1.0", "end-1c")
        vultext=vultext.split('\n')
        print(vultext)
        for names in vultext:
            scripttext = "create user \"" + names.upper() + "\" identified by \"" + names.upper() + "\";" \
                 "\n""Grant CONNECT to \"" + names.upper() + "\";" \
                 "\n" "Grant RLOCUSR to \"" + names.upper() + "\";" "\n"
            scr.insert(0.0, scripttext)
    

    【讨论】:

    • 创建由“JOHN”标识的用户“JOHN”;将 CONNECT 授予“JOHN”;将 RLOCUSR 授予“JOHN”;创建由“PETER”标识的用户“PETER”;将 CONNECT 授予“PETER”;将 RLOCUSR 授予“彼得”; --------这是文本不是问题。这是应该显示在滚动框中的文本。此文本是我希望如何将其输出到滚动框中的示例。我认为问题出在 for in 循环中。当您键入 2 个名称时,它会显示如下:----> 创建由“JOHN PETER”标识的用户“JOHN PETER”;将 CONNECT 授予“JOHN PETER”;将 RLOCUSR 授予“JOHN PETER”
    • 你试过我的解决方案了吗?将您的 vulscript 方法替换为我建议的方法
    • 是的,我试过了。不知何故,我搞砸了。下床再试一次。有用。太棒了,非常感谢。
    • 我不明白为什么它会起作用。你介意解释一下 split('\n') 是做什么的吗?如果我没记错的话,拆分使它在每一行中都读取 tru。但为什么是('\ n')?再一次感谢你的帮助。真的,我真的很感激。
    • split('\n') 所做的是每次在字符串中找到'\n' 时拆分字符串,并在列表中给出输出。因此,如果您在拆分后拥有"John\nPeter",它将是["John","Peter"]。这里\n 是换行的命令。在 splittf 之前,您的 vultext 是一个字符串,例如"John\nPeter"。如果它有效,请记住接受并支持我的回答。
    猜你喜欢
    • 1970-01-01
    • 2017-08-22
    • 1970-01-01
    • 1970-01-01
    • 2020-03-29
    • 1970-01-01
    • 2018-09-08
    • 1970-01-01
    • 2019-11-06
    相关资源
    最近更新 更多