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
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:
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.
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 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()
...
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.