简体   繁体   English

我想将在文本框中输入的值传递给python程序

[英]I would like to pass the value entered into the textbox to a python program

I wrote this code 我写了这段代码

app = Tk()
app.title('Myapp')
app.geometry('260x100+50+50')

labelText =StringVar()
labelText.set('Insert the version you want to check')
label1 = Label(app, textvar=labelText, height=4)
label1.pack()

stringadacercare = StringVar(None)
lastringa = Entry(app, textvar=stringadacercare)
lastringa.place(x=30, y=40, width=200)


progressbar = ttk.Progressbar(orient=HORIZONTAL, length=260, mode='determinate')
progressbar.pack(side='bottom')
progressbar.start()

app.mainloop()

I would like to pass the input taken by the textbox into this program instead of the raw_input so binding it to testV 我想将文本框接受的输入而不是raw_input传递到该程序中,以便将其绑定到testV

 import csv
 import re
 import os
 testV = raw_input('Insert the version you want to find: ')
 fileobj = csv.reader(open('c:\\paths1.csv', 'rb'), delimiter=' ', quotechar='|')
 for row in fileobj:

for x in row:
    with open(x) as f:
        for line in f:

            if re.match(testV, line):
                print 'The version match: '+ line
            else:
                print 'wrong version'     
    filesize= os.path.getsize(x)
print 'The file size is :'+ str(filesize) +' bytes';

Could anyone help me out? 有人可以帮我吗? Thank you in advance!!!!! 先感谢您!!!!!

Are you sure you wan to use the second script as a seperate program? 您确定要使用第二个脚本作为单独的程序吗? If you must, you can use the subprocess module to pass a variable as a command line argument. 如果需要,可以使用子流程模块将变量作为命令行参数传递。

Setup the GUI to use a button and callback something like this: 设置GUI以使用按钮并回调如下所示的内容:

import subprocess
from Tkinter import *
import ttk

def btnCallback():
    #this is the path to your other script
    cmdpath = '/path/to/test.py'

    #extract the textbox variable
    var = stringadacercare.get()

    progressbar.start()

    #pass the variable to the command line
    proc = subprocess.popen([cmdpath,var])

    #block while the subprocess executes
    proc.wait()

    progressbar.stop()

app = Tk()
app.title('Myapp')
app.geometry('260x100+50+50')

labelText =StringVar()
labelText.set('Insert the version you want to check')
label1 = Label(app, textvar=labelText, height=4)
label1.pack()

stringadacercare = StringVar(None)
lastringa = Entry(app, textvar=stringadacercare)
lastringa.place(x=30, y=40, width=200)

progressbar = ttk.Progressbar(orient=HORIZONTAL, length=260, mode='determinate')
progressbar.pack(side='bottom')

#use a button to execute the subprocess
buttonOK = Button(app,text='GO',command=btnCallback)
buttonOK.pack(side='bottom')

app.mainloop() 

Restructure your test script to accept command line arguments. 重组测试脚本以接受命令行参数。 You could also import this into your gui app and call the main function, passing the variable directly. 您也可以将其导入gui应用程序并调用main函数,直接传递变量。

import csv
import re
import os

#need the sys module to get the command line args
import sys

def main(testV):
    fileobj = csv.reader(open('c:\\paths1.csv', 'rb'), delimiter=' ', quotechar='|')

    for row in fileobj:
        for x in row:
            with open(x) as f:
                for line in f:
                    if re.match(testV, line):
                        print 'The version match: '+ line
                    else:
                        print 'wrong version'
                        filesize= os.path.getsize(x)
                        print 'The file size is :'+ str(filesize) +' bytes'

if __name__=='__main__':
    #get the first command line argument and pass it to main
    testV = sys.argv[1]
    main(testV)

If you want to use the test routine as a module instead of by the command line you can add an import statement for your test module and call it from the button callback. 如果要将测试例程用作模块而不是命令行使用,则可以为测试模块添加import语句,然后从按钮回调中调用它。

...
import mytestmodule

def btnCallback():
    #extract the textbox variable
    var = stringadacercare.get()

    progressbar.start()

    #call the main function from the test module
    mytestmodule.main(var)

    progressbar.stop()

...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM